Exemple #1
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            ExecuteClientAction(() =>
            {
                if (this.Force.IsPresent || this.ShouldContinue(Properties.Resources.VirtualMachineStoppingConfirmation, Properties.Resources.VirtualMachineStoppingCaption))
                {
                    Action <Func <string, string, Dictionary <string, List <string> >, CancellationToken, Task <Rest.Azure.AzureOperationResponse> > > call = f =>
                    {
                        Rest.Azure.AzureOperationResponse op = f(this.ResourceGroupName, this.Name, null, CancellationToken.None).GetAwaiter().GetResult();
                        var result = Mapper.Map <PSComputeLongRunningOperation>(op);
                        WriteObject(result);
                    };

                    if (this.StayProvisioned)
                    {
                        call(this.VirtualMachineClient.PowerOffWithHttpMessagesAsync);
                    }
                    else
                    {
                        call(this.VirtualMachineClient.DeallocateWithHttpMessagesAsync);
                    }
                }
            });
        }
Exemple #2
0
        public virtual HttpStatusCode DeleteTrigger(string resourceGroupName, string dataFactoryName, string triggerName)
        {
            Rest.Azure.AzureOperationResponse response = this.DataFactoryManagementClient.Triggers.DeleteWithHttpMessagesAsync(resourceGroupName,
                                                                                                                               dataFactoryName, triggerName).Result;

            return(response.Response.StatusCode);
        }
        public virtual HttpStatusCode CreateOrUpdateSavedSearch(string resourceGroupName, string workspaceName, string savedSearchId, SavedSearch properties, bool force, Action <bool, string, string, string, Action, Func <bool> > ConfirmAction, string ETag = null)
        {
            HttpStatusCode status            = HttpStatusCode.Ambiguous;
            Action         createSavedSearch = () =>
            {
                if (ETag != null && ETag != "")
                {
                    properties.ETag = ETag;
                }
                Rest.Azure.AzureOperationResponse <SavedSearch> result = OperationalInsightsManagementClient.SavedSearches.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, workspaceName, savedSearchId, properties).GetAwaiter().GetResult();
                status = result.Response.StatusCode;
            };

            ConfirmAction(
                force,    // prompt only if the saved search exists
                string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.SavedSearchExists,
                    savedSearchId,
                    workspaceName),
                string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.SavedSearchCreating,
                    savedSearchId,
                    workspaceName),
                savedSearchId,
                createSavedSearch,
                () => CheckSavedSearchExists(resourceGroupName, workspaceName, savedSearchId));
            return(status);
        }
Exemple #4
0
        public virtual HttpStatusCode DeleteLinkedService(string resourceGroupName, string dataFactoryName, string linkedServiceName)
        {
            Rest.Azure.AzureOperationResponse response = this.DataFactoryManagementClient.LinkedServices.DeleteWithHttpMessagesAsync(resourceGroupName,
                                                                                                                                     dataFactoryName, linkedServiceName).Result;

            return(response.Response.StatusCode);
        }
        public AddAzureRmMetricAlertRuleTests(ITestOutputHelper output)
        {
            //XunitTracingInterceptor.AddToContext(new XunitTracingInterceptor(output));
            insightsAlertRuleOperationsMock = new Mock <IAlertRulesOperations>();
            insightsManagementClientMock    = new Mock <InsightsManagementClient>();
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new AddAzureRmMetricAlertRuleCommand()
            {
                CommandRuntime           = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            AlertRuleResource alertRuleResourceInput = new AlertRuleResource(alertRuleResourceName: "a name", location: null, isEnabled: true);

            response = new Rest.Azure.AzureOperationResponse <AlertRuleResource>()
            {
                Body = alertRuleResourceInput
            };

            insightsAlertRuleOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <AlertRuleResource>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <AlertRuleResource> >(response))
            .Callback((string resourceGrp, string name, AlertRuleResource alertRuleResourceIn, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceGroup     = resourceGrp;
                alertRuleResource = alertRuleResourceIn;
            });

            insightsManagementClientMock.SetupGet(f => f.AlertRules).Returns(this.insightsAlertRuleOperationsMock.Object);
        }
        public AddAzureRmLogProfileTests(ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            TestExecutionHelpers.SetUpSessionAndProfile();
            insightsLogProfileOperationsMock = new Mock <ILogProfilesOperations>();
            insightsManagementClientMock     = new Mock <MonitorManagementClient>();
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new AddAzureRmLogProfileCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            response = Utilities.InitializeLogProfileResponse();

            insightsLogProfileOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <LogProfileResource>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <LogProfileResource> >(response))
            .Callback((string logProfileName, LogProfileResource createOrUpdateParams, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                this.logProfileName = logProfileName;
                createOrUpdatePrms  = createOrUpdateParams;
            });

            insightsManagementClientMock.SetupGet(f => f.LogProfiles).Returns(this.insightsLogProfileOperationsMock.Object);

            // Setup Confirmation
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldContinue(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
        }
