Files
cloudpods/pkg/apis/compute/network.go
2020-04-16 23:24:56 +08:00

298 lines
7.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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/onecloud/pkg/apis"
)
type WireResourceInput struct {
// 二层网络(ID或Name)的资源
Wire string `json:"wire"`
// swagger:ignore
// Deprecated
// fitler by wire id
WireId string `json:"wire_id" "yunion:deprecated-by":"wire"`
}
type WireFilterListBase struct {
WireResourceInput
// 以二层网络名称排序
OrderByWire string `json:"order_by_wire"`
}
type WireFilterListInput struct {
VpcFilterListInput
ZonalFilterListBase
WireFilterListBase
}
type NetworkResourceInput struct {
// IP子网ID或Name
Network string `json:"network"`
// swagger:ignore
// Deprecated
// filter by networkId
NetworkId string `json:"network_id" "yunion:deprecated-by":"network"`
}
type NetworkFilterListBase struct {
NetworkResourceInput
// 以IP子网的名称排序
OrderByNetwork string `json:"order_by_network"`
}
type NetworkFilterListInput struct {
WireFilterListInput
NetworkFilterListBase
}
type NetworkListInput struct {
apis.SharableVirtualResourceListInput
apis.ExternalizedResourceBaseListInput
WireFilterListInput
HostResourceInput
UsableResourceListInput
// description: search ip address in network.
// example: 10.168.222.1
Ip string `json:"ip"`
IfnameHint []string `json:"ifname_hint"`
// 起始IP地址
GuestIpStart []string `json:"guest_ip_start"`
// 接收IP地址
GuestIpEnd []string `json:"guest_ip_end"`
// 掩码
GuestIpMask []int8 `json:"guest_ip_mask"`
// 网关地址
GuestGateway string `json:"guest_gateway"`
// DNS
GuestDns []string `json:"guest_dns"`
// allow multiple dhcp, seperated by ","
GuestDhcp []string `json:"guest_dhcp"`
GuestDomain []string `json:"guest_domain"`
GuestIp6Start []string `json:"guest_ip6_start"`
GuestIp6End []string `json:"guest_ip6_end"`
GuestIp6Mask []int8 `json:"guest_ip6_mask"`
GuestGateway6 []string `json:"guest_gateway6"`
GuestDns6 []string `json:"guest_dns6"`
GuestDomain6 []string `json:"guest_domain6"`
// vlanId 1~4096
VlanId []int `json:"vlan_id"`
// 服务器类型
// example: server
ServerType []string `json:"server_type"`
// 分配策略
AllocPolicy []string `json:"alloc_policy"`
}
type NetworkResourceInfoBase struct {
// IP子网名称
Network string `json:"network"`
}
type NetworkResourceInfo struct {
NetworkResourceInfoBase
// 二层网络ID
WireId string `json:"wire_id"`
WireResourceInfo
}
type NetworkCreateInput struct {
apis.SharableVirtualResourceCreateInput
// description: ip range of guest, if not set, you shoud set guest_ip_start,guest_ip_end and guest_ip_mask params
// example: 10.168.222.1/24
GuestIpPrefix string `json:"guest_ip_prefix"`
// description: ip range of guest ip start, if set guest_ip_prefix, this parameter will be useless
// example: 10.168.222.1
GuestIpStart string `json:"guest_ip_start"`
// description: ip range of guest ip end, if set guest_ip_prefix, this parameter will be useless
// example: 10.168.222.100
GuestIpEnd string `json:"guest_ip_end"`
// description: ip range of guest ip mask, if set guest_ip_prefix, this parameter will be useless
// example: 24
// maximum: 30
// minimum: 12
GuestIpMask int64 `json:"guest_ip_mask"`
IfnameHint string `json:"ifname_hint"`
// description: guest gateway
// example: 192.168.222.1
GuestGateway string `json:"guest_gateway"`
// description: guest dns
// example: 114.114.114.114
GuestDns string `json:"guest_dns"`
// description: guest dhcp
// example: 192.168.222.1,192.168.222.4
GuestDHCP string `json:"guest_dhcp"`
// swagger:ignore
WireId string `json:"wire_id"`
// description: wire id or name
Wire string `json:"wire"`
// description: zone id or name
Zone string `json:"zone"`
// description: vpc id or name
Vpc string `json:"vpc"`
// description: server type
// enum: guest,baremetal,pxe,ipmi
// default: guest
ServerType string `json:"server_type"`
}
type NetworkDetails struct {
apis.SharableVirtualResourceDetails
WireResourceInfo
SNetwork
// 是否是内网
Exit bool `json:"exit"`
// 端口数量
Ports int `json:"ports"`
// 已使用端口数量
PortsUsed int `json:"ports_used"`
// 网卡数量
Vnics int `json:"vnics"`
// 裸金属网卡数量
BmVnics int `json:"bm_nics"`
// 负载均衡网卡数量
LbVnics int `json:"lb_vnics"`
// 浮动Ip网卡数量
EipVnics int `json:"eip_vnics"`
GroupVnics int `json:"group_vnics"`
// 预留IP数量
ReserveVnics int `json:"reserve_vnics"`
// 路由信息
Routes [][]string `json:"routes"`
Schedtags []SchedtagShortDescDetails `json:"schedtags"`
}
type NetworkReserveIpInput struct {
apis.Meta
// description: reserved ip list
// required: true
// example: [10.168.222.131, 10.168.222.134]
Ips []string `json:"ips"`
// description: the comment
// example: reserve ip for test
Notes string `json:"notes"`
Status string `json:"status"`
// description: The reserved cycle
// required: false
Duration string `json:"duration"`
}
type NetworkReleaseReservedIpInput struct {
apis.Meta
// description: IP to be released
// required: true
// example: 10.168.222.121
Ip string `json:"ip"`
}
type NetworkPurgeInput struct {
apis.Meta
}
type NetworkMergeInput struct {
apis.Meta
// description: network id or name to be merged
// required: true
// example: test-network
Target string `json:"target"`
}
type NetworkSplitInput struct {
apis.Meta
// description: The middle - separated IP must belong to the network
// required: true
// example: 10.168.222.181
SplitIp string `json:"split_ip"`
// description: another network name after split
// required: false
Name string `json:"name"`
}
type NetworkTryCreateNetworkInput struct {
apis.Meta
Ip string `json:"ip"`
Mask int `json:"mask"`
ServerType string `json:"server_type"`
IsOnPremise bool `json:"is_on_premise"`
}
type NetworkSyncInput struct {
apis.Meta
}
type NetworkUpdateInput struct {
apis.SharableVirtualResourceBaseUpdateInput
// 起始IP地址
GuestIpStart string `json:"guest_ip_start"`
// 接收IP地址
GuestIpEnd string `json:"guest_ip_end"`
// 掩码
GuestIpMask *int8 `json:"guest_ip_mask"`
// 网关地址
GuestGateway string `json:"guest_gateway"`
// DNS
GuestDns string `json:"guest_dns"`
// allow multiple dhcp, seperated by ","
GuestDhcp string `json:"guest_dhcp"`
GuestDomain string `json:"guest_domain"`
VlanId *int `json:"vlan_id"`
// 服务器类型
// example: server
ServerType string `json:"server_type"`
// 分配策略
AllocPolicy string `json:"alloc_policy"`
}