public AzureRMBackupContainer(AzureRMBackupVault vault, MarsContainerResponse marsContainerResponse) : base(vault, marsContainerResponse) { Name = marsContainerResponse.Properties.FriendlyName; Id = marsContainerResponse.Properties.ContainerId; Status = AzureBackupContainerRegistrationStatus.Registered.ToString(); }
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); } }); }
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 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); }
/// <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); }
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); }
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)); } } }
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); } }); }
/// <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 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 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)); } } }