Пример #1
0
        private async Task <IEnumerable <RunbookParameter> > ListAutomationRunbookParameters(
            string accessToken,
            string subscriptionId,
            string resourceGroupName,
            string automationAccountName,
            string runbookName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationRunbookResult = await automationClient.Runbooks.GetAsync(resourceGroupName, automationAccountName, runbookName);

                var automationRunbookPrameters = automationRunbookResult.Runbook.Properties.Parameters.Select(
                    parameter => new RunbookParameter
                {
                    ParameterName = parameter.Key,
                    DefaultValue  = parameter.Value.DefaultValue,
                    IsMandatory   = parameter.Value.IsMandatory,
                    Position      = parameter.Value.Position,
                    Type          = parameter.Value.Type
                }).ToList();

                return(automationRunbookPrameters);
            }
        }
Пример #2
0
        private WebSiteManagementClient GetWSClient(string subscriptionId)
        {
            var token = Request.Headers.GetValues("X-MS-OAUTH-TOKEN").FirstOrDefault();
            var creds = new Microsoft.Azure.TokenCloudCredentials(subscriptionId, token);

            return(new WebSiteManagementClient(creds, new Uri(Utils.GetCSMUrl(Request.RequestUri.Host))));
        }
Пример #3
0
        public async Task <IEnumerable <VirtualMachine> > ListVirtualMachinesAsync(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var client = new ComputeManagementClient(credentials))
            {
                var virtualMachinesResult = await client.VirtualMachines.ListAllAsync(null).ConfigureAwait(false);

                var all = virtualMachinesResult.VirtualMachines.Select(async(vm) =>
                {
                    var resourceGroupName = GetResourceGroup(vm.Id);
                    var response          = await client.VirtualMachines.GetWithInstanceViewAsync(resourceGroupName, vm.Name);
                    var vmStatus          = response.VirtualMachine.InstanceView.Statuses.Where(p => p.Code.ToLower().StartsWith("powerstate/")).FirstOrDefault();
                    return(new VirtualMachine
                    {
                        SubscriptionId = subscriptionId,
                        ResourceGroup = resourceGroupName,
                        Name = vm.Name,
                        PowerState = GetVirtualMachinePowerState(vmStatus?.Code.ToLower() ?? VirtualMachinePowerState.Unknown.ToString()),
                        Size = response.VirtualMachine.HardwareProfile.VirtualMachineSize
                    });
                });

                return(await Task.WhenAll(all.ToList()));
            }
        }
Пример #4
0
        public async Task <string> GetAutomationJobOutputAsync(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName, string jobId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var jobOutputResponse = await automationClient.Jobs.GetOutputAsync(resourceGroupName, automationAccountName, new Guid(jobId));

                return(jobOutputResponse.Output);
            }
        }
Пример #5
0
        public async Task<IEnumerable<Subscription>> ListSubscriptionsAsync(string accessToken)
        {
            var credentials = new TokenCredentials(accessToken);

            using (SubscriptionClient client = new SubscriptionClient(credentials))
            {
                var subscriptionsResult = await client.Subscriptions.ListAsync().ConfigureAwait(false);
                var subscriptions = subscriptionsResult.Subscriptions.OrderBy(x => x.DisplayName).Select(sub => new Subscription { SubscriptionId = sub.SubscriptionId, DisplayName = sub.DisplayName }).ToList();
                return subscriptions;
            }
        }
Пример #6
0
        public async Task <bool> DeallocateVirtualMachineAsync(string accessToken, string subscriptionId, string resourceGroupName, string virtualMachineName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var client = new ComputeManagementClient(credentials))
            {
                var status = await client.VirtualMachines.DeallocateAsync(resourceGroupName, virtualMachineName).ConfigureAwait(false);

                return(status.Status != Microsoft.Azure.Management.Compute.Models.ComputeOperationStatus.Failed);
            }
        }