Exemple #7
0
        public AddAzureRmWebtestAlertRuleTests(ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            TestExecutionHelpers.SetUpSessionAndProfile();
            insightsAlertRuleOperationsMock = new Mock <IAlertRulesOperations>();
            insightsManagementClientMock    = new Mock <MonitorManagementClient>();
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new AddAzureRmWebtestAlertRuleCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            AlertRuleResource alertRuleResourceInput = new AlertRuleResource()
            {
                Location              = null,
                IsEnabled             = true,
                AlertRuleResourceName = "a name"
            };

            response = new Rest.Azure.AzureOperationResponse <AlertRuleResource>()
            {
                Body = alertRuleResourceInput
            };

            insightsAlertRuleOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <AlertRuleResource>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <AlertRuleResource> >(response))
            .Callback((string resourceGrp, string name, AlertRuleResource createOrUpdateParams, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceGroup      = resourceGrp;
                createOrUpdatePrms = createOrUpdateParams;
            });

            insightsManagementClientMock.SetupGet(f => f.AlertRules).Returns(this.insightsAlertRuleOperationsMock.Object);
        }
        public AddAzureRmWebtestAlertRuleTests(ITestOutputHelper output)
        {
            //XunitTracingInterceptor.AddToContext(new XunitTracingInterceptor(output));
            insightsAlertRuleOperationsMock = new Mock<IAlertRulesOperations>();
            insightsManagementClientMock = new Mock<InsightsManagementClient>();
            commandRuntimeMock = new Mock<ICommandRuntime>();
            cmdlet = new AddAzureRmWebtestAlertRuleCommand()
            {
                CommandRuntime = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            AlertRuleResource alertRuleResourceInput = new AlertRuleResource(location: null, isEnabled: true, alertRuleResourceName: "a name");
            response = new Rest.Azure.AzureOperationResponse<AlertRuleResource>()
            {
                Body = alertRuleResourceInput
            };

            insightsAlertRuleOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<AlertRuleResource>(), It.IsAny<Dictionary<string, List<string>>>(), It.IsAny<CancellationToken>()))
                .Returns(Task.FromResult<Rest.Azure.AzureOperationResponse<AlertRuleResource>>(response))
                .Callback((string resourceGrp, string name, AlertRuleResource createOrUpdateParams, Dictionary<string, List<string>> headers, CancellationToken t) =>
                {
                    resourceGroup = resourceGrp;
                    createOrUpdatePrms = createOrUpdateParams;
                });

            insightsManagementClientMock.SetupGet(f => f.AlertRules).Returns(this.insightsAlertRuleOperationsMock.Object);
        }
Exemple #9
0
        public virtual PSSavedSearchValue UpdateSavedSearch(PSSavedSearchParameters parameters)
        {
            PSSavedSearchValue existingSavedSearch;

            try
            {
                existingSavedSearch = GetSavedSearch(parameters.ResourceGroupName, parameters.WorkspaceName, parameters.SavedSearchId);
            }
            catch (RestException)
            {
                throw new PSArgumentException($"Saved Search '{parameters.DisplayName}' under resource group: '{parameters.ResourceGroupName}', workspace: '{parameters.WorkspaceName}' does not exist. Please use New-OperationalInsightsSavedSearch for creating Saved search");
            }

            parameters.DisplayName        = parameters.DisplayName == null ? existingSavedSearch.Properties.DisplayName : parameters.DisplayName;
            parameters.Category           = parameters.Category == null ? existingSavedSearch.Properties.Category : parameters.Category;
            parameters.Version            = parameters.Version == null ? existingSavedSearch.Properties.Version : parameters.Version;
            parameters.Query              = parameters.Query == null ? existingSavedSearch.Properties.Query : parameters.Query;
            parameters.FunctionAlias      = parameters.FunctionAlias == null ? existingSavedSearch.Properties.FunctionAlias : parameters.FunctionAlias;
            parameters.FunctionParameters = parameters.FunctionParameters == null ? existingSavedSearch.Properties.FunctionParameters : parameters.FunctionParameters;
            parameters.ETag = parameters.ETag == null ? existingSavedSearch.Properties.Etag : parameters.ETag;
            parameters.Tags = parameters.Tags == null ? existingSavedSearch.Properties.Tags : parameters.Tags;

            Rest.Azure.AzureOperationResponse <SavedSearch> response = this.OperationalInsightsManagementClient.SavedSearches.CreateOrUpdateWithHttpMessagesAsync(parameters.ResourceGroupName, parameters.WorkspaceName, parameters.SavedSearchId, parameters.GetSavedSearchFromParameters()).GetAwaiter().GetResult();

            return(new PSSavedSearchValue(response.Body));
        }
