Update Vendor
(*) github.com/Microsoft/hcsshim (*) golang.org/x/sys (*) github.com/x/cyrpto (*) github.com/sirupsen/logrus (*) github.com/Microsoft/go-winio (*) github.com/juju/errors (*) github.com/buger/jsonparser
This commit is contained in:
110
vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
generated
vendored
Normal file
110
vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
generated
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
package hns
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type namespaceRequest struct {
|
||||
IsDefault bool `json:",omitempty"`
|
||||
}
|
||||
|
||||
type namespaceEndpointRequest struct {
|
||||
ID string `json:"Id"`
|
||||
}
|
||||
|
||||
type NamespaceResource struct {
|
||||
Type string
|
||||
Data json.RawMessage
|
||||
}
|
||||
|
||||
type namespaceResourceRequest struct {
|
||||
Type string
|
||||
Data interface{}
|
||||
}
|
||||
|
||||
type Namespace struct {
|
||||
ID string
|
||||
IsDefault bool `json:",omitempty"`
|
||||
ResourceList []NamespaceResource `json:",omitempty"`
|
||||
}
|
||||
|
||||
func issueNamespaceRequest(id *string, method, subpath string, request interface{}) (*Namespace, error) {
|
||||
var err error
|
||||
hnspath := "/namespaces/"
|
||||
if id != nil {
|
||||
hnspath = path.Join(hnspath, *id)
|
||||
}
|
||||
if subpath != "" {
|
||||
hnspath = path.Join(hnspath, subpath)
|
||||
}
|
||||
var reqJSON []byte
|
||||
if request != nil {
|
||||
if reqJSON, err = json.Marshal(request); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
var ns Namespace
|
||||
err = hnsCall(method, hnspath, string(reqJSON), &ns)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "Element not found.") {
|
||||
return nil, os.ErrNotExist
|
||||
}
|
||||
return nil, fmt.Errorf("%s %s: %s", method, hnspath, err)
|
||||
}
|
||||
return &ns, err
|
||||
}
|
||||
|
||||
func CreateNamespace() (string, error) {
|
||||
req := namespaceRequest{}
|
||||
ns, err := issueNamespaceRequest(nil, "POST", "", &req)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return ns.ID, nil
|
||||
}
|
||||
|
||||
func RemoveNamespace(id string) error {
|
||||
_, err := issueNamespaceRequest(&id, "DELETE", "", nil)
|
||||
return err
|
||||
}
|
||||
|
||||
func GetNamespaceEndpoints(id string) ([]string, error) {
|
||||
ns, err := issueNamespaceRequest(&id, "GET", "", nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var endpoints []string
|
||||
for _, rsrc := range ns.ResourceList {
|
||||
if rsrc.Type == "Endpoint" {
|
||||
var endpoint namespaceEndpointRequest
|
||||
err = json.Unmarshal(rsrc.Data, &endpoint)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unmarshal endpoint: %s", err)
|
||||
}
|
||||
endpoints = append(endpoints, endpoint.ID)
|
||||
}
|
||||
}
|
||||
return endpoints, nil
|
||||
}
|
||||
|
||||
func AddNamespaceEndpoint(id string, endpointID string) error {
|
||||
resource := namespaceResourceRequest{
|
||||
Type: "Endpoint",
|
||||
Data: namespaceEndpointRequest{endpointID},
|
||||
}
|
||||
_, err := issueNamespaceRequest(&id, "POST", "addresource", &resource)
|
||||
return err
|
||||
}
|
||||
|
||||
func RemoveNamespaceEndpoint(id string, endpointID string) error {
|
||||
resource := namespaceResourceRequest{
|
||||
Type: "Endpoint",
|
||||
Data: namespaceEndpointRequest{endpointID},
|
||||
}
|
||||
_, err := issueNamespaceRequest(&id, "POST", "removeresource", &resource)
|
||||
return err
|
||||
}
|
Reference in New Issue
Block a user