Documentation ¶
Index ¶
- Constants
- Variables
- func AddNamespaceEndpoint(id string, endpointID string) error
- func CreateNamespace() (string, error)
- func GetNamespaceEndpoints(id string) ([]string, error)
- func RemoveNamespace(id string) error
- func RemoveNamespaceEndpoint(id string, endpointID string) error
- type ACLPolicy
- type ActionType
- type DirectionType
- type ELBPolicy
- type EndpointAttachDetachRequest
- type EndpointNotFoundError
- type EndpointResquestResponse
- type EndpointState
- type EndpointStats
- type HNSAclFeatures
- type HNSEndpoint
- func (endpoint *HNSEndpoint) ApplyACLPolicy(policies ...*ACLPolicy) error
- func (endpoint *HNSEndpoint) ApplyProxyPolicy(policies ...*ProxyPolicy) error
- func (endpoint *HNSEndpoint) ContainerAttach(containerID string, compartmentID uint16) error
- func (endpoint *HNSEndpoint) ContainerDetach(containerID string) error
- func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error)
- func (endpoint *HNSEndpoint) Delete() (*HNSEndpoint, error)
- func (endpoint *HNSEndpoint) HostAttach(compartmentID uint16) error
- func (endpoint *HNSEndpoint) HostDetach() error
- func (endpoint *HNSEndpoint) IsAttached(vID string) (bool, error)
- func (endpoint *HNSEndpoint) Update() (*HNSEndpoint, error)
- func (endpoint *HNSEndpoint) VirtualMachineNICAttach(virtualMachineNICName string) error
- func (endpoint *HNSEndpoint) VirtualMachineNICDetach() error
- type HNSGlobals
- type HNSNetwork
- func (network *HNSNetwork) Create() (*HNSNetwork, error)
- func (network *HNSNetwork) CreateEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error)
- func (network *HNSNetwork) CreateRemoteEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error)
- func (network *HNSNetwork) Delete() (*HNSNetwork, error)
- func (network *HNSNetwork) NewEndpoint(ipAddress net.IP, macAddress net.HardwareAddr) *HNSEndpoint
- type HNSSupportedFeatures
- type HNSVersion
- type IsolationPolicy
- type LBPolicy
- type MacPool
- type Namespace
- type NamespaceResource
- type NatPolicy
- type NetworkNotFoundError
- type OutboundNatPolicy
- type PaPolicy
- type Policy
- type PolicyList
- func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, ...) (*PolicyList, error)
- func AddRoute(endpoints []HNSEndpoint, destinationPrefix string, nextHop string, ...) (*PolicyList, error)
- func GetPolicyListByID(policyListID string) (*PolicyList, error)
- func HNSListPolicyListRequest() ([]PolicyList, error)
- func HNSPolicyListRequest(method, path, request string) (*PolicyList, error)
- func PolicyListRequest(method, path, request string) (*PolicyList, error)
- type PolicyType
- type ProxyPolicy
- type QosPolicy
- type RoutePolicy
- type RuleType
- type Subnet
- type SystemType
- type VlanPolicy
- type VsidPolicy
Constants ¶
const ( Allow ActionType = "Allow" Block ActionType = "Block" In DirectionType = "In" Out DirectionType = "Out" Host RuleType = "Host" Switch RuleType = "Switch" )
Variables ¶
var (
HNSVersion1803 = HNSVersion{Major: 7, Minor: 2}
)
Functions ¶
func AddNamespaceEndpoint ¶
func CreateNamespace ¶
func GetNamespaceEndpoints ¶
func RemoveNamespace ¶
func RemoveNamespaceEndpoint ¶
Types ¶
type ACLPolicy ¶
type ACLPolicy struct { Type PolicyType `json:"Type"` Id string `json:"Id,omitempty"` Protocol uint16 `json:",omitempty"` Protocols string `json:"Protocols,omitempty"` InternalPort uint16 `json:",omitempty"` Action ActionType Direction DirectionType LocalAddresses string `json:",omitempty"` RemoteAddresses string `json:",omitempty"` LocalPorts string `json:"LocalPorts,omitempty"` LocalPort uint16 `json:",omitempty"` RemotePorts string `json:"RemotePorts,omitempty"` RemotePort uint16 `json:",omitempty"` RuleType RuleType `json:"RuleType,omitempty"` Priority uint16 `json:",omitempty"` ServiceName string `json:",omitempty"` }
type ActionType ¶
type ActionType string
type DirectionType ¶
type DirectionType string
type ELBPolicy ¶
type ELBPolicy struct { LBPolicy SourceVIP string `json:"SourceVIP,omitempty"` VIPs []string `json:"VIPs,omitempty"` ILB bool `json:"ILB,omitempty"` DSR bool `json:"IsDSR,omitempty"` }
ELBPolicy is a structure defining schema for ELB LoadBalancing based Policy
type EndpointAttachDetachRequest ¶
type EndpointAttachDetachRequest struct { ContainerID string `json:"ContainerId,omitempty"` SystemType SystemType `json:"SystemType"` CompartmentID uint16 `json:"CompartmentId,omitempty"` VirtualNICName string `json:"VirtualNicName,omitempty"` }
EndpointAttachDetachRequest is the structure used to send request to the container to modify the system Supported resource types are Network and Request Types are Add/Remove
type EndpointNotFoundError ¶
type EndpointNotFoundError struct {
EndpointName string
}
func (EndpointNotFoundError) Error ¶
func (e EndpointNotFoundError) Error() string
type EndpointResquestResponse ¶
EndpointResquestResponse is object to get the endpoint request response
type EndpointState ¶ added in v0.11.6
type EndpointState uint16
EndpointState represents the states of an HNS Endpoint lifecycle.
const ( Uninitialized EndpointState = iota Created EndpointState = 1 Attached EndpointState = 2 AttachedSharing EndpointState = 3 Detached EndpointState = 4 Degraded EndpointState = 5 Destroyed EndpointState = 6 )
EndpointState const The lifecycle of an Endpoint goes through created, attached, AttachedSharing - endpoint is being shared with other containers, detached, after being attached, degraded and finally destroyed. Note: This attribute is used by calico to define stale containers and is dependent on HNS v1 api, if we move to HNS v2 api we will need to update the current calico code and cordinate the change with calico. Reach out to Microsoft to facilate the change via HNS.
func (EndpointState) String ¶ added in v0.11.6
func (es EndpointState) String() string
type EndpointStats ¶ added in v0.8.21
type EndpointStats struct { BytesReceived uint64 `json:"BytesReceived"` BytesSent uint64 `json:"BytesSent"` DroppedPacketsIncoming uint64 `json:"DroppedPacketsIncoming"` DroppedPacketsOutgoing uint64 `json:"DroppedPacketsOutgoing"` EndpointID string `json:"EndpointId"` InstanceID string `json:"InstanceId"` PacketsReceived uint64 `json:"PacketsReceived"` PacketsSent uint64 `json:"PacketsSent"` }
EndpointStats is the object that has stats for a given endpoint
func GetHNSEndpointStats ¶ added in v0.8.21
func GetHNSEndpointStats(endpointID string) (*EndpointStats, error)
GetHNSEndpointStats get the stats for a n Endpoint by ID
type HNSAclFeatures ¶
type HNSEndpoint ¶
type HNSEndpoint struct { Id string `json:"ID,omitempty"` Name string `json:",omitempty"` VirtualNetwork string `json:",omitempty"` VirtualNetworkName string `json:",omitempty"` Policies []json.RawMessage `json:",omitempty"` MacAddress string `json:",omitempty"` IPAddress net.IP `json:",omitempty"` IPv6Address net.IP `json:",omitempty"` DNSSuffix string `json:",omitempty"` DNSServerList string `json:",omitempty"` DNSDomain string `json:",omitempty"` GatewayAddress string `json:",omitempty"` GatewayAddressV6 string `json:",omitempty"` EnableInternalDNS bool `json:",omitempty"` DisableICC bool `json:",omitempty"` PrefixLength uint8 `json:",omitempty"` IPv6PrefixLength uint8 `json:",omitempty"` IsRemoteEndpoint bool `json:",omitempty"` EnableLowMetric bool `json:",omitempty"` Namespace *Namespace `json:",omitempty"` EncapOverhead uint16 `json:",omitempty"` State EndpointState `json:",omitempty"` }
HNSEndpoint represents a network endpoint in HNS
func GetHNSEndpointByID ¶
func GetHNSEndpointByID(endpointID string) (*HNSEndpoint, error)
GetHNSEndpointByID get the Endpoint by ID
func GetHNSEndpointByName ¶
func GetHNSEndpointByName(endpointName string) (*HNSEndpoint, error)
GetHNSEndpointByName gets the endpoint filtered by Name
func HNSEndpointRequest ¶
func HNSEndpointRequest(method, path, request string) (*HNSEndpoint, error)
HNSEndpointRequest makes a HNS call to modify/query a network endpoint
func HNSListEndpointRequest ¶
func HNSListEndpointRequest() ([]HNSEndpoint, error)
HNSListEndpointRequest makes a HNS call to query the list of available endpoints
func (*HNSEndpoint) ApplyACLPolicy ¶
func (endpoint *HNSEndpoint) ApplyACLPolicy(policies ...*ACLPolicy) error
ApplyACLPolicy applies a set of ACL Policies on the Endpoint
func (*HNSEndpoint) ApplyProxyPolicy ¶ added in v0.8.8
func (endpoint *HNSEndpoint) ApplyProxyPolicy(policies ...*ProxyPolicy) error
ApplyProxyPolicy applies a set of Proxy Policies on the Endpoint
func (*HNSEndpoint) ContainerAttach ¶
func (endpoint *HNSEndpoint) ContainerAttach(containerID string, compartmentID uint16) error
ContainerAttach attaches an endpoint to container
func (*HNSEndpoint) ContainerDetach ¶
func (endpoint *HNSEndpoint) ContainerDetach(containerID string) error
ContainerDetach detaches an endpoint from container
func (*HNSEndpoint) Create ¶
func (endpoint *HNSEndpoint) Create() (*HNSEndpoint, error)
Create Endpoint by sending EndpointRequest to HNS. TODO: Create a separate HNS interface to place all these methods
func (*HNSEndpoint) Delete ¶
func (endpoint *HNSEndpoint) Delete() (*HNSEndpoint, error)
Delete Endpoint by sending EndpointRequest to HNS
func (*HNSEndpoint) HostAttach ¶
func (endpoint *HNSEndpoint) HostAttach(compartmentID uint16) error
HostAttach attaches a nic on the host
func (*HNSEndpoint) HostDetach ¶
func (endpoint *HNSEndpoint) HostDetach() error
HostDetach detaches a nic on the host
func (*HNSEndpoint) IsAttached ¶ added in v0.8.7
func (endpoint *HNSEndpoint) IsAttached(vID string) (bool, error)
func (*HNSEndpoint) Update ¶
func (endpoint *HNSEndpoint) Update() (*HNSEndpoint, error)
Update Endpoint
func (*HNSEndpoint) VirtualMachineNICAttach ¶
func (endpoint *HNSEndpoint) VirtualMachineNICAttach(virtualMachineNICName string) error
VirtualMachineNICAttach attaches a endpoint to a virtual machine
func (*HNSEndpoint) VirtualMachineNICDetach ¶
func (endpoint *HNSEndpoint) VirtualMachineNICDetach() error
VirtualMachineNICDetach detaches a endpoint from a virtual machine
type HNSGlobals ¶
type HNSGlobals struct {
Version HNSVersion `json:"Version"`
}
func GetHNSGlobals ¶
func GetHNSGlobals() (*HNSGlobals, error)
type HNSNetwork ¶
type HNSNetwork struct { Id string `json:"ID,omitempty"` Name string `json:",omitempty"` Type string `json:",omitempty"` NetworkAdapterName string `json:",omitempty"` SourceMac string `json:",omitempty"` Policies []json.RawMessage `json:",omitempty"` MacPools []MacPool `json:",omitempty"` Subnets []Subnet `json:",omitempty"` DNSSuffix string `json:",omitempty"` DNSServerList string `json:",omitempty"` DNSServerCompartment uint32 `json:",omitempty"` ManagementIP string `json:",omitempty"` AutomaticDNS bool `json:",omitempty"` }
HNSNetwork represents a network in HNS
func GetHNSNetworkByID ¶
func GetHNSNetworkByID(networkID string) (*HNSNetwork, error)
GetHNSNetworkByID
func GetHNSNetworkByName ¶
func GetHNSNetworkByName(networkName string) (*HNSNetwork, error)
GetHNSNetworkName filtered by Name
func HNSListNetworkRequest ¶
func HNSListNetworkRequest(method, path, request string) ([]HNSNetwork, error)
HNSListNetworkRequest makes a HNS call to query the list of available networks
func HNSNetworkRequest ¶
func HNSNetworkRequest(method, path, request string) (*HNSNetwork, error)
HNSNetworkRequest makes a call into HNS to update/query a single network
func (*HNSNetwork) Create ¶
func (network *HNSNetwork) Create() (*HNSNetwork, error)
Create Network by sending NetworkRequest to HNS.
func (*HNSNetwork) CreateEndpoint ¶
func (network *HNSNetwork) CreateEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error)
func (*HNSNetwork) CreateRemoteEndpoint ¶
func (network *HNSNetwork) CreateRemoteEndpoint(endpoint *HNSEndpoint) (*HNSEndpoint, error)
func (*HNSNetwork) Delete ¶
func (network *HNSNetwork) Delete() (*HNSNetwork, error)
Delete Network by sending NetworkRequest to HNS
func (*HNSNetwork) NewEndpoint ¶
func (network *HNSNetwork) NewEndpoint(ipAddress net.IP, macAddress net.HardwareAddr) *HNSEndpoint
Creates an endpoint on the Network.
type HNSSupportedFeatures ¶
type HNSSupportedFeatures struct {
Acl HNSAclFeatures `json:"ACL"`
}
func GetHNSSupportedFeatures ¶
func GetHNSSupportedFeatures() HNSSupportedFeatures
type HNSVersion ¶
type IsolationPolicy ¶
type IsolationPolicy struct { Type PolicyType `json:"Type"` VLAN uint VSID uint InDefaultIsolation bool }
type LBPolicy ¶
type LBPolicy struct { Policy Protocol uint16 `json:"Protocol,omitempty"` InternalPort uint16 ExternalPort uint16 }
LBPolicy is a structure defining schema for LoadBalancing based Policy
type MacPool ¶
type MacPool struct { StartMacAddress string `json:",omitempty"` EndMacAddress string `json:",omitempty"` }
MacPool is associated with a network and represents a list of macaddresses available to the network
type Namespace ¶
type Namespace struct { ID string IsDefault bool `json:",omitempty"` ResourceList []NamespaceResource `json:",omitempty"` CompartmentId uint32 `json:",omitempty"` }
type NamespaceResource ¶
type NamespaceResource struct { Type string Data json.RawMessage }
type NatPolicy ¶
type NatPolicy struct { Type PolicyType `json:"Type"` Protocol string `json:",omitempty"` InternalPort uint16 `json:",omitempty"` ExternalPort uint16 `json:",omitempty"` ExternalPortReserved bool `json:",omitempty"` }
type NetworkNotFoundError ¶
type NetworkNotFoundError struct {
NetworkName string
}
func (NetworkNotFoundError) Error ¶
func (e NetworkNotFoundError) Error() string
type OutboundNatPolicy ¶
type PaPolicy ¶
type PaPolicy struct { Type PolicyType `json:"Type"` PA string `json:"PA"` }
type Policy ¶
type Policy struct {
Type PolicyType `json:"Type"`
}
type PolicyList ¶
type PolicyList struct { ID string `json:"ID,omitempty"` EndpointReferences []string `json:"References,omitempty"` Policies []json.RawMessage `json:"Policies,omitempty"` }
PolicyList is a structure defining schema for Policy list request
func AddLoadBalancer ¶
func AddLoadBalancer(endpoints []HNSEndpoint, isILB bool, sourceVIP, vip string, protocol uint16, internalPort uint16, externalPort uint16) (*PolicyList, error)
AddLoadBalancer policy list for the specified endpoints
func AddRoute ¶
func AddRoute(endpoints []HNSEndpoint, destinationPrefix string, nextHop string, encapEnabled bool) (*PolicyList, error)
AddRoute adds route policy list for the specified endpoints
func GetPolicyListByID ¶
func GetPolicyListByID(policyListID string) (*PolicyList, error)
GetPolicyListByID get the policy list by ID
func HNSListPolicyListRequest ¶
func HNSListPolicyListRequest() ([]PolicyList, error)
HNSListPolicyListRequest gets all the policy list
func HNSPolicyListRequest ¶
func HNSPolicyListRequest(method, path, request string) (*PolicyList, error)
HNSPolicyListRequest makes a call into HNS to update/query a single network
func PolicyListRequest ¶
func PolicyListRequest(method, path, request string) (*PolicyList, error)
PolicyListRequest makes a HNS call to modify/query a network policy list
func (*PolicyList) AddEndpoint ¶
func (policylist *PolicyList) AddEndpoint(endpoint *HNSEndpoint) (*PolicyList, error)
AddEndpoint add an endpoint to a Policy List
func (*PolicyList) Create ¶
func (policylist *PolicyList) Create() (*PolicyList, error)
Create PolicyList by sending PolicyListRequest to HNS.
func (*PolicyList) Delete ¶
func (policylist *PolicyList) Delete() (*PolicyList, error)
Delete deletes PolicyList
func (*PolicyList) RemoveEndpoint ¶
func (policylist *PolicyList) RemoveEndpoint(endpoint *HNSEndpoint) (*PolicyList, error)
RemoveEndpoint removes an endpoint from the Policy List
type PolicyType ¶
type PolicyType string
Type of Request Support in ModifySystem
const ( Nat PolicyType = "NAT" ACL PolicyType = "ACL" PA PolicyType = "PA" VLAN PolicyType = "VLAN" VSID PolicyType = "VSID" VNet PolicyType = "VNET" L2Driver PolicyType = "L2Driver" Isolation PolicyType = "Isolation" QOS PolicyType = "QOS" OutboundNat PolicyType = "OutBoundNAT" ExternalLoadBalancer PolicyType = "ELB" Route PolicyType = "ROUTE" Proxy PolicyType = "PROXY" )
RequestType const
type ProxyPolicy ¶ added in v0.8.8
type QosPolicy ¶
type QosPolicy struct { Type PolicyType `json:"Type"` MaximumOutgoingBandwidthInBytes uint64 }
type RoutePolicy ¶
type RoutePolicy struct { Policy DestinationPrefix string `json:"DestinationPrefix,omitempty"` NextHop string `json:"NextHop,omitempty"` EncapEnabled bool `json:"NeedEncap,omitempty"` }
RoutePolicy is a structure defining schema for Route based Policy
type Subnet ¶
type Subnet struct { AddressPrefix string `json:",omitempty"` GatewayAddress string `json:",omitempty"` Policies []json.RawMessage `json:",omitempty"` }
Subnet is associated with a network and represents a list of subnets available to the network
type SystemType ¶
type SystemType string
SystemType represents the type of the system on which actions are done
const ( ContainerType SystemType = "Container" VirtualMachineType SystemType = "VirtualMachine" HostType SystemType = "Host" )
SystemType const
type VlanPolicy ¶
type VlanPolicy struct { Type PolicyType `json:"Type"` VLAN uint }
type VsidPolicy ¶
type VsidPolicy struct { Type PolicyType `json:"Type"` VSID uint }