package com.bocloud.cmp.model.common;

import com.alibaba.fastjson.JSONObject;
import com.bocloud.common.model.RequestContext;
import com.bocloud.nms.enums.ChargeCommon.ChargeMode;
import com.bocloud.nms.enums.OrderItemStatus;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 服务变更参数
 * 
 * @author wangyu
 * @version 1.0
 * @since 2020年4月14日
 *
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AlterationParam {

	/**
	 * 服务编码
	 */
	private String service;
	/**
	 * 实例id
	 */
	private String instance;
	/**
	 * 实例名称
	 */
	private String instanceName;
	/**
	 * 新创建订单的编号
	 */
	private String newInstance;
	/**
	 * 操作
	 */
	private Operation operation;
	/**
	 * 升级规格
	 */
	private List<ElementModel> upgrade;
	/**
	 * 扩容
	 */
	private Integer scaleOut;
	/**
	 * 缩容
	 */
	private List<String> scaleIn;
	/**
	 * 操作人
	 */
	private RequestContext context;
	/**
	 * 资源类型
	 */
	private String category;
	/**
	 * 升级规格的cpu大小
	 */
	private Integer cpu;
	/**
	 * 规格ID
	 */
	private Long flavorId;
	/**
	 * 升级规格的内存大小
	 */
	private BigDecimal memory;
	/**
	 * 升级规格的系统盘大小
	 */
	private Integer systemDisk;
	/**
	 * 升级规格的数据盘大小
	 */
	private Integer dataDisk;
	/**
	 * 升级后的磁盘大小
	 */
	private Integer newDiskSize;
	/**
	 * 新增的数据盘
	 */
	private List<JSONObject> addDataDisks;
	/**
	 * 编辑的数据盘
	 */
	private List<JSONObject> editDataDisks;
	/**
	 * 升级的skuId
	 */
	private Long upgradeSkuId;
	/**
	 * 配额参数
	 */
	private List<QuotaBean> quotas;
	/**
	 * k8s扩容配置
	 */
	private JSONObject configs;
	/**
	 * 大订单号
	 */
	private String orderSn;
	/**
	 * 扩容节点的hostnames
	 */
	private List<String> nodeHostNames;
	/**
	 * 旧订单状态
	 */
	private OrderItemStatus oldStatus;

	private ChargeMode chargeMode;

	public enum Operation {
		Upgrade, // 升级
		ScaleIn, // 缩容
		ScaleOut, // 扩容
		AddDisk, // 增加磁盘
		EditDisk// 修改磁盘
	}

	// 审批工单编号
	private String instanceNo;
}