Exemple #10
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption))
            {
                //Add retry logic due to CRP service restart known issue CRP bug: 3564713
                var count = 1;
                Rest.Azure.AzureOperationResponse op = null;
                while (count <= 2)
                {
                    op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name).GetAwaiter().GetResult();

                    if ("Failed".Equals(op.Response.StatusCode))
                    //&& op.Error != null && "InternalExecutionError".Equals(op.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
                var result = Mapper.Map <PSAzureOperationResponse>(op);
                WriteObject(result);
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (String.IsNullOrEmpty(Name))
            {
                Name = DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName;
            }

            if (ShouldProcess(string.Format(CultureInfo.CurrentUICulture, Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalConfirmation, Name), Microsoft.Azure.Commands.Compute.Properties.Resources.DscExtensionRemovalCaption))
            {
                //Add retry logic due to CRP service restart known issue CRP bug: 3564713
                var count = 1;
                Rest.Azure.AzureOperationResponse op = null;

                if (NoWait.IsPresent)
                {
                    op = VirtualMachineExtensionClient.BeginDeleteWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name).GetAwaiter().GetResult();
                }
                else
                {
                    while (true)
                    {
                        try
                        {
                            op = VirtualMachineExtensionClient.DeleteWithHttpMessagesAsync(
                                ResourceGroupName,
                                VMName,
                                Name).GetAwaiter().GetResult();
                            break;
                        }
                        catch (Rest.Azure.CloudException ex)
                        {
                            var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content);

                            if ("Failed".Equals(errorReturned.Status) &&
                                errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                            {
                                count++;
                                if (count <= 2)
                                {
                                    continue;
                                }
                            }
                            ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                        }
                    }
                }

                var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op);
                WriteObject(result);
            }
        }
Exemple #12
0
        public virtual HttpStatusCode CreateOrUpdateSavedSearch(string resourceGroupName, string workspaceName, string savedSearchId, SavedSearch properties, bool patch, bool force, Action <bool, string, string, string, Action, Func <bool> > ConfirmAction, string ETag = null)
        {
            PSSearchGetSavedSearchResponse ExistingSearch;
            bool existed;

            try
            {
                ExistingSearch = GetSavedSearch(resourceGroupName, workspaceName, savedSearchId);
            }
            catch (Rest.Azure.CloudException)
            {
                ExistingSearch = null;
            }

            existed = ExistingSearch == null ? false : true;

            HttpStatusCode status            = HttpStatusCode.Ambiguous;
            Action         createSavedSearch = () =>
            {
                if (ETag != null && ETag != "")
                {
                    properties.ETag = ETag;
                }
                Rest.Azure.AzureOperationResponse <SavedSearch> result = OperationalInsightsManagementClient.SavedSearches.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, workspaceName, savedSearchId, properties).GetAwaiter().GetResult();
                status = result.Response.StatusCode;
            };

            Action updateSavedSearch = () =>
            {
                if (ETag != null && ETag != "")
                {
                    properties.ETag = ETag;
                }
                properties.FunctionParameters = ExistingSearch.Properties.FunctionParameters;
                Rest.Azure.AzureOperationResponse <SavedSearch> result = OperationalInsightsManagementClient.SavedSearches.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, workspaceName, savedSearchId, properties).GetAwaiter().GetResult();
                status = result.Response.StatusCode;
            };

            ConfirmAction(
                force,    // prompt only if the saved search exists
                string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.SavedSearchExists,
                    savedSearchId,
                    workspaceName),
                string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.SavedSearchCreating,
                    savedSearchId,
                    workspaceName),
                savedSearchId,
                (patch && existed) ? updateSavedSearch : createSavedSearch,
                () => existed);
            return(status);
        }
        protected void PollLongRunningOperation(Rest.Azure.AzureOperationResponse beginRequestResponse)
        {
            AzureOperationResponse <object> response2 = new Rest.Azure.AzureOperationResponse <object>
            {
                Request   = beginRequestResponse.Request,
                Response  = beginRequestResponse.Response,
                RequestId = beginRequestResponse.RequestId
            };

            this.PollLongRunningOperation(response2);
        }