Пример #7
0
        public async Task<Subscription> GetSubscription(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(accessToken);

            using (SubscriptionClient client = new SubscriptionClient(credentials))
            {
                var subscriptionsResult = await client.Subscriptions.GetAsync(subscriptionId, CancellationToken.None);
                return new Subscription
                {
                    SubscriptionId = subscriptionsResult.Subscription.SubscriptionId,
                    DisplayName = subscriptionsResult.Subscription.DisplayName
                };
            }
        }
Пример #8
0
        public async Task <IEnumerable <Subscription> > ListSubscriptionsAsync(string accessToken)
        {
            var credentials = new TokenCredentials(accessToken);

            using (SubscriptionClient client = new SubscriptionClient(credentials))
            {
                var subscriptionsResult = await client.Subscriptions.ListAsync().ConfigureAwait(false);

                var subscriptions = subscriptionsResult.Subscriptions.OrderBy(x => x.DisplayName).Select(sub => new Subscription {
                    SubscriptionId = sub.SubscriptionId, DisplayName = sub.DisplayName
                }).ToList();
                return(subscriptions);
            }
        }
Пример #9
0
        public async Task <Subscription> GetSubscription(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(accessToken);

            using (SubscriptionClient client = new SubscriptionClient(credentials))
            {
                var subscriptionsResult = await client.Subscriptions.GetAsync(subscriptionId, CancellationToken.None);

                return(new Subscription
                {
                    SubscriptionId = subscriptionsResult.Subscription.SubscriptionId,
                    DisplayName = subscriptionsResult.Subscription.DisplayName
                });
            }
        }
Пример #10
0
        public async Task <string> GetAutomationRunbookDescriptionAsync(
            string accessToken,
            string subscriptionId,
            string resourceGroupName,
            string automationAccountName,
            string runbookName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationRunbookResult = await automationClient.Runbooks.GetAsync(resourceGroupName, automationAccountName, runbookName);

                return(automationRunbookResult.Runbook.Properties.Description);
            }
        }
Пример #11
0
        public async Task <int> CreateTemplateDeploymentAsync(
            //  TokenCloudCredentials credential,
            string accessToken,
            string groupName,
            string storageName,
            string deploymentName,
            string subscriptionId,
            string containerName,
            string templateJson,
            string parametersJson)
        {
            try
            {
                var credentials = new TokenCredentials(subscriptionId, accessToken);

                Console.WriteLine("Creating the template deployment...");
                var deployment = new Deployment();
                deployment.Properties = new DeploymentProperties
                {
                    Mode         = DeploymentMode.Incremental,
                    TemplateLink = new TemplateLink
                    {
                        //Uri = new Uri("https://" + storageName + ".blob.core.windows.net/templates/azuredeploy.json")
                        Uri = new Uri("https://" + storageName + ".blob.core.windows.net/" + containerName + "/" + templateJson)
                    },
                    ParametersLink = new ParametersLink
                    {
                        //Uri = new Uri("https://" + storageName + ".blob.core.windows.net/templates/azuredeploy.parameters.json")
                        Uri = new Uri("https://" + storageName + ".blob.core.windows.net/" + containerName + "/" + parametersJson)
                    }
                };


                var resourceManagementClient = new ResourceManagementClient(credentials);

                await resourceManagementClient.Deployments.CreateOrUpdateAsync(
                    groupName,
                    deploymentName, deployment);
            }
            catch
            {
            }
            finally
            {
            }
            return(0);
        }
Пример #12
0
        public async Task <IEnumerable <AutomationAccount> > ListAutomationAccountsAsync(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationAccountsResult = await automationClient.AutomationAccounts.ListAsync(null).ConfigureAwait(false);

                return(automationAccountsResult.AutomationAccounts.Select(account => new AutomationAccount
                {
                    SubscriptionId = subscriptionId,
                    ResourceGroup = GetResourceGroup(account.Id),
                    AutomationAccountId = account.Id,
                    AutomationAccountName = account.Name,
                }).ToList());
            }
        }
