Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }