| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- // 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 (
- "reflect"
- "time"
- "yunion.io/x/cloudmux/pkg/apis/compute"
- "yunion.io/x/jsonutils"
- billing_api "yunion.io/x/onecloud/pkg/apis/billing"
- "yunion.io/x/pkg/gotypes"
- "yunion.io/x/onecloud/pkg/apis"
- )
- type GuestnetworkDetails struct {
- GuestJointResourceDetails
- SGuestnetwork
- // IP子网名称
- Network string `json:"network"`
- // 所属Wire
- WireId string `json:"wire_id"`
- // EipAddr associate with this guestnetwork
- EipAddr string `json:"eip_addr"`
- NetworkAddresses []NetworkAddrConf `json:"network_addresses"`
- GuestIpMask int8 `json:"guest_ip_mask"`
- // 网关地址
- GuestGateway string `json:"guest_gateway"`
- GuestIp6Mask uint8 `json:"guest_ip6_mask"`
- // 网关地址
- GuestGateway6 string `json:"guest_gateway6"`
- }
- type GuestnetworkShortDesc struct {
- // IP地址
- IpAddr string `json:"ip_addr"`
- // 是否为外网网卡
- IsExit bool `json:"is_exit"`
- // 网卡类型
- // 可能值:exit | internal | unused
- NicType string `json:"nic_type"`
- // IPv6地址
- Ip6Addr string `json:"ip6_addr"`
- // Mac地址
- Mac string `json:"mac"`
- // Bonding的配对网卡MAC
- TeamWith string `json:"team_with"`
- // 所属Vpc
- VpcId string `json:"vpc_id"`
- // 所属主机
- GuestId string `json:"guest_id"`
- // 所属Network
- NetworkId string `json:"network_id"`
- // 附属IP
- SubIps string `json:"sub_ips"`
- // 端口映射
- PortMappings GuestPortMappings `json:"port_mappings"`
- // Bandwidth
- BwLimitMbps int `json:"bw_limit_mbps"`
- // 网卡名称
- Ifname string `json:"ifname"`
- // 是否为缺省路由网关
- IsDefault bool `json:"is_default"`
- // 线路类型
- BgpType string `json:"bgp_type"`
- // 计费模式
- BillingType billing_api.TBillingType `json:"billing_type"`
- // 计量模式
- ChargeType billing_api.TNetChargeType `json:"charge_type"`
- // 网卡序号
- Index int `json:"index"`
- }
- type GuestnetworkSecgroupShortDesc struct {
- NetworkIndex int `json:"network_index"`
- Secgroups []apis.StandaloneShortDesc `json:"secgroups"`
- Mac string `json:"mac"`
- }
- type GuestnetworkListInput struct {
- GuestJointsListInput
- NetworkFilterListInput
- MacAddr []string `json:"mac_addr"`
- IpAddr []string `json:"ip_addr"`
- Ip6Addr []string `json:"ip6_addr"`
- Driver []string `json:"driver"`
- Ifname []string `json:"ifname"`
- TeamWith []string `json:"team_with"`
- }
- type GuestnetworkUpdateInput struct {
- GuestJointBaseUpdateInput
- Driver string `json:"driver"`
- BwLimit *int `json:"bw_limit"`
- Index *int8 `json:"index"`
- IsDefault *bool `json:"is_default"`
- PortMappings GuestPortMappings `json:"port_mappings"`
- ChargeType string `json:"charge_type"`
- }
- type GuestnetworkBaseDesc struct {
- Net string `json:"net"`
- NetId string `json:"net_id"`
- Mac string `json:"mac"`
- Virtual bool `json:"virtual"`
- Ip string `json:"ip"`
- Gateway string `json:"gateway"`
- Dns string `json:"dns"`
- Domain string `json:"domain"`
- Ntp string `json:"ntp"`
- Routes jsonutils.JSONObject `json:"routes"`
- Ifname string `json:"ifname"`
- Masklen int8 `json:"masklen"`
- Vlan int `json:"vlan"`
- Bw int `json:"bw"`
- Mtu int16 `json:"mtu"`
- Index int `json:"index"`
- RxTrafficLimit int64 `json:"rx_traffic_limit"`
- TxTrafficLimit int64 `json:"tx_traffic_limit"`
- NicType compute.TNicType `json:"nic_type"`
- BillingType billing_api.TBillingType `json:"billing_type"`
- ChargeType billing_api.TNetChargeType `json:"charge_type"`
- Ip6 string `json:"ip6"`
- Gateway6 string `json:"gateway6"`
- Masklen6 uint8 `json:"masklen6"`
- // 是否为缺省路由网关
- IsDefault bool `json:"is_default"`
- Bridge string `json:"bridge"`
- WireId string `json:"wire_id"`
- Interface string `json:"interface"`
- Secgroups []*SecgroupJsonDesc `json:"secgroups"`
- SecurityRules string `json:"security_rules"`
- Vpc struct {
- Id string `json:"id"`
- Provider string `json:"provider"`
- MappedIpAddr string `json:"mapped_ip_addr"`
- MappedIp6Addr string `json:"mapped_ip6_addr"`
- } `json:"vpc"`
- Networkaddresses jsonutils.JSONObject `json:"networkaddresses"`
- VirtualIps []string `json:"virtual_ips"`
- PortMappings GuestPortMappings `json:"port_mappings"`
- }
- type GuestnetworkJsonDesc struct {
- GuestnetworkBaseDesc
- Driver string `json:"driver"`
- NumQueues int `json:"num_queues"`
- Vectors *int `json:"vectors"`
- ExternalId string `json:"external_id"`
- TeamWith string `json:"team_with"`
- Manual *bool `json:"manual"`
- UpscriptPath string `json:"upscript_path"`
- DownscriptPath string `json:"downscript_path"`
- // baremetal
- Rate int `json:"rate"`
- BaremetalId string `json:"baremetal_id"`
- LinkUp bool `json:"link_up"`
- }
- type GuestnetworkSecgroupDesc struct {
- Secgroups []*SecgroupJsonDesc `json:"secgroups"`
- SecurityRules string `json:"security_rules"`
- Index int `json:"index"`
- Mac string `json:"mac"`
- }
- type SNicTrafficRecord struct {
- RxTraffic int64 `json:"rx_traffic"`
- TxTraffic int64 `json:"tx_traffic"`
- HasBeenSetDown bool `json:"has_been_set_down"`
- }
- type GuestNicTrafficSyncInput struct {
- // 同步时间
- SyncAt time.Time
- // 是否重置计数器
- IsReset bool `json:"is_reset"`
- // first key: guest_id
- // second key: nic_mac
- Traffic map[string]map[string]*SNicTrafficRecord
- }
- func NewGuestNicTrafficSyncInput(syncAt time.Time, isReset bool) *GuestNicTrafficSyncInput {
- return &GuestNicTrafficSyncInput{
- SyncAt: syncAt,
- Traffic: make(map[string]map[string]*SNicTrafficRecord),
- IsReset: isReset,
- }
- }
- type GuestPortMappingProtocol string
- const (
- GuestPortMappingProtocolTCP GuestPortMappingProtocol = "tcp"
- GuestPortMappingProtocolUDP GuestPortMappingProtocol = "udp"
- )
- const (
- GUEST_PORT_MAPPING_RANGE_START = 20000
- GUEST_PORT_MAPPING_RANGE_END = 25000
- )
- type GuestPortMappingPortRange struct {
- Start int `json:"start"`
- End int `json:"end"`
- }
- type GuestPortMappingEnvValueFrom string
- const (
- GuestPortMappingEnvValueFromPort GuestPortMappingEnvValueFrom = "port"
- GuestPortMappingEnvValueFromHostPort GuestPortMappingEnvValueFrom = "host_port"
- )
- type GuestPortMappingEnv struct {
- Key string `json:"key"`
- ValueFrom GuestPortMappingEnvValueFrom `json:"value_from"`
- }
- type GuestPortMapping struct {
- Protocol GuestPortMappingProtocol `json:"protocol"`
- // 容器内部 Port 端口范围 1-65535,-1表示由宿主机自动分配和 HostPort 相同的端口
- Port int `json:"port"`
- HostPort *int `json:"host_port,omitempty"`
- HostIp string `json:"host_ip"`
- HostPortRange *GuestPortMappingPortRange `json:"host_port_range,omitempty"`
- // whitelist for remote ips
- RemoteIps []string `json:"remote_ips"`
- Rule *GuestPortMappingRule `json:"rule,omitempty"`
- Envs []GuestPortMappingEnv `json:"envs,omitempty"`
- }
- type GuestPortMappingRule struct {
- FirstPortOffset *int `json:"first_port_offset"`
- }
- type GuestPortMappings []*GuestPortMapping
- func (g GuestPortMappings) String() string {
- return jsonutils.Marshal(g).String()
- }
- func (g GuestPortMappings) IsZero() bool {
- return len(g) == 0
- }
- func init() {
- gotypes.RegisterSerializable(reflect.TypeOf(&GuestPortMappings{}), func() gotypes.ISerializable {
- return &GuestPortMappings{}
- })
- }
|