Пример #13
0
        private async Task <IEnumerable <RunbookJob> > ListAutomationJobs(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationJobsResult = await automationClient.Jobs.ListAsync(resourceGroupName, automationAccountName, parameters : null);

                var automationJobs = automationJobsResult.Jobs.Select(
                    job => new RunbookJob
                {
                    JobId       = job.Properties.JobId.ToString(),
                    Status      = job.Properties.Status,
                    RunbookName = job.Properties.Runbook?.Name ?? "_(Unknown)_"
                }).ToList();

                return(automationJobs);
            }
        }
Пример #14
0
        private async Task <IEnumerable <Runbook> > ListAutomationRunbooks(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName, params string[] runbooksStateFilter)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationRunbooksResult = await automationClient.Runbooks.ListAsync(resourceGroupName, automationAccountName);

                var automationRunbooks = await Task.WhenAll(automationRunbooksResult.Runbooks.Where(x => (runbooksStateFilter == null || !runbooksStateFilter.Any()) || runbooksStateFilter.Contains(x.Properties.State, StringComparer.InvariantCultureIgnoreCase))
                                                            .Select(async runbook => new Runbook
                {
                    RunbookId = runbook.Id,
                    RunbookName = runbook.Name,
                    RunbookState = runbook.Properties.State,
                    RunbookParameters = await this.ListAutomationRunbookParameters(accessToken, subscriptionId, resourceGroupName, automationAccountName, runbook.Name)
                }).ToList());

                return(automationRunbooks);
            }
        }
Пример #15
0
        public async Task<IEnumerable<AutomationAccount>> ListRunbooksAsync(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationAccountsResult = await automationClient.AutomationAccounts.ListAsync(null).ConfigureAwait(false);
                var automationAccounts = await Task.WhenAll(
                    automationAccountsResult.AutomationAccounts.Select(
                        async account => new AutomationAccount
                        {
                            SubscriptionId = subscriptionId,
                            ResourceGroup = GetResourceGroup(account.Id),
                            AutomationAccountId = account.Id,
                            AutomationAccountName = account.Name,
                            Runbooks = await this.ListAutomationRunbooks(accessToken, subscriptionId, GetResourceGroup(account.Id), account.Name)
                        }).ToList());
                return automationAccounts;
            }
        }
Пример #16
0
        public async Task <IEnumerable <AutomationAccount> > ListRunbooksAsync(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationAccountsResult = await this.ListAutomationAccountsAsync(accessToken, subscriptionId).ConfigureAwait(false);

                var automationAccounts = await Task.WhenAll(
                    automationAccountsResult.Select(
                        async account =>
                {
                    account.Runbooks = await this.ListAutomationRunbooks(accessToken, subscriptionId, account.ResourceGroup, account.AutomationAccountName);

                    return(account);
                }).ToList());

                return(automationAccounts);
            }
        }
Пример #17
0
        public async Task <RunbookJob> GetAutomationJobAsync(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName, string jobId, bool configureAwait = false)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationJobResult = configureAwait ? await automationClient.Jobs.GetAsync(resourceGroupName, automationAccountName, new Guid(jobId)).ConfigureAwait(false) :
                                          await automationClient.Jobs.GetAsync(resourceGroupName, automationAccountName, new Guid(jobId));

                var automationJob = new RunbookJob
                {
                    JobId                 = automationJobResult.Job.Properties.JobId.ToString(),
                    Status                = automationJobResult.Job.Properties.Status,
                    RunbookName           = automationJobResult.Job.Properties.Runbook?.Name ?? "_(Unknown)_",
                    ResourceGroupName     = resourceGroupName,
                    AutomationAccountName = automationAccountName,
                    StartDateTime         = automationJobResult.Job.Properties.StartTime,
                    EndDateTime           = automationJobResult.Job.Properties.EndTime
                };

                return(automationJob);
            }
        }
