Exemplo n.º 1
0
        public RatingValue?RatingFor(StepResource stepResource)
        {
            var ratings = ResourceRatings.Where(p => p.StepResource.Id == stepResource.Id).ToList();

            if (ratings.Count == 0)
            {
                return(null);
            }
            return((RatingValue)Math.Floor((decimal)ratings.Sum(p => (int)p.RatingValue) / ratings.Count()));
        }
Exemplo n.º 2
0
        private void ValidateStep(StepResource inputStep, StepResource stepResponse)
        {
            Assert.NotNull(stepResponse);
            Assert.Equal(inputStep.Location, stepResponse.Location);
            Assert.Equal(inputStep.Name, stepResponse.Name);

            var stepProperties = stepResponse.Properties as WaitStepProperties;

            Assert.NotNull(stepProperties);
            Assert.Equal(((WaitStepProperties)inputStep.Properties).Attributes.Duration, stepProperties.Attributes.Duration);
        }
Exemplo n.º 3
0
        public PSStepResource(string resourceGroupName, StepResource stepResource) : base(stepResource)
        {
            this.ResourceGroupName = resourceGroupName;

            if (stepResource.Properties is WaitStepProperties)
            {
                this.StepProperties = new PSWaitStepProperties((WaitStepProperties)stepResource.Properties);
            }
            else if (stepResource.Properties is HealthCheckStepProperties)
            {
                this.StepProperties = new PSHealthCheckStepProperties((HealthCheckStepProperties)stepResource.Properties);
            }
        }
Exemplo n.º 4
0
        public void TestFetchResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.OK,
                         "{\"sid\": \"FTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"flow_sid\": \"FWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"engagement_sid\": \"FNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\": \"incomingRequest\",\"context\": {},\"transitioned_from\": \"Trigger\",\"transitioned_to\": \"Ended\",\"date_created\": \"2017-11-06T12:00:00Z\",\"date_updated\": null,\"url\": \"https://preview.twilio.com/Studio/Flows/FWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Engagements/FNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Steps/FTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"}"
                         ));

            var response = StepResource.Fetch("FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "FTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Exemplo n.º 5
0
        public void TestReadEmptyResponse()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();

            twilioRestClient.AccountSid.Returns("ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
            twilioRestClient.Request(Arg.Any <Request>())
            .Returns(new Response(
                         System.Net.HttpStatusCode.OK,
                         "{\"meta\": {\"previous_page_url\": null,\"next_page_url\": null,\"url\": \"https://preview.twilio.com/Studio/Flows/FWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Engagements/FNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Steps?PageSize=50&Page=0\",\"page\": 0,\"first_page_url\": \"https://preview.twilio.com/Studio/Flows/FWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Engagements/FNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Steps?PageSize=50&Page=0\",\"page_size\": 50,\"key\": \"steps\"},\"steps\": []}"
                         ));

            var response = StepResource.Read("FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);

            Assert.NotNull(response);
        }
Exemplo n.º 6
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var step = StepResource.Fetch(
            pathFlowSid: "FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            pathEngagementSid: "FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            pathSid: "FTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(step.Name);
    }
Exemplo n.º 7
0
        private void ValidateHealthCheckStep(StepResource inputStep, StepResource stepResponse)
        {
            Assert.NotNull(stepResponse);
            Assert.Equal(inputStep.Location, stepResponse.Location);
            Assert.Equal(inputStep.Name, stepResponse.Name);

            var stepProperties = stepResponse.Properties as HealthCheckStepProperties;

            Assert.NotNull(stepProperties);
            Assert.Equal(((HealthCheckStepProperties)inputStep.Properties).Attributes.WaitDuration, stepProperties.Attributes.WaitDuration);
            Assert.Equal(((HealthCheckStepProperties)inputStep.Properties).Attributes.MaxElasticDuration, stepProperties.Attributes.MaxElasticDuration);
            Assert.Equal(((HealthCheckStepProperties)inputStep.Properties).Attributes.HealthyStateDuration, stepProperties.Attributes.HealthyStateDuration);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks.Count,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks.Count);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Name,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Name);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Request.Method,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Request.Method);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Request.Uri,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Request.Uri);
            Assert.Equal(
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Request.Authentication).Name,
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Request.Authentication).Name);
            Assert.Equal(
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Request.Authentication).InProperty,
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Request.Authentication).InProperty);
            Assert.Equal(
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Request.Authentication).Value,
                ((ApiKeyAuthentication)((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Request.Authentication).Value);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Response.SuccessStatusCodes.Count,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Response.SuccessStatusCodes.Count);
            Assert.Equal(
                ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Response.Regex.MatchQuantifier,
                ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Response.Regex.MatchQuantifier);

            foreach (var regex in ((RestHealthCheckStepAttributes)((HealthCheckStepProperties)inputStep.Properties).Attributes).HealthChecks[0].Response.Regex.Matches)
            {
                Assert.True(
                    ((RestHealthCheckStepAttributes)stepProperties.Attributes).HealthChecks[0].Response.Regex.Matches.Contains(regex));
            }
        }
