in code/Tools/Ops/ManageServerState/Program.cs [135:302]
public static async Task AsyncMain(string[] args)
{
ParseArgs(args);
var sr = new FileSettingsReader(ConfigurationManager.AppSettings["ConfigRelativePath"] + Path.DirectorySeparatorChar + environmentName + ".config");
var certThumbprint = sr.ReadValue(SocialPlusCertThumbprint);
var clientID = sr.ReadValue(EmbeddedSocialClientIdSetting);
var storeLocation = StoreLocation.CurrentUser;
var vaultUrl = sr.ReadValue(SocialPlusVaultUrlSetting);
ICertificateHelper cert = new CertificateHelper(certThumbprint, clientID, storeLocation);
IKeyVaultClient client = new AzureKeyVaultClient(cert);
log = new Log(LogDestination.Console, Log.DefaultCategoryName);
kv = new KV(log, clientID, vaultUrl, certThumbprint, storeLocation, client);
var kvReader = new KVSettingsReader(sr, kv);
// Create a null connection string provider needed for blobStoreManager and tableStoreManager
NullConnectionStringProvider connectionStringProvider = new NullConnectionStringProvider();
if (doUpgradeStoreVersion)
{
if (!forceOperation)
{
Console.WriteLine("You must specify the -Force option when using -UpgradeStoreVersion");
Console.WriteLine("The -UpgradeStoreVersion option is only intended to be used by our version upgrade scripts");
Console.WriteLine("If you are trying to use this by hand, you're probably doing something wrong.");
return;
}
CTStoreManager tableStoreManager = new CTStoreManager(connectionStringProvider);
string redisPersistentConnectionString = await kvReader.ReadValueAsync("PersistentRedisConnectionString");
string azureTableStorageConnectionString = await kvReader.ReadValueAsync("AzureStorageConnectionString");
await UpgradeStoreVersion(tableStoreManager, azureTableStorageConnectionString, redisPersistentConnectionString);
return;
}
if (doClean)
{
DisplayWarning();
}
// display current configuration
await ValidateAndPrintConfiguration(environmentName, kvReader);
if (forceOperation == false)
{
// get user approval
Console.Write("Are you sure you want to proceed? [y/n] : ");
ConsoleKeyInfo keyInfo = Console.ReadKey(false);
if (keyInfo.KeyChar != 'y')
{
return;
}
}
// Mr Clean!!
Console.WriteLine();
Console.WriteLine();
if (doAll || doSearch)
{
string searchServiceName = await kvReader.ReadValueAsync("SearchServiceName");
string searchServiceAdminKey = await kvReader.ReadValueAsync("SearchServiceAdminKey");
if (doClean)
{
// delete search indices
await DeleteSearch(searchServiceName, searchServiceAdminKey);
}
if (doCreate)
{
// create search indices
await ProvisionSearch(searchServiceName, searchServiceAdminKey);
}
}
if (doAll || doQueues)
{
string serviceBusConnectionString = await kvReader.ReadValueAsync("ServiceBusConnectionString");
if (doClean)
{
// Delete queues
await DeleteServiceBusQueues(serviceBusConnectionString);
}
if (doCreate)
{
// Create queues
await ProvisionServiceBusQueues(serviceBusConnectionString);
}
}
if (doAll || doTables)
{
CTStoreManager tableStoreManager = new CTStoreManager(connectionStringProvider);
string azureTableStorageConnectionString = await kvReader.ReadValueAsync("AzureStorageConnectionString");
if (doClean)
{
// Delete tables
await DeleteAzureTables(azureTableStorageConnectionString);
}
if (doCreate)
{
await ProvisionAzureStorageTables(tableStoreManager, azureTableStorageConnectionString);
}
}
if (doAll || doBlobs)
{
CBStoreManager blobStoreManager = new CBStoreManager(connectionStringProvider);
string azureBlobStorageConnectionString = await kvReader.ReadValueAsync("AzureBlobStorageConnectionString");
if (doClean)
{
// Delete blobs
await DeleteAzureBlobs(blobStoreManager, azureBlobStorageConnectionString);
}
if (doCreate)
{
await ProvisionAzureStorageBlobs(blobStoreManager, azureBlobStorageConnectionString);
}
}
if (doAll || doRedis)
{
if (doClean)
{
// Delete redis cache
string redisVolatileConnectionString = await kvReader.ReadValueAsync("VolatileRedisConnectionString") + ", allowAdmin=1";
string redisPersistentConnectionString = await kvReader.ReadValueAsync("PersistentRedisConnectionString") + ", allowAdmin=1";
DeleteRedisCaches(redisVolatileConnectionString, redisPersistentConnectionString);
}
if (doCreate)
{
string redisPersistentConnectionString = await kvReader.ReadValueAsync("PersistentRedisConnectionString");
CTStoreManager tableStoreManager = new CTStoreManager(connectionStringProvider);
await ProvisionRedisCaches(redisPersistentConnectionString, tableStoreManager);
}
}
if (doAll || doLogs)
{
CBStoreManager blobStoreManager = new CBStoreManager(connectionStringProvider);
string azureBlobStorageConnectionString = await kvReader.ReadValueAsync("AzureBlobStorageConnectionString");
if (doClean)
{
// Delete logs
await DeleteAzureLogs(azureBlobStorageConnectionString);
}
if (doCreate)
{
// No need to create the Azure logs (aka WAD* tables). Azure Diagnostics creates them automatically.
}
}
// bye
Console.WriteLine();
Console.WriteLine("All done! Bye!");
Console.WriteLine();
}