cns

package
v1.15.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2024 License: MIT Imports: 23 Imported by: 7

Documentation

Index

Constants

View Source
const (
	SetOrchestratorType                      = "/network/setorchestratortype"
	GetHomeAz                                = "/homeaz"
	CreateOrUpdateNetworkContainer           = "/network/createorupdatenetworkcontainer"
	DeleteNetworkContainer                   = "/network/deletenetworkcontainer"
	PublishNetworkContainer                  = "/network/publishnetworkcontainer"
	UnpublishNetworkContainer                = "/network/unpublishnetworkcontainer"
	GetInterfaceForContainer                 = "/network/getinterfaceforcontainer"
	GetNetworkContainerByOrchestratorContext = "/network/getnetworkcontainerbyorchestratorcontext"
	GetAllNetworkContainers                  = "/network/getAllNetworkContainers"
	NetworkContainersURLPath                 = "/network/networkcontainers"
	AttachContainerToNetwork                 = "/network/attachcontainertonetwork"
	DetachContainerFromNetwork               = "/network/detachcontainerfromnetwork"
	RequestIPConfig                          = "/network/requestipconfig"
	RequestIPConfigs                         = "/network/requestipconfigs"
	ReleaseIPConfig                          = "/network/releaseipconfig"
	ReleaseIPConfigs                         = "/network/releaseipconfigs"
	PathDebugIPAddresses                     = "/debug/ipaddresses"
	PathDebugPodContext                      = "/debug/podcontext"
	PathDebugRestData                        = "/debug/restdata"
	NumberOfCPUCores                         = NumberOfCPUCoresPath
	NMAgentSupportedAPIs                     = NmAgentSupportedApisPath
	EndpointAPI                              = EndpointPath
)

Container Network Service DNC Contract

View Source
const (
	AzureContainerInstance = "AzureContainerInstance"
	WebApps                = "WebApps"
	Docker                 = "Docker"
	Basic                  = "Basic"
	JobObject              = "JobObject"
	COW                    = "COW" // Container on Windows
	BackendNICNC           = "BackendNICNC"
)

NetworkContainer Types

View Source
const (
	Kubernetes      = "Kubernetes"
	ServiceFabric   = "ServiceFabric"
	Batch           = "Batch"
	DBforPostgreSQL = "DBforPostgreSQL"
	AzureFirstParty = "AzureFirstParty"
	KubernetesCRD   = "KubernetesCRD"
)

Orchestrator Types

View Source
const (
	Vlan  = "Vlan"
	Vxlan = "Vxlan"
)

Encap Types

View Source
const (
	Direct         = "Direct"
	Managed        = "Managed"
	CRD            = "CRD"
	MultiTenantCRD = "MultiTenantCRD"
)

ChannelMode :- CNS channel modes

View Source
const (
	KubernetesPodInfoScheme podInfoScheme = iota
	InterfaceIDPodInfoScheme
)
View Source
const (
	ActionTypeAllow  string = "Allow"
	ActionTypeBlock  string = "Block"
	DirectionTypeIn  string = "In"
	DirectionTypeOut string = "Out"
)
View Source
const (
	SetEnvironmentPath            = "/network/environment"
	CreateNetworkPath             = "/network/create"
	DeleteNetworkPath             = "/network/delete"
	CreateHnsNetworkPath          = "/network/hns/create"
	DeleteHnsNetworkPath          = "/network/hns/delete"
	ReserveIPAddressPath          = "/network/ip/reserve"
	ReleaseIPAddressPath          = "/network/ip/release"
	GetHostLocalIPPath            = "/network/ip/hostlocal"
	GetIPAddressUtilizationPath   = "/network/ip/utilization"
	GetUnhealthyIPAddressesPath   = "/network/ipaddresses/unhealthy"
	GetHealthReportPath           = "/network/health"
	NumberOfCPUCoresPath          = "/hostcpucores"
	CreateHostNCApipaEndpointPath = "/network/createhostncapipaendpoint"
	DeleteHostNCApipaEndpointPath = "/network/deletehostncapipaendpoint"
	NmAgentSupportedApisPath      = "/network/nmagentsupportedapis"
	V1Prefix                      = "/v0.1"
	V2Prefix                      = "/v0.2"
	EndpointPath                  = "/network/endpoints/"
)

