4a72b20c创建于 2023年6月27日历史提交
// Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.

// fleet查询结构体定义
package fleet

import (
	asmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/as/v1/model"
	eipmodel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/eip/v2/model"
	"time"
)

type List struct {
	Count  int64   `json:"count"`
	Fleets []Fleet `json:"fleets"`
}

type ListResourceSpecification struct {
	Count                  int64                           `json:"count"`
	ResourceSpecifications []ResourceSpecificationResponse `json:"resource_specifications"`
}

type InboundPermissionRsp struct {
	FleetId            string         `json:"fleet_id"`
	InboundPermissions []IpPermission `json:"inbound_permissions" validate:"required,dive"`
}

type RuntimeConfigurationRsp struct {
	FleetId              string               `json:"fleet_id"`
	RuntimeConfiguration RuntimeConfiguration `json:"runtime_configuration"`
}

type Event struct {
	EventId         string `json:"event_id"`
	EventCode       string `json:"event_code"`
	EventTime       string `json:"event_time"`
	Message         string `json:"message"`
	PreSignedLogUrl string `json:"pre_signed_log_url"`
}

type ListEventRsp struct {
	Count  int     `json:"count"`
	Events []Event `json:"events"`
}

type InstanceCapacity struct {
	MinInstanceNumber int `json:"min_instance_number"`
	MaxInstanceNumber int `json:"max_instance_number"`
}

type ShowInstanceCapacityRsp struct {
	FleetId          string           `json:"fleet_id"`
	InstanceCapacity InstanceCapacity `json:"instance_capacity"`
}

type ShowFleetResponse struct {
	Fleet Fleet `json:"fleet"`
}

type AssociatedAliasRsp struct {
	AliasName string `json:"alias_name"`
	AliasId   string `json:"alias_id"`
	Status    string `json:"status"`
}

type ShowMonitorFleetResponse struct {
	InstanceCount       int                  `json:"instance_count"`
	ProcessCount        int                  `json:"process_count"`
	ServerSessionCount  int                  `json:"server_session_count"`
	MaxServerSessionNum int                  `json:"max_server_session_num"`
	AliasCount          int                  `json:"alias_count"`
	AssociatedAlias     []AssociatedAliasRsp `json:"associated_alias"`
	Fleet
}

type ListMonitorFleetsResponse struct {
	TotalCount          int                        `json:"total_count"`
	Count               int                        `json:"count"`
	Fleets              []ShowMonitorFleetResponse `json:"fleets"`
	AllFleetIdsAndNames []FleetIdAndName           `json:"all_fleet_ids_names"`
}

type FleetIdAndName struct {
	FleetId   string `json:"fleet_id"`
	FleetName string `json:"name"`
	State     string `json:"state"`
}

type FleetResponseFromAPPGW struct {
	FleetID             string `json:"fleet_id"`
	ProcessCount        int    `json:"process_count"`
	ServerSessionCount  int    `json:"server_session_count"`
	MaxServerSessionNum int    `json:"max_server_session_num"`
}

type InstanceResponseFromAASS struct {
	InstanceId   string                                    `json:"instance_id"`
	InstanceName string                                    `json:"instance_name"`
	HealthStatus *asmodel.ScalingGroupInstanceHealthStatus `json:"health_status"`
	CreatedAt    time.Time                                 `json:"created_at"`
	ActiveAt     string                                    `json:"active_at"`
}

type ListInstanceResonseFromAASS struct {
	TotalNumber int                        `json:"total_number"`
	Count       int                        `json:"count"`
	Instances   []InstanceResponseFromAASS `json:"instances"`
}

type ListFleetsResponseFromAPPGW struct {
	Count  int                      `json:"count"`
	Fleets []FleetResponseFromAPPGW `json:"fleets"`
}

type QueryInstanceToAASS struct {
	FleetId        string
	Limit          int
	HealthState    string
	LifeCycleState string
}

type QueryInstancesToAppGW struct {
	FleetId string
}

type InstanceFromAppGW struct {
	InstanceId          string `json:"instance_id"`
	IpAddress           string `json:"ip_address"`
	ServerSessionCount  int    `json:"server_session_count"`
	MaxServerSessionNum int    `json:"max_server_session_num"`
}

type ListInstancesFromAppGW struct {
	TotalCount int                 `json:"total_count"`
	Count      int                 `json:"count"`
	Instances  []InstanceFromAppGW `json:"instances"`
}

type ListMonitorInstancesResponce struct {
	TotalCount int                       `json:"total_count"`
	Count      int                       `json:"count"`
	Instances  []MonitorInstanceResponce `json:"instances"`
}

