﻿
using System;
using System.Collections.Generic;

using System.Text;

namespace Huawei.FusionComputeCLISDK.DataType
{
    public class VMInfo
    {
        /**
      * 虚拟机的URI地址，形如：/service/sites/1/vms/i-12345678
      */
        public string uri;

        /**
         * 虚拟机的标识，形如：urn:site:1:vms:1; 
         */
        public string urn;

        /**
         * 虚拟机uuid标识
         */
        public string uuid;

        /**
         * 虚拟机或模板名称
         */
        public string name;

        /**
         * 虚拟机描述信息
         */
        public string description;

        /**
         * 虚拟机组名称。
         */
        public string group;

        /**
         * 虚拟机所属，可以是集群或主机
         */
        public string location;

        /**
         * 虚拟机所属集群或主机的名称
         */
        public string locationName;

        /**
         * 虚拟机运行所在的主机标识
         */
        public string hostUrn;

        /**
         * 虚拟机所在的集群标识
         */
        public string clusterUrn;

        /**
         * 虚拟机dataStore列表
         */
        public List<string> dataStoreUrns;

        /**
         * 虚拟机状态：<br>
         * running: 运行中<br>
         * stopped：已停止<br>
         * unknown：不明确<br>
         * hibernated：已休眠<br>
         * creating:创建中或模板正在部署虚拟机或正在导入模板<br>
         * shutting-down:删除中<br>
         * migrating:迁移中<br>
         * fault-resuming:故障恢复中<br>
         * starting:启动中<br>
         * stopping:停止中<br>
         * hibernating：休眠中<br>
         * pause : 已暂停<br>
         * recycling:回收中
         */
        public string status;

        /**
         * starting，启动中<br>
         * notRunning，未运行<br>
         * running，正运行<br>
         */
        public string pvDriverStatus;

        /**
         * injecting, tool插入光驱中<br>
         * ejecting, 正从光驱中弹出tool<br>
         * empty, tool未挂载<br>
         * fill，tool在光驱中<br>
         */
        public string toolInstallStatus;

        /**
         * injecting, 光盘插入中<br>
         * ejecting, 光盘弹出中<br>
         * empty, 无光盘<br>
         * fill, 有光盘<br>
         */
        public string cdRomStatus;

        /**
         * true:实体为为模板；false实体为虚拟机
         */
        public string isTemplate;

        /**
         * 是否为链接克隆虚拟机
         */
        public string isLinkClone;

        /**
         * 创建时间(UTC时间字符串)
         */
        public string createTime;

        /**
         * vnc访问信息包括vnc端口、主机ip、VNC密码等，isTemplate为true时无此属性。字段的有效性以内容为准，不能通过虚拟机状态判断内容的有效性
         */
        public VncAcessInfo vncAcessInfo;

        /**
         * 虚拟机配置信息
         */
        public VmConfig vmConfig;

        /**
         * 虚拟重启后配置
         */
        public VmRebootConfig vmRebootConfig;

        /**
         * 虚拟机操作系统信息
         */
        public OSOptions osOptions;

        /**
         * 虚拟机内部空闲时间（键鼠无动作），单位:分钟
         */
        public string idle;

        /**
         * 删除时间(UTC时间字符串)
         */
        public string deleteTime;

        /**
         * PVDriver的版本号，PVDriver运行时为当前虚拟机PVDriver版本，PVDriver不运行时为最近一次查询的PVDriver版本
         */
        public string toolsVersion;

        /**
         * 虚拟机的IMC模式设置. 没有设置为空
         */
        public string imcSetting;

        /**
         * 最小兼容IMC模式。虚拟机所在集群能够设置的IMC模式最小值，若此值高于集群预设置/修改的IMC模式或等于Unknown，需要将虚拟机关机才能进行集群IMC模式设置。
         */
        public string minCompatibleimcSetting;

        /**
         * 是否绑定主机
         */
        public string isBindingHost;

        /**
         * 虚拟机附加状态，支持的类型及含义如下：<br>
         * cloning: 虚拟机正在克隆其他虚拟机
         */
        public List<string> additionalStatus;

        /**
         * 虚拟机运行所在的主机名称
         */
        public string hostName;

        /**
         * 虚拟机所在的集群名称
         */
        public string clusterName;

        /**
         * 虚拟机类型:<br>
         * 0、非容灾相关虚拟机<br>
         * 1、容灾虚拟机<br>
         * 2、占位虚拟机<br>
         */
        public string vmType;

        /**
         * 数据复制状态：<br>
         * 0：表示虚拟机停止状态<br>
         * 1：表示初始同步状态<br>
         * 2：表示数据块复制状态<br>
         * 3：表示连续IO数据复制状态<br>
         * 4：表示一致性校验状态<br>
         * 5：表示差量同步状态(种子复制时的状态)<br>
         * 6：表示暂停状态<br>
         * 7：表示断链状态(同VRG链接断开)<br>
         * 8：表示异常状态<br>
         * 9：表示未设置容灾(查询非容灾虚拟机返回)<br>
         */
        public string drStatus;

        /**
         * 0：无状态<br>
         * 1：RPO满足<br>
         * 2：RPO不满足<br>
         */
        public string rpoStatus;

        /**
         * 0：未完成初始同步（非容灾虚拟机同样为0）
         * 1：已完成初始同步
         */
        public string initSyncStatus;

        /**
         * 占位虚拟机对应的演练虚拟机URI地址
         */
        public string drDrillVmUri;

        /**
         * 占位虚拟机对应的演练虚拟机标识
         */
        public string drDrillVmUrn;
    }
}