Container Network Service remote API Contract

View Source
const (
	SwiftPrefix = "Swift_"
)

NetworkContainer Prefixes

Variables

View Source
var ErrDuplicateIP = errors.New("duplicate IP detected in CNS initialization")

ErrDuplicateIP indicates that a duplicate IP has been detected during a reconcile.

View Source
var ErrInvalidNCID = errors.New("invalid NetworkContainerID")
View Source
var GlobalPodInfoScheme podInfoScheme

Functions

func KubePodsToPodInfoByIP

func KubePodsToPodInfoByIP(pods []corev1.Pod) (map[string]PodInfo, error)

Types

type AttachContainerToNetworkResponse

type AttachContainerToNetworkResponse struct {
	Response Response
}

AttachContainerToNetworkResponse specifies response of attaching network container to network.

type ConfigureContainerNetworkingRequest

type ConfigureContainerNetworkingRequest struct {
	Containerid        string
	NetworkContainerid string
}

ConfigureContainerNetworkingRequest - specifies request to attach/detach container to network.

type CreateHnsNetworkRequest

type CreateHnsNetworkRequest struct {
	NetworkName          string
	NetworkType          string
	NetworkAdapterName   string            `json:",omitempty"`
	SourceMac            string            `json:",omitempty"`
	Policies             []json.RawMessage `json:",omitempty"`
	MacPools             []MacPool         `json:",omitempty"`
	Subnets              []SubnetInfo
	DNSSuffix            string `json:",omitempty"`
	DNSServerList        string `json:",omitempty"`
	DNSServerCompartment uint32 `json:",omitempty"`
	ManagementIP         string `json:",omitempty"`
	AutomaticDNS         bool   `json:",omitempty"`
}

CreateHnsNetworkRequest describes request to create the HNS network.

type CreateHostNCApipaEndpointRequest

type CreateHostNCApipaEndpointRequest struct {
	NetworkContainerID string
}

CreateHostNCApipaEndpointRequest describes request for create apipa endpoint for host container connectivity for the given network container

type CreateHostNCApipaEndpointResponse

type CreateHostNCApipaEndpointResponse struct {
	Response   Response
	EndpointID string
}

CreateHostNCApipaEndpointResponse describes response for create apipa endpoint request for host container connectivity.

type CreateNetworkContainerRequest

type CreateNetworkContainerRequest struct {
	HostPrimaryIP              string
	Version                    string
	NetworkContainerType       string
	NetworkContainerid         string // Mandatory input.
	PrimaryInterfaceIdentifier string // Primary CA.
	AuthorizationToken         string
	LocalIPConfiguration       IPConfiguration
	OrchestratorContext        json.RawMessage
	IPConfiguration            IPConfiguration
	SecondaryIPConfigs         map[string]SecondaryIPConfig // uuid is key
	MultiTenancyInfo           MultiTenancyInfo
	CnetAddressSpace           []IPSubnet // To setup SNAT (should include service endpoint vips).
	Routes                     []Route
	AllowHostToNCCommunication bool
	AllowNCToHostCommunication bool
	EndpointPolicies           []NetworkContainerRequestPolicies
	NCStatus                   v1alpha.NCStatus
	NetworkInterfaceInfo       NetworkInterfaceInfo //nolint // introducing new field for backendnic, to be used later by cni code
}

CreateNetworkContainerRequest specifies request to create a network container or network isolation boundary.

func (*CreateNetworkContainerRequest) String

func (req *CreateNetworkContainerRequest) String() string

CreateNetworkContainerRequest implements fmt.Stringer for logging

func (*CreateNetworkContainerRequest) Validate

func (req *CreateNetworkContainerRequest) Validate() error

type CreateNetworkContainerResponse

type CreateNetworkContainerResponse struct {
	Response Response
}

CreateNetworkContainerResponse specifies response of creating a network container.

type CreateNetworkRequest

type CreateNetworkRequest struct {
	NetworkName          string
	OverlayConfiguration OverlayConfiguration
	Options              map[string]interface{}
}

CreateNetworkRequest describes request to create the network.

type DeleteHnsNetworkRequest

