/// <summary> /// Registers resource providers for RDFE. /// </summary> /// <typeparam name="T">The client type</typeparam> /// <param name="credentials">The subscription credentials</param> private void RegisterServiceManagementProviders <T>(SubscriptionCloudCredentials credentials) where T : ServiceClient <T> { var requiredProviders = RequiredResourceLookup.RequiredProvidersForServiceManagement <T>(); var unregisteredProviders = requiredProviders.Where(p => !RegisteredResourceProviders.Contains(p)).ToList(); if (unregisteredProviders.Count > 0) { using (var client = new ManagementClient(credentials, ServiceEndpoint)) { foreach (var provider in unregisteredProviders) { try { client.Subscriptions.RegisterResource(provider); } catch (CloudException ex) { if (ex.Response.StatusCode != HttpStatusCode.Conflict && ex.Response.StatusCode != HttpStatusCode.NotFound) { // Conflict means already registered, that's OK. // NotFound means there is no registration support, like Windows Azure Pack. // Otherwise it's a failure. throw; } } RegisteredResourceProviders.Add(provider); } Save(); } } }
/// <summary> /// Registers resource providers for Sparta. /// </summary> /// <typeparam name="T">The client type</typeparam> /// <param name="credentials">The subscription credentials</param> private void RegisterResourceManagerProviders <T>(SubscriptionCloudCredentials credentials) where T : ServiceClient <T> { List <string> requiredProviders = RequiredResourceLookup.RequiredProvidersForResourceManager <T>() .Where(p => !RegisteredResourceProviders.Contains(p)).ToList(); if (requiredProviders.Count > 0) { using (IResourceManagementClient client = new ResourceManagementClient(credentials, ResourceManagerEndpoint)) { foreach (string provider in requiredProviders) { try { client.Providers.Register(provider); RegisteredResourceProviders.Add(provider); } catch { // Ignore this as the user may not have access to Sparta endpoint or the provider is already registered } } } } }