1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package hcsshim
- import (
- "github.com/Microsoft/hcsshim/internal/hns"
- )
- // HNSEndpoint represents a network endpoint in HNS
- type HNSEndpoint = hns.HNSEndpoint
- // Namespace represents a Compartment.
- type Namespace = hns.Namespace
- //SystemType represents the type of the system on which actions are done
- type SystemType string
- // SystemType const
- const (
- ContainerType SystemType = "Container"
- VirtualMachineType SystemType = "VirtualMachine"
- HostType SystemType = "Host"
- )
- // 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 EndpointAttachDetachRequest = hns.EndpointAttachDetachRequest
- // EndpointResquestResponse is object to get the endpoint request response
- type EndpointResquestResponse = hns.EndpointResquestResponse
- // HNSEndpointRequest makes a HNS call to modify/query a network endpoint
- func HNSEndpointRequest(method, path, request string) (*HNSEndpoint, error) {
- return hns.HNSEndpointRequest(method, path, request)
- }
- // HNSListEndpointRequest makes a HNS call to query the list of available endpoints
- func HNSListEndpointRequest() ([]HNSEndpoint, error) {
- return hns.HNSListEndpointRequest()
- }
- // HotAttachEndpoint makes a HCS Call to attach the endpoint to the container
- func HotAttachEndpoint(containerID string, endpointID string) error {
- return modifyNetworkEndpoint(containerID, endpointID, Add)
- }
- // HotDetachEndpoint makes a HCS Call to detach the endpoint from the container
- func HotDetachEndpoint(containerID string, endpointID string) error {
- return modifyNetworkEndpoint(containerID, endpointID, Remove)
- }
- // ModifyContainer corresponding to the container id, by sending a request
- func modifyContainer(id string, request *ResourceModificationRequestResponse) error {
- container, err := OpenContainer(id)
- if err != nil {
- if IsNotExist(err) {
- return ErrComputeSystemDoesNotExist
- }
- return getInnerError(err)
- }
- defer container.Close()
- err = container.Modify(request)
- if err != nil {
- if IsNotSupported(err) {
- return ErrPlatformNotSupported
- }
- return getInnerError(err)
- }
- return nil
- }
- func modifyNetworkEndpoint(containerID string, endpointID string, request RequestType) error {
- requestMessage := &ResourceModificationRequestResponse{
- Resource: Network,
- Request: request,
- Data: endpointID,
- }
- err := modifyContainer(containerID, requestMessage)
- if err != nil {
- return err
- }
- return nil
- }
- // GetHNSEndpointByID get the Endpoint by ID
- func GetHNSEndpointByID(endpointID string) (*HNSEndpoint, error) {
- return hns.GetHNSEndpointByID(endpointID)
- }
- // GetHNSEndpointByName gets the endpoint filtered by Name
- func GetHNSEndpointByName(endpointName string) (*HNSEndpoint, error) {
- return hns.GetHNSEndpointByName(endpointName)
- }
|