/// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var restoreRequest = new Models.RecoverTaskRequest(name: TaskName)
            {
                Type            = Models.RecoverTaskRequest.TypeEnum.KRecoverVMs,
                ContinueOnError = true
            };

            var acropolisParams = new Models.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 Models.RestoreObject
            {
                JobId = JobId,
                ProtectionSourceId = SourceId
            };

            if (JobRunId.HasValue)
            {
                restoreObject.JobRunId = JobRunId;
            }

            if (StartTime.HasValue)
            {
                restoreObject.StartedTimeUsecs = StartTime;
            }

            var objects = new List <Models.RestoreObject>();

            objects.Add(restoreObject);

            restoreRequest.Objects = objects;

            // POST /public/restore/recover
            var preparedUrl = $"/public/restore/recover";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, restoreRequest);

            WriteObject(result);
        }
        /// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var view = RestApiCommon.GetViewByName(Session.ApiClient, SourceViewName);

            var cloneRequest = new Models.CloneTaskRequest(name: TaskName)
            {
                Type            = Models.CloneTaskRequest.TypeEnum.KCloneView,
                ContinueOnError = true,
            };

            var cloneViewParams = new Models.CloneView_
            {
                SourceViewName = SourceViewName,
                CloneViewName  = TargetViewName,
                Description    = TargetViewDescription,
                Qos            = new Models.QoS
                {
                    PrincipalName = QoSPolicy
                }
            };

            cloneRequest.CloneViewParameters = cloneViewParams;

            var cloneObject = new Models.RestoreObject
            {
                JobId = JobId,
                ProtectionSourceId = view.ViewProtection.MagnetoEntityId
            };

            if (JobRunId.HasValue)
            {
                cloneObject.JobRunId = JobRunId;
            }

            if (StartTime.HasValue)
            {
                cloneObject.StartedTimeUsecs = StartTime;
            }

            var objects = new List <Models.RestoreObject>();

            objects.Add(cloneObject);

            cloneRequest.Objects = objects;

            // POST /public/restore/clone
            var preparedUrl = $"/public/restore/clone";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, cloneRequest);

            WriteObject(result);
        }
Esempio n. 3
0
        /// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var applicationRestoreObject = new Models.ApplicationRestoreObject(applicationServerId: SourceId)
            {
                SqlRestoreParameters = new Models.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 (TargetHostId != null)
            {
                applicationRestoreObject.TargetHostId = TargetHostId;
            }

            if (TargetHostParentId != null)
            {
                applicationRestoreObject.TargetRootNodeId = TargetHostParentId;
            }

            var applicationRestoreObjects = new List <Models.ApplicationRestoreObject>();

            applicationRestoreObjects.Add(applicationRestoreObject);

            var job = RestApiCommon.GetProtectionJobById(Session.ApiClient, JobId);
            var hostingProtectionSource = new Models.RestoreObject
            {
                JobId = JobId,
                ProtectionSourceId = HostSourceId,
                JobUid             = new Models.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 Models.ApplicationsRestoreTaskRequest(name: TaskName,
                                                                           applicationEnvironment: Models.ApplicationsRestoreTaskRequest.ApplicationEnvironmentEnum.KSQL,
                                                                           applicationRestoreObjects: applicationRestoreObjects,
                                                                           hostingProtectionSource: hostingProtectionSource)
            {
            };

            if (TargetHostCredential != null)
            {
                restoreRequest.Username = TargetHostCredential.UserName;
                restoreRequest.Password = TargetHostCredential.GetNetworkCredential().Password;
            }

            // POST /public/restore/applicationsRecover
            var preparedUrl = $"/public/restore/applicationsRecover";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, restoreRequest);

            WriteObject(result);
        }
        /// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var cloneRequest = new Models.CloneTaskRequest(name: TaskName)
            {
                Type            = Models.CloneTaskRequest.TypeEnum.KCloneVMs,
                ContinueOnError = true,
                TargetViewName  = TargetViewName
            };

            var vmwareParams = new Models.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 Models.RestoreObject
            {
                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 <Models.RestoreObject>();

            objects.Add(cloneObject);

            cloneRequest.Objects = objects;

            // POST /public/restore/clone
            var preparedUrl = $"/public/restore/clone";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, cloneRequest);

            WriteObject(result);
        }
        /// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var restoreRequest = new Models.RecoverTaskRequest(name: TaskName)
            {
                Type            = Models.RecoverTaskRequest.TypeEnum.KMountVolumes,
                ContinueOnError = true
            };

            var mountParams = new Models.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 Models.RestoreObject
            {
                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 <Models.RestoreObject>();

            objects.Add(restoreObject);

            restoreRequest.Objects = objects;

            // POST /public/restore/recover
            var preparedUrl = $"/public/restore/recover";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, restoreRequest);

            WriteObject(result);
        }