type DeleteHnsNetworkRequest struct {
	NetworkName string
}

DeleteHnsNetworkRequest describes request to delete the HNS network.

type DeleteHostNCApipaEndpointRequest

type DeleteHostNCApipaEndpointRequest struct {
	NetworkContainerID string
}

DeleteHostNCApipaEndpointRequest describes request for deleting apipa endpoint created for host NC connectivity.

type DeleteHostNCApipaEndpointResponse

type DeleteHostNCApipaEndpointResponse struct {
	Response Response
}

DeleteHostNCApipaEndpointResponse describes response for delete host NC apipa endpoint request.

type DeleteNetworkContainerRequest

type DeleteNetworkContainerRequest struct {
	NetworkContainerid string
}

DeleteNetworkContainerRequest specifies the details about the request to delete a specific network container.

type DeleteNetworkContainerResponse

type DeleteNetworkContainerResponse struct {
	Response Response
}

DeleteNetworkContainerResponse describes the response to delete a specific network container.

type DeleteNetworkRequest

type DeleteNetworkRequest struct {
	NetworkName string
}

DeleteNetworkRequest describes request to delete the network.

type DetachContainerFromNetworkResponse

type DetachContainerFromNetworkResponse struct {
	Response Response
}

DetachContainerFromNetworkResponse specifies response of detaching network container from network.

type EndpointInfo added in v1.5.22

type EndpointInfo struct {
	PodName       string
	PodNamespace  string
	IfnameToIPMap map[string]*IPInfo // key : interface name, value : IPInfo
	HnsEndpointID string
	HostVethName  string
}

type EndpointRequest added in v1.5.17

type EndpointRequest struct {
	HnsEndpointID string `json:"hnsEndpointID"`
	HostVethName  string `json:"hostVethName"`
}

Used by EndpointHandler API to update endpoint state.

type GetAllNetworkContainersResponse

type GetAllNetworkContainersResponse struct {
	NetworkContainers []GetNetworkContainerResponse
	Response          Response
}

GetAllNetworkContainersResponse specifies response of retrieving all NCs from CNS during the process of NC refresh association.

type GetEndpointResponse added in v1.5.22

type GetEndpointResponse struct {
	Response     Response     `json:"response"`
	EndpointInfo EndpointInfo `json:"endpointInfo"`
}

GetEndpointResponse describes response from the The GetEndpoint API.

type GetHTTPServiceDataResponse added in v1.5.22

type GetHTTPServiceDataResponse struct {
	HTTPRestServiceData HTTPRestServiceData `json:"HTTPRestServiceData"`
	Response            Response            `json:"response"`
}

type GetHomeAzResponse

type GetHomeAzResponse struct {
	Response       Response       `json:"response"`
	HomeAzResponse HomeAzResponse `json:"homeAzResponse"`
}

type GetIPAddressStateResponse

type GetIPAddressStateResponse struct {
	IPAddresses []IPAddressState
	Response    Response
}

GetIPAddressStateResponse is used in CNS IPAM mode as a response to get IP address state

type GetIPAddressStatusResponse

type GetIPAddressStatusResponse struct {
	IPConfigurationStatus []IPConfigurationStatus
	Response              Response
}

GetIPAddressStatusResponse is used in CNS IPAM mode as a response to get IP address, state and Pod info

type GetIPAddressesRequest

type GetIPAddressesRequest struct {
	IPConfigStateFilter []types.IPState
}

GetIPAddressesRequest is used in CNS IPAM mode to get the states of IPConfigs The IPConfigStateFilter is a slice of IPs to fetch from CNS that match those states

type GetIPAddressesResponse

type GetIPAddressesResponse struct {
	Response    Response
	IPAddresses []string
}

GetIPAddressesResponse describes response containing requested ip addresses.

type GetInterfaceForContainerRequest

type GetInterfaceForContainerRequest struct {
	NetworkContainerID string
}

GetInterfaceForContainerRequest specifies the container ID for which interface needs to be identified.

type GetInterfaceForContainerResponse

type GetInterfaceForContainerResponse struct {
	NetworkContainerVersion string
	NetworkInterface        NetworkInterface
	CnetAddressSpace        []IPSubnet
	DNSServers              []string
	Response                Response
}

GetInterfaceForContainerResponse specifies the interface for a given container ID.

type GetNetworkContainerRequest

type GetNetworkContainerRequest struct {
	NetworkContainerid  string
	OrchestratorContext json.RawMessage
}

GetNetworkContainerRequest specifies the details about the request to retrieve a specific network container.

type GetNetworkContainerResponse

type GetNetworkContainerResponse struct {
	NetworkContainerID         string
	IPConfiguration            IPConfiguration
	Routes                     []Route
	CnetAddressSpace           []IPSubnet
	MultiTenancyInfo           MultiTenancyInfo
	PrimaryInterfaceIdentifier string
	LocalIPConfiguration       IPConfiguration
	Response                   Response
	AllowHostToNCCommunication bool
	AllowNCToHostCommunication bool
	NetworkInterfaceInfo       NetworkInterfaceInfo
}

GetNetworkContainerResponse describes the response to retrieve a specific network container.

type GetNetworkContainerStatusRequest

type GetNetworkContainerStatusRequest struct {
	NetworkContainerid string
}

GetNetworkContainerStatusRequest specifies the details about the request to retrieve status of a specific network container.

type GetNetworkContainerStatusResponse

type GetNetworkContainerStatusResponse struct {
	NetworkContainerid string
	Version            string
	AzureHostVersion   string
	Response           Response
}

GetNetworkContainerStatusResponse specifies response of retrieving a network container status.

type GetPodContextResponse

type GetPodContextResponse struct {
	PodContext map[string][]string // Can have multiple Pod IP UUIDs in the case of dualstack
	Response   Response
}

GetPodContextResponse is used in CNS Client debug mode to get mapping of Orchestrator Context to Pod IP UUIDs

type HTTPRestServiceData added in v1.5.22

type HTTPRestServiceData struct {
	PodIPIDByPodInterfaceKey map[string][]string              `json:"podIPIDByPodInterfaceKey"`
	PodIPConfigState         map[string]IPConfigurationStatus `json:"podIpConfigState"`
	IPAMPoolMonitor          IpamPoolMonitorStateSnapshot     `json:"ipamPoolMonitor"`
}

HTTPRestServiceData represents in-memory CNS data in the debug API paths. PodInterfaceId is key and value is slice of Pod IP uuids in PodIPIDByPodInterfaceKey secondaryipid(uuid) is key for PodIPConfigState

type HTTPService

type HTTPService interface {
	common.ServiceAPI
	SendNCSnapShotPeriodically(context.Context, int)
	SetNodeOrchestrator(*SetOrchestratorTypeRequest)
	SyncNodeStatus(string, string, string, json.RawMessage) (types.ResponseCode, string)
	GetPendingProgramIPConfigs() []IPConfigurationStatus
	GetAvailableIPConfigs() []IPConfigurationStatus
	GetAssignedIPConfigs() []IPConfigurationStatus
	GetPendingReleaseIPConfigs() []IPConfigurationStatus
	GetPodIPConfigState() map[string]IPConfigurationStatus
	MarkIPAsPendingRelease(numberToMark int) (map[string]IPConfigurationStatus, error)
	AttachIPConfigsHandlerMiddleware(IPConfigsHandlerMiddleware)
	MarkNIPsPendingRelease(n int) (map[string]IPConfigurationStatus, error)
}

HTTPService describes the min API interface that every service should have.

type HomeAzResponse

type HomeAzResponse struct {
	IsSupported bool `json:"isSupported"`
	HomeAz      uint `json:"homeAz"`
}

type HostIPInfo

type HostIPInfo struct {
	Gateway     string
	PrimaryIP   string
	SecondaryIP string
	Subnet      string
}

type HostLocalIPAddressResponse

type HostLocalIPAddressResponse struct {
	Response  Response
	IPAddress string
}

HostLocalIPAddressResponse describes reponse that returns the host local IP Address.

type IPAMPoolMonitor

type IPAMPoolMonitor interface {
	Start(ctx context.Context) error
	Update(nnc *v1alpha.NodeNetworkConfig) error
	GetStateSnapshot() IpamPoolMonitorStateSnapshot
}