Exemple #14
0
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                TypeHandlerVersion          = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version,
                Settings          = this.GetPublicConfiguration(),
                ProtectedSettings = this.GetPrivateConfiguration(),
            };

            // Add retry logic due to CRP service restart known issue CRP bug: 3564713
            // Similair approach taken in DSC cmdlet as well
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;
            while (count <= 2)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace + "." + VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <ComputeLongRunningOperationError>(ex.Response.Content);

                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        break;
                    }
                }
            }
            var result = Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.VMScaleSetName, VerbsCommon.Set))
                {
                    string resourceGroupName = this.ResourceGroupName;
                    string vmScaleSetName    = this.VMScaleSetName;
                    string instanceId        = this.InstanceId;

                    Rest.Azure.AzureOperationResponse result = null;
                    if (this.ParameterSetName.Equals("FriendMethod"))
                    {
                        result = VirtualMachineScaleSetVMsClient.ReimageAllWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceId).GetAwaiter().GetResult();
                    }
                    else if (this.ParameterSetName.Equals("RedeployMethodParameter"))
                    {
                        result = VirtualMachineScaleSetVMsClient.RedeployWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceId).GetAwaiter().GetResult();
                    }
                    else if (this.ParameterSetName.Equals("PerformMaintenanceMethodParameter"))
                    {
                        result = VirtualMachineScaleSetVMsClient.PerformMaintenanceWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceId).GetAwaiter().GetResult();
                    }
                    else if (this.ParameterSetName.Equals("SimulateEvictionMethodParameter"))
                    {
                        result = VirtualMachineScaleSetVMsClient.SimulateEvictionWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceId).GetAwaiter().GetResult();
                    }
                    else
                    {
                        result = VirtualMachineScaleSetVMsClient.ReimageWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceId).GetAwaiter().GetResult();
                    }

                    PSOperationStatusResponse output = new PSOperationStatusResponse
                    {
                        StartTime = this.StartTime,
                        EndTime   = DateTime.Now
                    };

                    if (result != null && result.Request != null && result.Request.RequestUri != null)
                    {
                        output.Name = GetOperationIdFromUrlString(result.Request.RequestUri.ToString());
                    }

                    WriteObject(output);
                }
            });
        }
        public override void ExecuteCmdlet()
        {
            string resourceGroupName;
            string vmScaleSetName;

            resourceGroupName = this.ResourceGroupName;
            vmScaleSetName    = this.VMScaleSetName;

            var expand = new Microsoft.Rest.Azure.OData.ODataQuery <VirtualMachineScaleSetVM>();

            expand.Expand = "instanceView";
            var vmList       = VirtualMachineScaleSetVMsClient.List(resourceGroupName, vmScaleSetName, expand);
            var resultList   = vmList.ToList();
            var nextPageLink = vmList.NextPageLink;

            while (!string.IsNullOrEmpty(nextPageLink))
            {
                var pageResult = VirtualMachineScaleSetVMsClient.ListNext(nextPageLink);
                foreach (var pageItem in pageResult)
                {
                    resultList.Add(pageItem);
                }
                nextPageLink = pageResult.NextPageLink;
            }
            List <VirtualMachineScaleSetVM> listOfVms = new List <VirtualMachineScaleSetVM>(resultList);

            Rest.Azure.AzureOperationResponse result = null;
            foreach (VirtualMachineScaleSetVM vm in listOfVms)
            {
                result = VirtualMachineScaleSetVMRunCommandsClient.BeginDeleteWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, vm.InstanceId, this.RunCommandName).GetAwaiter().GetResult();
            }

            PSOperationStatusResponse output = new PSOperationStatusResponse
            {
                StartTime = this.StartTime,
                EndTime   = DateTime.Now
            };

            if (result != null && result.Request != null && result.Request.RequestUri != null)
            {
                output.Name = GetOperationIdFromUrlString(result.Request.RequestUri.ToString());
            }

            WriteObject(output);
        }
Exemple #17
0
        protected override void ProcessRecordInternal()
        {
            WriteWarning("Output change: The type of the output will change in the release 5.0.0 - November 2017 - to return a single object containing the request Id and the status code.");
            Rest.Azure.AzureOperationResponse result = this.MonitorManagementClient.LogProfiles.DeleteWithHttpMessagesAsync(logProfileName: this.Name, cancellationToken: CancellationToken.None).Result;

            /*
             * This object will be returned in future releases
             * var response = new AzureOperationResponse
             * {
             *  RequestId = result.RequestId,
             *  StatusCode = result.Response != null ? result.Response.StatusCode : HttpStatusCode.OK
             * };
             */

            if (this.PassThru)
            {
                WriteObject(true);
            }
        }
        public GetAzureRmAlertRuleTests(ITestOutputHelper output)
        {
            ServiceManagement.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagement.Common.Models.XunitTracingInterceptor(output));
            insightsAlertRuleOperationsMock = new Mock <IAlertRulesOperations>();
            insightsManagementClientMock    = new Mock <MonitorManagementClient>()
            {
                CallBase = true
            };
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new GetAzureRmAlertRuleCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            listResponse = new Rest.Azure.AzureOperationResponse <IEnumerable <AlertRuleResource> >
            {
                Body = Utilities.InitializeRuleListResponse(),
            };

            singleResponse = new Rest.Azure.AzureOperationResponse <AlertRuleResource>
            {
                Body = Utilities.InitializeRuleGetResponse()
            };

            insightsAlertRuleOperationsMock.Setup(f => f.ListByResourceGroupWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <IEnumerable <AlertRuleResource> > >(listResponse))
            .Callback((string resourceGrp, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceGroup = resourceGrp;
            });

            insightsAlertRuleOperationsMock.Setup(f => f.GetWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <AlertRuleResource> >(singleResponse))
            .Callback((string resourceGrp, string nameOrTargetUri, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceGroup       = resourceGrp;
                ruleNameOrTargetUri = nameOrTargetUri;
            });

            insightsManagementClientMock.SetupGet(f => f.AlertRules).Returns(this.insightsAlertRuleOperationsMock.Object);
        }
        protected override void ProcessRecordInternal()
        {
            if (ShouldProcess(
                    target: string.Format("Remove a log profile: {0}", this.Name),
                    action: "Remove a log profile"))
            {
                Rest.Azure.AzureOperationResponse result = this.MonitorManagementClient.LogProfiles.DeleteWithHttpMessagesAsync(logProfileName: this.Name, cancellationToken: CancellationToken.None).Result;

                var response = new AzureOperationResponse
                {
                    RequestId  = result.RequestId,
                    StatusCode = result.Response != null ? result.Response.StatusCode : HttpStatusCode.OK
                };

                if (this.PassThru)
                {
                    WriteObject(response);
                }
            }
        }
