public AzureRMBackupContainer(AzureRMBackupVault vault, MarsContainerResponse marsContainerResponse)
     : base(vault, marsContainerResponse)
 {
     Name = marsContainerResponse.Properties.FriendlyName;
     Id = marsContainerResponse.Properties.ContainerId;
     Status = AzureBackupContainerRegistrationStatus.Registered.ToString();
 }
 public AzureRMBackupContainer(AzureRMBackupVault vault, MarsContainerResponse marsContainerResponse)
     : base(vault, marsContainerResponse)
 {
     Name   = marsContainerResponse.Properties.FriendlyName;
     Id     = marsContainerResponse.Properties.ContainerId;
     Status = AzureBackupContainerRegistrationStatus.Registered.ToString();
 }
Esempio n. 3
0
        public AzureRMBackupJob(AzureRMBackupVault vault, Mgmt.CSMJobProperties serviceJob, string jobName)
            : base(vault)
        {
            this.InstanceId = jobName;
            this.WorkloadType = AzureBackupJobHelper.GetTypeForPS(serviceJob.WorkloadType);
            this.WorkloadName = serviceJob.EntityFriendlyName;
            this.Operation = serviceJob.Operation;
            this.Status = serviceJob.Status;
            this.Duration = serviceJob.Duration;
            this.StartTime = serviceJob.StartTimestamp;
            this.EndTime = serviceJob.EndTimestamp;
            this.ErrorDetails = new List<ErrorInfo>();

            if (serviceJob.ErrorDetails != null)
            {
                foreach (Mgmt.CSMJobErrorInfo error in serviceJob.ErrorDetails)
                {
                    this.ErrorDetails.Add(new ErrorInfo(error));
                }
            }

            this.IsRetriable = this.IsCancellable = false;

            if (serviceJob.ActionsInfo != null)
            {
                for (int i = 0; i < serviceJob.ActionsInfo.Count; i++)
                {
                    if (serviceJob.ActionsInfo[i] == Mgmt.JobSupportedAction.Cancellable)
                        this.IsCancellable = true;
                    else if (serviceJob.ActionsInfo[i] == Mgmt.JobSupportedAction.Retriable)
                        this.IsRetriable = true;
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            ExecutionBlock(() =>
            {
                base.ExecuteCmdlet();
                WriteDebug(Resources.MakingClientCall);

                var response = AzureBackupClient.GetProtectionPolicyByName(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Name);
                var vault = new CmdletModel.AzureRMBackupVault(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Location);

                var policyInfo = ProtectionPolicyHelpers.GetCmdletPolicy(vault, response);

                if (policyInfo == null)
                {
                    throw new ArgumentException(String.Format(Resources.PolicyNotFound, ProtectionPolicy.Name));
                }

                FillRemainingValuesForSetPolicyRequest(policyInfo, this.NewName);

                var backupSchedule = ProtectionPolicyHelpers.FillCSMBackupSchedule(policyInfo.ScheduleType, BackupTime,
                    policyInfo.DaysOfWeek.ToArray<string>());

                NewName = (string.IsNullOrEmpty(NewName) ? policyInfo.Name : NewName);
                var updateProtectionPolicyRequest = new CSMUpdateProtectionPolicyRequest();
                updateProtectionPolicyRequest.Properties = new CSMUpdateProtectionPolicyRequestProperties();
                updateProtectionPolicyRequest.Properties.PolicyName = this.NewName;
                updateProtectionPolicyRequest.Properties.BackupSchedule = backupSchedule;

                if (RetentionPolicy != null && RetentionPolicy.Length > 0)
                {
                    updateProtectionPolicyRequest.Properties.LtrRetentionPolicy =
                        ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(RetentionPolicy, backupSchedule);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(RetentionPolicy, backupSchedule);
                }
                else
                {
                    updateProtectionPolicyRequest.Properties.LtrRetentionPolicy =
                        ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(policyInfo.RetentionPolicy, backupSchedule);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(policyInfo.RetentionPolicy, backupSchedule);
                }

                var operationId = AzureBackupClient.UpdateProtectionPolicy(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, policyInfo.Name, updateProtectionPolicyRequest);

                if (operationId != Guid.Empty)
                {
                    string resourceGroupName = ProtectionPolicy.ResourceGroupName;
                    string resourceName = ProtectionPolicy.ResourceName;
                    var operationStatus = GetOperationStatus(resourceGroupName, resourceName, operationId);
                    WriteDebug(Resources.PolicyUpdatedReconfigureProtectionDone);

                    WriteObject(GetCreatedJobs(resourceGroupName, resourceName, vault, operationStatus.JobList));
                }

                else
                {
                    WriteDebug(Resources.PolicyUpdated);
                }

            });
        }
Esempio n. 5
0
        protected override void ProcessRecord()
        {
            ExecutionBlock(() =>
            {
                base.ProcessRecord();
                WriteDebug(Resources.MakingClientCall);

                var response = AzureBackupClient.GetProtectionPolicyByName(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Name);
                var vault    = new CmdletModel.AzureRMBackupVault(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, ProtectionPolicy.Location);

                var policyInfo = ProtectionPolicyHelpers.GetCmdletPolicy(vault, response);

                if (policyInfo == null)
                {
                    throw new ArgumentException(String.Format(Resources.PolicyNotFound, ProtectionPolicy.Name));
                }

                FillRemainingValuesForSetPolicyRequest(policyInfo, this.NewName);

                var backupSchedule = ProtectionPolicyHelpers.FillCSMBackupSchedule(policyInfo.ScheduleType, BackupTime,
                                                                                   policyInfo.DaysOfWeek.ToArray <string>());

                NewName = (string.IsNullOrEmpty(NewName) ? policyInfo.Name : NewName);
                var updateProtectionPolicyRequest                       = new CSMUpdateProtectionPolicyRequest();
                updateProtectionPolicyRequest.Properties                = new CSMUpdateProtectionPolicyRequestProperties();
                updateProtectionPolicyRequest.Properties.PolicyName     = this.NewName;
                updateProtectionPolicyRequest.Properties.BackupSchedule = backupSchedule;

                if (RetentionPolicy != null && RetentionPolicy.Length > 0)
                {
                    updateProtectionPolicyRequest.Properties.LtrRetentionPolicy =
                        ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(RetentionPolicy, backupSchedule);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(RetentionPolicy, backupSchedule);
                }
                else
                {
                    updateProtectionPolicyRequest.Properties.LtrRetentionPolicy =
                        ProtectionPolicyHelpers.ConvertToCSMRetentionPolicyObject(policyInfo.RetentionPolicy, backupSchedule);
                    ProtectionPolicyHelpers.ValidateRetentionPolicy(policyInfo.RetentionPolicy, backupSchedule);
                }

                var operationId = AzureBackupClient.UpdateProtectionPolicy(ProtectionPolicy.ResourceGroupName, ProtectionPolicy.ResourceName, policyInfo.Name, updateProtectionPolicyRequest);

                if (operationId != Guid.Empty)
                {
                    string resourceGroupName = ProtectionPolicy.ResourceGroupName;
                    string resourceName      = ProtectionPolicy.ResourceName;
                    var operationStatus      = GetOperationStatus(resourceGroupName, resourceName, operationId);
                    WriteDebug(Resources.PolicyUpdatedReconfigureProtectionDone);

                    WriteObject(GetCreatedJobs(resourceGroupName, resourceName, vault, operationStatus.JobList));
                }

                else
                {
                    WriteDebug(Resources.PolicyUpdated);
                }
            });
        }
 public AzureRMBackupContainer(AzureRMBackupVault vault, CSMContainerResponse containerInfo)
     : base(vault, containerInfo)
 {
     //ManagedResourceGroupName = ContainerHelpers.GetRGNameFromId(containerInfo.Properties.ParentContainerId);
     Name = containerInfo.Properties.FriendlyName;
     //HealthStatus = containerInfo.Properties.HealthStatus;
     Status = containerInfo.Properties.Status;
 }
 public AzureRMBackupContainer(AzureRMBackupVault vault, CSMContainerResponse containerInfo)
     : base(vault, containerInfo)
 {
     //ManagedResourceGroupName = ContainerHelpers.GetRGNameFromId(containerInfo.Properties.ParentContainerId);
     Name = containerInfo.Properties.FriendlyName;
     //HealthStatus = containerInfo.Properties.HealthStatus;
     Status = containerInfo.Properties.Status;
 }
Esempio n. 8
0
        public static AzureRMBackupProtectionPolicy GetCmdletPolicy(CmdletModel.AzureRMBackupVault vault, CSMProtectionPolicyResponse sourcePolicy)
        {
            if (sourcePolicy == null)
            {
                return(null);
            }

            return(new AzureRMBackupProtectionPolicy(vault, sourcePolicy.Properties, sourcePolicy.Id));
        }
 public AzureRMBackupProtectionPolicy(AzureRMBackupVault vault, CSMProtectionPolicyProperties sourcePolicy, string policyId)
     : base(vault)
 {
     PolicyId = policyId;
     Name = sourcePolicy.PolicyName;
     Type = ProtectionPolicyHelpers.ConvertToPowershellWorkloadType(sourcePolicy.WorkloadType);
     ScheduleType = sourcePolicy.BackupSchedule.ScheduleRun;
     BackupTime = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunTimes(sourcePolicy.BackupSchedule.ScheduleRunTimes);
     DaysOfWeek = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunDays(sourcePolicy.BackupSchedule.ScheduleRunDays);
     RetentionPolicy = ProtectionPolicyHelpers.ConvertCSMRetentionPolicyListToPowershell(sourcePolicy.LtrRetentionPolicy);            
 }
Esempio n. 10
0
 public AzureRMBackupProtectionPolicy(AzureRMBackupVault vault, CSMProtectionPolicyProperties sourcePolicy, string policyId)
     : base(vault)
 {
     PolicyId        = policyId;
     Name            = sourcePolicy.PolicyName;
     Type            = ProtectionPolicyHelpers.ConvertToPowershellWorkloadType(sourcePolicy.WorkloadType);
     ScheduleType    = sourcePolicy.BackupSchedule.ScheduleRun;
     BackupTime      = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunTimes(sourcePolicy.BackupSchedule.ScheduleRunTimes);
     DaysOfWeek      = ProtectionPolicyHelpers.ConvertToPowershellScheduleRunDays(sourcePolicy.BackupSchedule.ScheduleRunDays);
     RetentionPolicy = ProtectionPolicyHelpers.ConvertCSMRetentionPolicyListToPowershell(sourcePolicy.LtrRetentionPolicy);
 }
Esempio n. 11
0
        /// <summary>
        /// Gets CmdletModel of backup vault from Client model
        /// </summary>
        /// <param name="vault"></param>
        /// <param name="storage"></param>
        /// <returns></returns>
        public static CmdletModel.AzureRMBackupVault GetCmdletVault(ClientModel.AzureBackupVault vault, string storageType)
        {
            var response = new CmdletModel.AzureRMBackupVault
            {
                ResourceId = vault.Id,
                Name = vault.Name,
                Region = vault.Location,
                ResourceGroupName = GetResourceGroup(vault.Id),
                Storage = storageType,
            };

            return response;
        }
        /// <summary>
        /// Gets CmdletModel of backup vault from Client model
        /// </summary>
        /// <param name="vault"></param>
        /// <param name="storage"></param>
        /// <returns></returns>
        public static CmdletModel.AzureRMBackupVault GetCmdletVault(ClientModel.AzureBackupVault vault, string storageType)
        {
            var response = new CmdletModel.AzureRMBackupVault
            {
                ResourceId        = vault.Id,
                Name              = vault.Name,
                Region            = vault.Location,
                ResourceGroupName = GetResourceGroup(vault.Id),
                Storage           = storageType,
            };

            return(response);
        }
Esempio n. 13
0
        public static IEnumerable <AzureRMBackupProtectionPolicy> GetCmdletPolicies(CmdletModel.AzureRMBackupVault vault, IEnumerable <CSMProtectionPolicyResponse> sourcePolicyList)
        {
            if (sourcePolicyList == null)
            {
                return(null);
            }

            List <AzureRMBackupProtectionPolicy> targetList = new List <AzureRMBackupProtectionPolicy>();

            foreach (var sourcePolicy in sourcePolicyList)
            {
                targetList.Add(GetCmdletPolicy(vault, sourcePolicy));
            }

            return(targetList);
        }
Esempio n. 14
0
        public AzureRMBackupJobDetails(AzureRMBackupVault vault, Mgmt.CSMJobDetailedProperties serviceJobProperties, string jobName)
            : base(vault, serviceJobProperties, jobName)
        {
            if (serviceJobProperties.PropertyBag != null)
            {
                this.Properties = new Dictionary <string, string>(serviceJobProperties.PropertyBag);
            }
            else
            {
                this.Properties = new Dictionary <string, string>();
            }

            this.SubTasks = new List <AzureBackupJobSubTask>();
            if (serviceJobProperties.TasksList != null)
            {
                foreach (Mgmt.CSMJobTaskDetails serviceSubTask in serviceJobProperties.TasksList)
                {
                    this.SubTasks.Add(new AzureBackupJobSubTask(serviceSubTask));
                }
            }
        }
Esempio n. 15
0
        public AzureRMBackupJob(AzureRMBackupVault vault, Mgmt.CSMJobProperties serviceJob, string jobName)
            : base(vault)
        {
            this.InstanceId   = jobName;
            this.WorkloadType = AzureBackupJobHelper.GetTypeForPS(serviceJob.WorkloadType);
            this.WorkloadName = serviceJob.EntityFriendlyName;
            this.Operation    = serviceJob.Operation;
            this.Status       = serviceJob.Status;
            this.Duration     = serviceJob.Duration;
            this.StartTime    = serviceJob.StartTimestamp;
            this.EndTime      = serviceJob.EndTimestamp;
            this.ErrorDetails = new List <ErrorInfo>();

            if (serviceJob.ErrorDetails != null)
            {
                foreach (Mgmt.CSMJobErrorInfo error in serviceJob.ErrorDetails)
                {
                    this.ErrorDetails.Add(new ErrorInfo(error));
                }
            }

            this.IsRetriable = this.IsCancellable = false;

            if (serviceJob.ActionsInfo != null)
            {
                for (int i = 0; i < serviceJob.ActionsInfo.Count; i++)
                {
                    if (serviceJob.ActionsInfo[i] == Mgmt.JobSupportedAction.Cancellable)
                    {
                        this.IsCancellable = true;
                    }
                    else if (serviceJob.ActionsInfo[i] == Mgmt.JobSupportedAction.Retriable)
                    {
                        this.IsRetriable = true;
                    }
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            if (Job != null)
            {
                Vault = new AzureRMBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
            }

            InitializeAzureBackupCmdlet(Vault);

            ExecutionBlock(() =>
            {
                if (Job != null)
                {
                    JobID = Job.InstanceId;
                }

                WriteDebug(String.Format(Resources.JobId, JobID));
                Guid cancelTaskId = AzureBackupClient.TriggerCancelJob(Vault.ResourceGroupName, Vault.Name, JobID);

                if (cancelTaskId == Guid.Empty)
                {
                    WriteDebug(String.Format(Resources.TriggeredCancellationJob, JobID));
                    return;
                }

                CSMOperationResult opResponse = TrackOperation(Vault.ResourceGroupName, Vault.Name, cancelTaskId);

                if (opResponse.Status == CSMAzureBackupOperationStatus.Succeeded.ToString())
                {
                    WriteDebug(String.Format(Resources.TriggeredCancellationJob, JobID));
                }
                else
                {
                    throw new Exception(String.Format(Resources.StopJobFailed, opResponse.Error.Code));
                }
            });
        }
        public override void ExecuteCmdlet()
        {
            if (Job != null)
            {
                Vault = new AzureRMBackupVault(Job.ResourceGroupName, Job.ResourceName, Job.Location);
            }
            InitializeAzureBackupCmdlet(Vault);

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

                WriteDebug(String.Format(Resources.JobIdFilter, JobId));

                Mgmt.CSMJobDetailsResponse serviceJobProperties = AzureBackupClient.GetJobDetails(Vault.ResourceGroupName, Vault.Name, JobId);
                AzureRMBackupJobDetails jobDetails = new AzureRMBackupJobDetails(Vault, serviceJobProperties.JobDetailedProperties, serviceJobProperties.Name);

                WriteDebug(Resources.JobResponse);
                WriteObject(jobDetails);
            });
        }
 public AzureBackupVaultContextObject(AzureRMBackupVault vault)
     : this(vault.ResourceGroupName, vault.Name, vault.Region)
 { }
        public override void ExecuteCmdlet()
        {
            List<string> specifiedJobs = new List<string>();
            AzureRMBackupVault Vault = null;

            if (Job != null)
            {
                if ((Job is PSObject) && (((PSObject)Job).ImmediateBaseObject is List<AzureRMBackupJob>))
                {
                    foreach (AzureRMBackupJob jobToWait in (((PSObject)Job).ImmediateBaseObject as List<AzureRMBackupJob>))
                    {
                        Vault = new AzureRMBackupVault(jobToWait.ResourceGroupName, jobToWait.ResourceName, jobToWait.Location);
                        specifiedJobs.Add(jobToWait.InstanceId);
                    }
                }
                else if (Job is List<AzureRMBackupJob>)
                {
                    WriteDebug(Resources.AzureBackupJobInputType);
                    foreach (AzureRMBackupJob jobToWait in (Job as List<AzureRMBackupJob>))
                    {
                        Vault = new AzureRMBackupVault(jobToWait.ResourceGroupName, jobToWait.ResourceName, jobToWait.Location);
                        specifiedJobs.Add(jobToWait.InstanceId);
                    }
                }
                else if ((Job is PSObject) && (((PSObject)Job).ImmediateBaseObject is AzureRMBackupJob))
                {
                    AzureRMBackupJob azureJob = ((Job as PSObject).ImmediateBaseObject as AzureRMBackupJob);
                    Vault = new AzureRMBackupVault(azureJob.ResourceGroupName, azureJob.ResourceName, azureJob.Location);
                    specifiedJobs.Add(azureJob.InstanceId);
                }
                else if (Job is AzureRMBackupJob)
                {
                    Vault = new AzureRMBackupVault((Job as AzureRMBackupJob).ResourceGroupName, (Job as AzureRMBackupJob).ResourceName, (Job as AzureRMBackupJob).Location);
                    specifiedJobs.Add((Job as AzureRMBackupJob).InstanceId);
                }
                else if ((Job is PSObject) && (((PSObject)Job).ImmediateBaseObject is AzureRMBackupJobDetails))
                {
                    AzureRMBackupJob azureJob = ((Job as PSObject).ImmediateBaseObject as AzureRMBackupJobDetails);
                    Vault = new AzureRMBackupVault(azureJob.ResourceGroupName, azureJob.ResourceName, azureJob.Location);
                    specifiedJobs.Add(azureJob.InstanceId);
                }
                else if (Job is AzureRMBackupJobDetails)
                {
                    Vault = new AzureRMBackupVault((Job as AzureRMBackupJobDetails).ResourceGroupName, (Job as AzureRMBackupJobDetails).ResourceName, (Job as AzureRMBackupJobDetails).Location);
                    specifiedJobs.Add((Job as AzureRMBackupJobDetails).InstanceId);
                }
            }

            WriteDebug(String.Format(Resources.NumberOfJobsForWaiting, specifiedJobs.Count));

            if (specifiedJobs.Count == 0)
            {
                WriteDebug(Resources.QuittingWaitJob);
                return;
            }

            InitializeAzureBackupCmdlet(Vault);

            ExecutionBlock(() =>
            {
                if (!TimeOut.HasValue)
                {
                    TimeOut = Int64.MaxValue;
                }

                List<string> pendingJobs = new List<string>(specifiedJobs);
                DateTime waitingStartTime = DateTime.UtcNow;

                while (true)
                {
                    WriteDebug(Resources.QueryingJobs);

                    if (DateTime.UtcNow.Subtract(waitingStartTime).TotalSeconds >= TimeOut)
                    {
                        WriteDebug(Resources.TimeOutWaitInJob);
                        break;
                    }

                    bool areJobsRunning = false;

                    for (int i = 0; i < pendingJobs.Count; i++)
                    {
                        Mgmt.CSMJobDetailsResponse retrievedJob = AzureBackupClient.GetJobDetails(Vault.ResourceGroupName, Vault.Name, pendingJobs[i]);
                        if (AzureBackupJobHelper.IsJobRunning(retrievedJob.JobDetailedProperties.Status))
                            areJobsRunning = true;
                        else
                        {
                            pendingJobs.RemoveAt(i);
                            i--;
                        }
                    }

                    if (!areJobsRunning)
                    {
                        WriteDebug(Resources.AllJobsCompleted);
                        break;
                    }

                    TestMockSupport.Delay(30 * 1000);
                }

                IList<AzureRMBackupJob> finalJobs = new List<AzureRMBackupJob>();
                foreach (string jobId in specifiedJobs)
                {
                    Mgmt.CSMJobDetailsResponse retrievedJob = AzureBackupClient.GetJobDetails(Vault.ResourceGroupName, Vault.Name, jobId);
                    finalJobs.Add(new AzureRMBackupJob(Vault, retrievedJob.JobDetailedProperties, retrievedJob.Name));
                }

                if (finalJobs.Count == 1)
                {
                    WriteObject(finalJobs.First());
                }
                else
                {
                    WriteObject(finalJobs);
                }
            });
        }
Esempio n. 20
0
 /// <summary>
 /// Initializes required client adapters
 /// </summary>
 /// <param name="vault"></param>
 protected void InitializeAzureBackupCmdlet(CmdletModel.AzureRMBackupVault vault)
 {
     InitializeAzureBackupCmdlet(vault.ResourceGroupName, vault.Name);
 }
 public AzureRMBackupContainerContextObject(AzureRMBackupVault vault, MarsContainerResponse marsContainerResponse)
     : base(vault)
 {
     ContainerType = ContainerHelpers.GetContainerType(marsContainerResponse.Properties.CustomerType).ToString();
     //ContainerUniqueName = marsContainerResponse.UniqueName;
 }
 public AzureBackupVaultContextObject(AzureRMBackupVault vault)
     : this(vault.ResourceGroupName, vault.Name, vault.Region)
 {
 }
 public AzureRMBackupContainerContextObject(AzureRMBackupVault vault, CSMContainerResponse containerInfo)
     : base(vault.ResourceGroupName, vault.Name, vault.Region)
 {
     ContainerType       = ContainerHelpers.GetTypeForManagedContainer(containerInfo.Properties.ContainerType).ToString();
     ContainerUniqueName = containerInfo.Name;
 }
        internal IList<AzureRMBackupJob> GetCreatedJobs(string resourceGroupName, string resourceName, AzureRMBackupVault vault, IList<string> jobIds)
        {
            IList<AzureRMBackupJob> jobs = new List<AzureRMBackupJob>();

            foreach (string jobId in jobIds)
            {
                CSMJobDetailsResponse job = AzureBackupClient.GetJobDetails(resourceGroupName, resourceName, jobId);
                jobs.Add(new AzureRMBackupJob(vault, job.JobDetailedProperties, job.Name));
            }

            return jobs;
        }
        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 = new DateTime();
                    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 = new DateTime();
                        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);
                }
            });
        }
 public AzureRMBackupContainerContextObject(AzureRMBackupVault vault, MarsContainerResponse marsContainerResponse)
     : base(vault)
 {
     ContainerType = ContainerHelpers.GetContainerType(marsContainerResponse.Properties.CustomerType).ToString();
     //ContainerUniqueName = marsContainerResponse.UniqueName;
 }
 public AzureRMBackupContainerContextObject(AzureRMBackupVault vault, CSMContainerResponse containerInfo)
     : base(vault.ResourceGroupName, vault.Name, vault.Region)
 {
     ContainerType = ContainerHelpers.GetTypeForManagedContainer(containerInfo.Properties.ContainerType).ToString();
     ContainerUniqueName = containerInfo.Name;
 }
Esempio n. 28
0
        public AzureRMBackupJobDetails(AzureRMBackupVault vault, Mgmt.CSMJobDetailedProperties serviceJobProperties, string jobName)
            : base(vault, serviceJobProperties, jobName)
        {
            if (serviceJobProperties.PropertyBag != null)
                this.Properties = new Dictionary<string, string>(serviceJobProperties.PropertyBag);
            else
                this.Properties = new Dictionary<string, string>();

            this.SubTasks = new List<AzureBackupJobSubTask>();
            if(serviceJobProperties.TasksList != null)
            {
                foreach (Mgmt.CSMJobTaskDetails serviceSubTask in serviceJobProperties.TasksList)
                {
                    this.SubTasks.Add(new AzureBackupJobSubTask(serviceSubTask));
                }
            }
        }