IpamPoolMonitorStateSnapshot struct to expose state values for IPAMPoolMonitor struct

type IPAddressState

type IPAddressState struct {
	IPAddress string
	State     string
}

IPAddressState Only used in the GetIPConfig API to return IPs that match a filter

type IPAddressesUtilizationResponse

type IPAddressesUtilizationResponse struct {
	Response  Response
	Available int
	Reserved  int
	Unhealthy int
}

IPAddressesUtilizationResponse describes response for ip address utilization.

type IPConfigRequest

type IPConfigRequest struct {
	DesiredIPAddress    string
	PodInterfaceID      string
	InfraContainerID    string
	OrchestratorContext json.RawMessage
	Ifname              string // Used by delegated IPAM
}

type IPConfigResponse

type IPConfigResponse struct {
	PodIpInfo PodIpInfo
	Response  Response
}

IPConfigResponse is used in CNS IPAM mode as a response to CNI ADD

type IPConfigsHandlerFunc added in v1.5.19

type IPConfigsHandlerFunc func(context.Context, IPConfigsRequest) (*IPConfigsResponse, error)

IPConfigsHandlerFunc

type IPConfigsHandlerMiddleware added in v1.5.19

type IPConfigsHandlerMiddleware interface {
	IPConfigsRequestHandlerWrapper(defaultHandler IPConfigsHandlerFunc, failureHandler IPConfigsHandlerFunc) IPConfigsHandlerFunc
}

IPConfigsHandlerMiddleware

type IPConfigsRequest

type IPConfigsRequest struct {
	DesiredIPAddresses       []string        `json:"desiredIPAddresses"`
	PodInterfaceID           string          `json:"podInterfaceID"`
	InfraContainerID         string          `json:"infraContainerID"`
	OrchestratorContext      json.RawMessage `json:"orchestratorContext"`
	Ifname                   string          `json:"ifname"`                   // Used by delegated IPAM
	SecondaryInterfacesExist bool            `json:"secondaryInterfacesExist"` // will be set by SWIFT v2 validator func
}

Same as IPConfigRequest except that DesiredIPAddresses is passed in as a slice

type IPConfigsResponse

type IPConfigsResponse struct {
	PodIPInfo []PodIpInfo `json:"podIPInfo"`
	Response  Response    `json:"response"`
}

IPConfigsResponse is used in CNS IPAM mode to return a slice of IP configs as a response to CNI ADD

type IPConfiguration

type IPConfiguration struct {
	IPSubnet         IPSubnet
	DNSServers       []string
	GatewayIPAddress string
}

IPConfiguration contains details about ip config to provision in the VM.

type IPConfigurationStatus

type IPConfigurationStatus struct {
	ID                  string // uuid
	IPAddress           string
	LastStateTransition time.Time
	NCID                string
	PodInfo             PodInfo
	// contains filtered or unexported fields
}

This is used for KubernetesCRD orchestrator Type where NC has multiple ips. This struct captures the state for SecondaryIPs associated to a given NC

func (*IPConfigurationStatus) Equals

Equals compares a subset of the IPConfigurationStatus fields since a direct DeepEquals or otherwise complete comparison of two IPConfigurationStatus objects compares internal state details that don't impact their functional equality.

func (*IPConfigurationStatus) GetState

func (i *IPConfigurationStatus) GetState() types.IPState

func (IPConfigurationStatus) MarshalJSON

func (i IPConfigurationStatus) MarshalJSON() ([]byte, error)

MarshalJSON is a custom marshaller for IPConfigurationStatus that is capable of marshalling the private fields in the struct. The default marshaller can't see private fields by default, so we alias the type through a struct that has public fields for the original struct's private fields, embed the original struct in an anonymous struct as the alias type, and then let the default marshaller do its magic.

func (*IPConfigurationStatus) SetState

func (i *IPConfigurationStatus) SetState(s types.IPState)

func (IPConfigurationStatus) String

func (i IPConfigurationStatus) String() string

func (*IPConfigurationStatus) UnmarshalJSON

func (i *IPConfigurationStatus) UnmarshalJSON(b []byte) error

