コード例 #1
0
        public override void ExecuteCmdlet()
        {
            ExecutionBlock(() =>
            {
                if (Job != null)
                {
                    Vault = new AzureRMBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
                }

                InitializeAzureBackupCmdlet(Vault);

                if (Job != null)
                {
                    JobId = Job.InstanceId;
                }

                if (Type != null)
                {
                    Type = AzureBackupJobHelper.GetTypeForService(Type);
                }

                // validations
                if (!From.HasValue)
                {
                    if (To.HasValue)
                    {
                        throw new Exception(Resources.AzureBackupJobArguementException);
                    }
                    WriteDebug(Resources.SettingStartTime);
                    From = AzureBackupJobHelper.MinimumAllowedDate;
                }

                if (To.HasValue && To.Value > From.Value)
                {
                    // everything is good. don't do anything
                }
                else if (To.HasValue && To.Value <= From.Value)
                {
                    throw new Exception(Resources.TimeFilterNotCorrect);
                }
                else
                {
                    if (From != AzureBackupJobHelper.MinimumAllowedDate)
                    {
                        WriteDebug(Resources.EndTimeNotSet);
                        To = DateTime.Now;
                    }
                    else
                    {
                        WriteDebug(Resources.SettingEndTime);
                        To = AzureBackupJobHelper.MinimumAllowedDate;
                    }
                }

                From = TimeZoneInfo.ConvertTimeToUtc(From.Value);
                To   = TimeZoneInfo.ConvertTimeToUtc(To.Value);

                // if user hasn't specified any filters, then default filter fetches
                // all jobs that were created in last 24 hours.
                if (From == AzureBackupJobHelper.MinimumAllowedDate && To == AzureBackupJobHelper.MinimumAllowedDate &&
                    string.IsNullOrEmpty(Operation) && string.IsNullOrEmpty(Status) &&
                    string.IsNullOrEmpty(Type) && string.IsNullOrEmpty(JobId))
                {
                    From = DateTime.UtcNow.AddDays(-1);
                    To   = DateTime.UtcNow;
                }

                DateTimeFormatInfo format = new CultureInfo("en-US").DateTimeFormat;
                WriteDebug(String.Format(Resources.StartTimeFilter, System.Uri.EscapeDataString(From.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format))));
                WriteDebug(String.Format(Resources.EndTimeFilter, System.Uri.EscapeDataString(To.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format))));
                WriteDebug(String.Format(Resources.OperationFilter, Operation));
                WriteDebug(String.Format(Resources.StatusFilter, Status));
                WriteDebug(String.Format(Resources.TypeFilter, Type));
                WriteDebug(String.Format(Resources.JobIdFilter, JobId));

                Mgmt.CSMJobQueryObject queryParams = new Mgmt.CSMJobQueryObject()
                {
                    StartTime    = From.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format),
                    EndTime      = To.Value.ToString("yyyy-MM-dd hh:mm:ss tt", format),
                    Operation    = Operation,
                    Status       = Status,
                    WorkloadType = Type,
                    Name         = JobId
                };

                var jobsList = AzureBackupClient.ListJobs(Vault.ResourceGroupName, Vault.Name, queryParams);
                List <AzureRMBackupJob> retrievedJobs = new List <AzureRMBackupJob>();

                foreach (Mgmt.CSMJobResponse serviceJob in jobsList)
                {
                    // TODO: Initialize vault from Job object when vault is made optional
                    retrievedJobs.Add(new AzureRMBackupJob(Vault, serviceJob.Properties, serviceJob.Name));
                }

                WriteDebug(String.Format(Resources.JobRetrieved, retrievedJobs.Count()));

                if (retrievedJobs.Count == 1)
                {
                    WriteObject(retrievedJobs.First());
                }
                else
                {
                    WriteObject(retrievedJobs);
                }
            });
        }