Exemplo n.º 8
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var steps = StepResource.Read(
            pathFlowSid: "FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            pathEngagementSid: "FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        foreach (var record in steps)
        {
            Console.WriteLine(record.Sid);
        }
    }
Exemplo n.º 9
0
        public void TestFetchRequest()
        {
            var twilioRestClient = Substitute.For <ITwilioRestClient>();
            var request          = new Request(
                HttpMethod.Get,
                Twilio.Rest.Domain.Preview,
                "/Studio/Flows/FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Engagements/FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Steps/FTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                ""
                );

            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                StepResource.Fetch("FWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "FNXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "FTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", client: twilioRestClient);
                Assert.Fail("Expected TwilioException to be thrown for 500");
            }
            catch (ApiException) {}
            twilioRestClient.Received().Request(request);
        }
        public ActionResult EditStepResource(ManageStepResourceViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            StepResource stepResource = null;

            if (model.Id != null)
            {
                stepResource = Db.StepResources.FirstOrDefault(p => p.Id == model.Id);
                if (stepResource != null)
                {
                    stepResource.Name        = model.Name;
                    stepResource.Description = model.Description;
                }
            }
            else
            {
                var currentUserId = User.Identity.GetUserId();

                RoadStep roadStep = null;
                if (model.RoadStepId != null)
                {
                    roadStep = Db.RoadSteps.FirstOrDefault(p => p.Id == model.RoadStepId);
                }

                stepResource = new StepResource(model.Name, model.Description, currentUserId, roadStep);
                Db.StepResources.Add(stepResource);
            }

            Db.SaveChanges();

            return(RedirectToAction("EditRoadStep", new { @id = model.RoadStepId }));
        }
Exemplo n.º 11
0
        private void StepsCrudTests(
            string serviceTopologyId,
            string artifactSourceId,
            string serviceUnitId,
            string failureServiceUnitId,
            string location,
            DeploymentManagerClientHelper clientHelper,
            AzureDeploymentManagerClient deploymentManagerClient)
        {
            // Test Create step.
            var stepName       = clientHelper.ResourceGroupName + "WaitStep";
            var stepProperties = new WaitStepProperties()
            {
                Attributes = new WaitStepAttributes()
                {
                    Duration = "PT5M"
                }
            };

            var inputStep = new StepResource(
                location: location,
                properties: stepProperties,
                name: stepName);

            var stepResponse = deploymentManagerClient.Steps.CreateOrUpdate(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName,
                stepInfo: inputStep);

            this.ValidateStep(inputStep, stepResponse);

            // Test Get step.
            var getStepResource = deploymentManagerClient.Steps.Get(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName);

            this.ValidateStep(inputStep, getStepResource);

            this.RolloutCrudTests(
                serviceTopologyId: serviceTopologyId,
                artifactSourceId: artifactSourceId,
                serviceUnitId: serviceUnitId,
                failureServiceUnitId: failureServiceUnitId,
                stepId: getStepResource.Id,
                location: location,
                deploymentManagerClient: deploymentManagerClient,
                clientHelper: clientHelper);

            // Test Update step.
            ((WaitStepProperties)(getStepResource.Properties)).Attributes.Duration = "PT10M";
            var updatedStepResource = deploymentManagerClient.Steps.CreateOrUpdate(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName,
                stepInfo: getStepResource);

            this.ValidateStep(getStepResource, updatedStepResource);

            // Test Delete step.
            deploymentManagerClient.Steps.Delete(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName);

            var cloudException = Assert.Throws <CloudException>(() => deploymentManagerClient.Steps.Get(
                                                                    resourceGroupName: clientHelper.ResourceGroupName,
                                                                    stepName: stepName));

            Assert.Equal(HttpStatusCode.NotFound, cloudException.Response.StatusCode);
        }
 /// <summary>
 /// Creates or updates a rollout step with the given step properties.
 /// </summary>
 /// <remarks>
 /// Synchronously creates a new step or updates an existing step.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='stepName'>
 /// The name of the deployment step.
 /// </param>
 /// <param name='stepInfo'>
 /// The step object.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <StepResource> CreateOrUpdateAsync(this IStepsOperations operations, string resourceGroupName, string stepName, StepResource stepInfo = default(StepResource), CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, stepName, stepInfo, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Creates or updates a rollout step with the given step properties.
 /// </summary>
 /// <remarks>
 /// Synchronously creates a new step or updates an existing step.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='resourceGroupName'>
 /// The name of the resource group. The name is case insensitive.
 /// </param>
 /// <param name='stepName'>
 /// The name of the deployment step.
 /// </param>
 /// <param name='stepInfo'>
 /// The step object.
 /// </param>
 public static StepResource CreateOrUpdate(this IStepsOperations operations, string resourceGroupName, string stepName, StepResource stepInfo = default(StepResource))
 {
     return(operations.CreateOrUpdateAsync(resourceGroupName, stepName, stepInfo).GetAwaiter().GetResult());
 }
