protected void SetupManagementClients(String scenario)
        {
            RecoveryServicesMgmtClient = GetSiteRecoveryVaultManagementClient(scenario);
            SiteRecoveryMgmtClient     = GetSiteRecoveryManagementClient(scenario);

            helper.SetupManagementClients(RecoveryServicesMgmtClient, SiteRecoveryMgmtClient);
        }
Ejemplo n.º 2
0
        public T GetServiceClient <T>() where T : class
        {
            var factory         = (TestEnvironmentFactory) new CSMTestEnvironmentFactory();
            var testEnvironment = factory.GetTestEnvironment();

            ServicePointManager.ServerCertificateValidationCallback = IgnoreCertificateErrorHandler;
            var credentials = new SubscriptionCredentialsAdapter(
                testEnvironment.AuthorizationContext.TokenCredentials[TokenAudience.Management],
                testEnvironment.SubscriptionId);

            if (typeof(T) == typeof(SiteRecoveryVaultManagementClient))
            {
                SiteRecoveryVaultManagementClient client;

                if (testEnvironment.UsesCustomUri())
                {
                    client = new SiteRecoveryVaultManagementClient(
                        "Microsoft.SiteRecoveryBVTD2",
                        "SiteRecoveryVault",
                        credentials,
                        testEnvironment.BaseUri);
                }
                else
                {
                    client = new SiteRecoveryVaultManagementClient(
                        "Microsoft.SiteRecovery",
                        "SiteRecoveryVault",
                        credentials);
                }
                return(GetRSMServiceClient <T>(factory, client));
            }
            else
            {
                SiteRecoveryManagementClient client;

                if (testEnvironment.UsesCustomUri())
                {
                    client = new SiteRecoveryManagementClient(
                        asrVaultCreds.ResourceName,
                        asrVaultCreds.ResourceGroupName,
                        "Microsoft.SiteRecoveryBVTD2",
                        "SiteRecoveryVault",
                        credentials,
                        testEnvironment.BaseUri);
                }

                else
                {
                    client = new SiteRecoveryManagementClient(
                        asrVaultCreds.ResourceName,
                        asrVaultCreds.ResourceGroupName,
                        "Microsoft.SiteRecovery",
                        "vaults",
                        credentials);
                }

                return(GetSRMServiceClient <T>(factory, client));
            }
        }
        public static T GetRSMServiceClient <T>(TestEnvironmentFactory factory, SiteRecoveryVaultManagementClient client) where T : class
        {
            TestEnvironment testEnvironment = factory.GetTestEnvironment();

            HttpMockServer instance;

            try
            {
                instance = HttpMockServer.CreateInstance();
            }
            catch (ApplicationException)
            {
                HttpMockServer.Initialize("TestEnvironment", "InitialCreation");
                instance = HttpMockServer.CreateInstance();
            }
            T obj2 = typeof(T).GetMethod("WithHandler", new Type[1]
            {
                typeof(DelegatingHandler)
            }).Invoke((object)client, new object[1]
            {
                (object)instance
            }) as T;

            if (HttpMockServer.Mode == HttpRecorderMode.Record)
            {
                HttpMockServer.Variables[TestEnvironment.SubscriptionIdKey] = testEnvironment.SubscriptionId;
            }

            if (HttpMockServer.Mode == HttpRecorderMode.Playback)
            {
                PropertyInfo property1 = typeof(T).GetProperty("LongRunningOperationInitialTimeout", typeof(int));
                PropertyInfo property2 = typeof(T).GetProperty("LongRunningOperationRetryTimeout", typeof(int));
                if (property1 != (PropertyInfo)null && property2 != (PropertyInfo)null)
                {
                    property1.SetValue((object)obj2, (object)0);
                    property2.SetValue((object)obj2, (object)0);
                }
            }
            return(obj2);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PSRecoveryServicesClient" /> class with
        /// required current subscription.
        /// </summary>
        /// <param name="azureSubscription">Azure Subscription</param>
        public PSRecoveryServicesClient(IAzureProfile azureProfile)
        {
            System.Configuration.Configuration siteRecoveryConfig = ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location);

            System.Configuration.AppSettingsSection appSettings = (System.Configuration.AppSettingsSection)siteRecoveryConfig.GetSection("appSettings");

            string resourceNamespace = string.Empty;
            string resourceType      = string.Empty;

            // Get Resource provider namespace and type from config only if Vault context is not set
            // (hopefully it is required only for Vault related cmdlets)
            if (string.IsNullOrEmpty(asrVaultCreds.ResourceNamespace) ||
                string.IsNullOrEmpty(asrVaultCreds.ARMResourceType))
            {
                if (appSettings.Settings.Count == 0)
                {
                    resourceNamespace = "Microsoft.SiteRecovery"; // ProviderNameSpace for Production is taken as default
                    resourceType      = ARMResourceTypeConstants.SiteRecoveryVault;
                }
                else
                {
                    resourceNamespace =
                        null == appSettings.Settings["ProviderNamespace"]
                        ? "Microsoft.SiteRecovery"
                        : appSettings.Settings["ProviderNamespace"].Value;
                    resourceType =
                        null == appSettings.Settings["ResourceType"]
                        ? ARMResourceTypeConstants.SiteRecoveryVault
                        : appSettings.Settings["ResourceType"].Value;
                }

                Utilities.UpdateCurrentVaultContext(new ASRVaultCreds()
                {
                    ResourceNamespace = resourceNamespace,
                    ARMResourceType   = resourceType
                });
            }

            if (null == endPointUri)
            {
                if (appSettings.Settings.Count == 0)
                {
                    endPointUri = azureProfile.Context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager);
                }
                else
                {
                    if (null == appSettings.Settings["RDFEProxy"])
                    {
                        endPointUri = azureProfile.Context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager);
                    }
                    else
                    {
                        // Setting Endpoint to RDFE Proxy
                        if (null == ServicePointManager.ServerCertificateValidationCallback)
                        {
                            ServicePointManager.ServerCertificateValidationCallback =
                                IgnoreCertificateErrorHandler;
                        }

                        endPointUri = new Uri(appSettings.Settings["RDFEProxy"].Value);
                    }
                }
            }

            cloudCredentials            = AzureSession.AuthenticationFactory.GetSubscriptionCloudCredentials(azureProfile.Context);
            this.recoveryServicesClient =
                AzureSession.ClientFactory.CreateCustomClient <SiteRecoveryVaultManagementClient>(
                    asrVaultCreds.ResourceNamespace,
                    asrVaultCreds.ARMResourceType,
                    cloudCredentials,
                    azureProfile.Context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager));
        }
        public T GetServiceClient <T>(String scenario) where T : class
        {
            var factory         = (TestEnvironmentFactory) new CSMTestEnvironmentFactory();
            var testEnvironment = factory.GetTestEnvironment();

            ServicePointManager.ServerCertificateValidationCallback = IgnoreCertificateErrorHandler;
            var credentials = new SubscriptionCredentialsAdapter(
                testEnvironment.AuthorizationContext.TokenCredentials[TokenAudience.Management],
                testEnvironment.SubscriptionId);
            var resourceNamespace = "";
            var resourceType      = "";
            var resourceName      = "";
            var resourceGroupName = "";

            switch (scenario)
            {
            case Constants.NewModel:
                resourceNamespace = "Microsoft.SiteRecovery";
                resourceType      = "SiteRecoveryVault";
                resourceName      = "ReleaseVault";
                resourceGroupName = "ReleaseResourceGroup";
                break;

            default:
                resourceNamespace = "Microsoft.SiteRecoveryBVTD2";
                resourceType      = "SiteRecoveryVault";
                resourceName      = asrVaultCreds.ResourceName;
                resourceGroupName = asrVaultCreds.ResourceGroupName;
                break;
            }
            ;

            if (typeof(T) == typeof(SiteRecoveryVaultManagementClient))
            {
                SiteRecoveryVaultManagementClient client;

                if (testEnvironment.UsesCustomUri())
                {
                    client = new SiteRecoveryVaultManagementClient(
                        resourceNamespace,
                        resourceType,
                        credentials,
                        testEnvironment.BaseUri);
                }
                else
                {
                    client = new SiteRecoveryVaultManagementClient(
                        resourceNamespace,
                        resourceType,
                        credentials);
                }
                return(GetRSMServiceClient <T>(factory, client));
            }
            else
            {
                SiteRecoveryManagementClient client;

                if (testEnvironment.UsesCustomUri())
                {
                    client = new SiteRecoveryManagementClient(
                        resourceName,
                        resourceGroupName,
                        resourceNamespace,
                        resourceType,
                        credentials,
                        testEnvironment.BaseUri);
                }

                else
                {
                    client = new SiteRecoveryManagementClient(
                        resourceName,
                        resourceGroupName,
                        resourceNamespace,
                        resourceType,
                        credentials);
                }

                return(GetSRMServiceClient <T>(factory, client));
            }
        }