UnmarshalJSON is a custom unmarshaller for IPConfigurationStatus that is capable of unmarshalling to interface type `PodInfo` contained in the struct. Without this custom unmarshaller, the default unmarshaller can't deserialize the json data in to that interface type.

func (*IPConfigurationStatus) WithStateMiddleware

func (i *IPConfigurationStatus) WithStateMiddleware(fs ...stateMiddlewareFunc)

type IPInfo added in v1.5.22

type IPInfo struct {
	IPv4 []net.IPNet
	IPv6 []net.IPNet
}

type IPSubnet

type IPSubnet struct {
	IPAddress    string
	PrefixLength uint8
}

IPSubnet contains ip subnet.

func (*IPSubnet) GetIPNet

func (ips *IPSubnet) GetIPNet() (net.IP, *net.IPNet, error)

GetIPNet converts the IPSubnet to the standard net type

type IpamPoolMonitorStateSnapshot

type IpamPoolMonitorStateSnapshot struct {
	MinimumFreeIps           int64
	MaximumFreeIps           int64
	UpdatingIpsNotInUseCount int64
	CachedNNC                v1alpha.NodeNetworkConfig
}

type KubernetesPodInfo

type KubernetesPodInfo struct {
	PodName      string
	PodNamespace string
}

type MacPool

type MacPool struct {
	StartMacAddress string
	EndMacAddress   string
}

MacPool is assoicated with HNS network and represents a list of macaddresses available to the network

type MultiTenancyInfo

type MultiTenancyInfo struct {
	EncapType string
	ID        int // This can be vlanid, vxlanid, gre-key etc. (depends on EnacapType).
}

MultiTenancyInfo contains encap type and id.

type NICType

type NICType string
const (
	InfraNIC NICType = "InfraNIC"
	// Delegated VM NICs are projected from VM to container network namespace
	DelegatedVMNIC NICType = "DelegatedVMNIC"
	// BackendNIC NICs are used for infiniband nics on a VM
	BackendNIC NICType = "BackendNIC"
)

NIC Types

type NetworkContainerParameters

type NetworkContainerParameters struct {
	NCID                  string
	AuthToken             string
	AssociatedInterfaceID string
}

NetworkContainerParameters parameters available in network container operations

type NetworkContainerRequestPolicies

type NetworkContainerRequestPolicies struct {
	Type         string
	EndpointType string
	Settings     json.RawMessage
}

NetworkContainerRequestPolicies - specifies policies associated with create network request

func (*NetworkContainerRequestPolicies) Validate

func (networkContainerRequestPolicy *NetworkContainerRequestPolicies) Validate() error

Validate - Validates network container request policies

type NetworkInterface

type NetworkInterface struct {
	Name      string
	IPAddress string
}

NetworkInterface specifies the information that can be used to uniquely identify an interface.

type NetworkInterfaceInfo

type NetworkInterfaceInfo struct {
	NICType    NICType
	MACAddress string
}

type NmAgentSupportedApisRequest

type NmAgentSupportedApisRequest struct {
	GetNmAgentSupportedApisURL string
}

type NmAgentSupportedApisResponse

type NmAgentSupportedApisResponse struct {
	Response      Response
	SupportedApis []string
}

type NodeConfiguration

type NodeConfiguration struct {
	NodeIP     string
	NodeID     string
	NodeSubnet Subnet
}

NodeConfiguration describes confguration for a node in overlay network.

type NodeInfoResponse

type NodeInfoResponse struct {
	NetworkContainers []CreateNetworkContainerRequest
}

NodeInfoResponse - Struct to hold the node info response.

type NodeRegisterRequest

type NodeRegisterRequest struct {
	NumCores             int
	NmAgentSupportedApis []string
}

NodeRegisterRequest - Struct to hold the node register request.

type NumOfCPUCoresResponse

type NumOfCPUCoresResponse struct {
	Response      Response
	NumOfCPUCores int
}

NumOfCPUCoresResponse describes num of cpu cores present on host.

type OptionMap

type OptionMap map[string]interface{}

OptionMap describes generic options that can be passed to CNS.

type OverlayConfiguration

type OverlayConfiguration struct {
	NodeCount     int
	LocalNodeIP   string
	OverlaySubent Subnet
	NodeConfig    []NodeConfiguration
}

