mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-21 14:19:49 +08:00
276 lines
6.5 KiB
Go
276 lines
6.5 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"
|
|
"yunion.io/x/onecloud/pkg/apis/billing"
|
|
"yunion.io/x/onecloud/pkg/util/ansible"
|
|
)
|
|
|
|
type LoadbalancerAgentDeployInput struct {
|
|
apis.Meta
|
|
|
|
Host ansible.Host
|
|
DeployMethod string
|
|
}
|
|
|
|
const (
|
|
DeployMethodYum = "yum"
|
|
DeployMethodCopy = "copy"
|
|
)
|
|
|
|
type LoadbalancerListInput struct {
|
|
apis.VirtualResourceListInput
|
|
apis.ExternalizedResourceBaseListInput
|
|
apis.DeletePreventableResourceBaseListInput
|
|
billing.BillingResourceListInput
|
|
|
|
VpcFilterListInput
|
|
ZonalFilterListBase
|
|
NetworkFilterListBase
|
|
|
|
// filter by cluster
|
|
Cluster string `json:"cluster"`
|
|
|
|
Address []string `json:"address"`
|
|
// 地址类型
|
|
AddressType []string `json:"address_type"`
|
|
// 网络类型
|
|
NetworkType []string `json:"network_type"`
|
|
// 计费类型
|
|
ChargeType []string `json:"charge_type"`
|
|
// 套餐名称
|
|
LoadbalancerSpec []string `json:"loadbalancer_spec"`
|
|
|
|
// filter by security group
|
|
SecgroupId string `json:"secgroup_id"`
|
|
|
|
// filter for EIP
|
|
WithEip *bool `json:"with_eip"`
|
|
WithoutEip *bool `json:"without_eip"`
|
|
EipAssociable *bool `json:"eip_associable"`
|
|
UsableLoadbalancerForEip string `json:"usable_loadbalancer_for_eip"`
|
|
}
|
|
|
|
type LbEip struct {
|
|
// 公网IP地址
|
|
Eip string `json:"eip"`
|
|
|
|
EipId string `json:"eip_id"`
|
|
|
|
// 公网IP地址类型: 弹性、非弹性
|
|
// example: public_ip
|
|
EipMode string `json:"eip_mode"`
|
|
}
|
|
|
|
type LoadbalancerDetails struct {
|
|
apis.VirtualResourceDetails
|
|
|
|
ManagedResourceInfo
|
|
|
|
LoadbalancerClusterResourceInfo
|
|
|
|
VpcResourceInfoBase
|
|
CloudregionResourceInfo
|
|
ZoneResourceInfoBase
|
|
Zone1ResourceInfoBase
|
|
NetworkResourceInfoBase
|
|
|
|
SLoadbalancer
|
|
|
|
LbEip
|
|
|
|
Eips []LbEip `json:"eips"`
|
|
|
|
// 后端服务器组名称
|
|
BackendGroup string `json:"backend_group"`
|
|
|
|
// 关联安全组列表
|
|
Secgroups []SimpleSecurityGroup `json:"secgroups"`
|
|
LoadbalancerUsage
|
|
}
|
|
|
|
type LoadbalancerUsage struct {
|
|
BackendGroupCount int `json:"backend_group_count"`
|
|
ListenerCount int `json:"listener_count"`
|
|
}
|
|
|
|
type SimpleSecurityGroup struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type LoadbalancerResourceInfo struct {
|
|
// 负载均衡名称
|
|
Loadbalancer string `json:"loadbalancer"`
|
|
|
|
// VPC ID
|
|
VpcId string `json:"vpc_id"`
|
|
|
|
VpcResourceInfo
|
|
|
|
// 可用区ID
|
|
ZoneId string `json:"zone_id"`
|
|
|
|
ZoneResourceInfo
|
|
|
|
// cloud provider info
|
|
ManagedResourceInfo
|
|
}
|
|
|
|
type LoadbalancerResourceInput struct {
|
|
// 负载均衡名称
|
|
LoadbalancerId string `json:"loadbalancer_id"`
|
|
|
|
// swagger:ignore
|
|
// Deprecated
|
|
Loadbalancer string `json:"loadbalancer" yunion-deprecated-by:"loadbalancer_id"`
|
|
}
|
|
|
|
type LoadbalancerFilterListInput struct {
|
|
VpcFilterListInput
|
|
|
|
ZonalFilterListBase
|
|
|
|
LoadbalancerResourceInput
|
|
|
|
// 以负载均衡名称排序
|
|
OrderByLoadbalancer string `json:"order_by_loadbalancer"`
|
|
}
|
|
|
|
type LoadbalancerCreateInput struct {
|
|
apis.VirtualResourceCreateInput
|
|
|
|
// IP地址
|
|
Address string `json:"address"`
|
|
// 地址类型
|
|
AddressType string `json:"address_type"`
|
|
// 网络类型
|
|
NetworkType string `json:"network_type"`
|
|
|
|
// 负载均衡集群Id
|
|
ClusterId string `json:"cluster_id"`
|
|
|
|
// 计费类型
|
|
ChargeType string `json:"charge_type"`
|
|
|
|
// 出口带宽
|
|
EgressMbps int `json:"egress_mbps"`
|
|
|
|
// 套餐名称
|
|
LoadbalancerSpec string `json:"loadbalancer_spec"`
|
|
|
|
// 弹性公网IP带宽
|
|
// 指定此参数后会创建新的弹性公网IP并绑定到新建的负载均衡
|
|
EipBw int `json:"eip_bw,omitzero"`
|
|
// 弹性公网IP线路类型
|
|
EipBgpType string `json:"eip_bgp_type,omitzero"`
|
|
// 弹性公网IP计费类型
|
|
EipChargeType string `json:"eip_charge_type,omitempty"`
|
|
// 是否跟随主机删除而自动释放
|
|
EipAutoDellocate bool `json:"eip_auto_dellocate,omitempty"`
|
|
|
|
// swagger:ignore
|
|
Eip string `json:"eip" yunion-deprecated-by:"eip_id"`
|
|
// EIP Id
|
|
EipId string `json:"eip_id"`
|
|
|
|
// LB的其他配置信息
|
|
LBInfo jsonutils.JSONObject `json:"lb_info"`
|
|
|
|
// 从可用区1
|
|
// required: false
|
|
Zone1 string `json:"zone_1"`
|
|
|
|
// 包年包月时长
|
|
Duration string `json:"duration"`
|
|
// swagger:ignore
|
|
BillingType string `json:"billing_type"`
|
|
// swagger:ignore
|
|
BillingCycle string `json:"billing_cycle"`
|
|
|
|
VpcResourceInput
|
|
// Vpc string `json:"vpc"`
|
|
ZoneResourceInput
|
|
// Zone string `json:"zone"`
|
|
CloudregionResourceInput
|
|
// Cloudregion string `json:"cloudregion"`
|
|
NetworkResourceInput
|
|
// 多子网
|
|
// swagger:ignore
|
|
Networks []string
|
|
// Network string `json:"network"`
|
|
CloudproviderResourceInput
|
|
// Manager string `json:"manager"`
|
|
}
|
|
|
|
type LoadbalancerRemoteUpdateInput struct {
|
|
// 是否覆盖替换所有标签
|
|
ReplaceTags *bool `json:"replace_tags" help:"replace all remote tags"`
|
|
}
|
|
|
|
type LoadbalancerAssociateEipInput struct {
|
|
// 弹性公网IP的ID
|
|
EipId string `json:"eip_id"`
|
|
|
|
// 弹性IP映射的内网IP地址,可选
|
|
IpAddr string `json:"ip_addr"`
|
|
}
|
|
|
|
type LoadbalancerCreateEipInput struct {
|
|
// 计费方式,traffic or bandwidth
|
|
ChargeType string `json:"charge_type"`
|
|
|
|
// Bandwidth
|
|
Bandwidth int64 `json:"bandwidth"`
|
|
|
|
// bgp_type
|
|
BgpType string `json:"bgp_type"`
|
|
|
|
// auto_dellocate
|
|
AutoDellocate *bool `json:"auto_dellocate"`
|
|
|
|
// 弹性IP映射的内网IP地址,可选
|
|
// IpAddr string `json:"ip_addr"`
|
|
}
|
|
|
|
type LoadbalancerDissociateEipInput struct {
|
|
// 是否自动释放
|
|
AudoDelete *bool `json:"auto_delete"`
|
|
}
|
|
|
|
func (self LoadbalancerDetails) GetMetricTags() map[string]string {
|
|
ret := map[string]string{
|
|
"id": self.Id,
|
|
"elb_id": self.Id,
|
|
"brand": self.Brand,
|
|
"backend_group": self.BackendGroup,
|
|
"cloudregion": self.Cloudregion,
|
|
"domain_id": self.DomainId,
|
|
"project_domain": self.ProjectDomain,
|
|
"region_ext_id": self.RegionExtId,
|
|
"status": self.Status,
|
|
"tenant": self.Project,
|
|
"tenant_id": self.ProjectId,
|
|
"account": self.Account,
|
|
"account_id": self.AccountId,
|
|
"external_id": self.ExternalId,
|
|
}
|
|
return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo)
|
|
}
|