Пример #18
0
        public async Task<IEnumerable<VirtualMachine>> ListVirtualMachinesAsync(string accessToken, string subscriptionId)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);
            using (var client = new ComputeManagementClient(credentials))
            {
                var virtualMachinesResult = await client.VirtualMachines.ListAllAsync(null).ConfigureAwait(false);
                var all = virtualMachinesResult.VirtualMachines.Select(async (vm) =>
                {
                    var resourceGroupName = GetResourceGroup(vm.Id);
                    var response = await client.VirtualMachines.GetWithInstanceViewAsync(resourceGroupName, vm.Name);
                    var vmStatus = response.VirtualMachine.InstanceView.Statuses.Where(p => p.Code.ToLower().StartsWith("powerstate/")).FirstOrDefault();
                    return new VirtualMachine
                    {
                        SubscriptionId = subscriptionId,
                        ResourceGroup = resourceGroupName,
                        Name = vm.Name,
                        PowerState = GetVirtualMachinePowerState(vmStatus?.Code.ToLower() ?? VirtualMachinePowerState.Unknown.ToString())
                    };
                });

                return await Task.WhenAll(all.ToList());
            }
        }
Пример #19
0
        public async Task <RunbookJob> StartRunbookAsync(
            string accessToken,
            string subscriptionId,
            string resourceGroupName,
            string automationAccountName,
            string runbookName,
            IDictionary <string, string> runbookParameters = null)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var client = new AutomationManagementClient(credentials))
            {
                var parameters = new AzureModels.JobCreateParameters(
                    new AzureModels.JobCreateProperties(
                        new AzureModels.RunbookAssociationProperty
                {
                    Name = runbookName
                })
                {
                    Parameters = runbookParameters
                });

                var jobCreateResult = await client.Jobs.CreateAsync(resourceGroupName, automationAccountName, parameters).ConfigureAwait(false);

                return(new RunbookJob
                {
                    JobId = jobCreateResult.Job.Properties.JobId.ToString(),
                    StartDateTime = jobCreateResult.Job.Properties.StartTime,
                    EndDateTime = jobCreateResult.Job.Properties.EndTime,
                    Status = jobCreateResult.Job.Properties.Status,
                    ResourceGroupName = resourceGroupName,
                    AutomationAccountName = automationAccountName,
                    RunbookName = runbookName
                });
            }
        }
Пример #20
0
        private async Task<IEnumerable<RunbookJob>> ListAutomationJobs(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationJobsResult = await automationClient.Jobs.ListAsync(resourceGroupName, automationAccountName, parameters: null);

                var automationJobs = automationJobsResult.Jobs.Select(
                     job => new RunbookJob
                     {
                         JobId = job.Properties.JobId.ToString(),
                         Status = job.Properties.Status,
                         RunbookName = job.Properties.Runbook?.Name ?? "_(Unknown)_"
                     }).ToList();

                return automationJobs;
            }
        }
Пример #21
0
 private WebSiteManagementClient GetWSClient(string subscriptionId)
 {
     var token = Request.Headers.GetValues("X-MS-OAUTH-TOKEN").FirstOrDefault();
     var creds = new Microsoft.Azure.TokenCloudCredentials(subscriptionId, token);
     return new WebSiteManagementClient(creds, new Uri(Utils.GetCSMUrl(Request.RequestUri.Host)));
 }
Пример #22
0
        public async Task<RunbookJob> GetAutomationJobAsync(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName, string jobId, bool configureAwait = false)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationJobResult = configureAwait ? await automationClient.Jobs.GetAsync(resourceGroupName, automationAccountName, new Guid(jobId)).ConfigureAwait(false) :
                    await automationClient.Jobs.GetAsync(resourceGroupName, automationAccountName, new Guid(jobId));

                var automationJob = new RunbookJob
                {
                    JobId = automationJobResult.Job.Properties.JobId.ToString(),
                    Status = automationJobResult.Job.Properties.Status,
                    RunbookName = automationJobResult.Job.Properties.Runbook?.Name ?? "_(Unknown)_",
                    ResourceGroupName = resourceGroupName,
                    AutomationAccountName = automationAccountName,
                    StartDateTime = automationJobResult.Job.Properties.StartTime,
                    EndDateTime = automationJobResult.Job.Properties.EndTime
                };

                return automationJob;
            }
        }