OverlayConfiguration describes configuration for all the nodes that are part of overlay.

type PodInfo

type PodInfo interface {
	// InfraContainerID the CRI infra container for the pod namespace.
	InfraContainerID() string
	// InterfaceID a short hash of the infra container and the primary network
	// interface of the pod net ns.
	InterfaceID() string
	// Key is a unique string representation of the PodInfo.
	Key() string
	// Name is the orchestrator pod name.
	Name() string
	// Namespace is the orchestrator pod namespace.
	Namespace() string
	// OrchestratorContext is a JSON KubernetesPodInfo
	OrchestratorContext() (json.RawMessage, error)
	// Equals implements a functional equals for PodInfos
	Equals(PodInfo) bool
	// String implements string for logging PodInfos
	String() string
	// SecondaryInterfacesExist returns true if there exist a secondary interface for this pod
	SecondaryInterfacesExist() bool
}

PodInfo represents the object that we are providing network for.

func NewPodInfo

func NewPodInfo(infraContainerID, interfaceID, name, namespace string) PodInfo

NewPodInfo returns an implementation of PodInfo that returns the passed configuration for their namesake functions.

func NewPodInfoFromIPConfigsRequest

func NewPodInfoFromIPConfigsRequest(req IPConfigsRequest) (PodInfo, error)

NewPodInfoFromIPConfigsRequest builds and returns an implementation of PodInfo from the provided IPConfigsRequest.

func UnmarshalPodInfo

func UnmarshalPodInfo(b []byte) (PodInfo, error)

UnmarshalPodInfo wraps json.Unmarshal to return an implementation of PodInfo.

type PodInfoByIPProvider

type PodInfoByIPProvider interface {
	PodInfoByIP() (map[string]PodInfo, error)
}

PodInfoByIPProvider to be implemented by initializers which provide a map of PodInfos by IP.

type PodInfoByIPProviderFunc

type PodInfoByIPProviderFunc func() (map[string]PodInfo, error)

PodInfoByIPProviderFunc functional type which implements PodInfoByIPProvider. Allows one-off functional implementations of the PodInfoByIPProvider interface when a custom type definition is not necessary.

func (PodInfoByIPProviderFunc) PodInfoByIP

func (f PodInfoByIPProviderFunc) PodInfoByIP() (map[string]PodInfo, error)

PodInfoByIP implements PodInfoByIPProvider on PodInfByIPProviderFunc.

type PodIpInfo

type PodIpInfo struct {
	PodIPConfig                     IPSubnet
	NetworkContainerPrimaryIPConfig IPConfiguration
	HostPrimaryIPInfo               HostIPInfo
	HostSecondaryIPInfo             HostIPInfo
	// NICType defines whether NIC is InfraNIC or DelegatedVMNIC or BackendNIC
	NICType       NICType
	InterfaceName string
	// MacAddress of interface
	MacAddress string
	// SkipDefaultRoutes is true if default routes should not be added on interface
	SkipDefaultRoutes bool
	// Routes to configure on interface
	Routes []Route
	// AddInterfacesDataToPodInfo is set to true for SF SwiftV2 scenario
	AddInterfacesDataToPodInfo bool
}

type PostNetworkContainersRequest

type PostNetworkContainersRequest struct {
	CreateNetworkContainerRequests []CreateNetworkContainerRequest
}

PostNetworkContainersRequest specifies the request of creating all NCs that are sent from DNC.

func (*PostNetworkContainersRequest) Validate

func (req *PostNetworkContainersRequest) Validate() error

type PostNetworkContainersResponse

type PostNetworkContainersResponse struct {
	Response Response
}

PostNetworkContainersResponse specifies response of creating all NCs that are sent from DNC.

type PublishNetworkContainerRequest

type PublishNetworkContainerRequest struct {
	NetworkID                         string
	NetworkContainerID                string
	JoinNetworkURL                    string
	CreateNetworkContainerURL         string
	CreateNetworkContainerRequestBody []byte
}

PublishNetworkContainerRequest specifies request to publish network container via NMAgent.

func (PublishNetworkContainerRequest) String

type PublishNetworkContainerResponse

type PublishNetworkContainerResponse struct {
	Response            Response
	PublishErrorStr     string
	PublishStatusCode   int
	PublishResponseBody []byte
}