Exemple #20
0
        public override void ExecuteCmdlet()
        {
            ExecutionBlock(() =>
            {
                try
                {
                    ResourceIdentifier resourceIdentifier = new ResourceIdentifier(VaultId);
                    string vaultName         = resourceIdentifier.ResourceName;
                    string resourceGroupName = resourceIdentifier.ResourceGroupName;

                    string resourceGuardMappingName          = "VaultProxy";
                    Rest.Azure.AzureOperationResponse result = ServiceClientAdapter.DeleteResourceGuardMapping(vaultName, resourceGroupName, resourceGuardMappingName, Token);
                    WriteObject(result);
                }
                catch (Exception exception)
                {
                    WriteExceptionError(exception);
                }
            }, ShouldProcess("ResourceGuardMapping", VerbsCommon.Remove));
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            bool?forcedelete = ForceDeletion.HasValue ? ForceDeletion.Value : (bool?)null;

            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.VMScaleSetName, VerbsCommon.Remove) &&
                    (this.Force.IsPresent ||
                     this.ShouldContinue(Properties.Resources.ResourceRemovalConfirmation,
                                         "Remove-AzVmss operation")))
                {
                    string resourceGroupName   = this.ResourceGroupName;
                    string vmScaleSetName      = this.VMScaleSetName;
                    IList <string> instanceIds = this.InstanceId;

                    Rest.Azure.AzureOperationResponse result = null;
                    if (!string.IsNullOrEmpty(resourceGroupName) && !string.IsNullOrEmpty(vmScaleSetName) && instanceIds != null)
                    {
                        result = VirtualMachineScaleSetsClient.DeleteInstancesWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceIds, forceDeletion: forcedelete).GetAwaiter().GetResult();
                    }
                    else
                    {
                        result = VirtualMachineScaleSetsClient.DeleteWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, forceDeletion: forcedelete).GetAwaiter().GetResult();
                    }

                    PSOperationStatusResponse output = new PSOperationStatusResponse
                    {
                        StartTime = this.StartTime,
                        EndTime   = DateTime.Now
                    };

                    if (result != null && result.Request != null && result.Request.RequestUri != null)
                    {
                        output.Name = GetOperationIdFromUrlString(result.Request.RequestUri.ToString());
                    }

                    WriteObject(output);
                }
            });
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();
            ExecuteClientAction(() =>
            {
                if (ShouldProcess(this.VMScaleSetName, VerbsLifecycle.Stop) &&
                    (this.Force.IsPresent ||
                     this.ShouldContinue(Properties.Resources.ResourceStoppingConfirmation,
                                         "Stop-AzVmss operation")))
                {
                    string resourceGroupName = this.ResourceGroupName;
                    string vmScaleSetName    = this.VMScaleSetName;
                    System.Collections.Generic.IList <string> instanceIds = this.InstanceId;

                    Rest.Azure.AzureOperationResponse result = null;
                    if (this.ParameterSetName.Equals("FriendMethod"))
                    {
                        bool?skipShutdown = this.SkipShutdown.IsPresent ? (bool?)true : null;
                        result            = VirtualMachineScaleSetsClient.PowerOffWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, skipShutdown, instanceIds).GetAwaiter().GetResult();
                    }
                    else
                    {
                        result = VirtualMachineScaleSetsClient.DeallocateWithHttpMessagesAsync(resourceGroupName, vmScaleSetName, instanceIds).GetAwaiter().GetResult();
                    }

                    PSOperationStatusResponse output = new PSOperationStatusResponse
                    {
                        StartTime = this.StartTime,
                        EndTime   = DateTime.Now
                    };

                    if (result != null && result.Request != null && result.Request.RequestUri != null)
                    {
                        output.Name = GetOperationIdFromUrlString(result.Request.RequestUri.ToString());
                    }

                    WriteObject(output);
                }
            });
        }
