Exemple #1
0
        public JobListResponse GetJobListResponse()
        {
            var jobListobject1 = new JobListJsonObject
            {
                Detail = new JobDetailRootJsonObject {
                    Id = "jobid_1984120_001", Status = new Status(), Userargs = new Userargs()
                },
                Id = "jobid_1984120_001"
            };

            var jobListobject2 = new JobListJsonObject
            {
                Detail = new JobDetailRootJsonObject {
                    Id = "jobid_1984120_002", Status = new Status(), Userargs = new Userargs()
                },
                Id = "jobid_1984120_002"
            };

            var jobListResponse = new JobListResponse
            {
                JobList = new List <JobListJsonObject> {
                    jobListobject1, jobListobject2
                },
                StatusCode = HttpStatusCode.OK
            };

            return(jobListResponse);
        }
        private List <PSSchedulerJob> GetSchedulerJobs(string cloudService, string jobCollection)
        {
            List <PSSchedulerJob>   lstJobs   = new List <PSSchedulerJob>();
            CloudServiceGetResponse csDetails = csmClient.CloudServices.Get(cloudService);

            foreach (CloudServiceGetResponse.Resource csRes in csDetails.Resources)
            {
                if (csRes.ResourceProviderNamespace.Equals(Constants.SchedulerRPNameProvider, StringComparison.OrdinalIgnoreCase) && csRes.Name.Equals(jobCollection, StringComparison.OrdinalIgnoreCase))
                {
                    SchedulerClient schedClient = new SchedulerClient(csmClient.Credentials, cloudService, jobCollection);
                    JobListResponse jobs        = schedClient.Jobs.List(new JobListParameters
                    {
                        Skip = 0,
                    });
                    foreach (Job job in jobs)
                    {
                        lstJobs.Add(new PSSchedulerJob
                        {
                            JobName           = job.Id,
                            Lastrun           = job.Status == null ? null : job.Status.LastExecutionTime,
                            Nextrun           = job.Status == null ? null : job.Status.NextExecutionTime,
                            Status            = job.State.ToString(),
                            StartTime         = job.StartTime,
                            Recurrence        = job.Recurrence == null ? "" : job.Recurrence.Interval.ToString() + " per " + job.Recurrence.Frequency.ToString(),
                            Failures          = job.Status == null ? default(int?) : job.Status.FailureCount,
                            Faults            = job.Status == null ? default(int?) : job.Status.FaultedCount,
                            Executions        = job.Status == null ? default(int?) : job.Status.ExecutionCount,
                            EndSchedule       = GetEndTime(job),
                            JobCollectionName = jobCollection
                        });
                    }
                }
            }
            return(lstJobs);
        }
        /// <summary>
        /// Monitors jobs for specific object id.
        /// </summary>
        /// <param name="jobName">Name of the job to monitor.</param>
        /// <param name="startTime">Start time of job</param>
        /// <param name="client">SiteRecovery client.</param>
        /// <param name="requestHeaders">Request headers.</param>
        public static void MonitorJobs(
            string jobName,
            DateTime startTime,
            SiteRecoveryManagementClient client,
            CustomRequestHeaders requestHeaders)
        {
            bool trackingFinished = false;

            while (!trackingFinished)
            {
                if (!trackingFinished)
                {
                    Thread.Sleep(new TimeSpan(0, 1, 0));
                }

                JobQueryParameter queryParam = new JobQueryParameter();
                JobListResponse   jobList    = client.Jobs.List(queryParam, requestHeaders);
                trackingFinished = true;

                foreach (var job in jobList.Jobs)
                {
                    if (job.Properties.ScenarioName.Contains(jobName) &&
                        job.Properties.State.Equals(
                            "InProgress",
                            StringComparison.InvariantCultureIgnoreCase))
                    {
                        trackingFinished = false;
                        break;
                    }
                }
            }
        }
        public async Task <IList <Job> > GetJobs()
        {
            SchedulerClient schedulerClient = new SchedulerClient(cloudServiceName, jobCollectionName, cloudCredentials);
            JobListResponse jobResponse     = await schedulerClient.Jobs.ListAsync(new JobListParameters());

            return(jobResponse.Jobs);
        }
