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  }