Пример #23
0
 private ResourceManagementClient GetRMClient(string token, string subscriptionId)
 {
     var creds = new Microsoft.Azure.TokenCloudCredentials(subscriptionId, token);
     return new ResourceManagementClient(creds, new Uri(Utils.GetCSMUrl(Request.RequestUri.Host)));
 }
Пример #24
0
        private async Task<IEnumerable<Runbook>> ListAutomationRunbooks(string accessToken, string subscriptionId, string resourceGroupName, string automationAccountName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationRunbooksResult = await automationClient.Runbooks.ListAsync(resourceGroupName, automationAccountName);

                var automationRunbooks = await Task.WhenAll(automationRunbooksResult.Runbooks.Select(
                    async runbook => new Runbook
                    {
                        RunbookId = runbook.Id,
                        RunbookName = runbook.Name,
                        RunbookParameters = await this.ListAutomationRunbookParameters(accessToken, subscriptionId, resourceGroupName, automationAccountName, runbook.Name)
                    }).ToList());

                return automationRunbooks;
            }
        }
Пример #25
0
        private async Task<IEnumerable<RunbookParameter>> ListAutomationRunbookParameters(
            string accessToken,
            string subscriptionId,
            string resourceGroupName,
            string automationAccountName,
            string runbookName)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var automationClient = new AutomationManagementClient(credentials))
            {
                var automationRunbookResult = await automationClient.Runbooks.GetAsync(resourceGroupName, automationAccountName, runbookName);

                var automationRunbookPrameters = automationRunbookResult.Runbook.Properties.Parameters.Select(
                    parameter => new RunbookParameter
                    {
                        ParameterName = parameter.Key,
                        DefaultValue = parameter.Value.DefaultValue,
                        IsMandatory = parameter.Value.IsMandatory,
                        Position = parameter.Value.Position,
                        Type = parameter.Value.Type
                    }).ToList();

                return automationRunbookPrameters;
            }
        }
Пример #26
0
        public async Task<RunbookJob> StartRunbookAsync(
            string accessToken, 
            string subscriptionId, 
            string resourceGroupName, 
            string automationAccountName, 
            string runbookName, 
            IDictionary<string, string> runbookParameters = null)
        {
            var credentials = new TokenCredentials(subscriptionId, accessToken);

            using (var client = new AutomationManagementClient(credentials))
            {
                var parameters = new AzureModels.JobCreateParameters(
                    new AzureModels.JobCreateProperties(
                        new AzureModels.RunbookAssociationProperty
                        {
                            Name = runbookName
                        })
                    {
                        Parameters = runbookParameters
                    });

                var jobCreateResult = await client.Jobs.CreateAsync(resourceGroupName, automationAccountName, parameters).ConfigureAwait(false);
                return new RunbookJob
                {
                    JobId = jobCreateResult.Job.Properties.JobId.ToString(),
                    StartDateTime = jobCreateResult.Job.Properties.StartTime,
                    EndDateTime = jobCreateResult.Job.Properties.EndTime,
                    Status = jobCreateResult.Job.Properties.Status,
                    ResourceGroupName = resourceGroupName,
                    AutomationAccountName = automationAccountName,
                    RunbookName = runbookName
                };
            }
        }
Пример #27
0
        private ResourceManagementClient GetRMClient(string token, string subscriptionId)
        {
            var creds = new Microsoft.Azure.TokenCloudCredentials(subscriptionId, token);

            return(new ResourceManagementClient(creds, new Uri(Utils.GetCSMUrl(Request.RequestUri.Host))));
        }
Пример #28
0
 public async Task<bool> DeallocateVirtualMachineAsync(string accessToken, string subscriptionId, string resourceGroupName, string virtualMachineName)
 {
     var credentials = new TokenCredentials(subscriptionId, accessToken);
     using (var client = new ComputeManagementClient(credentials))
     {
         var status = await client.VirtualMachines.DeallocateAsync(resourceGroupName, virtualMachineName).ConfigureAwait(false);
         return status.Status != Microsoft.Azure.Management.Compute.Models.ComputeOperationStatus.Failed;
     }
 }