PublishNetworkContainerResponse specifies the response to publish network container request.

func (PublishNetworkContainerResponse) String

type ReleaseIPAddressRequest

type ReleaseIPAddressRequest struct {
	ReservationID string
}

ReleaseIPAddressRequest describes request to release an IP Address.

type ReserveIPAddressRequest

type ReserveIPAddressRequest struct {
	ReservationID string
}

ReserveIPAddressRequest describes request to reserve an IP Address

type ReserveIPAddressResponse

type ReserveIPAddressResponse struct {
	Response  Response
	IPAddress string
}

ReserveIPAddressResponse describes response to reserve an IP address.

type Response

type Response struct {
	ReturnCode types.ResponseCode
	Message    string
}

Response describes generic response from CNS.

type Route

type Route struct {
	IPAddress        string
	GatewayIPAddress string
	InterfaceToUse   string
}

Route describes an entry in routing table.

type SecondaryIPConfig

type SecondaryIPConfig struct {
	IPAddress string
	// NCVersion will help in determining whether IP is in pending programming or available when reconciling.
	NCVersion int
}

SecondaryIPConfig contains IP info of SecondaryIP

type Service

type Service struct {
	*common.Service
	EndpointType string
	Listener     *acn.Listener
}

Service defines Container Networking Service.

func NewService

func NewService(name, version, channelMode string, store store.KeyValueStore) (*Service, error)

NewService creates a new Service object.

func (*Service) Initialize

func (service *Service) Initialize(config *common.ServiceConfig) error

Initialize initializes the service and starts the listener.

func (*Service) ParseOptions

func (service *Service) ParseOptions(options OptionMap) OptionMap

ParseOptions returns generic options from a libnetwork request.

func (*Service) SendErrorResponse

func (service *Service) SendErrorResponse(w http.ResponseWriter, errMsg error)

SendErrorResponse sends and logs an error response.

func (*Service) StartListener

func (service *Service) StartListener(config *common.ServiceConfig) error

func (*Service) Uninitialize

func (service *Service) Uninitialize()

Uninitialize cleans up the plugin.

type SetEnvironmentRequest

type SetEnvironmentRequest struct {
	Location    string
	NetworkType string
}

SetEnvironmentRequest describes the Request to set the environment in CNS.

type SetOrchestratorTypeRequest

type SetOrchestratorTypeRequest struct {
	OrchestratorType string
	DncPartitionKey  string
	NodeID           string
}

SetOrchestratorTypeRequest specifies the orchestrator type for the node.

type Subnet

type Subnet struct {
	IPAddress    string
	PrefixLength int
}

Subnet contains the ip address and the number of bits in prefix.

type SubnetInfo

type SubnetInfo struct {
	AddressPrefix  string
	GatewayAddress string
	Policies       []json.RawMessage `json:",omitempty"`
}

SubnetInfo is assoicated with HNS network and represents a list of subnets available to the network

type UnpublishNetworkContainerRequest

type UnpublishNetworkContainerRequest struct {
	NetworkID                         string
	NetworkContainerID                string
	JoinNetworkURL                    string
	DeleteNetworkContainerURL         string
	DeleteNetworkContainerRequestBody []byte
}

UnpublishNetworkContainerRequest specifies request to unpublish network container via NMAgent.

func (UnpublishNetworkContainerRequest) String

type UnpublishNetworkContainerResponse

type UnpublishNetworkContainerResponse struct {
	Response              Response
	UnpublishErrorStr     string
	UnpublishStatusCode   int
	UnpublishResponseBody []byte
}

UnpublishNetworkContainerResponse specifies the response to unpublish network container request.

func (UnpublishNetworkContainerResponse) String

type ValidAclPolicySetting

type ValidAclPolicySetting struct {
	Protocols       string `json:","`
	Action          string `json:","`
	Direction       string `json:","`
	LocalAddresses  string `json:","`
	RemoteAddresses string `json:","`
	LocalPorts      string `json:","`
	RemotePorts     string `json:","`
	RuleType        string `json:","`
	Priority        uint16 `json:","`
}

ValidAclPolicySetting - Used to validate ACL policy

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL