/// <summary>
/// Configuration action to enable using dedicated caching on the client role.
/// </summary>
/// <param name="cloudServiceProject">The cloud service project instance</param>
/// <param name="roleName">The role name</param>
/// <param name="cacheWorkerRoleName">The dedicated cache worker role name</param>
private static void CacheClientRole180(
CloudServiceProject cloudServiceProject,
string roleName,
string cacheWorkerRoleName)
{
// Add MemcacheShim runtime installation.
cloudServiceProject.AddRoleRuntime(
cloudServiceProject.Paths,
roleName,
Resources.CacheRuntimeValue,
CurrentVersion);
// Fetch web role information.
Startup startup = cloudServiceProject.Components.GetRoleStartup(roleName);
// Assert that cache runtime is added to the runtime startup.
Debug.Assert(Array.Exists <Variable>(CloudRuntime.GetRuntimeStartupTask(startup).Environment,
v => v.name.Equals(Resources.RuntimeTypeKey) && v.value.Contains(Resources.CacheRuntimeValue)));
if (cloudServiceProject.Components.IsWebRole(roleName))
{
WebRole webRole = cloudServiceProject.Components.GetWebRole(roleName);
webRole.LocalResources = GeneralUtilities.InitializeIfNull <LocalResources>(webRole.LocalResources);
DefinitionConfigurationSetting[] configurationSettings = webRole.ConfigurationSettings;
CacheClientCommonConfiguration(
cloudServiceProject,
roleName,
true,
cacheWorkerRoleName,
webRole.Startup,
webRole.Endpoints,
webRole.LocalResources,
ref configurationSettings);
webRole.ConfigurationSettings = configurationSettings;
}
else
{
WorkerRole workerRole = cloudServiceProject.Components.GetWorkerRole(roleName);
workerRole.LocalResources = GeneralUtilities.InitializeIfNull <LocalResources>(workerRole.LocalResources);
DefinitionConfigurationSetting[] configurationSettings = workerRole.ConfigurationSettings;
CacheClientCommonConfiguration(
cloudServiceProject,
roleName,
false,
cacheWorkerRoleName,
workerRole.Startup,
workerRole.Endpoints,
workerRole.LocalResources,
ref configurationSettings);
workerRole.ConfigurationSettings = configurationSettings;
}
// Save changes
cloudServiceProject.Components.Save(cloudServiceProject.Paths);
}