protected override void ExecuteCommand()
        {
            ServiceManagementProfile.Initialize();

            base.ExecuteCommand();
            if (CurrentDeploymentNewSM == null)
            {
                return;
            }

            var role = CurrentDeploymentNewSM.Roles.FirstOrDefault(r => r.RoleName.Equals(Name, StringComparison.InvariantCultureIgnoreCase));

            if (role == null)
            {
                throw new ApplicationException(string.Format(Resources.NoCorrespondingRoleCanBeFoundInDeployment, Name));
            }
            try
            {
                var vm           = role;
                var roleInstance = CurrentDeploymentNewSM.RoleInstances.First(r => r.RoleName == vm.RoleName);
                var vmContext    = new PVM.PersistentVMRoleContext
                {
                    ServiceName           = ServiceName,
                    Name                  = vm.RoleName,
                    DeploymentName        = CurrentDeploymentNewSM.Name,
                    AvailabilitySetName   = vm.AvailabilitySetName,
                    Label                 = vm.Label,
                    InstanceSize          = vm.RoleSize.ToString(),
                    InstanceStatus        = roleInstance.InstanceStatus,
                    IpAddress             = roleInstance.IPAddress,
                    InstanceStateDetails  = roleInstance.InstanceStateDetails,
                    PowerState            = roleInstance.PowerState.ToString(),
                    InstanceErrorCode     = roleInstance.InstanceErrorCode,
                    InstanceName          = roleInstance.InstanceName,
                    InstanceFaultDomain   = roleInstance.InstanceFaultDomain.HasValue ? roleInstance.InstanceFaultDomain.Value.ToString(CultureInfo.InvariantCulture) : null,
                    InstanceUpgradeDomain = roleInstance.InstanceUpgradeDomain.HasValue ? roleInstance.InstanceUpgradeDomain.Value.ToString(CultureInfo.InvariantCulture) : null,
                    OperationDescription  = CommandRuntime.ToString(),
                    OperationId           = GetDeploymentOperationNewSM.Id,
                    OperationStatus       = GetDeploymentOperationNewSM.Status.ToString(),
                    VM = new PVM.PersistentVM
                    {
                        AvailabilitySetName  = vm.AvailabilitySetName,
                        ConfigurationSets    = PersistentVMHelper.MapConfigurationSets(vm.ConfigurationSets),
                        DataVirtualHardDisks = new Collection <PVM.DataVirtualHardDisk>(),
                        Label             = vm.Label,
                        OSVirtualHardDisk = Mapper.Map(vm.OSVirtualHardDisk, new PVM.OSVirtualHardDisk()),
                        RoleName          = vm.RoleName,
                        RoleSize          = vm.RoleSize.ToString(),
                        RoleType          = vm.RoleType,
                        DefaultWinRmCertificateThumbprint = vm.DefaultWinRmCertificateThumbprint,
                        ProvisionGuestAgent         = vm.ProvisionGuestAgent,
                        ResourceExtensionReferences = Mapper.Map <PVM.ResourceExtensionReferenceList>(vm.ResourceExtensionReferences),
                        DebugSettings = Mapper.Map <PVM.DebugSettings>(vm.DebugSettings)
                    }
                };

                if (vm.DataVirtualHardDisks != null)
                {
                    vm.DataVirtualHardDisks.ForEach(
                        d => vmContext.VM.DataVirtualHardDisks.Add(Mapper.Map <PVM.DataVirtualHardDisk>(d)));
                }
                else
                {
                    vmContext.VM.DataVirtualHardDisks = null;
                }

                PersistentVMHelper.SaveStateToFile(vmContext.VM, Path);
                WriteObject(vmContext, true);
            }
            catch (Exception e)
            {
                throw new ApplicationException(string.Format(Resources.VMPropertiesCanNotBeRead, role.RoleName), e);
            }
        }
Пример #2
0
        protected override void ExecuteCommand()
        {
            ServiceManagementProfile.Initialize();

            base.ExecuteCommand();
            if (CurrentDeploymentNewSM == null)
            {
                return;
            }

            var role = CurrentDeploymentNewSM.Roles.FirstOrDefault(r => r.RoleName.Equals(Name, StringComparison.InvariantCultureIgnoreCase));
            if(role == null)
            {
                throw new ApplicationException(string.Format(Resources.NoCorrespondingRoleCanBeFoundInDeployment, Name));
            }
            try
            {
                var vm = role;
                var roleInstance = CurrentDeploymentNewSM.RoleInstances.First(r => r.RoleName == vm.RoleName);
                var vmContext = new PVM.PersistentVMRoleContext
                {
                    ServiceName = ServiceName,
                    Name = vm.RoleName,
                    DeploymentName = CurrentDeploymentNewSM.Name,
                    AvailabilitySetName = vm.AvailabilitySetName,
                    Label = vm.Label,
                    InstanceSize = vm.RoleSize.ToString(),
                    InstanceStatus = roleInstance.InstanceStatus,
                    IpAddress = roleInstance.IPAddress,
                    InstanceStateDetails = roleInstance.InstanceStateDetails,
                    PowerState = roleInstance.PowerState.ToString(),
                    InstanceErrorCode = roleInstance.InstanceErrorCode,
                    InstanceName = roleInstance.InstanceName,
                    InstanceFaultDomain = roleInstance.InstanceFaultDomain.HasValue ? roleInstance.InstanceFaultDomain.Value.ToString(CultureInfo.InvariantCulture) : null,
                    InstanceUpgradeDomain = roleInstance.InstanceUpgradeDomain.HasValue ? roleInstance.InstanceUpgradeDomain.Value.ToString(CultureInfo.InvariantCulture) : null,
                    OperationDescription = CommandRuntime.ToString(),
                    OperationId = GetDeploymentOperationNewSM.Id,
                    OperationStatus = GetDeploymentOperationNewSM.Status.ToString(),
                    VM = new PVM.PersistentVM
                    {
                        AvailabilitySetName = vm.AvailabilitySetName,
                        ConfigurationSets = PersistentVMHelper.MapConfigurationSets(vm.ConfigurationSets),
                        DataVirtualHardDisks = new Collection<PVM.DataVirtualHardDisk>(),
                        Label = vm.Label,
                        OSVirtualHardDisk = Mapper.Map(vm.OSVirtualHardDisk, new PVM.OSVirtualHardDisk()),
                        RoleName = vm.RoleName,
                        RoleSize = vm.RoleSize.ToString(),
                        RoleType = vm.RoleType,
                        DefaultWinRmCertificateThumbprint = vm.DefaultWinRmCertificateThumbprint,
                        ProvisionGuestAgent = vm.ProvisionGuestAgent,
                        ResourceExtensionReferences = Mapper.Map<PVM.ResourceExtensionReferenceList>(vm.ResourceExtensionReferences)
                    }
                };

                if (vm.DataVirtualHardDisks != null)
                {
                    vm.DataVirtualHardDisks.ForEach(
                        d => vmContext.VM.DataVirtualHardDisks.Add(Mapper.Map<PVM.DataVirtualHardDisk>(d)));
                }
                else
                {
                    vmContext.VM.DataVirtualHardDisks = null;
                }

                PersistentVMHelper.SaveStateToFile(vmContext.VM, Path);
                WriteObject(vmContext, true);
            }
            catch (Exception e)
            {
                throw new ApplicationException(string.Format(Resources.VMPropertiesCanNotBeRead, role.RoleName), e);
            }
        }