Ejemplo n.º 1
0
        public void CreateAndRetrieveVaultExtendedInfo()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var rsmClient = GetRecoveryServicesClient(CustomHttpHandler);
                ResourceExtendedInformation extendedInformation =
                    new ResourceExtendedInformation();
                extendedInformation.Properties = new ResourceExtendedInfoProperties();
                extendedInformation.Properties.IntegrityKey = "integrity key";
                extendedInformation.Properties.Algorithm    = "none";

                ResourceExtendedInformationArgs extendedInfoArgs = new ResourceExtendedInformationArgs();
                extendedInfoArgs.Properties              = new ResourceExtendedInfoProperties();
                extendedInfoArgs.Properties.Algorithm    = extendedInformation.Properties.Algorithm;
                extendedInfoArgs.Properties.IntegrityKey = extendedInformation.Properties.IntegrityKey;

                AzureOperationResponse response = rsmClient.VaultExtendedInfo.CreateExtendedInfo(resourceGroupName, resourceName, extendedInfoArgs, RequestHeaders);
                Assert.Equal(HttpStatusCode.OK, response.StatusCode);

                ResourceExtendedInformationResponse extendedInfoResponse = rsmClient.VaultExtendedInfo.GetExtendedInfo(resourceGroupName, resourceName, RequestHeaders);
                Assert.NotNull(extendedInfoResponse.ResourceExtendedInformation.Properties.IntegrityKey);
                Assert.Equal(HttpStatusCode.OK, extendedInfoResponse.StatusCode);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Creates the extended information for the vault
 /// </summary>
 /// <param name="extendedInfoArgs">extended info to be created</param>
 /// <returns>Vault Extended Information</returns>
 public AzureOperationResponse CreateExtendedInfo(ResourceExtendedInformationArgs extendedInfoArgs)
 {
     return(this.recoveryServicesClient.VaultExtendedInfo.CreateExtendedInfo(
                asrVaultCreds.ResourceGroupName,
                asrVaultCreds.ResourceName,
                extendedInfoArgs,
                this.GetRequestHeaders(false)));
 }
 /// <summary>
 /// Creates the extended information for the vault
 /// </summary>
 /// <param name="extendedInfoArgs">extended info to be created</param>
 /// <returns>Vault Extended Information</returns>
 public AzureOperationResponse CreateExtendedInfo(ResourceExtendedInformationArgs extendedInfoArgs)
 {
     return this.recoveryServicesClient.VaultExtendedInfo.CreateExtendedInfo(
         asrVaultCreds.ResourceGroupName, 
         asrVaultCreds.ResourceName, 
         extendedInfoArgs, 
         this.GetRequestHeaders(false));
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Method to create the extended info for the vault.
        /// </summary>
        /// <returns>returns the object as task</returns>
        private ResourceExtendedInfo CreateVaultExtendedInformation()
        {
            ResourceExtendedInfo extendedInfo = new ResourceExtendedInfo();

            extendedInfo.GenerateSecurityInfo();
            ResourceExtendedInformationArgs extendedInfoArgs = extendedInfo.Translate();

            this.CreateExtendedInfo(extendedInfoArgs);

            return(extendedInfo);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Returns the Xml representation of this object.
        /// </summary>
        /// <returns>the xml as string</returns>
        public ResourceExtendedInformationArgs Translate()
        {
            if (string.IsNullOrEmpty(this.Etag))
            {
                this.Etag = Guid.NewGuid().ToString();
            }

            string serializedInfo = Utilities.Serialize <ResourceExtendedInfo>(this);
            ResourceExtendedInformationArgs extendedInfoArgs = new ResourceExtendedInformationArgs(
                Constants.VaultExtendedInfoContractVersion,
                serializedInfo,
                this.Etag);

            return(extendedInfoArgs);
        }
Ejemplo n.º 6
0
        public void CreateAndRetrieveVaultExtendedInfo()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var rsmClient = GetRecoveryServicesClient(CustomHttpHandler);

                ResourceExtendedInformationArgs args =
                    new ResourceExtendedInformationArgs("1.0", "extendedinfo", Guid.NewGuid().ToString());

                AzureOperationResponse response = rsmClient.VaultExtendedInfo.CreateExtendedInfo(resourceGroupName, resourceName, args, RequestHeaders);
                Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);

                ResourceExtendedInformationResponse extendedInfoResponse = rsmClient.VaultExtendedInfo.GetExtendedInfo(resourceGroupName, resourceName, RequestHeaders);
                Assert.NotNull(extendedInfoResponse.ResourceExtendedInformation.ExtendedInfo);
                Assert.Equal(HttpStatusCode.OK, extendedInfoResponse.StatusCode);
            }
        }
        /// <summary>
        /// Method to create the extended info for the vault.
        /// </summary>
        /// <returns>returns the object as task</returns>
        private ResourceExtendedInformation CreateVaultExtendedInformation()
        {
            ResourceExtendedInformation extendedInformation =
                new ResourceExtendedInformation();

            extendedInformation.Properties = new ResourceExtendedInfoProperties();
            extendedInformation.Properties.IntegrityKey = Utilities.GenerateRandomKey(128);
            extendedInformation.Properties.Algorithm    = CryptoAlgorithm.None.ToString();

            ResourceExtendedInformationArgs extendedInfoArgs = new ResourceExtendedInformationArgs();

            extendedInfoArgs.Properties              = new ResourceExtendedInfoProperties();
            extendedInfoArgs.Properties.Algorithm    = extendedInformation.Properties.Algorithm;
            extendedInfoArgs.Properties.IntegrityKey = extendedInformation.Properties.IntegrityKey;

            this.CreateExtendedInfo(extendedInfoArgs);

            return(extendedInformation);
        }
 /// <summary>
 /// Get the vault extended info.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.IVaultExtendedInfoOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. The name of the resource group containing the job
 /// collection.
 /// </param>
 /// <param name='resourceName'>
 /// Required. The name of the resource.
 /// </param>
 /// <param name='extendedInfoArgs'>
 /// Required. Create resource exnteded info input parameters.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// A standard service response including an HTTP status code and
 /// request ID.
 /// </returns>
 public static Task <AzureOperationResponse> CreateExtendedInfoAsync(this IVaultExtendedInfoOperations operations, string resourceGroupName, string resourceName, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.CreateExtendedInfoAsync(resourceGroupName, resourceName, extendedInfoArgs, customRequestHeaders, CancellationToken.None));
 }
 /// <summary>
 /// Get the vault extended info.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.RecoveryServices.IVaultExtendedInfoOperations.
 /// </param>
 /// <param name='resourceGroupName'>
 /// Required. The name of the resource group containing the job
 /// collection.
 /// </param>
 /// <param name='resourceName'>
 /// Required. The name of the resource.
 /// </param>
 /// <param name='extendedInfoArgs'>
 /// Required. Create resource exnteded info input parameters.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// A standard service response including an HTTP status code and
 /// request ID.
 /// </returns>
 public static AzureOperationResponse CreateExtendedInfo(this IVaultExtendedInfoOperations operations, string resourceGroupName, string resourceName, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IVaultExtendedInfoOperations)s).CreateExtendedInfoAsync(resourceGroupName, resourceName, extendedInfoArgs, customRequestHeaders);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
        /// <summary>
        /// Get the vault extended info.
        /// </summary>
        /// <param name='resourceGroupName'>
        /// Required. The name of the resource group containing the job
        /// collection.
        /// </param>
        /// <param name='resourceName'>
        /// Required. The name of the resource.
        /// </param>
        /// <param name='extendedInfoArgs'>
        /// Required. Create resource exnteded info input parameters.
        /// </param>
        /// <param name='customRequestHeaders'>
        /// Optional. Request header parameters.
        /// </param>
        /// <param name='cancellationToken'>
        /// Cancellation token.
        /// </param>
        /// <returns>
        /// A standard service response including an HTTP status code and
        /// request ID.
        /// </returns>
        public async Task <AzureOperationResponse> CreateExtendedInfoAsync(string resourceGroupName, string resourceName, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders, CancellationToken cancellationToken)
        {
            // Validate
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException("resourceGroupName");
            }
            if (resourceName == null)
            {
                throw new ArgumentNullException("resourceName");
            }
            if (extendedInfoArgs == null)
            {
                throw new ArgumentNullException("extendedInfoArgs");
            }
            if (extendedInfoArgs.ContractVersion == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ContractVersion");
            }
            if (extendedInfoArgs.ExtendedInfo == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ExtendedInfo");
            }
            if (extendedInfoArgs.ExtendedInfoETag == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ExtendedInfoETag");
            }

            // Tracing
            bool   shouldTrace  = TracingAdapter.IsEnabled;
            string invocationId = null;

            if (shouldTrace)
            {
                invocationId = TracingAdapter.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("resourceGroupName", resourceGroupName);
                tracingParameters.Add("resourceName", resourceName);
                tracingParameters.Add("extendedInfoArgs", extendedInfoArgs);
                tracingParameters.Add("customRequestHeaders", customRequestHeaders);
                TracingAdapter.Enter(invocationId, this, "CreateExtendedInfoAsync", tracingParameters);
            }

            // Construct URL
            string url = "";

            url = url + "/Subscriptions/";
            if (this.Client.Credentials.SubscriptionId != null)
            {
                url = url + Uri.EscapeDataString(this.Client.Credentials.SubscriptionId);
            }
            url = url + "/resourceGroups/";
            url = url + Uri.EscapeDataString(resourceGroupName);
            url = url + "/providers/";
            url = url + Uri.EscapeDataString(this.Client.ResourceNamespace);
            url = url + "/";
            url = url + Uri.EscapeDataString(this.Client.ResourceType);
            url = url + "/";
            url = url + Uri.EscapeDataString(resourceName);
            url = url + "/ExtendedInfo";
            List <string> queryParameters = new List <string>();

            queryParameters.Add("api-version=2015-08-15");
            if (queryParameters.Count > 0)
            {
                url = url + "?" + string.Join("&", queryParameters);
            }
            string baseUrl = this.Client.BaseUri.AbsoluteUri;

            // Trim '/' character from the end of baseUrl and beginning of url.
            if (baseUrl[baseUrl.Length - 1] == '/')
            {
                baseUrl = baseUrl.Substring(0, baseUrl.Length - 1);
            }
            if (url[0] == '/')
            {
                url = url.Substring(1);
            }
            url = baseUrl + "/" + url;
            url = url.Replace(" ", "%20");

            // Create HTTP transport objects
            HttpRequestMessage httpRequest = null;

            try
            {
                httpRequest            = new HttpRequestMessage();
                httpRequest.Method     = HttpMethod.Put;
                httpRequest.RequestUri = new Uri(url);

                // Set Headers
                httpRequest.Headers.Add("Accept-Language", customRequestHeaders.Culture);
                httpRequest.Headers.Add("x-ms-client-request-id", customRequestHeaders.ClientRequestId);
                httpRequest.Headers.Add("x-ms-version", "2015-01-01");

                // Set Credentials
                cancellationToken.ThrowIfCancellationRequested();
                await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                // Serialize Request
                string requestContent = null;
                JToken requestDoc     = null;

                JObject resourceExtendedInformationArgsValue = new JObject();
                requestDoc = resourceExtendedInformationArgsValue;

                resourceExtendedInformationArgsValue["ContractVersion"] = extendedInfoArgs.ContractVersion;

                resourceExtendedInformationArgsValue["ExtendedInfo"] = extendedInfoArgs.ExtendedInfo;

                resourceExtendedInformationArgsValue["ExtendedInfoETag"] = extendedInfoArgs.ExtendedInfoETag;

                requestContent      = requestDoc.ToString(Newtonsoft.Json.Formatting.Indented);
                httpRequest.Content = new StringContent(requestContent, Encoding.UTF8);
                httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");

                // Send Request
                HttpResponseMessage httpResponse = null;
                try
                {
                    if (shouldTrace)
                    {
                        TracingAdapter.SendRequest(invocationId, httpRequest);
                    }
                    cancellationToken.ThrowIfCancellationRequested();
                    httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                    if (shouldTrace)
                    {
                        TracingAdapter.ReceiveResponse(invocationId, httpResponse);
                    }
                    HttpStatusCode statusCode = httpResponse.StatusCode;
                    if (statusCode >= HttpStatusCode.BadRequest)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        CloudException ex = CloudException.Create(httpRequest, requestContent, httpResponse, await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false));
                        if (shouldTrace)
                        {
                            TracingAdapter.Error(invocationId, ex);
                        }
                        throw ex;
                    }

                    // Create Result
                    AzureOperationResponse result = null;
                    // Deserialize Response
                    result            = new AzureOperationResponse();
                    result.StatusCode = statusCode;
                    if (httpResponse.Headers.Contains("x-ms-request-id"))
                    {
                        result.RequestId = httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                    }

                    if (shouldTrace)
                    {
                        TracingAdapter.Exit(invocationId, result);
                    }
                    return(result);
                }
                finally
                {
                    if (httpResponse != null)
                    {
                        httpResponse.Dispose();
                    }
                }
            }
            finally
            {
                if (httpRequest != null)
                {
                    httpRequest.Dispose();
                }
            }
        }
        /// <summary>
        /// Get the vault extended info.
        /// </summary>
        /// <param name='resourceGroupName'>
        /// Required. The name of the resource group containing the job
        /// collection.
        /// </param>
        /// <param name='resourceName'>
        /// Required. The name of the resource.
        /// </param>
        /// <param name='extendedInfoArgs'>
        /// Optional. Update resource exnteded info input parameters.
        /// </param>
        /// <param name='customRequestHeaders'>
        /// Optional. Request header parameters.
        /// </param>
        /// <param name='cancellationToken'>
        /// Cancellation token.
        /// </param>
        /// <returns>
        /// The response model for the resource extended information object
        /// </returns>
        public async Task <ResourceExtendedInformationResponse> UpdateExtendedInfoAsync(string resourceGroupName, string resourceName, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders, CancellationToken cancellationToken)
        {
            // Validate
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException("resourceGroupName");
            }
            if (resourceName == null)
            {
                throw new ArgumentNullException("resourceName");
            }
            if (extendedInfoArgs != null)
            {
                if (extendedInfoArgs.ContractVersion == null)
                {
                    throw new ArgumentNullException("extendedInfoArgs.ContractVersion");
                }
                if (extendedInfoArgs.ExtendedInfo == null)
                {
                    throw new ArgumentNullException("extendedInfoArgs.ExtendedInfo");
                }
                if (extendedInfoArgs.ExtendedInfoETag == null)
                {
                    throw new ArgumentNullException("extendedInfoArgs.ExtendedInfoETag");
                }
            }

            // Tracing
            bool   shouldTrace  = TracingAdapter.IsEnabled;
            string invocationId = null;

            if (shouldTrace)
            {
                invocationId = TracingAdapter.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("resourceGroupName", resourceGroupName);
                tracingParameters.Add("resourceName", resourceName);
                tracingParameters.Add("extendedInfoArgs", extendedInfoArgs);
                tracingParameters.Add("customRequestHeaders", customRequestHeaders);
                TracingAdapter.Enter(invocationId, this, "UpdateExtendedInfoAsync", tracingParameters);
            }

            // Construct URL
            string url = "";

            url = url + "/Subscriptions/";
            if (this.Client.Credentials.SubscriptionId != null)
            {
                url = url + Uri.EscapeDataString(this.Client.Credentials.SubscriptionId);
            }
            url = url + "/resourceGroups/";
            url = url + Uri.EscapeDataString(resourceGroupName);
            url = url + "/providers/";
            url = url + Uri.EscapeDataString(this.Client.ResourceNamespace);
            url = url + "/";
            url = url + Uri.EscapeDataString(this.Client.ResourceType);
            url = url + "/";
            url = url + Uri.EscapeDataString(resourceName);
            url = url + "/ExtendedInfo";
            List <string> queryParameters = new List <string>();

            queryParameters.Add("api-version=2015-08-15");
            if (queryParameters.Count > 0)
            {
                url = url + "?" + string.Join("&", queryParameters);
            }
            string baseUrl = this.Client.BaseUri.AbsoluteUri;

            // Trim '/' character from the end of baseUrl and beginning of url.
            if (baseUrl[baseUrl.Length - 1] == '/')
            {
                baseUrl = baseUrl.Substring(0, baseUrl.Length - 1);
            }
            if (url[0] == '/')
            {
                url = url.Substring(1);
            }
            url = baseUrl + "/" + url;
            url = url.Replace(" ", "%20");

            // Create HTTP transport objects
            HttpRequestMessage httpRequest = null;

            try
            {
                httpRequest            = new HttpRequestMessage();
                httpRequest.Method     = HttpMethod.Post;
                httpRequest.RequestUri = new Uri(url);

                // Set Headers
                httpRequest.Headers.Add("Accept-Language", customRequestHeaders.Culture);
                httpRequest.Headers.Add("x-ms-client-request-id", customRequestHeaders.ClientRequestId);
                httpRequest.Headers.Add("x-ms-version", "2015-01-01");

                // Set Credentials
                cancellationToken.ThrowIfCancellationRequested();
                await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                // Send Request
                HttpResponseMessage httpResponse = null;
                try
                {
                    if (shouldTrace)
                    {
                        TracingAdapter.SendRequest(invocationId, httpRequest);
                    }
                    cancellationToken.ThrowIfCancellationRequested();
                    httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                    if (shouldTrace)
                    {
                        TracingAdapter.ReceiveResponse(invocationId, httpResponse);
                    }
                    HttpStatusCode statusCode = httpResponse.StatusCode;
                    if (statusCode != HttpStatusCode.OK)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        CloudException ex = CloudException.Create(httpRequest, null, httpResponse, await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false));
                        if (shouldTrace)
                        {
                            TracingAdapter.Error(invocationId, ex);
                        }
                        throw ex;
                    }

                    // Create Result
                    ResourceExtendedInformationResponse result = null;
                    // Deserialize Response
                    if (statusCode == HttpStatusCode.OK)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        string responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                        result = new ResourceExtendedInformationResponse();
                        JToken responseDoc = null;
                        if (string.IsNullOrEmpty(responseContent) == false)
                        {
                            responseDoc = JToken.Parse(responseContent);
                        }

                        if (responseDoc != null && responseDoc.Type != JTokenType.Null)
                        {
                            ResourceExtendedInformation extendedInformationInstance = new ResourceExtendedInformation();
                            result.ResourceExtendedInformation = extendedInformationInstance;

                            JToken resourceGroupNameValue = responseDoc["resourceGroupName"];
                            if (resourceGroupNameValue != null && resourceGroupNameValue.Type != JTokenType.Null)
                            {
                                string resourceGroupNameInstance = ((string)resourceGroupNameValue);
                                extendedInformationInstance.ResourceGroupName = resourceGroupNameInstance;
                            }

                            JToken extendedInfoValue = responseDoc["extendedInfo"];
                            if (extendedInfoValue != null && extendedInfoValue.Type != JTokenType.Null)
                            {
                                string extendedInfoInstance = ((string)extendedInfoValue);
                                extendedInformationInstance.ExtendedInfo = extendedInfoInstance;
                            }

                            JToken extendedInfoETagValue = responseDoc["extendedInfoETag"];
                            if (extendedInfoETagValue != null && extendedInfoETagValue.Type != JTokenType.Null)
                            {
                                string extendedInfoETagInstance = ((string)extendedInfoETagValue);
                                extendedInformationInstance.ExtendedInfoETag = extendedInfoETagInstance;
                            }

                            JToken resourceIdValue = responseDoc["resourceId"];
                            if (resourceIdValue != null && resourceIdValue.Type != JTokenType.Null)
                            {
                                long resourceIdInstance = ((long)resourceIdValue);
                                extendedInformationInstance.ResourceId = resourceIdInstance;
                            }

                            JToken resourceNameValue = responseDoc["resourceName"];
                            if (resourceNameValue != null && resourceNameValue.Type != JTokenType.Null)
                            {
                                string resourceNameInstance = ((string)resourceNameValue);
                                extendedInformationInstance.ResourceName = resourceNameInstance;
                            }

                            JToken resourceTypeValue = responseDoc["resourceType"];
                            if (resourceTypeValue != null && resourceTypeValue.Type != JTokenType.Null)
                            {
                                string resourceTypeInstance = ((string)resourceTypeValue);
                                extendedInformationInstance.ResourceType = resourceTypeInstance;
                            }

                            JToken subscriptionIdValue = responseDoc["subscriptionId"];
                            if (subscriptionIdValue != null && subscriptionIdValue.Type != JTokenType.Null)
                            {
                                Guid subscriptionIdInstance = Guid.Parse(((string)subscriptionIdValue));
                                extendedInformationInstance.SubscriptionId = subscriptionIdInstance;
                            }
                        }
                    }
                    result.StatusCode = statusCode;
                    if (httpResponse.Headers.Contains("x-ms-request-id"))
                    {
                        result.RequestId = httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                    }

                    if (shouldTrace)
                    {
                        TracingAdapter.Exit(invocationId, result);
                    }
                    return(result);
                }
                finally
                {
                    if (httpResponse != null)
                    {
                        httpResponse.Dispose();
                    }
                }
            }
            finally
            {
                if (httpRequest != null)
                {
                    httpRequest.Dispose();
                }
            }
        }