Exemplo n.º 14
0
        /// <summary>
        /// Creates or updates a rollout step with the given step properties.
        /// </summary>
        /// <remarks>
        /// Synchronously creates a new step or updates an existing step.
        /// </remarks>
        /// <param name='resourceGroupName'>
        /// The name of the resource group. The name is case insensitive.
        /// </param>
        /// <param name='stepName'>
        /// The name of the deployment step.
        /// </param>
        /// <param name='stepInfo'>
        /// The step object.
        /// </param>
        /// <param name='customHeaders'>
        /// Headers that will be added to request.
        /// </param>
        /// <param name='cancellationToken'>
        /// The cancellation token.
        /// </param>
        /// <exception cref="CloudException">
        /// Thrown when the operation returned an invalid status code
        /// </exception>
        /// <exception cref="SerializationException">
        /// Thrown when unable to deserialize the response
        /// </exception>
        /// <exception cref="ValidationException">
        /// Thrown when a required parameter is null
        /// </exception>
        /// <exception cref="System.ArgumentNullException">
        /// Thrown when a required parameter is null
        /// </exception>
        /// <return>
        /// A response object containing the response body and response headers.
        /// </return>
        public async Task <AzureOperationResponse <StepResource> > CreateOrUpdateWithHttpMessagesAsync(string resourceGroupName, string stepName, StepResource stepInfo = default(StepResource), Dictionary <string, List <string> > customHeaders = null, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (Client.SubscriptionId == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "this.Client.SubscriptionId");
            }
            if (resourceGroupName == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "resourceGroupName");
            }
            if (resourceGroupName != null)
            {
                if (resourceGroupName.Length > 90)
                {
                    throw new ValidationException(ValidationRules.MaxLength, "resourceGroupName", 90);
                }
                if (resourceGroupName.Length < 1)
                {
                    throw new ValidationException(ValidationRules.MinLength, "resourceGroupName", 1);
                }
                if (!System.Text.RegularExpressions.Regex.IsMatch(resourceGroupName, "^[-\\w\\._\\(\\)]+$"))
                {
                    throw new ValidationException(ValidationRules.Pattern, "resourceGroupName", "^[-\\w\\._\\(\\)]+$");
                }
            }
            if (stepName == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "stepName");
            }
            if (Client.ApiVersion == null)
            {
                throw new ValidationException(ValidationRules.CannotBeNull, "this.Client.ApiVersion");
            }
            if (stepInfo != null)
            {
                stepInfo.Validate();
            }
            // Tracing
            bool   _shouldTrace  = ServiceClientTracing.IsEnabled;
            string _invocationId = null;

            if (_shouldTrace)
            {
                _invocationId = ServiceClientTracing.NextInvocationId.ToString();
                Dictionary <string, object> tracingParameters = new Dictionary <string, object>();
                tracingParameters.Add("resourceGroupName", resourceGroupName);
                tracingParameters.Add("stepName", stepName);
                tracingParameters.Add("stepInfo", stepInfo);
                tracingParameters.Add("cancellationToken", cancellationToken);
                ServiceClientTracing.Enter(_invocationId, this, "CreateOrUpdate", tracingParameters);
            }
            // Construct URL
            var _baseUrl = Client.BaseUri.AbsoluteUri;
            var _url     = new System.Uri(new System.Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DeploymentManager/steps/{stepName}").ToString();

            _url = _url.Replace("{subscriptionId}", System.Uri.EscapeDataString(Client.SubscriptionId));
            _url = _url.Replace("{resourceGroupName}", System.Uri.EscapeDataString(resourceGroupName));
            _url = _url.Replace("{stepName}", System.Uri.EscapeDataString(stepName));
            List <string> _queryParameters = new List <string>();

            if (Client.ApiVersion != null)
            {
                _queryParameters.Add(string.Format("api-version={0}", System.Uri.EscapeDataString(Client.ApiVersion)));
            }
            if (_queryParameters.Count > 0)
            {
                _url += (_url.Contains("?") ? "&" : "?") + string.Join("&", _queryParameters);
            }
            // Create HTTP transport objects
            var _httpRequest = new HttpRequestMessage();
            HttpResponseMessage _httpResponse = null;

            _httpRequest.Method     = new HttpMethod("PUT");
            _httpRequest.RequestUri = new System.Uri(_url);
            // Set Headers
            if (Client.GenerateClientRequestId != null && Client.GenerateClientRequestId.Value)
            {
                _httpRequest.Headers.TryAddWithoutValidation("x-ms-client-request-id", System.Guid.NewGuid().ToString());
            }
            if (Client.AcceptLanguage != null)
            {
                if (_httpRequest.Headers.Contains("accept-language"))
                {
                    _httpRequest.Headers.Remove("accept-language");
                }
                _httpRequest.Headers.TryAddWithoutValidation("accept-language", Client.AcceptLanguage);
            }


            if (customHeaders != null)
            {
                foreach (var _header in customHeaders)
                {
                    if (_httpRequest.Headers.Contains(_header.Key))
                    {
                        _httpRequest.Headers.Remove(_header.Key);
                    }
                    _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value);
                }
            }

            // Serialize Request
            string _requestContent = null;

            if (stepInfo != null)
            {
                _requestContent      = Rest.Serialization.SafeJsonConvert.SerializeObject(stepInfo, Client.SerializationSettings);
                _httpRequest.Content = new StringContent(_requestContent, System.Text.Encoding.UTF8);
                _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8");
            }
            // Set Credentials
            if (Client.Credentials != null)
            {
                cancellationToken.ThrowIfCancellationRequested();
                await Client.Credentials.ProcessHttpRequestAsync(_httpRequest, cancellationToken).ConfigureAwait(false);
            }
            // Send Request
            if (_shouldTrace)
            {
                ServiceClientTracing.SendRequest(_invocationId, _httpRequest);
            }
            cancellationToken.ThrowIfCancellationRequested();
            _httpResponse = await Client.HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false);

            if (_shouldTrace)
            {
                ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse);
            }
            HttpStatusCode _statusCode = _httpResponse.StatusCode;

            cancellationToken.ThrowIfCancellationRequested();
            string _responseContent = null;

            if ((int)_statusCode != 201)
            {
                var ex = new CloudException(string.Format("Operation returned an invalid status code '{0}'", _statusCode));
                try
                {
                    _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                    CloudError _errorBody = Rest.Serialization.SafeJsonConvert.DeserializeObject <CloudError>(_responseContent, Client.DeserializationSettings);
                    if (_errorBody != null)
                    {
                        ex      = new CloudException(_errorBody.Message);
                        ex.Body = _errorBody;
                    }
                }
                catch (JsonException)
                {
                    // Ignore the exception
                }
                ex.Request  = new HttpRequestMessageWrapper(_httpRequest, _requestContent);
                ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent);
                if (_httpResponse.Headers.Contains("x-ms-request-id"))
                {
                    ex.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
                }
                if (_shouldTrace)
                {
                    ServiceClientTracing.Error(_invocationId, ex);
                }
                _httpRequest.Dispose();
                if (_httpResponse != null)
                {
                    _httpResponse.Dispose();
                }
                throw ex;
            }
            // Create Result
            var _result = new AzureOperationResponse <StepResource>();

            _result.Request  = _httpRequest;
            _result.Response = _httpResponse;
            if (_httpResponse.Headers.Contains("x-ms-request-id"))
            {
                _result.RequestId = _httpResponse.Headers.GetValues("x-ms-request-id").FirstOrDefault();
            }
            // Deserialize Response
            if ((int)_statusCode == 201)
            {
                _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);

                try
                {
                    _result.Body = Rest.Serialization.SafeJsonConvert.DeserializeObject <StepResource>(_responseContent, Client.DeserializationSettings);
                }
                catch (JsonException ex)
                {
                    _httpRequest.Dispose();
                    if (_httpResponse != null)
                    {
                        _httpResponse.Dispose();
                    }
                    throw new SerializationException("Unable to deserialize the response.", _responseContent, ex);
                }
            }
            if (_shouldTrace)
            {
                ServiceClientTracing.Exit(_invocationId, _result);
            }
            return(_result);
        }
