package cd.casic.module.machine.controller.vo;

import cd.casic.framework.commons.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.Date;

@EqualsAndHashCode(callSuper = true)
@Schema(description = "管理后台 - 机器信息 Response VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class MachineInfoVO extends PageParam {

    @Schema(description = "机器ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Long id;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023-06-15T10:30:00")
    private Date createTime;

    @Schema(description = "更新时间", example = "2023-06-15T10:30:00")
    private Date updateTime;

    @Schema(description = "机器名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "server-01")
    private String name;

    @Schema(description = "机器标签,唯一标识", example = "production,web-server")
    private String tag;

    @Schema(description = "主机IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.100")
    private String hostIp;

    @Schema(description = "机器描述", example = "生产环境Web服务器")
    private String description;

    @Schema(description = "登录用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "admin")
    private String username;

    @Schema(description = "机器状态", example = "online,offline,maintenance")
    private Integer status = -1;

    @Schema(description = "SSH端口", example = "22")
    private Integer sshPort;

    @Schema(description = "登录密码", example = "******")
    private String password;

    @Schema(description = "密钥ID", example = "5")
    private Long secretKeyId;

    @Schema(description = "代理ID", example = "101")
    private Long machineProxyId;

    @Schema(description = "认证类型", example = "password,key")
    private Integer authenticationType ;

    @Schema(description = "机器信息类型", example = "Linux,Windows")
    private Integer machineInfoType;


}
