mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 14:09:15 +00:00 
			
		
		
		
	Moves vendoring over to Go modules. Fixes issues found by Go Vet in Go 1.16 Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
		
			
				
	
	
		
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
| 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 {
 | |
| 	endpoint, err := GetHNSEndpointByID(endpointID)
 | |
| 	isAttached, err := endpoint.IsAttached(containerID)
 | |
| 	if isAttached {
 | |
| 		return err
 | |
| 	}
 | |
| 	return modifyNetworkEndpoint(containerID, endpointID, Add)
 | |
| }
 | |
| 
 | |
| // HotDetachEndpoint makes a HCS Call to detach the endpoint from the container
 | |
| func HotDetachEndpoint(containerID string, endpointID string) error {
 | |
| 	endpoint, err := GetHNSEndpointByID(endpointID)
 | |
| 	isAttached, err := endpoint.IsAttached(containerID)
 | |
| 	if !isAttached {
 | |
| 		return err
 | |
| 	}
 | |
| 	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)
 | |
| }
 |