Exemple #23
0
        public RemoveAzureRmAlertRuleTests(Xunit.Abstractions.ITestOutputHelper output)
        {
            ServiceManagemenet.Common.Models.XunitTracingInterceptor.AddToContext(new ServiceManagemenet.Common.Models.XunitTracingInterceptor(output));
            insightsAlertRuleOperationsMock = new Mock <IAlertRulesOperations>();
            insightsManagementClientMock    = new Mock <MonitorManagementClient>()
            {
                CallBase = true
            };
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new RemoveAzureRmAlertRuleCommand()
            {
                CommandRuntime          = commandRuntimeMock.Object,
                MonitorManagementClient = insightsManagementClientMock.Object
            };

            response = new Rest.Azure.AzureOperationResponse()
            {
                RequestId = Guid.NewGuid().ToString(),
                Response  = new System.Net.Http.HttpResponseMessage
                {
                    StatusCode = HttpStatusCode.OK
                }
            };

            insightsAlertRuleOperationsMock.Setup(f => f.DeleteWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse>(response))
            .Callback((string resourceGrp, string ruleName, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                resourceGroup       = resourceGrp;
                ruleNameOrTargetUri = ruleName;
            });

            insightsManagementClientMock.SetupGet(f => f.AlertRules).Returns(this.insightsAlertRuleOperationsMock.Object);

            // Setup Confirmation
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldProcess(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(true);
            commandRuntimeMock.Setup(f => f.ShouldContinue(It.IsAny <string>(), It.IsAny <string>())).Returns(true);
        }
        public AddAzureRmLogProfileTests(ITestOutputHelper output)
        {
            // XunitTracingInterceptor.AddToContext(new XunitTracingInterceptor(output));
            insightsLogProfileOperationsMock = new Mock<ILogProfilesOperations>();
            insightsManagementClientMock = new Mock<InsightsManagementClient>();
            commandRuntimeMock = new Mock<ICommandRuntime>();
            cmdlet = new AddAzureRmLogProfileCommand()
            {
                CommandRuntime = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            response = Utilities.InitializeLogProfileResponse();

            insightsLogProfileOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny<string>(), It.IsAny<LogProfileCreateOrUpdateParameters>(), It.IsAny<Dictionary<string, List<string>>>(), It.IsAny<CancellationToken>()))
                .Returns(Task.FromResult<Rest.Azure.AzureOperationResponse<LogProfileResource>>(response))
                .Callback((string logProfileName, LogProfileCreateOrUpdateParameters createOrUpdateParams, Dictionary<string, List<string>> headers, CancellationToken t) =>
                {
                    this.logProfileName = logProfileName;
                    createOrUpdatePrms = createOrUpdateParams;
                });

            insightsManagementClientMock.SetupGet(f => f.LogProfiles).Returns(this.insightsLogProfileOperationsMock.Object);
        }
        public AddAzureRmLogProfileTests(ITestOutputHelper output)
        {
            // XunitTracingInterceptor.AddToContext(new XunitTracingInterceptor(output));
            insightsLogProfileOperationsMock = new Mock <ILogProfilesOperations>();
            insightsManagementClientMock     = new Mock <InsightsManagementClient>();
            commandRuntimeMock = new Mock <ICommandRuntime>();
            cmdlet             = new AddAzureRmLogProfileCommand()
            {
                CommandRuntime           = commandRuntimeMock.Object,
                InsightsManagementClient = insightsManagementClientMock.Object
            };

            response = Utilities.InitializeLogProfileResponse();

            insightsLogProfileOperationsMock.Setup(f => f.CreateOrUpdateWithHttpMessagesAsync(It.IsAny <string>(), It.IsAny <LogProfileCreateOrUpdateParameters>(), It.IsAny <Dictionary <string, List <string> > >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult <Rest.Azure.AzureOperationResponse <LogProfileResource> >(response))
            .Callback((string logProfileName, LogProfileCreateOrUpdateParameters createOrUpdateParams, Dictionary <string, List <string> > headers, CancellationToken t) =>
            {
                this.logProfileName = logProfileName;
                createOrUpdatePrms  = createOrUpdateParams;
            });

            insightsManagementClientMock.SetupGet(f => f.LogProfiles).Returns(this.insightsLogProfileOperationsMock.Object);
        }
Exemple #26
0
        protected override void ProcessRecordInternal()
        {
            string         requestId;
            HttpStatusCode statusCode;

            if (string.IsNullOrWhiteSpace(this.Name))
            {
                WriteDebugWithTimestamp(string.Format(CultureInfo.InvariantCulture, "Listing existing diagnostics settings for resourceId '{0}'", this.ResourceId));
                IList <DiagnosticSettingsResource> listSettings = this.MonitorManagementClient.DiagnosticSettings.ListAsync(resourceUri: this.ResourceId).Result.Value;

                if (listSettings.Any())
                {
                    if (listSettings.Count == 1)
                    {
                        // Default to the only existing setting regardless of name
                        this.Name = listSettings[0].Name;
                    }
                    else
                    {
                        throw new ErrorResponseException
                              {
                                  Body = new ErrorResponse
                                  {
                                      Code    = HttpStatusCode.Ambiguous.ToString(),
                                      Message = "Multiple resources exist, but no name given as input."
                                  },
                                  Response = new HttpResponseMessageWrapper(
                                      new System.Net.Http.HttpResponseMessage
                            {
                                StatusCode   = HttpStatusCode.Ambiguous,
                                ReasonPhrase = "Multiple resources exist, but no name given as input."
                            },
                                      null)
                              };
                    }
                }
                else
                {
                    WriteDebugWithTimestamp("No setting to delete for resource: {0}", this.ResourceId);
                    return;
                }

                DiagnosticSettingsResource singleResource = listSettings.FirstOrDefault(e => string.Equals(e.Name, this.Name, StringComparison.OrdinalIgnoreCase));
                if (singleResource == null)
                {
                    throw new ErrorResponseException
                          {
                              Body = new ErrorResponse
                              {
                                  Code    = HttpStatusCode.NotFound.ToString(),
                                  Message = string.Format(
                                      CultureInfo.InvariantCulture,
                                      "Diagnostic setting named {0} not found.",
                                      this.Name)
                              },
                              Response = new HttpResponseMessageWrapper(
                                  new System.Net.Http.HttpResponseMessage
                        {
                            StatusCode   = HttpStatusCode.NotFound,
                            ReasonPhrase = string.Format(
                                CultureInfo.InvariantCulture,
                                "Diagnostic setting named {0} not found.",
                                this.Name)
                        },
                                  null)
                          };
                }
            }

            if (ShouldProcess(
                    target: string.Format("Remove a diagnostic setting for resource Id: {0}", this.ResourceId),
                    action: "Remove a diagnostic setting"))
            {
                WriteDebugWithTimestamp("Removing named diagnostic setting: {0}", this.Name);
                Rest.Azure.AzureOperationResponse resultDelete = this.MonitorManagementClient.DiagnosticSettings.DeleteWithHttpMessagesAsync(
                    resourceUri: this.ResourceId,
                    name: this.Name).Result;

                requestId  = resultDelete.RequestId;
                statusCode = resultDelete.Response != null ? resultDelete.Response.StatusCode : HttpStatusCode.OK;

                WriteDebugWithTimestamp("Sending response");
                var response = new AzureOperationResponse
                {
                    RequestId  = requestId,
                    StatusCode = statusCode
                };

                WriteObject(response);
            }
            else
            {
                WriteDebugWithTimestamp("Delete operation cancelled");
                return;
            }
        }
Exemple #27
0
        private void CreateConfiguration()
        {
            var publicSettings  = new DscExtensionPublicSettings();
            var privateSettings = new DscExtensionPrivateSettings();

            if (!string.IsNullOrEmpty(ArchiveBlobName))
            {
                ConfigurationUris configurationUris = UploadConfigurationDataToBlob();

                publicSettings.SasToken   = configurationUris.SasToken;
                publicSettings.ModulesUrl = configurationUris.ModulesUrl;

                Hashtable privacySetting = new Hashtable();
                privacySetting.Add("DataCollection", DataCollection);
                publicSettings.Privacy = privacySetting;

                publicSettings.ConfigurationFunction = string.Format(
                    CultureInfo.InvariantCulture,
                    "{0}\\{1}",
                    Path.GetFileNameWithoutExtension(ArchiveBlobName),
                    ConfigurationName);
                Tuple <DscExtensionPublicSettings.Property[], Hashtable> settings =
                    DscExtensionSettingsSerializer.SeparatePrivateItems(ConfigurationArgument);
                publicSettings.Properties = settings.Item1;
                privateSettings.Items     = settings.Item2;

                privateSettings.DataBlobUri = configurationUris.DataBlobUri;

                if (!string.IsNullOrEmpty(WmfVersion))
                {
                    publicSettings.WmfVersion = WmfVersion;
                }
            }

            if (string.IsNullOrEmpty(this.Location))
            {
                this.Location = GetLocationFromVm(this.ResourceGroupName, this.VMName);
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = DscExtensionCmdletConstants.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = DscExtensionCmdletConstants.ExtensionPublishedName,
                TypeHandlerVersion          = Version,
                // Define the public and private property bags that will be passed to the extension.
                Settings = publicSettings,
                //PrivateConfuguration contains sensitive data in a plain text
                ProtectedSettings       = privateSettings,
                AutoUpgradeMinorVersion = AutoUpdate.IsPresent
            };

            //Add retry logic due to CRP service restart known issue CRP bug: 3564713
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;

            while (true)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? DscExtensionCmdletConstants.ExtensionPublishedNamespace + "." + DscExtensionCmdletConstants.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();

                    break;
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(
                        ex.Response.Content);

                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                        if (count <= 2)
                        {
                            continue;
                        }
                    }

                    ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                }
            }

            var result = ComputeAutoMapperProfile.Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();


            VirtualMachine vm = ComputeClient.ComputeManagementClient.VirtualMachines.Get(this.ResourceGroupName, this.VMName);

            if (vm != null && vm.Resources != null)
            {
                VirtualMachineExtension extension = vm.Resources.Where(x => x.Publisher.Equals(VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace)).FirstOrDefault();
                if (extension != null)
                {
                    this.Name    = extension.Name;
                    this.Version = extension.TypeHandlerVersion;
                }

                this.Location = vm.Location;
            }

            var parameters = new VirtualMachineExtension
            {
                Location  = this.Location,
                Publisher = VirtualMachineSqlServerExtensionContext.ExtensionPublishedNamespace,
                VirtualMachineExtensionType = VirtualMachineSqlServerExtensionContext.ExtensionPublishedType,
                TypeHandlerVersion          = string.IsNullOrEmpty(this.Version) ? VirtualMachineSqlServerExtensionContext.ExtensionDefaultVersion : this.Version,
                Settings          = this.GetPublicConfiguration(),
                ProtectedSettings = this.GetPrivateConfiguration(),
            };

            // Add retry logic due to CRP service restart known issue CRP bug: 3564713
            // Similair approach taken in DSC cmdlet as well
            var count = 1;

            Rest.Azure.AzureOperationResponse <VirtualMachineExtension> op = null;
            while (count <= 2)
            {
                try
                {
                    op = VirtualMachineExtensionClient.CreateOrUpdateWithHttpMessagesAsync(
                        ResourceGroupName,
                        VMName,
                        Name ?? VirtualMachineSqlServerExtensionContext.ExtensionPublishedName,
                        parameters).GetAwaiter().GetResult();
                    break;
                }
                catch (Rest.Azure.CloudException ex)
                {
                    var errorReturned = JsonConvert.DeserializeObject <PSComputeLongRunningOperation>(ex.Response.Content);
                    if ("Failed".Equals(errorReturned.Status) &&
                        errorReturned.Error != null && "InternalExecutionError".Equals(errorReturned.Error.Code))
                    {
                        count++;
                    }
                    else
                    {
                        base.ThrowTerminatingError(new ErrorRecord(ex, "InvalidResult", ErrorCategory.InvalidResult, null));
                    }
                }
            }
            var result = Mapper.Map <PSAzureOperationResponse>(op);

            WriteObject(result);
        }
