12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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)
- }
|