type MonitorInstanceResponce struct {
	InstanceId          string                                    `json:"instance_id"`
	InstanceName        string                                    `json:"instance_name"`
	HealthStatus        *asmodel.ScalingGroupInstanceHealthStatus `json:"health_status"`
	CreatedAt           string                                    `json:"created_at"`
	ActiveAt            string                                    `json:"active_at"`
	ProcessCount        int                                       `json:"process_count"`
	IpAddress           string                                    `json:"ip_address"`
	ServerSessionCount  int                                       `json:"server_session_count"`
	MaxServerSessionNum int                                       `json:"max_server_session_num"`
}

type ListMonitorAppProcessResponseFromAppGW struct {
	TotalCount int                      `json:"total_count"`
	Count      int                      `json:"count"`
	Processes  []MonitorProcessFromApGW `json:"app_processes"`
}

type MonitorProcessFromApGW struct {
	ProcessID           string `json:"process_id"`
	InstanceID          string `json:"instance_id"`
	State               string `json:"state"`
	ServerSessionCount  int    `json:"server_session_count"`
	MaxServerSessionNum int    `json:"max_server_session_num"`
	IpAddress           string `json:"ip_address"`
	Port                int    `json:"port"`
	Pid                 int    `json:"pid"`
	CreatedAt           string `json:"created_at"`
	UpdatedAt           string `json:"updated_at"`
}

type Property struct {
	Key   string `json:"key" validate:"required,min=1,max=32"`
	Value string `json:"value" validate:"required,min=1,max=96"`
}
type QueryServerSessions struct {
	Name      string
	CreatorId string
	FleetId   string
	State     string
	StartTime string
	EndTime   string
}

type QueryServerSession struct {
	ServerSessionId string
}

type ListMonitorServerSessionResponseFromAppGW struct {
	TotalCount     int                             `json:"total_count"`
	Count          int                             `json:"count"`
	ServerSessions []MonitorServerSessionFromAppGW `json:"server_sessions"`
}

type MonitorServerSessionFromAppGW struct {
	ServerSessionID                         string     `json:"server_session_id"`
	Name                                    string     `json:"name"`
	CreatorID                               string     `json:"creator_id"`
	FleetID                                 string     `json:"fleet_id"`
	State                                   string     `json:"state"`
	StateReason                             string     `json:"state_reason"`
	SessionData                             string     `json:"session_data"`
	SessionProperties                       []Property `json:"session_properties"`
	ProcessID                               string     `json:"process_id"`
	InstanceID                              string     `json:"instance_id"`
	IpAddress                               string     `json:"ip_address"`
	Port                                    int        `json:"port"`
	CurrentClientSessionCount               int        `json:"current_client_session_count"`
	MaxClientSessionNum                     int        `json:"max_client_session_num"`
	ClientSessionCreationPolicy             string     `json:"client_session_creating_policy"`
	ServerSessionProtectionPolicy           string     `json:"server_session_protection_policy"`
	ServerSessionProtectionTimeLimitMinutes int        `json:"server_session_protection_time_limit_minutes"`
	CreatedTime                             string     `json:"created_time"`
	UpdatedTime                             string     `json:"updated_time"`
}

type ListIpPoolsResp struct {
	Count         int            `json:"count"`
	PublicIpPools []PublicIpPool `json:"public_ip_pools"`
	CommonPools   []CommonPool   `json:"common_pool"`
}

type PublicIpPool struct {
	Id        string `json:"id"`
	Name      string `json:"name"`
	Status    string `json:"status"`
	Size      int    `json:"size"`
	Used      int    `json:"used"`
	CreatedAt string `json:"created_at"`
}

type CommonPool struct {
	Name   string `json:"name"`
	Status string `json:"status"`
	Type   string `json:"type"`
	Used   int    `json:"used"`
}

type ListBandWidthsResp struct {
	Count      int             `json:"count"`
	Bandwidths []BandwidthInfo `json:"bandwidths"`
}

type BandwidthInfo struct {
	Id            string                           `json:"id"`
	Name          string                           `json:"name"`
	BandwidthType string                           `json:"bandwidth_type"`
	ShareType     eipmodel.BandwidthRespShareType  `json:"share_type"`
	ChargeMode    eipmodel.BandwidthRespChargeMode `json:"charging_mode"`
	Size          int                              `json:"size"`
	Status        eipmodel.BandwidthRespStatus     `json:"status"`
	CreatedAt     string                           `json:"created_at"`
}