github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/registryv1/namespaces.go (about) 1 package registryv1 2 3 import ( 4 "fmt" 5 6 "github.com/IBM-Cloud/bluemix-go/client" 7 "github.com/IBM-Cloud/bluemix-go/helpers" 8 "github.com/IBM-Cloud/bluemix-go/rest" 9 ) 10 11 // NamespaceTargetHeader ... 12 type NamespaceTargetHeader struct { 13 AccountID string 14 ResourceGroup string 15 } 16 17 //NamespaceInfo ... 18 type NamespaceInfo struct { 19 AccountID string `json:"account,omitempty"` 20 CreatedDate string `json:"created_date,omitempty"` 21 CRN string `json:"crn,omitempty"` 22 Name string `json:"name,omitempty"` 23 ResourceCreatedDate string `json:"resource_created_date,omitempty"` 24 ResourceGroup string `json:"resource_group,omitempty"` 25 UpdatedDate string `json:"updated_date,omitempty"` 26 } 27 28 //ToMap ... 29 func (c NamespaceTargetHeader) ToMap() map[string]string { 30 m := make(map[string]string, 1) 31 m[accountIDHeader] = c.AccountID 32 m[resourceGroupHeader] = c.ResourceGroup 33 return m 34 } 35 36 // Namespaces ... 37 type Namespaces interface { 38 GetNamespaces(target NamespaceTargetHeader) ([]string, error) 39 AddNamespace(namespace string, target NamespaceTargetHeader) (*PutNamespaceResponse, error) 40 DeleteNamespace(namespace string, target NamespaceTargetHeader) error 41 AssignNamespace(namespace string, target NamespaceTargetHeader) (*PutNamespaceResponse, error) 42 GetDetailedNamespaces(target NamespaceTargetHeader) ([]NamespaceInfo, error) 43 } 44 45 type namespaces struct { 46 client *client.Client 47 } 48 49 func newNamespaceAPI(c *client.Client) Namespaces { 50 return &namespaces{ 51 client: c, 52 } 53 } 54 55 // PutNamespaceResponse ... 56 type PutNamespaceResponse struct { 57 Namespace string `json:"namespace,omitempty"` 58 } 59 60 //Create ... 61 func (r *namespaces) GetNamespaces(target NamespaceTargetHeader) ([]string, error) { 62 63 var retVal []string 64 req := rest.GetRequest(helpers.GetFullURL(*r.client.Config.Endpoint, "/api/v1/namespaces")) 65 66 for key, value := range target.ToMap() { 67 req.Set(key, value) 68 } 69 70 _, err := r.client.SendRequest(req, &retVal) 71 if err != nil { 72 return nil, err 73 } 74 return retVal, err 75 } 76 func (r *namespaces) GetDetailedNamespaces(target NamespaceTargetHeader) ([]NamespaceInfo, error) { 77 var retVal []NamespaceInfo 78 req := rest.GetRequest(helpers.GetFullURL(*r.client.Config.Endpoint, "/api/v1/namespaces/details")) 79 80 for key, value := range target.ToMap() { 81 req.Set(key, value) 82 } 83 84 _, err := r.client.SendRequest(req, &retVal) 85 if err != nil { 86 return nil, err 87 } 88 return retVal, err 89 } 90 91 //Add ... 92 func (r *namespaces) AddNamespace(namespace string, target NamespaceTargetHeader) (*PutNamespaceResponse, error) { 93 94 var retVal PutNamespaceResponse 95 req := rest.PutRequest(helpers.GetFullURL(*r.client.Config.Endpoint, fmt.Sprintf("/api/v1/namespaces/%s", namespace))) 96 97 for key, value := range target.ToMap() { 98 req.Set(key, value) 99 } 100 101 _, err := r.client.SendRequest(req, &retVal) 102 if err != nil { 103 return nil, err 104 } 105 return &retVal, err 106 } 107 func (r *namespaces) AssignNamespace(namespace string, target NamespaceTargetHeader) (*PutNamespaceResponse, error) { 108 109 var retVal PutNamespaceResponse 110 req := rest.PatchRequest(helpers.GetFullURL(*r.client.Config.Endpoint, fmt.Sprintf("/api/v1/namespaces/%s", namespace))) 111 112 for key, value := range target.ToMap() { 113 req.Set(key, value) 114 } 115 116 _, err := r.client.SendRequest(req, &retVal) 117 if err != nil { 118 return nil, err 119 } 120 return &retVal, err 121 } 122 123 //Delete... 124 func (r *namespaces) DeleteNamespace(namespace string, target NamespaceTargetHeader) error { 125 126 req := rest.DeleteRequest(helpers.GetFullURL(*r.client.Config.Endpoint, fmt.Sprintf("/api/v1/namespaces/%s", namespace))) 127 128 for key, value := range target.ToMap() { 129 req.Set(key, value) 130 } 131 132 _, err := r.client.SendRequest(req, nil) 133 return err 134 }