Exemple #5
0
 /// <summary>
 /// Helper function to convert ps backup job list model from service response.
 /// </summary>
 public static void AddServiceClientJobsToPSList(JobListResponse serviceClientJobs, List <CmdletModel.JobBase> psJobs, ref int jobsCount)
 {
     if (serviceClientJobs.ItemList != null && serviceClientJobs.ItemList.Value != null)
     {
         foreach (var job in serviceClientJobs.ItemList.Value)
         {
             CmdletModel.JobBase convertedJob = GetPSJob(job);
             if (convertedJob != null)
             {
                 jobsCount++;
                 psJobs.Add(convertedJob);
             }
         }
     }
 }
        public string List()
        {
            SchedulerClient client = GetClient();
            JobListResponse result = client.Jobs.List(new JobListParameters());

            string o = "<ul>";

            foreach (Job j in result)
            {
                o += "<li>" + j.Id + "</li>";
            }
            o += "</ul>";

            return(o);
        }
Exemple #7
0
        /// <summary>
        /// Returns job id of the job.
        /// </summary>
        /// <param name="jobName">Name of the job to check for.</param>
        /// <param name="startTime">Start time of job</param>
        /// <param name="client">SiteRecovery client.</param>
        /// <param name="requestHeaders">Request headers.</param>
        /// <returns>Job object of the job queried.</returns>
        public static Job GetJobId(
            string jobName,
            DateTime startTime,
            SiteRecoveryManagementClient client,
            CustomRequestHeaders requestHeaders)
        {
            JobListResponse jobList = client.Jobs.List(requestHeaders);

            foreach (var job in jobList.Jobs)
            {
                if (job.Properties.ScenarioName.Contains(jobName))
                {
                    return(job);
                }
            }

            return(new Job());
        }
        public PSJobDetail GetJobDetail(string jobCollection, string job, string cloudService)
        {
            CloudServiceGetResponse csDetails = csmClient.CloudServices.Get(cloudService);

            foreach (CloudServiceGetResponse.Resource csRes in csDetails.Resources)
            {
                if (csRes.ResourceProviderNamespace.Equals(Constants.SchedulerRPNameProvider, StringComparison.OrdinalIgnoreCase) && csRes.Name.Equals(jobCollection, StringComparison.OrdinalIgnoreCase))
                {
                    SchedulerClient schedClient = this.currentSubscription.CreateClient <SchedulerClient>(false, cloudService, jobCollection, csmClient.Credentials, schedulerManagementClient.BaseUri);

                    JobListResponse jobs = schedClient.Jobs.List(new JobListParameters
                    {
                        Skip = 0,
                    });
                    foreach (Job j in jobs)
                    {
                        if (j.Id.ToLower().Equals(job.ToLower()))
                        {
                            if (Enum.GetName(typeof(JobActionType), j.Action.Type).Contains("Http"))
                            {
                                return(new PSHttpJobDetail
                                {
                                    JobName = j.Id,
                                    JobCollectionName = jobCollection,
                                    CloudService = cloudService,
                                    ActionType = Enum.GetName(typeof(JobActionType), j.Action.Type),
                                    Uri = j.Action.Request.Uri,
                                    Method = j.Action.Request.Method,
                                    Body = j.Action.Request.Body,
                                    Headers = j.Action.Request.Headers,
                                    Status = j.State.ToString(),
                                    StartTime = j.StartTime,
                                    EndSchedule = GetEndTime(j),
                                    Recurrence = j.Recurrence == null ? string.Empty : j.Recurrence.Interval.ToString() + " per " + j.Recurrence.Frequency.ToString(),
                                    Failures = j.Status == null ? default(int?) : j.Status.FailureCount,
                                    Faults = j.Status == null ? default(int?) : j.Status.FaultedCount,
                                    Executions = j.Status == null ? default(int?) : j.Status.ExecutionCount,
                                    Lastrun = j.Status == null ? null : j.Status.LastExecutionTime,
                                    Nextrun = j.Status == null ? null : j.Status.NextExecutionTime
                                });
                            }
                            else
                            {
                                return(new PSStorageQueueJobDetail
                                {
                                    JobName = j.Id,
                                    JobCollectionName = jobCollection,
                                    CloudService = cloudService,
                                    ActionType = Enum.GetName(typeof(JobActionType), j.Action.Type),
                                    StorageAccountName = j.Action.QueueMessage.StorageAccountName,
                                    StorageQueueName = j.Action.QueueMessage.QueueName,
                                    SasToken = j.Action.QueueMessage.SasToken,
                                    QueueMessage = j.Action.QueueMessage.Message,
                                    Status = j.State.ToString(),
                                    EndSchedule = GetEndTime(j),
                                    StartTime = j.StartTime,
                                    Recurrence = j.Recurrence == null ? string.Empty : j.Recurrence.Interval.ToString() + " per " + j.Recurrence.Frequency.ToString(),
                                    Failures = j.Status == null ? default(int?) : j.Status.FailureCount,
                                    Faults = j.Status == null ? default(int?) : j.Status.FaultedCount,
                                    Executions = j.Status == null ? default(int?) : j.Status.ExecutionCount,
                                    Lastrun = j.Status == null ? null : j.Status.LastExecutionTime,
                                    Nextrun = j.Status == null ? null : j.Status.NextExecutionTime
                                });
                            }
                        }
                    }
                }
            }
            return(null);
        }
        public PSJobDetail GetJobDetail(string jobCollection, string job, string cloudService)
        {
            CloudServiceGetResponse csDetails = csmClient.CloudServices.Get(cloudService);

            foreach (CloudServiceGetResponse.Resource csRes in csDetails.Resources)
            {
                if (csRes.ResourceProviderNamespace.Equals(Constants.SchedulerRPNameProvider, StringComparison.OrdinalIgnoreCase) && csRes.Name.Equals(jobCollection, StringComparison.OrdinalIgnoreCase))
                {
                    SchedulerClient schedClient = AzureSession.Instance.ClientFactory.CreateCustomClient <SchedulerClient>(cloudService, jobCollection, csmClient.Credentials, schedulerManagementClient.BaseUri);

                    JobListResponse jobs = schedClient.Jobs.List(new JobListParameters
                    {
                        Skip = 0,
                    });
                    foreach (Job j in jobs)
                    {
                        if (j.Id.ToLower().Equals(job.ToLower()))
                        {
                            if (Enum.GetName(typeof(JobActionType), j.Action.Type).Contains("Http"))
                            {
                                PSHttpJobDetail jobDetail = new PSHttpJobDetail();
                                jobDetail.JobName           = j.Id;
                                jobDetail.JobCollectionName = jobCollection;
                                jobDetail.CloudService      = cloudService;
                                jobDetail.ActionType        = Enum.GetName(typeof(JobActionType), j.Action.Type);
                                jobDetail.Uri         = j.Action.Request.Uri;
                                jobDetail.Method      = j.Action.Request.Method;
                                jobDetail.Body        = j.Action.Request.Body;
                                jobDetail.Headers     = j.Action.Request.Headers;
                                jobDetail.Status      = j.State.ToString();
                                jobDetail.StartTime   = j.StartTime;
                                jobDetail.EndSchedule = GetEndTime(j);
                                jobDetail.Recurrence  = j.Recurrence == null ? string.Empty : j.Recurrence.Interval.ToString() + " (" + j.Recurrence.Frequency.ToString() + "s)";
                                if (j.Status != null)
                                {
                                    jobDetail.Failures   = j.Status.FailureCount;
                                    jobDetail.Faults     = j.Status.FaultedCount;
                                    jobDetail.Executions = j.Status.ExecutionCount;
                                    jobDetail.Lastrun    = j.Status.LastExecutionTime;
                                    jobDetail.Nextrun    = j.Status.NextExecutionTime;
                                }
                                if (j.Action.Request.Authentication != null)
                                {
                                    switch (j.Action.Request.Authentication.Type)
                                    {
                                    case HttpAuthenticationType.ClientCertificate:
                                        PSClientCertAuthenticationJobDetail ClientCertJobDetail = new PSClientCertAuthenticationJobDetail(jobDetail);
                                        ClientCertJobDetail.ClientCertExpiryDate  = ((j.Action.Request.Authentication) as ClientCertAuthentication).CertificateExpiration.ToString();
                                        ClientCertJobDetail.ClientCertSubjectName = ((j.Action.Request.Authentication) as ClientCertAuthentication).CertificateSubjectName;
                                        ClientCertJobDetail.ClientCertThumbprint  = ((j.Action.Request.Authentication) as ClientCertAuthentication).CertificateThumbprint;
                                        return(ClientCertJobDetail);

                                    case HttpAuthenticationType.ActiveDirectoryOAuth:
                                        PSAADOAuthenticationJobDetail AADOAuthJobDetail = new PSAADOAuthenticationJobDetail(jobDetail);
                                        AADOAuthJobDetail.Audience = ((j.Action.Request.Authentication) as AADOAuthAuthentication).Audience;
                                        AADOAuthJobDetail.ClientId = ((j.Action.Request.Authentication) as AADOAuthAuthentication).ClientId;
                                        AADOAuthJobDetail.Tenant   = ((j.Action.Request.Authentication) as AADOAuthAuthentication).Tenant;
                                        return(AADOAuthJobDetail);

                                    case HttpAuthenticationType.Basic:
                                        PSBasicAuthenticationJobDetail BasicAuthJobDetail = new PSBasicAuthenticationJobDetail(jobDetail);
                                        BasicAuthJobDetail.Username = ((j.Action.Request.Authentication) as BasicAuthentication).Username;
                                        return(BasicAuthJobDetail);
                                    }
                                }
                                return(jobDetail);
                            }
                            else
                            {
                                return(new PSStorageQueueJobDetail
                                {
                                    JobName = j.Id,
                                    JobCollectionName = jobCollection,
                                    CloudService = cloudService,
                                    ActionType = Enum.GetName(typeof(JobActionType), j.Action.Type),
                                    StorageAccountName = j.Action.QueueMessage.StorageAccountName,
                                    StorageQueueName = j.Action.QueueMessage.QueueName,
                                    SasToken = j.Action.QueueMessage.SasToken,
                                    QueueMessage = j.Action.QueueMessage.Message,
                                    Status = j.State.ToString(),
                                    EndSchedule = GetEndTime(j),
                                    StartTime = j.StartTime,
                                    Recurrence = j.Recurrence == null ? string.Empty : j.Recurrence.Interval.ToString() + " (" + j.Recurrence.Frequency.ToString() + "s)",
                                    Failures = j.Status == null ? default(int?) : j.Status.FailureCount,
                                    Faults = j.Status == null ? default(int?) : j.Status.FaultedCount,
                                    Executions = j.Status == null ? default(int?) : j.Status.ExecutionCount,
                                    Lastrun = j.Status == null ? null : j.Status.LastExecutionTime,
                                    Nextrun = j.Status == null ? null : j.Status.NextExecutionTime
                                });
                            }
                        }
                    }
                }
            }
            return(null);
        }
        public void Test_JobOperations_E2E()
        {
            BasicDelegatingHandler handler = new BasicDelegatingHandler();

            using (var undoContext = UndoContext.Current)
            {
                undoContext.Start();

                string resourceGroupName = TestUtilities.GenerateName("StreamAnalytics");
                string resourceName      = TestUtilities.GenerateName("MyStreamingJobSubmittedBySDK");

                string serviceLocation = TestHelper.GetDefaultLocation();

                var resourceClient = TestHelper.GetResourceClient(handler);
                var client         = TestHelper.GetStreamAnalyticsManagementClient(handler);

                try
                {
                    ResourceGroup resourceGroup = new ResourceGroup()
                    {
                        Location = serviceLocation
                    };
                    resourceClient.ResourceGroups.CreateOrUpdate(resourceGroupName, resourceGroup);

                    Job job = new Job();
                    job.Name     = resourceName;
                    job.Location = serviceLocation;

                    // Construct the general properties for JobProperties
                    JobProperties jobProperties = new JobProperties();
                    jobProperties.Sku = new Sku()
                    {
                        Name = "standard"
                    };
                    jobProperties.EventsOutOfOrderPolicy            = EventsOutOfOrderPolicy.Drop;
                    jobProperties.EventsOutOfOrderMaxDelayInSeconds = 0;

                    // Construct the Input
                    StorageAccount storageAccount = new StorageAccount
                    {
                        AccountName = TestHelper.AccountName,
                        AccountKey  = TestHelper.AccountKey
                    };
                    InputProperties inputProperties = new StreamInputProperties()
                    {
                        Serialization = new CsvSerialization()
                        {
                            Properties = new CsvSerializationProperties()
                            {
                                FieldDelimiter = ",",
                                Encoding       = "UTF8"
                            }
                        },
                        DataSource = new BlobStreamInputDataSource()
                        {
                            Properties = new BlobStreamInputDataSourceProperties()
                            {
                                StorageAccounts = new[] { storageAccount },
                                Container       = "state",
                                PathPattern     = ""
                            }
                        }
                    };
                    Input input1 = new Input("inputtest")
                    {
                        Properties = inputProperties
                    };
                    jobProperties.Inputs = new[] { input1 };

                    // Construct the Output
                    OutputProperties         outputProperties         = new OutputProperties();
                    SqlAzureOutputDataSource sqlAzureOutputDataSource = new SqlAzureOutputDataSource()
                    {
                        Properties = new SqlAzureOutputDataSourceProperties()
                        {
                            Server   = TestHelper.Server,
                            Database = TestHelper.Database,
                            User     = TestHelper.User,
                            Password = TestHelper.Password,
                            Table    = "StateInfo"
                        }
                    };
                    outputProperties.DataSource = sqlAzureOutputDataSource;
                    Output output1 = new Output("outputtest")
                    {
                        Properties = outputProperties
                    };
                    jobProperties.Outputs = new Output[] { output1 };

                    // Construct the transformation
                    Transformation transformation = new Transformation()
                    {
                        Name       = "transformationtest",
                        Properties = new TransformationProperties()
                        {
                            Query          = "Select Id, Name from inputtest",
                            StreamingUnits = 1
                        }
                    };
                    jobProperties.Transformation = transformation;

                    job.Properties = jobProperties;

                    // Construct the JobCreateProperties
                    JobCreateOrUpdateParameters jobCreateOrUpdateParameters = new JobCreateOrUpdateParameters();
                    jobCreateOrUpdateParameters.Job = job;

                    // Create a streaming job
                    JobCreateOrUpdateResponse jobCreateOrUpdateResponse = client.StreamingJobs.CreateOrUpdate(resourceGroupName, jobCreateOrUpdateParameters);
                    Assert.Equal(HttpStatusCode.OK, jobCreateOrUpdateResponse.StatusCode);
                    Assert.NotNull(jobCreateOrUpdateResponse.Job.Properties.Etag);

                    // Get a streaming job to check
                    JobGetParameters jobGetParameters = new JobGetParameters("inputs,transformation,outputs");
                    JobGetResponse   jobGetResponse   = client.StreamingJobs.Get(resourceGroupName, resourceName, jobGetParameters);
                    Assert.Equal(HttpStatusCode.OK, jobGetResponse.StatusCode);
                    Assert.Equal(serviceLocation, jobGetResponse.Job.Location);
                    Assert.Equal(resourceName, jobGetResponse.Job.Name);
                    Assert.True(jobGetResponse.Job.Properties.Inputs[0].Properties is StreamInputProperties);
                    StreamInputProperties streamInputProperties = jobGetResponse.Job.Properties.Inputs[0].Properties as StreamInputProperties;
                    Assert.Equal("Stream", jobGetResponse.Job.Properties.Inputs[0].Properties.Type);
                    Assert.Equal("Microsoft.Storage/Blob", streamInputProperties.DataSource.Type);
                    Assert.Equal("Csv", streamInputProperties.Serialization.Type);
                    Assert.Equal(EventsOutOfOrderPolicy.Drop, jobGetResponse.Job.Properties.EventsOutOfOrderPolicy);
                    Assert.NotNull(jobGetResponse.Job.Properties.Etag);
                    Assert.Equal(jobCreateOrUpdateResponse.Job.Properties.Etag, jobGetResponse.Job.Properties.Etag);

                    // Patch the streaming job
                    JobPatchParameters jobPatchParameters = new JobPatchParameters()
                    {
                        JobPatchRequest = new JobPatchRequest()
                        {
                            Properties = new JobProperties()
                            {
                                EventsOutOfOrderPolicy = EventsOutOfOrderPolicy.Adjust
                            }
                        }
                    };
                    var jobPatchResponse = client.StreamingJobs.Patch(resourceGroupName, resourceName, jobPatchParameters);
                    jobGetResponse = client.StreamingJobs.Get(resourceGroupName, resourceName, jobGetParameters);
                    Assert.Equal(HttpStatusCode.OK, jobPatchResponse.StatusCode);
                    Assert.Equal(HttpStatusCode.OK, jobGetResponse.StatusCode);
                    Assert.Equal(EventsOutOfOrderPolicy.Adjust, jobPatchResponse.Job.Properties.EventsOutOfOrderPolicy);
                    Assert.Equal(EventsOutOfOrderPolicy.Adjust, jobGetResponse.Job.Properties.EventsOutOfOrderPolicy);

                    JobListParameters parameters = new JobListParameters(string.Empty);
                    JobListResponse   response   = client.StreamingJobs.ListJobsInResourceGroup(resourceGroupName, parameters);
                    Assert.Equal(HttpStatusCode.OK, response.StatusCode);

                    // Start a streaming job
                    JobStartParameters jobStartParameters = new JobStartParameters()
                    {
                        OutputStartMode = OutputStartMode.LastOutputEventTime
                    };
                    CloudException cloudException = Assert.Throws <CloudException>(() => client.StreamingJobs.Start(resourceGroupName, resourceName, jobStartParameters));
                    Assert.Equal("LastOutputEventTime must be available when OutputStartMode is set to LastOutputEventTime. Please make sure at least one output event has been processed. ", cloudException.Error.Message);

                    jobStartParameters.OutputStartMode = OutputStartMode.CustomTime;
                    jobStartParameters.OutputStartTime = DateTime.Now;
                    AzureOperationResponse jobStartOperationResponse = client.StreamingJobs.Start(resourceGroupName, resourceName, jobStartParameters);
                    Assert.Equal(HttpStatusCode.OK, jobStartOperationResponse.StatusCode);

                    // Get a streaming job to check
                    jobGetResponse = client.StreamingJobs.Get(resourceGroupName, resourceName, jobGetParameters);
                    Assert.Equal(HttpStatusCode.OK, jobGetResponse.StatusCode);
                    Assert.True(IsRunning(jobGetResponse.Job.Properties.JobState));

                    // Check diagnostics
                    InputListResponse inputListResponse = client.Inputs.ListInputInJob(resourceGroupName, resourceName,
                                                                                       new InputListParameters("*"));
                    Assert.Equal(HttpStatusCode.OK, inputListResponse.StatusCode);
                    Assert.NotEqual(0, inputListResponse.Value.Count);
                    Assert.NotNull(inputListResponse.Value[0].Properties.Diagnostics);
                    Assert.NotEqual(0, inputListResponse.Value[0].Properties.Diagnostics.Conditions.Count);
                    Assert.NotNull(inputListResponse.Value[0].Properties.Diagnostics.Conditions[0].Code);
                    Assert.NotNull(inputListResponse.Value[0].Properties.Diagnostics.Conditions[0].Message);

                    // Stop a streaming job
                    AzureOperationResponse jobStopOperationResponse = client.StreamingJobs.Stop(resourceGroupName, resourceName);
                    Assert.Equal(HttpStatusCode.OK, jobStopOperationResponse.StatusCode);

                    // Get a streaming job to check
                    jobGetResponse = client.StreamingJobs.Get(resourceGroupName, resourceName, jobGetParameters);
                    Assert.Equal(HttpStatusCode.OK, jobGetResponse.StatusCode);
                    Assert.Equal(JobRunningState.Stopped, jobGetResponse.Job.Properties.JobState);

                    // Delete a streaming job
                    AzureOperationResponse jobDeleteOperationResponse = client.StreamingJobs.Delete(resourceGroupName, resourceName);
                    Assert.Equal(HttpStatusCode.OK, jobDeleteOperationResponse.StatusCode);
                }
                finally
                {
                    client.StreamingJobs.Delete(resourceGroupName, resourceName);
                    resourceClient.ResourceGroups.Delete(resourceGroupName);
                }
            }
        }
        public JobListResponse GetJobListResponse()
        {
            var jobListobject1 = new JobListJsonObject
            {
                Detail = new JobDetailRootJsonObject { Id = "jobid_1984120_001", Status = new Status(), Userargs = new Userargs() },
                Id = "jobid_1984120_001"
            };

            var jobListobject2 = new JobListJsonObject
            {
                Detail = new JobDetailRootJsonObject { Id = "jobid_1984120_002", Status = new Status(), Userargs = new Userargs() },
                Id = "jobid_1984120_002"
            };

            var jobListResponse = new JobListResponse
            {
                JobList = new List<JobListJsonObject> { jobListobject1, jobListobject2 },
                StatusCode = HttpStatusCode.OK
            };

            return jobListResponse;
        }
Exemple #12
0
        private void DeleteResources(ClearResourcesInputs inputs)
        {
            if (inputs.NamespaceExists)
            {
                _ConsoleBuffer.Add("Connecting to Service Bus...");
                ServiceBusManagementClient sbMgmt = new ServiceBusManagementClient(inputs.Credentials);

                bool deleteNamespace = ConsoleHelper.AskAndPerformAction(
                    "Do you want to delete whole namespace " + inputs.SBNamespace + " including all entities under it?",
                    "Are you sure you want to delete namespace " + inputs.SBNamespace + "?",
                    "Are you sure you do not want to delete namespace " + inputs.SBNamespace + "?",
                    () =>
                {
                    _ConsoleBuffer.Add("Sending request to delete " + inputs.SBNamespace + " namespace...");
                    AzureOperationResponse nsResponse = sbMgmt.Namespaces.Delete(inputs.SBNamespace);
                    if (nsResponse.StatusCode == HttpStatusCode.OK)
                    {
                        _ConsoleBuffer.Add(inputs.SBNamespace + " namespace was deleted.");
                    }
                },
                    _ConsoleBuffer);

                //if we did not delete whole Namespace, maybe we want to delete some of its Event Hubs?
                if (!deleteNamespace)
                {
                    _ConsoleBuffer.Add("Reading list of Event Hubs from " + inputs.SBNamespace + " namespace...");

                    var nsDescription      = sbMgmt.Namespaces.GetNamespaceDescription(inputs.SBNamespace);
                    var nsConnectionString = nsDescription.NamespaceDescriptions.First(
                        (d) => String.Equals(d.AuthorizationType, "SharedAccessAuthorization")
                        ).ConnectionString;
                    var nsManager = NamespaceManager.CreateFromConnectionString(nsConnectionString);

                    var eventHubs = nsManager.GetEventHubs( );

                    foreach (var eventHubDescription in eventHubs)
                    {
                        EventHubDescription description = eventHubDescription;
                        ConsoleHelper.AskAndPerformAction(
                            "Do you want to delete Event Hub " + eventHubDescription.Path +
                            " including all messages under it?",
                            "Are you sure you want to delete Event Hub " + eventHubDescription.Path + "?",
                            "Are you sure you do not want to delete Event Hub " + eventHubDescription.Path + "?",
                            () =>
                        {
                            _ConsoleBuffer.Add("Sending request to delete " + description.Path + " Event Hub...");
                            nsManager.DeleteEventHub(description.Path);
                            _ConsoleBuffer.Add("Request to delete " + description.Path + " Event Hub was accepted.");
                        },
                            _ConsoleBuffer);
                    }
                }
            }

            //Deleting Storage
            _ConsoleBuffer.Add("Reading list of Storage Accounts...");
            StorageManagementClient stgMgmt         = new StorageManagementClient(inputs.Credentials);
            HashSet <string>        storageAccounts = new HashSet <string>( );

            foreach (var storageAccount in stgMgmt.StorageAccounts.List( ))
            {
                storageAccounts.Add(storageAccount.Name);
            }

            int deletedCount = 0;

            if (storageAccounts.Contains(inputs.StorageAccountName))
            {
                ConsoleHelper.AskAndPerformAction(
                    "Do you want to delete " + inputs.StorageAccountName + " storage account?",
                    "Are you sure you want to delete " + inputs.StorageAccountName + " storage account?",
                    "Are you sure you do not want to delete " + inputs.StorageAccountName + " storage account?",
                    () =>
                {
                    _ConsoleBuffer.Add("Sending request to delete " + inputs.StorageAccountName + " Storage account...");
                    AzureOperationResponse resultStg = stgMgmt.StorageAccounts.Delete(inputs.StorageAccountName);
                    deletedCount += 1;
                    if (resultStg.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        _ConsoleBuffer.Add("Storage account " + inputs.StorageAccountName + " was deleted.");
                    }
                },
                    _ConsoleBuffer);
            }
            if (deletedCount == 0)
            {
                _ConsoleBuffer.Add("No related Storage account was detected.");
            }

            //Deleting Stream Analytics jobs
            _ConsoleBuffer.Add("Reading list of Stream Analytics jobs...");
            StreamAnalyticsManagementClient saMgmt = new StreamAnalyticsManagementClient(inputs.Credentials);
            JobListResponse jobListResponse        = saMgmt.StreamingJobs.ListJobsInSubscription(new JobListParameters {
                PropertiesToExpand = string.Empty
            });

            deletedCount = 0;
            foreach (var job in jobListResponse.Value)
            {
                if (job.Name.StartsWith(inputs.NamePrefix))
                {
                    Job jobToAsk = job;
                    ConsoleHelper.AskAndPerformAction(
                        "Do you want to delete Stream Analytics job " + job.Name + "?",
                        "Are you sure you want to delete Stream Analytics job  " + job.Name + "?",
                        "Are you sure you do not want to delete namespace " + job.Name + "?",
                        () =>
                    {
                        //we need to figure out wat resourceGroup this job belongs to
                        //--//
                        const string resourceGroupPath = "/resourceGroups/";
                        const string providersPath     = "/providers/";

                        int resourceGroupPathIndex    = jobToAsk.Id.IndexOf(resourceGroupPath, System.StringComparison.Ordinal);
                        int providersPathIndex        = jobToAsk.Id.IndexOf(providersPath, System.StringComparison.Ordinal);
                        int resourceGroupIdStartIndex = resourceGroupPathIndex + resourceGroupPath.Length;

                        string resourceGroup = jobToAsk.Id.Substring(resourceGroupIdStartIndex, providersPathIndex - resourceGroupIdStartIndex);
                        //--//

                        deletedCount += 1;
                        _ConsoleBuffer.Add("Sending request to delete " + jobToAsk.Name + " Stream Analytics job...");
                        LongRunningOperationResponse response = saMgmt.StreamingJobs.Delete(resourceGroup, jobToAsk.Name);
                        if (response.Status == OperationStatus.Succeeded)
                        {
                            _ConsoleBuffer.Add("Stream Analytics job " + jobToAsk.Name + " was deleted.");
                        }
                    },
                        _ConsoleBuffer);
                }
            }
            if (deletedCount == 0)
            {
                _ConsoleBuffer.Add("No Stream Analytics job was deleted.");
            }
        }