Ejemplo n.º 12
0
        public void CreateAndRetrieveVaultExtendedInfo()
        {
            using (UndoContext context = UndoContext.Current)
            {
                context.Start();
                var rsmClient = GetRecoveryServicesClient(CustomHttpHandler);

                ResourceExtendedInformationArgs args =
                    new ResourceExtendedInformationArgs("1.0", "extendedinfo", Guid.NewGuid().ToString());

                AzureOperationResponse response = rsmClient.VaultExtendedInfo.CreateExtendedInfo(resourceGroupName, resourceName, args, RequestHeaders);
                Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);

                ResourceExtendedInformationResponse extendedInfoResponse = rsmClient.VaultExtendedInfo.GetExtendedInfo(resourceGroupName, resourceName, RequestHeaders);
                Assert.NotNull(extendedInfoResponse.ResourceExtendedInformation.ExtendedInfo);
                Assert.Equal(HttpStatusCode.OK, extendedInfoResponse.StatusCode);
            }
        }
        /// <summary>
        /// Update the vault extended info.
        /// </summary>
        /// <param name='resourceGroupName'>
        /// Required. The name of the resource group containing the vault.
        /// </param>
        /// <param name='resourceName'>
        /// Required. The name of the resource.
        /// </param>
        /// <param name='extendedInfoArgs'>
        /// Required. Update resource extended info input parameters.
        /// </param>
        /// <param name='customRequestHeaders'>
        /// Optional. Request header parameters.
        /// </param>
        /// <param name='cancellationToken'>
        /// Cancellation token.
        /// </param>
        /// <returns>
        /// The response model for the resource extended information object
        /// </returns>
        public async Task <ResourceExtendedInformationResponse> UpdateExtendedInfoAsync(string resourceGroupName, string resourceName, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders, CancellationToken cancellationToken)
        {
            // Validate
            if (resourceGroupName == null)
            {
                throw new ArgumentNullException("resourceGroupName");
            }
            if (resourceName == null)
            {
                throw new ArgumentNullException("resourceName");
            }
            if (extendedInfoArgs == null)
            {
                throw new ArgumentNullException("extendedInfoArgs");
            }
            if (extendedInfoArgs.Properties == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.Properties");
            }

            // Tracing
            bool   shouldTrace  = TracingAdapter.IsEnabled;
            string invocationId = null;

            if (shouldTrace)
            {
                invocationId = TracingAdapter.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("resourceGroupName", resourceGroupName);
                tracingParameters.Add("resourceName", resourceName);
                tracingParameters.Add("extendedInfoArgs", extendedInfoArgs);
                tracingParameters.Add("customRequestHeaders", customRequestHeaders);
                TracingAdapter.Enter(invocationId, this, "UpdateExtendedInfoAsync", tracingParameters);
            }

            // Construct URL
            string url = "";

            url = url + "/Subscriptions/";
            if (this.Client.Credentials.SubscriptionId != null)
            {
                url = url + Uri.EscapeDataString(this.Client.Credentials.SubscriptionId);
            }
            url = url + "/resourceGroups/";
            url = url + Uri.EscapeDataString(resourceGroupName);
            url = url + "/providers/";
            url = url + Uri.EscapeDataString(this.Client.ResourceNamespace);
            url = url + "/";
            url = url + "vaults";
            url = url + "/";
            url = url + Uri.EscapeDataString(resourceName);
            url = url + "/extendedInformation/vaultExtendedInfo";
            List <string> queryParameters = new List <string>();

            queryParameters.Add("api-version=2015-08-15");
            if (queryParameters.Count > 0)
            {
                url = url + "?" + string.Join("&", queryParameters);
            }
            string baseUrl = this.Client.BaseUri.AbsoluteUri;

            // Trim '/' character from the end of baseUrl and beginning of url.
            if (baseUrl[baseUrl.Length - 1] == '/')
            {
                baseUrl = baseUrl.Substring(0, baseUrl.Length - 1);
            }
            if (url[0] == '/')
            {
                url = url.Substring(1);
            }
            url = baseUrl + "/" + url;
            url = url.Replace(" ", "%20");

            // Create HTTP transport objects
            HttpRequestMessage httpRequest = null;

            try
            {
                httpRequest            = new HttpRequestMessage();
                httpRequest.Method     = new HttpMethod("PATCH");
                httpRequest.RequestUri = new Uri(url);

                // Set Headers
                httpRequest.Headers.Add("Accept-Language", customRequestHeaders.Culture);
                httpRequest.Headers.Add("x-ms-client-request-id", customRequestHeaders.ClientRequestId);
                httpRequest.Headers.Add("x-ms-version", "2015-01-01");

                // Set Credentials
                cancellationToken.ThrowIfCancellationRequested();
                await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                // Serialize Request
                string requestContent = null;
                JToken requestDoc     = null;

                JObject resourceExtendedInformationArgsValue = new JObject();
                requestDoc = resourceExtendedInformationArgsValue;

                JObject propertiesValue = new JObject();
                resourceExtendedInformationArgsValue["properties"] = propertiesValue;

                if (extendedInfoArgs.Properties.IntegrityKey != null)
                {
                    propertiesValue["integrityKey"] = extendedInfoArgs.Properties.IntegrityKey;
                }

                if (extendedInfoArgs.Properties.Algorithm != null)
                {
                    propertiesValue["algorithm"] = extendedInfoArgs.Properties.Algorithm;
                }

                if (extendedInfoArgs.Properties.EncryptionKey != null)
                {
                    propertiesValue["encryptionKey"] = extendedInfoArgs.Properties.EncryptionKey;
                }

                if (extendedInfoArgs.Properties.EncryptionKeyThumbprint != null)
                {
                    propertiesValue["encryptionKeyThumbprint"] = extendedInfoArgs.Properties.EncryptionKeyThumbprint;
                }

                requestContent      = requestDoc.ToString(Newtonsoft.Json.Formatting.Indented);
                httpRequest.Content = new StringContent(requestContent, Encoding.UTF8);
                httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8");

                // Send Request
                HttpResponseMessage httpResponse = null;
                try
                {
                    if (shouldTrace)
                    {
                        TracingAdapter.SendRequest(invocationId, httpRequest);
                    }
                    cancellationToken.ThrowIfCancellationRequested();
                    httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                    if (shouldTrace)
                    {
                        TracingAdapter.ReceiveResponse(invocationId, httpResponse);
                    }
                    HttpStatusCode statusCode = httpResponse.StatusCode;
                    if (statusCode != HttpStatusCode.OK)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        CloudException ex = CloudException.Create(httpRequest, requestContent, httpResponse, await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false));
                        if (shouldTrace)
                        {
                            TracingAdapter.Error(invocationId, ex);
                        }
                        throw ex;
                    }

                    // Create Result
                    ResourceExtendedInformationResponse result = null;
                    // Deserialize Response
                    if (statusCode == HttpStatusCode.OK)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        string responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                        result = new ResourceExtendedInformationResponse();
                        JToken responseDoc = null;
                        if (string.IsNullOrEmpty(responseContent) == false)
                        {
                            responseDoc = JToken.Parse(responseContent);
                        }

                        if (responseDoc != null && responseDoc.Type != JTokenType.Null)
                        {
                            ResourceExtendedInformation extendedInformationInstance = new ResourceExtendedInformation();
                            result.ResourceExtendedInformation = extendedInformationInstance;

                            JToken propertiesValue2 = responseDoc["properties"];
                            if (propertiesValue2 != null && propertiesValue2.Type != JTokenType.Null)
                            {
                                ResourceExtendedInfoProperties propertiesInstance = new ResourceExtendedInfoProperties();
                                extendedInformationInstance.Properties = propertiesInstance;

                                JToken integrityKeyValue = propertiesValue2["integrityKey"];
                                if (integrityKeyValue != null && integrityKeyValue.Type != JTokenType.Null)
                                {
                                    string integrityKeyInstance = ((string)integrityKeyValue);
                                    propertiesInstance.IntegrityKey = integrityKeyInstance;
                                }

                                JToken algorithmValue = propertiesValue2["algorithm"];
                                if (algorithmValue != null && algorithmValue.Type != JTokenType.Null)
                                {
                                    string algorithmInstance = ((string)algorithmValue);
                                    propertiesInstance.Algorithm = algorithmInstance;
                                }

                                JToken encryptionKeyValue = propertiesValue2["encryptionKey"];
                                if (encryptionKeyValue != null && encryptionKeyValue.Type != JTokenType.Null)
                                {
                                    string encryptionKeyInstance = ((string)encryptionKeyValue);
                                    propertiesInstance.EncryptionKey = encryptionKeyInstance;
                                }

                                JToken encryptionKeyThumbprintValue = propertiesValue2["encryptionKeyThumbprint"];
                                if (encryptionKeyThumbprintValue != null && encryptionKeyThumbprintValue.Type != JTokenType.Null)
                                {
                                    string encryptionKeyThumbprintInstance = ((string)encryptionKeyThumbprintValue);
                                    propertiesInstance.EncryptionKeyThumbprint = encryptionKeyThumbprintInstance;
                                }
                            }

                            JToken idValue = responseDoc["id"];
                            if (idValue != null && idValue.Type != JTokenType.Null)
                            {
                                string idInstance = ((string)idValue);
                                extendedInformationInstance.Id = idInstance;
                            }

                            JToken nameValue = responseDoc["name"];
                            if (nameValue != null && nameValue.Type != JTokenType.Null)
                            {
                                string nameInstance = ((string)nameValue);
                                extendedInformationInstance.Name = nameInstance;
                            }

                            JToken typeValue = responseDoc["type"];
                            if (typeValue != null && typeValue.Type != JTokenType.Null)
                            {
                                string typeInstance = ((string)typeValue);
                                extendedInformationInstance.Type = typeInstance;
                            }

                            JToken locationValue = responseDoc["location"];
                            if (locationValue != null && locationValue.Type != JTokenType.Null)
                            {
                                string locationInstance = ((string)locationValue);
                                extendedInformationInstance.Location = locationInstance;
                            }

                            JToken tagsSequenceElement = ((JToken)responseDoc["tags"]);
                            if (tagsSequenceElement != null && tagsSequenceElement.Type != JTokenType.Null)
                            {
                                foreach (JProperty property in tagsSequenceElement)
                                {
                                    string tagsKey   = ((string)property.Name);
                                    string tagsValue = ((string)property.Value);
                                    extendedInformationInstance.Tags.Add(tagsKey, tagsValue);
                                }
                            }
                        }
                    }
                    result.StatusCode = statusCode;
                    if (httpResponse.Headers.Contains("x-ms-request-id"))
                    {
                        result.RequestId = httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                    }

                    if (shouldTrace)
                    {
                        TracingAdapter.Exit(invocationId, result);
                    }
                    return(result);
                }
                finally
                {
                    if (httpResponse != null)
                    {
                        httpResponse.Dispose();
                    }
                }
            }
            finally
            {
                if (httpRequest != null)
                {
                    httpRequest.Dispose();
                }
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Get the vault extended info.
        /// </summary>
        /// <param name='extendedInfoArgs'>
        /// Required. Create resource exnteded info input parameters.
        /// </param>
        /// <param name='customRequestHeaders'>
        /// Optional. Request header parameters.
        /// </param>
        /// <param name='cancellationToken'>
        /// Cancellation token.
        /// </param>
        /// <returns>
        /// A standard service response including an HTTP status code and
        /// request ID.
        /// </returns>
        public async Task <AzureOperationResponse> CreateExtendedInfoAsync(ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders, CancellationToken cancellationToken)
        {
            // Validate
            if (extendedInfoArgs == null)
            {
                throw new ArgumentNullException("extendedInfoArgs");
            }
            if (extendedInfoArgs.ContractVersion == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ContractVersion");
            }
            if (extendedInfoArgs.ExtendedInfo == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ExtendedInfo");
            }
            if (extendedInfoArgs.ExtendedInfoETag == null)
            {
                throw new ArgumentNullException("extendedInfoArgs.ExtendedInfoETag");
            }

            // Tracing
            bool   shouldTrace  = TracingAdapter.IsEnabled;
            string invocationId = null;

            if (shouldTrace)
            {
                invocationId = TracingAdapter.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("extendedInfoArgs", extendedInfoArgs);
                tracingParameters.Add("customRequestHeaders", customRequestHeaders);
                TracingAdapter.Enter(invocationId, this, "CreateExtendedInfoAsync", tracingParameters);
            }

            // Construct URL
            string url = "";

            if (this.Client.Credentials.SubscriptionId != null)
            {
                url = url + Uri.EscapeDataString(this.Client.Credentials.SubscriptionId);
            }
            url = url + "/cloudservices/";
            url = url + Uri.EscapeDataString(this.Client.CloudServiceName);
            url = url + "/resources/";
            url = url + "WAHyperVRecoveryManager";
            url = url + "/~/";
            url = url + "HyperVRecoveryManagerVault";
            url = url + "/";
            url = url + Uri.EscapeDataString(this.Client.ResourceName);
            url = url + "/ExtendedInfo";
            string baseUrl = this.Client.BaseUri.AbsoluteUri;

            // Trim '/' character from the end of baseUrl and beginning of url.
            if (baseUrl[baseUrl.Length - 1] == '/')
            {
                baseUrl = baseUrl.Substring(0, baseUrl.Length - 1);
            }
            if (url[0] == '/')
            {
                url = url.Substring(1);
            }
            url = baseUrl + "/" + url;
            url = url.Replace(" ", "%20");

            // Create HTTP transport objects
            HttpRequestMessage httpRequest = null;

            try
            {
                httpRequest            = new HttpRequestMessage();
                httpRequest.Method     = HttpMethod.Put;
                httpRequest.RequestUri = new Uri(url);

                // Set Headers
                httpRequest.Headers.Add("Accept", "application/xml");
                httpRequest.Headers.Add("x-ms-client-request-id", customRequestHeaders.ClientRequestId);
                httpRequest.Headers.Add("x-ms-version", "2013-03-01");

                // Set Credentials
                cancellationToken.ThrowIfCancellationRequested();
                await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                // Serialize Request
                string    requestContent = null;
                XDocument requestDoc     = new XDocument();

                XElement resourceExtendedInformationArgsElement = new XElement(XName.Get("ResourceExtendedInformationArgs", "http://schemas.microsoft.com/windowsazure"));
                requestDoc.Add(resourceExtendedInformationArgsElement);

                XElement contractVersionElement = new XElement(XName.Get("ContractVersion", "http://schemas.microsoft.com/windowsazure"));
                contractVersionElement.Value = extendedInfoArgs.ContractVersion;
                resourceExtendedInformationArgsElement.Add(contractVersionElement);

                XElement extendedInfoElement = new XElement(XName.Get("ExtendedInfo", "http://schemas.microsoft.com/windowsazure"));
                extendedInfoElement.Value = extendedInfoArgs.ExtendedInfo;
                resourceExtendedInformationArgsElement.Add(extendedInfoElement);

                XElement extendedInfoETagElement = new XElement(XName.Get("ExtendedInfoETag", "http://schemas.microsoft.com/windowsazure"));
                extendedInfoETagElement.Value = extendedInfoArgs.ExtendedInfoETag;
                resourceExtendedInformationArgsElement.Add(extendedInfoETagElement);

                requestContent      = requestDoc.ToString();
                httpRequest.Content = new StringContent(requestContent, Encoding.UTF8);
                httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/xml");

                // Send Request
                HttpResponseMessage httpResponse = null;
                try
                {
                    if (shouldTrace)
                    {
                        TracingAdapter.SendRequest(invocationId, httpRequest);
                    }
                    cancellationToken.ThrowIfCancellationRequested();
                    httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false);

                    if (shouldTrace)
                    {
                        TracingAdapter.ReceiveResponse(invocationId, httpResponse);
                    }
                    HttpStatusCode statusCode = httpResponse.StatusCode;
                    if (statusCode != HttpStatusCode.NoContent)
                    {
                        cancellationToken.ThrowIfCancellationRequested();
                        CloudException ex = CloudException.Create(httpRequest, requestContent, httpResponse, await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false));
                        if (shouldTrace)
                        {
                            TracingAdapter.Error(invocationId, ex);
                        }
                        throw ex;
                    }

                    // Create Result
                    AzureOperationResponse result = null;
                    // Deserialize Response
                    result            = new AzureOperationResponse();
                    result.StatusCode = statusCode;
                    if (httpResponse.Headers.Contains("x-ms-request-id"))
                    {
                        result.RequestId = httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                    }

                    if (shouldTrace)
                    {
                        TracingAdapter.Exit(invocationId, result);
                    }
                    return(result);
                }
                finally
                {
                    if (httpResponse != null)
                    {
                        httpResponse.Dispose();
                    }
                }
            }
            finally
            {
                if (httpRequest != null)
                {
                    httpRequest.Dispose();
                }
            }
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Creates the extended information for the vault
 /// </summary>
 /// <param name="extendedInfoArgs">extended info to be created</param>
 /// <returns>Vault Extended Information</returns>
 public AzureOperationResponse CreateExtendedInfo(ResourceExtendedInformationArgs extendedInfoArgs)
 {
     return(this.GetSiteRecoveryClient().VaultExtendedInfo.CreateExtendedInfo(extendedInfoArgs, this.GetRequestHeaders(false)));
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Get the vault extended info.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.WindowsAzure.Management.SiteRecovery.IVaultExtendedInfoOperations.
 /// </param>
 /// <param name='extendedInfoArgs'>
 /// Required. Update resource exnteded info input parameters.
 /// </param>
 /// <param name='customRequestHeaders'>
 /// Optional. Request header parameters.
 /// </param>
 /// <returns>
 /// The response model for the resource extended information object
 /// </returns>
 public static Task <ResourceExtendedInformationResponse> UpdateExtendedInfoAsync(this IVaultExtendedInfoOperations operations, ResourceExtendedInformationArgs extendedInfoArgs, CustomRequestHeaders customRequestHeaders)
 {
     return(operations.UpdateExtendedInfoAsync(extendedInfoArgs, customRequestHeaders, CancellationToken.None));
 }