/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var restoreRequest = new Model.RecoverTaskRequest(name: TaskName) { Type = Model.RecoverTaskRequest.TypeEnum.KRecoverVMs, ContinueOnError = true }; var acropolisParams = new Model.AcropolisRestoreParameters(); if (PoweredOn.IsPresent) { acropolisParams.PoweredOn = PoweredOn; } if (DisableNetwork.IsPresent) { acropolisParams.DisableNetwork = true; } if (VmNamePrefix != null) { acropolisParams.Prefix = VmNamePrefix; } if (VmNameSuffix != null) { acropolisParams.Suffix = VmNameSuffix; } restoreRequest.AcropolisParameters = acropolisParams; var restoreObject = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = SourceId }; if (JobRunId.HasValue) { restoreObject.JobRunId = JobRunId; } if (StartTime.HasValue) { restoreObject.StartedTimeUsecs = StartTime; } var objects = new List <Model.RestoreObjectDetails>(); objects.Add(restoreObject); restoreRequest.Objects = objects; // POST /public/restore/recover var preparedUrl = $"/public/restore/recover"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, restoreRequest); WriteObject(result); }
/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var view = RestApiCommon.GetViewByName(Session.ApiClient, SourceViewName); var cloneRequest = new Model.CloneTaskRequest(name: TaskName) { Type = Model.CloneTaskRequest.TypeEnum.KCloneView, ContinueOnError = true, }; var cloneViewParams = new Model.CloneViewRequest { SourceViewName = SourceViewName, CloneViewName = TargetViewName, Description = TargetViewDescription, Qos = new Model.QoS { PrincipalName = QoSPolicy } }; cloneRequest.CloneViewParameters = cloneViewParams; var cloneObject = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = view.ViewProtection.MagnetoEntityId }; if (JobRunId.HasValue) { cloneObject.JobRunId = JobRunId; } if (StartTime.HasValue) { cloneObject.StartedTimeUsecs = StartTime; } var objects = new List <Model.RestoreObjectDetails>(); objects.Add(cloneObject); cloneRequest.Objects = objects; // POST /public/restore/clone var preparedUrl = $"/public/restore/clone"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, cloneRequest); WriteObject(result); }
/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var applicationRestoreObject = new Model.ApplicationRestoreObject(applicationServerId: SourceId) { SqlRestoreParameters = new Model.SqlRestoreParameters { CaptureTailLogs = CaptureTailLogs.IsPresent, KeepOffline = KeepOffline.IsPresent } }; if (!string.IsNullOrWhiteSpace(NewDatabaseName)) { applicationRestoreObject.SqlRestoreParameters.NewDatabaseName = NewDatabaseName; } if (!string.IsNullOrWhiteSpace(NewInstanceName)) { applicationRestoreObject.SqlRestoreParameters.NewInstanceName = NewInstanceName; } if (!string.IsNullOrWhiteSpace(TargetDataFilesDirectory)) { applicationRestoreObject.SqlRestoreParameters.TargetDataFilesDirectory = TargetDataFilesDirectory; } if (!string.IsNullOrWhiteSpace(TargetLogFilesDirectory)) { applicationRestoreObject.SqlRestoreParameters.TargetLogFilesDirectory = TargetLogFilesDirectory; } if (null != TargetSecondaryDataFilesDirectoryList) { applicationRestoreObject.SqlRestoreParameters.TargetSecondaryDataFilesDirectoryList = TargetSecondaryDataFilesDirectoryList; } if (TargetHostId != null) { applicationRestoreObject.TargetHostId = TargetHostId; } if (TargetHostParentId != null) { applicationRestoreObject.TargetRootNodeId = TargetHostParentId; } var applicationRestoreObjects = new List <Model.ApplicationRestoreObject>(); applicationRestoreObjects.Add(applicationRestoreObject); var job = RestApiCommon.GetProtectionJobById(Session.ApiClient, JobId); var hostingProtectionSource = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = HostSourceId, JobUid = new Model.UniversalId { Id = job.Id, ClusterId = job.Uid.ClusterId, ClusterIncarnationId = job.Uid.ClusterIncarnationId } }; if (JobRunId.HasValue) { hostingProtectionSource.JobRunId = JobRunId; } if (StartTime.HasValue) { hostingProtectionSource.StartedTimeUsecs = StartTime; } var restoreRequest = new Model.ApplicationsRestoreTaskRequest(name: TaskName, applicationEnvironment: Model.ApplicationsRestoreTaskRequest.ApplicationEnvironmentEnum.KSQL, applicationRestoreObjects: applicationRestoreObjects, hostingProtectionSource: hostingProtectionSource) { }; if (TargetHostCredential != null) { restoreRequest.Username = TargetHostCredential.UserName; restoreRequest.Password = TargetHostCredential.GetNetworkCredential().Password; } if (null != this.RestoreTimeSecs) { if (false == IsValidPointInTime(this.RestoreTimeSecs, this.StartTime, this.SourceId, job)) { WriteObject("Invalid point in time " + this.RestoreTimeSecs); return; } applicationRestoreObject.SqlRestoreParameters.RestoreTimeSecs = this.RestoreTimeSecs; } // POST /public/restore/applicationsRecover var preparedUrl = $"/public/restore/applicationsRecover"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, restoreRequest); WriteObject(result); }
/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var cloneRequest = new Model.CloneTaskRequest(name: TaskName) { Type = Model.CloneTaskRequest.TypeEnum.KCloneVMs, ContinueOnError = true, TargetViewName = TargetViewName }; var vmwareParams = new Model.VmwareCloneParameters(); if (PoweredOn.IsPresent) { vmwareParams.PoweredOn = PoweredOn; } if (DisableNetwork.IsPresent) { vmwareParams.DisableNetwork = true; } if (VmNamePrefix != null) { vmwareParams.Prefix = VmNamePrefix; } if (VmNameSuffix != null) { vmwareParams.Suffix = VmNameSuffix; } if (DatastoreFolderId.HasValue) { vmwareParams.DatastoreFolderId = DatastoreFolderId; } if (NetworkId.HasValue) { vmwareParams.NetworkId = NetworkId; } if (ResourcePoolId.HasValue) { vmwareParams.ResourcePoolId = ResourcePoolId; } if (VmFolderId.HasValue) { vmwareParams.VmFolderId = VmFolderId; } cloneRequest.VmwareParameters = vmwareParams; var cloneObject = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = SourceId }; if (JobRunId.HasValue) { cloneObject.JobRunId = JobRunId; } if (NewParentId.HasValue) { cloneRequest.NewParentId = NewParentId; } if (StartTime.HasValue) { cloneObject.StartedTimeUsecs = StartTime; } var objects = new List <Model.RestoreObjectDetails>(); objects.Add(cloneObject); cloneRequest.Objects = objects; // POST /public/restore/clone var preparedUrl = $"/public/restore/clone"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, cloneRequest); WriteObject(result); }
/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var restoreRequest = new Model.RestoreFilesTaskRequest(name: TaskName) { Filenames = new List <string>(FileNames), ContinueOnError = ContinueOnError.IsPresent, PreserveAttributes = !(DoNotPreserveAttributes.IsPresent), Overwrite = !(DoNotOverwrite.IsPresent) }; if (!string.IsNullOrWhiteSpace(NewBaseDirectory)) { restoreRequest.NewBaseDirectory = NewBaseDirectory; } if (TargetHostCredential != null) { restoreRequest.Username = TargetHostCredential.UserName; restoreRequest.Password = TargetHostCredential.GetNetworkCredential().Password; } if (TargetParentSourceId.HasValue) { restoreRequest.TargetParentSourceId = TargetParentSourceId; } if (TargetSourceId.HasValue) { restoreRequest.TargetSourceId = TargetSourceId; } if (TargetHostType.HasValue) { restoreRequest.TargetHostType = TargetHostType; } var job = RestApiCommon.GetProtectionJobById(Session.ApiClient, JobId); var restoreObject = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = SourceId, JobUid = new Model.UniversalId { Id = job.Id, ClusterId = job.Uid.ClusterId, ClusterIncarnationId = job.Uid.ClusterIncarnationId } }; // If job run id is not specified, get the job run id of the last run if (JobRunId.HasValue) { restoreObject.JobRunId = JobRunId; } else { restoreObject.JobRunId = job.LastRun.BackupRun.JobRunId; } // If start time is not specified, get the start time of the last run if (StartTime.HasValue) { restoreObject.StartedTimeUsecs = StartTime; } else { restoreObject.StartedTimeUsecs = job.LastRun.BackupRun.Stats.StartTimeUsecs; } restoreRequest.SourceObjectInfo = restoreObject; // POST /public/restore/files var preparedUrl = $"/public/restore/files"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, restoreRequest); WriteObject(result); }
/// <summary> /// Process /// </summary> protected override void ProcessRecord() { var restoreRequest = new Model.RecoverTaskRequest(name: TaskName) { Type = Model.RecoverTaskRequest.TypeEnum.KMountVolumes, ContinueOnError = true }; var mountParams = new Model.MountVolumesParameters(); if (BringDisksOnline.IsPresent) { mountParams.BringDisksOnline = BringDisksOnline; } if (VolumeNames != null) { mountParams.VolumeNames = new List <string>(VolumeNames); } mountParams.TargetSourceId = TargetHostId.HasValue ? TargetHostId : SourceId; if (TargetHostCredential != null) { mountParams.Username = TargetHostCredential.UserName; mountParams.Password = TargetHostCredential.GetNetworkCredential().Password; } restoreRequest.MountParameters = mountParams; var restoreObject = new Model.RestoreObjectDetails { JobId = JobId, ProtectionSourceId = SourceId }; if (JobRunId.HasValue) { restoreObject.JobRunId = JobRunId; } if (NewParentId.HasValue) { restoreRequest.NewParentId = NewParentId; } if (StartTime.HasValue) { restoreObject.StartedTimeUsecs = StartTime; } var objects = new List <Model.RestoreObjectDetails>(); objects.Add(restoreObject); restoreRequest.Objects = objects; // POST /public/restore/recover var preparedUrl = $"/public/restore/recover"; var result = Session.ApiClient.Post <Model.RestoreTask>(preparedUrl, restoreRequest); WriteObject(result); }