mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-20 08:03:53 +08:00
246 lines
8.8 KiB
Go
246 lines
8.8 KiB
Go
// Copyright 2019 Yunion
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package compute
|
|
|
|
import (
|
|
"yunion.io/x/jsonutils"
|
|
|
|
"yunion.io/x/onecloud/pkg/apis/baremetal"
|
|
"yunion.io/x/onecloud/pkg/mcclient/options"
|
|
)
|
|
|
|
type HostListOptions struct {
|
|
Schedtag string `help:"List hosts in schedtag" mcp:"true"`
|
|
Zone string `help:"List hosts in zone" mcp:"true"`
|
|
Region string `help:"List hosts in region" mcp:"true"`
|
|
Wire string `help:"List hosts in wire" mcp:"true"`
|
|
Image string `help:"List hosts cached images" json:"cachedimage" mcp:"true"`
|
|
Storage string `help:"List hosts attached to storages" mcp:"true"`
|
|
Baremetal string `help:"List hosts that is managed by baremetal system" choices:"true|false" mcp:"true"`
|
|
Empty bool `help:"show empty host" json:"-"`
|
|
Occupied bool `help:"show occupid host" json:"-"`
|
|
Enabled bool `help:"Show enabled host only" json:"-"`
|
|
Disabled bool `help:"Show disabled host only" json:"-"`
|
|
HostType string `help:"Host type filter" choices:"baremetal|hypervisor|esxi|container|hyperv|aliyun|azure|qcloud|aws|huawei|ucloud|google|ctyun" mcp:"true"`
|
|
AnyMac string `help:"Mac matches one of the host's interface"`
|
|
AnyIp []string `help:"IP matches one of the host's interface" mcp:"true"`
|
|
HostStorageType []string `help:"List host in host_storage_type"`
|
|
|
|
IsBaremetal *bool `help:"filter host list by is_baremetal=true|false" mcp:"true"`
|
|
|
|
ResourceType string `help:"Resource type" choices:"shared|prepaid|dedicated" mcp:"true"`
|
|
|
|
Usable *bool `help:"List all zones that is usable" mcp:"true"`
|
|
|
|
Hypervisor string `help:"filter hosts by hypervisor" mcp:"true"`
|
|
|
|
StorageNotAttached bool `help:"List hosts not attach specified storage"`
|
|
|
|
Uuid string `help:"find host with given system uuid"`
|
|
|
|
CdromBoot *bool `help:"filter hosts list by cdrom_boot=true|false"`
|
|
|
|
Sn string `help:"find host by sn"`
|
|
|
|
OrderByServerCount string `help:"Order by server count" choices:"desc|asc"`
|
|
OrderByStorage string `help:"Order by host storage" choices:"desc|asc"`
|
|
OrderByStorageCommitRate string `help:"Order by host storage commite rate" choices:"desc|asc"`
|
|
OrderByCpuCommitRate string `help:"Order by host cpu commit rate" choices:"desc|asc"`
|
|
OrderByMemCommitRate string `help:"Order by host meme commit rate" choices:"desc|asc"`
|
|
|
|
OrderByStorageUsed string `help:"Order by storage used" choices:"desc|asc"`
|
|
OrderByCpuCommit string `help:"Order by cpu commit" choices:"desc|asc"`
|
|
OrderByMemCommit string `help:"Order by mem commit" choices:"desc|asc"`
|
|
|
|
OrderByCpuUsage string `help:"Order by cpu usage" choices:"desc|asc"`
|
|
OrderByMemUsage string `help:"Order by mem usage" choices:"desc|asc"`
|
|
|
|
OrderByStorageUsage string `help:"Order by storage usage" choices:"desc|asc"`
|
|
OrderByVirtualMemUsage string `help:"Order by virtual mem usage" choices:"desc|asc"`
|
|
OrderByVirtualCpuUsage string `help:"Order by virtual cpu usage" choices:"desc|asc"`
|
|
OrderByVirtualStorageUsage string `help:"Order by virtual storage usage" choices:"desc|asc"`
|
|
|
|
HideCpuTopoInfo *bool `help:"Host list will remove cpu_info and topology info from sysinfo and metadata"`
|
|
|
|
AccessIp []string `help:"Access ip address"`
|
|
IpmiIp []string `help:"Ipmi ip address"`
|
|
PublicIp []string `help:"Public ip address"`
|
|
|
|
options.BaseListOptions
|
|
}
|
|
|
|
func (opts *HostListOptions) Params() (jsonutils.JSONObject, error) {
|
|
params, err := options.ListStructToParams(opts)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if opts.Empty {
|
|
params.Add(jsonutils.JSONTrue, "is_empty")
|
|
} else if opts.Occupied {
|
|
params.Add(jsonutils.JSONFalse, "is_empty")
|
|
}
|
|
if opts.Enabled {
|
|
params.Add(jsonutils.NewInt(1), "enabled")
|
|
} else if opts.Disabled {
|
|
params.Add(jsonutils.NewInt(0), "enabled")
|
|
}
|
|
if len(opts.Uuid) > 0 {
|
|
params.Add(jsonutils.NewString(opts.Uuid), "uuid")
|
|
}
|
|
if len(opts.Sn) > 0 {
|
|
params.Add(jsonutils.NewString(opts.Sn), "sn")
|
|
}
|
|
return params, nil
|
|
}
|
|
|
|
// HostListForMcpOptions 单独包装,避免 HostListOptions 被 host-node-count 等复用时误注册。
|
|
type HostListForMcpOptions struct {
|
|
_ struct{} `mcp-desc:"列出宿主机。可用 zone/region/host-type/search 过滤;详情用 climc_host_show"`
|
|
|
|
HostListOptions
|
|
}
|
|
|
|
type HostShowOptions struct {
|
|
_ struct{} `mcp-desc:"查询宿主机详情。ID 可用 climc_host_list 返回的 id/name"`
|
|
|
|
options.BaseShowOptions
|
|
ShowMetadata bool `help:"Show host metadata in details" mcp:"true"`
|
|
ShowNicInfo bool `help:"Show host nic_info in details" mcp:"true"`
|
|
ShowSysInfo bool `help:"Show host sys_info in details" mcp:"true"`
|
|
ShowAll bool `help:"Show all of host details" short-token:"a" mcp:"true"`
|
|
}
|
|
|
|
func (o *HostShowOptions) Params() (jsonutils.JSONObject, error) {
|
|
// NOTE: host show only request with base options
|
|
return jsonutils.Marshal(o.BaseShowOptions), nil
|
|
}
|
|
|
|
type HostReserveCpusOptions struct {
|
|
options.BaseIdsOptions
|
|
Cpus string
|
|
Mems string
|
|
DisableSchedLoadBalance bool
|
|
ProcessesPrefix []string `help:"Processes prefix bind reserved cpus"`
|
|
}
|
|
|
|
func (o *HostReserveCpusOptions) Params() (jsonutils.JSONObject, error) {
|
|
return jsonutils.Marshal(o), nil
|
|
}
|
|
|
|
type HostAutoMigrateOnHostDownOptions struct {
|
|
options.BaseIdsOptions
|
|
AutoMigrateOnHostDown string `help:"Auto migrate on host down" choices:"enable|disable" default:"disable"`
|
|
AutoMigrateOnHostShutdown string `help:"Auto migrate on host shutdown" choices:"enable|disable" default:"disable"`
|
|
}
|
|
|
|
func (o *HostAutoMigrateOnHostDownOptions) Params() (jsonutils.JSONObject, error) {
|
|
return options.StructToParams(o)
|
|
}
|
|
|
|
type HostSetCommitBoundOptions struct {
|
|
options.BaseIdsOptions
|
|
CpuCmtbound *float32 `help:"Cpu commit bound"`
|
|
MemCmtbound *float32 `help:"Mem commit bound"`
|
|
}
|
|
|
|
func (o *HostSetCommitBoundOptions) Params() (jsonutils.JSONObject, error) {
|
|
return options.StructToParams(o)
|
|
}
|
|
|
|
type HostSetHostFilesOptions struct {
|
|
options.BaseIdsOptions
|
|
HostFiles []string `help:"Host files"`
|
|
}
|
|
|
|
func (o *HostSetHostFilesOptions) Params() (jsonutils.JSONObject, error) {
|
|
return jsonutils.Marshal(o), nil
|
|
}
|
|
|
|
type HostStatusStatisticsOptions struct {
|
|
HostListOptions
|
|
options.StatusStatisticsOptions
|
|
}
|
|
|
|
type HostValidateIPMI struct {
|
|
IP string `json:"ip" help:"IPMI ip address"`
|
|
USERNAME string `json:"username" help:"IPMI username"`
|
|
PASSWORD string `json:"password" help:"IPMI password"`
|
|
}
|
|
|
|
func (h HostValidateIPMI) Params() (jsonutils.JSONObject, error) {
|
|
return jsonutils.Marshal(baremetal.ValidateIPMIRequest{
|
|
Ip: h.IP,
|
|
Username: h.USERNAME,
|
|
Password: h.PASSWORD,
|
|
}), nil
|
|
}
|
|
|
|
type HostIsolatedDeviceNumaStatsOptions struct {
|
|
options.BaseIdOptions
|
|
|
|
DevType string `json:"dev_type"`
|
|
}
|
|
|
|
func (o *HostIsolatedDeviceNumaStatsOptions) Params() (jsonutils.JSONObject, error) {
|
|
return jsonutils.Marshal(o), nil
|
|
}
|
|
|
|
type HostUpdateOptions struct {
|
|
options.BaseIdOptions
|
|
Name string `help:"New name of the host"`
|
|
Description *string `help:"New Description of the host"`
|
|
MemReserved *string `help:"Memory reserved"`
|
|
CpuReserved *int64 `help:"CPU reserved"`
|
|
HostType *string `help:"Change host type, CAUTION!!!!" choices:"hypervisor|kubelet|esxi|baremetal"`
|
|
CpuCount *int
|
|
NodeCount *int8
|
|
CpuDesc *string
|
|
MemSize *int
|
|
StorageSize *int64
|
|
// AccessIp string `help:"Change access ip, CAUTION!!!!"`
|
|
AccessMac *string `help:"Change baremetal access MAC, CAUTION!!!!"`
|
|
Uuid *string `help:"Change baremetal UUID, CAUTION!!!!"`
|
|
EnableNumaAllocate string `help:"Host enable numa allocate" choices:"True|False"`
|
|
|
|
IpmiUsername *string `help:"IPMI user"`
|
|
IpmiPassword *string `help:"IPMI password"`
|
|
IpmiIpAddr *string `help:"IPMI ip_addr"`
|
|
|
|
Sn *string `help:"serial number"`
|
|
|
|
Hostname *string `help:"update host name"`
|
|
|
|
PublicIp *string `help:"public_ip"`
|
|
|
|
NoPublicIp *bool `help:"clear public ip"`
|
|
}
|
|
|
|
func (opts *HostUpdateOptions) Params() (jsonutils.JSONObject, error) {
|
|
v := jsonutils.Marshal(opts).(*jsonutils.JSONDict)
|
|
if opts.NoPublicIp != nil && *opts.NoPublicIp {
|
|
v.Set("public_ip", jsonutils.NewString(""))
|
|
v.Remove("no_public_ip")
|
|
}
|
|
if len(opts.EnableNumaAllocate) > 0 {
|
|
enableNumaAllocate := false
|
|
if opts.EnableNumaAllocate == "True" {
|
|
enableNumaAllocate = true
|
|
}
|
|
v.Set("enable_numa_allocate", jsonutils.NewBool(enableNumaAllocate))
|
|
}
|
|
v.Remove("id")
|
|
return v, nil
|
|
}
|