Exemplo n.º 15
0
        private void HealthCheckStepTests(
            string location,
            DeploymentManagerClientHelper clientHelper,
            AzureDeploymentManagerClient deploymentManagerClient)
        {
            // Test Create step.
            var stepName = clientHelper.ResourceGroupName + "HealthCheckStep";

            var healthChecks = new List <RestHealthCheck>();

            healthChecks.Add(new RestHealthCheck()
            {
                Name    = "webAppHealthCheck",
                Request = new RestRequest()
                {
                    Method         = RestRequestMethod.GET,
                    Uri            = "https://clientvalidations.deploymentmanager.net/healthstatus",
                    Authentication = new ApiKeyAuthentication()
                    {
                        Name       = "code",
                        InProperty = RestAuthLocation.Header,
                        Value      = "AuthValue"
                    }
                },
                Response = new RestResponse()
                {
                    SuccessStatusCodes = new List <string> {
                        "200", "204"
                    },
                    Regex = new RestResponseRegex()
                    {
                        MatchQuantifier = RestMatchQuantifier.All,
                        Matches         = new List <string>
                        {
                            "Contoso-Service-EndToEnd",
                            "(?i)\"health_status\":((.|\n)*)\"(green|yellow)\"",
                            "(?mi)^(\"application_host\": 94781052)$"
                        }
                    }
                }
            });

            healthChecks.Add(new RestHealthCheck()
            {
                Name    = "webBackEndHealthCheck",
                Request = new RestRequest()
                {
                    Method         = RestRequestMethod.GET,
                    Uri            = "https://clientvalidations.deploymentmanager.net/healthstatus",
                    Authentication = new RolloutIdentityAuthentication()
                },
                Response = new RestResponse()
                {
                    SuccessStatusCodes = new List <string> {
                        "200", "204"
                    },
                    Regex = new RestResponseRegex()
                    {
                        MatchQuantifier = RestMatchQuantifier.All,
                        Matches         = new List <string>
                        {
                            "Contoso-Service-Backend",
                            "(?i)\"health_status\":((.|\n)*)\"(green|yellow)\"",
                            "(?mi)^(\"application_host\": 94781055)$"
                        }
                    }
                }
            });

            var stepProperties = new HealthCheckStepProperties()
            {
                Attributes = new RestHealthCheckStepAttributes()
                {
                    WaitDuration         = "PT10M",
                    MaxElasticDuration   = "PT15M",
                    HealthyStateDuration = "PT30M",
                    HealthChecks         = healthChecks
                }
            };

            var inputStep = new StepResource(
                location: location,
                properties: stepProperties,
                name: stepName);

            var stepResponse = deploymentManagerClient.Steps.CreateOrUpdate(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName,
                stepInfo: inputStep);

            this.ValidateHealthCheckStep(inputStep, stepResponse);

            // Test list steps.
            var steps = deploymentManagerClient.Steps.List(
                resourceGroupName: clientHelper.ResourceGroupName);

            Assert.Equal(2, steps.Count);
            this.ValidateHealthCheckStep(inputStep, steps.ToList().First(s => s.Name.Equals(inputStep.Name, StringComparison.InvariantCultureIgnoreCase)));

            deploymentManagerClient.Steps.Delete(
                resourceGroupName: clientHelper.ResourceGroupName,
                stepName: stepName);

            var cloudException = Assert.Throws <CloudException>(() => deploymentManagerClient.Steps.Get(
                                                                    resourceGroupName: clientHelper.ResourceGroupName,
                                                                    stepName: stepName));

            Assert.Equal(HttpStatusCode.NotFound, cloudException.Response.StatusCode);
        }
Exemplo n.º 16
0
 public PSStepResource(string resourceGroupName, StepResource stepResource) : base(stepResource)
 {
     this.ResourceGroupName = resourceGroupName;
     this.StepProperties    = new PSWaitStepProperties((WaitStepProperties)stepResource.Properties);
 }