Exemple #29
0
        protected override void ProcessRecordInternal()
        {
            if (ShouldProcess(
                    target: string.Format("Remove a diagnostic setting for resource Id: {0}", this.ResourceId),
                    action: "Remove a diagnostic setting"))
            {
                // Name defaults to "service"
                if (string.IsNullOrWhiteSpace(this.Name))
                {
                    this.Name = TempServiceName;
                }

                string         requestId;
                HttpStatusCode statusCode;
                bool           isService = string.Equals(TempServiceName, this.Name, System.StringComparison.OrdinalIgnoreCase);
                if (isService)
                {
                    WriteDebugWithTimestamp("Getting 'service' diagnostic setting");
                    AzureOperationResponse <DiagnosticSettingsResource> result = this.MonitorManagementClient.DiagnosticSettings.GetWithHttpMessagesAsync(resourceUri: this.ResourceId, name: TempServiceName).Result;
                    if (result.Response == null)
                    {
                        WriteDebugWithTimestamp("Response was null");
                        requestId  = result.RequestId;
                        statusCode = HttpStatusCode.OK;
                    }
                    else if (!result.Response.IsSuccessStatusCode)
                    {
                        // NotFound is still OK since this cmdlet want to delete
                        WriteDebugWithTimestamp("Response marked as not successful");
                        if (result.Response.StatusCode != HttpStatusCode.NotFound)
                        {
                            WriteErrorWithTimestamp(message: string.Format(CultureInfo.InvariantCulture, "Error removing Diagnostic Settings. Status code: {0}", result.Response.StatusCode));
                            return;
                        }

                        WriteDebugWithTimestamp("Response marked as not NotFound");
                        requestId  = result.RequestId;
                        statusCode = HttpStatusCode.OK;
                    }
                    else
                    {
                        WriteDebugWithTimestamp("Setting successfully recovered, disabling it");
                        this.DisableAllCategoriesAndTimegrains(result.Body);

                        AzureOperationResponse <DiagnosticSettingsResource> resultService = this.MonitorManagementClient.DiagnosticSettings.CreateOrUpdateWithHttpMessagesAsync(
                            resourceUri: this.ResourceId,
                            parameters: result.Body,
                            name: TempServiceName).Result;

                        requestId  = resultService.RequestId;
                        statusCode = resultService.Response != null ? resultService.Response.StatusCode : HttpStatusCode.OK;
                    }
                }
                else
                {
                    WriteDebugWithTimestamp("Removing named diagnostic setting: {0}", this.Name);
                    Rest.Azure.AzureOperationResponse resultDelete = this.MonitorManagementClient.DiagnosticSettings.DeleteWithHttpMessagesAsync(
                        resourceUri: this.ResourceId,
                        name: this.Name).Result;

                    requestId  = resultDelete.RequestId;
                    statusCode = resultDelete.Response != null ? resultDelete.Response.StatusCode : HttpStatusCode.OK;
                }

                WriteDebugWithTimestamp("Sending response");
                var response = new AzureOperationResponse
                {
                    RequestId  = requestId,
                    StatusCode = statusCode
                };

                WriteObject(response);
            }
        }
 public virtual HttpStatusCode DeleteWorkspace(string resourceGroupName, string workspaceName)
 {
     Rest.Azure.AzureOperationResponse result = OperationalInsightsManagementClient.Workspaces.DeleteWithHttpMessagesAsync(resourceGroupName, workspaceName).GetAwaiter().GetResult();
     return(result.Response.StatusCode);
 }