github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/modelarts/v1/notebook/requests.go (about)

     1  package notebook
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/chnsz/golangsdk"
     7  	"github.com/chnsz/golangsdk/pagination"
     8  )
     9  
    10  type CreateOpts struct {
    11  	Name        string         `json:"name" required:"true"`
    12  	Flavor      string         `json:"flavor" required:"true"`
    13  	ImageId     string         `json:"image_id" required:"true"`
    14  	Volume      VolumeReq      `json:"volume" required:"true"`
    15  	Description string         `json:"description,omitempty"`
    16  	Duration    *int           `json:"duration,omitempty"`
    17  	Endpoints   []EndpointsReq `json:"endpoints,omitempty"`
    18  	Feature     string         `json:"feature,omitempty"`
    19  	PoolId      string         `json:"pool_id,omitempty"`
    20  	WorkspaceId string         `json:"workspace_id,omitempty"`
    21  }
    22  
    23  type EndpointsReq struct {
    24  	AllowedAccessIps []string `json:"allowed_access_ips,omitempty"`
    25  	Service          string   `json:"service,omitempty"`
    26  	KeyPairNames     []string `json:"key_pair_names,omitempty"`
    27  }
    28  
    29  type VolumeReq struct {
    30  	Category  string `json:"category" required:"true"`
    31  	Ownership string `json:"ownership" required:"true"`
    32  	Capacity  *int   `json:"capacity,omitempty"`
    33  	Uri       string `json:"uri,omitempty"`
    34  }
    35  
    36  type ListOpts struct {
    37  	Feature     string `q:"feature,omitempty"`
    38  	Limit       int    `q:"limit,omitempty"`
    39  	Name        string `q:"name,omitempty"`
    40  	Offset      int    `q:"offset,omitempty"`
    41  	Owner       string `q:"owner,omitempty"`
    42  	SortDir     string `q:"sort_dir,omitempty"`
    43  	SortKey     string `q:"sort_key,omitempty"`
    44  	Status      string `q:"status,omitempty"`
    45  	WorkspaceId string `q:"workspaceId,omitempty"`
    46  }
    47  
    48  type UpdateOpts struct {
    49  	Description    *string        `json:"description,omitempty"`
    50  	Endpoints      []EndpointsReq `json:"endpoints,omitempty"`
    51  	Flavor         string         `json:"flavor,omitempty"`
    52  	ImageId        string         `json:"image_id,omitempty"`
    53  	Name           string         `json:"name,omitempty"`
    54  	StorageNewSize *int           `json:"storage_new_size,omitempty"`
    55  }
    56  
    57  type ListImageOpts struct {
    58  	Limit       int    `q:"limit,omitempty"`
    59  	Name        string `q:"name,omitempty"`
    60  	Namespace   string `q:"namespace,omitempty"`
    61  	Offset      int    `q:"offset,omitempty"`
    62  	SortDir     string `q:"sort_dir,omitempty"`
    63  	SortKey     string `q:"sort_key,omitempty"`
    64  	Type        string `q:"type,omitempty"`
    65  	WorkspaceId string `q:"workspace_id,omitempty"`
    66  }
    67  
    68  type MountStorageOpts struct {
    69  	Category  string `json:"category"`
    70  	MountPath string `json:"mount_path"`
    71  	Uri       string `json:"uri"`
    72  }
    73  
    74  var RequestOpts = golangsdk.RequestOpts{
    75  	MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"},
    76  }
    77  
    78  func Create(c *golangsdk.ServiceClient, opts CreateOpts) (*Notebook, error) {
    79  	b, err := golangsdk.BuildRequestBody(opts, "")
    80  	if err != nil {
    81  		return nil, err
    82  	}
    83  
    84  	var rst Notebook
    85  	_, err = c.Post(createURL(c), b, &rst, &golangsdk.RequestOpts{
    86  		MoreHeaders: RequestOpts.MoreHeaders,
    87  	})
    88  
    89  	return &rst, err
    90  }
    91  
    92  func Delete(c *golangsdk.ServiceClient, id string) (*Notebook, error) {
    93  	url := deleteURL(c, id)
    94  	var rst Notebook
    95  	_, err := c.DeleteWithResponse(url, &rst, &golangsdk.RequestOpts{
    96  		MoreHeaders: RequestOpts.MoreHeaders,
    97  	})
    98  
    99  	return &rst, err
   100  }
   101  
   102  func List(c *golangsdk.ServiceClient, opts ListOpts) (*ListNotebooks, error) {
   103  	url := listURL(c)
   104  	query, err := golangsdk.BuildQueryString(opts)
   105  	if err != nil {
   106  		return nil, err
   107  	}
   108  	url += query.String()
   109  
   110  	var rst ListNotebooks
   111  	_, err = c.Get(url, &rst, &golangsdk.RequestOpts{
   112  		MoreHeaders: RequestOpts.MoreHeaders,
   113  	})
   114  
   115  	return &rst, err
   116  }
   117  
   118  func Get(c *golangsdk.ServiceClient, id string) (*Notebook, error) {
   119  	var rst Notebook
   120  	_, err := c.Get(getURL(c, id), &rst, &golangsdk.RequestOpts{
   121  		MoreHeaders: RequestOpts.MoreHeaders,
   122  	})
   123  	return &rst, err
   124  }
   125  
   126  func Update(c *golangsdk.ServiceClient, id string, opts UpdateOpts) (*Notebook, error) {
   127  	b, err := golangsdk.BuildRequestBody(opts, "")
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  
   132  	var rst Notebook
   133  	_, err = c.Put(updateURL(c, id), b, &rst, &golangsdk.RequestOpts{
   134  		MoreHeaders: RequestOpts.MoreHeaders,
   135  	})
   136  
   137  	return &rst, err
   138  }
   139  
   140  func UpdateLease(c *golangsdk.ServiceClient, id string, duration int) (*Lease, error) {
   141  	url := updateLeaseURL(c, id)
   142  	url += fmt.Sprintf("?duration=%d", duration)
   143  	var rst Lease
   144  	emptyBody := make(map[string]string)
   145  	_, err := c.Patch(url, emptyBody, &rst, &golangsdk.RequestOpts{
   146  		MoreHeaders: RequestOpts.MoreHeaders,
   147  	})
   148  
   149  	return &rst, err
   150  }
   151  
   152  func Start(c *golangsdk.ServiceClient, id string, duration int) (*Notebook, error) {
   153  	url := startURL(c, id)
   154  	url += fmt.Sprintf("?duration=%d", duration)
   155  
   156  	var rst Notebook
   157  	emptyBody := make(map[string]string)
   158  	_, err := c.Post(url, emptyBody, &rst, &golangsdk.RequestOpts{
   159  		MoreHeaders: RequestOpts.MoreHeaders,
   160  	})
   161  
   162  	return &rst, err
   163  }
   164  
   165  func Stop(c *golangsdk.ServiceClient, id string) (*Notebook, error) {
   166  	url := stopURL(c, id)
   167  	opts := make(map[string]interface{})
   168  	var rst Notebook
   169  
   170  	_, err := c.Post(url, opts, &rst, &golangsdk.RequestOpts{
   171  		MoreHeaders: RequestOpts.MoreHeaders,
   172  	})
   173  
   174  	return &rst, err
   175  }
   176  
   177  func ListImages(c *golangsdk.ServiceClient, opts ListImageOpts) (*pagination.Pager, error) {
   178  	url := imagesURL(c)
   179  	query, err := golangsdk.BuildQueryString(opts)
   180  	if err != nil {
   181  		return nil, err
   182  	}
   183  	url += query.String()
   184  
   185  	page := pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page {
   186  		p := ImagePage{pagination.OffsetPageBase{PageResult: r}}
   187  		return p
   188  	})
   189  
   190  	return &page, nil
   191  }
   192  
   193  func ListSwitchableFlavors(c *golangsdk.ServiceClient, id string) (*flavorResp, error) {
   194  	url := switchableFlavorsURL(c, id)
   195  
   196  	var rst flavorResp
   197  	_, err := c.Get(url, &rst, &golangsdk.RequestOpts{
   198  		MoreHeaders: RequestOpts.MoreHeaders,
   199  	})
   200  
   201  	return &rst, err
   202  }
   203  
   204  func Mount(c *golangsdk.ServiceClient, id string, opts MountStorageOpts) (*MountStorage, error) {
   205  	b, err := golangsdk.BuildRequestBody(opts, "")
   206  	if err != nil {
   207  		return nil, err
   208  	}
   209  
   210  	var rst MountStorage
   211  	_, err = c.Post(mountURL(c, id), b, &rst, &golangsdk.RequestOpts{
   212  		MoreHeaders: RequestOpts.MoreHeaders,
   213  	})
   214  
   215  	return &rst, err
   216  }
   217  
   218  func GetMount(c *golangsdk.ServiceClient, id, storageId string) (*MountStorage, error) {
   219  	var rst MountStorage
   220  	_, err := c.Get(mountDetailURL(c, id, storageId), &rst, &golangsdk.RequestOpts{
   221  		MoreHeaders: RequestOpts.MoreHeaders,
   222  	})
   223  	return &rst, err
   224  }
   225  
   226  func DeleteMount(c *golangsdk.ServiceClient, id, storageId string) (*MountStorage, error) {
   227  	url := mountDetailURL(c, id, storageId)
   228  	var rst MountStorage
   229  	_, err := c.DeleteWithResponse(url, &rst, &golangsdk.RequestOpts{
   230  		MoreHeaders: RequestOpts.MoreHeaders,
   231  	})
   232  
   233  	return &rst, err
   234  }
   235  
   236  func ListMounts(c *golangsdk.ServiceClient, id string) (*MountStorageListResp, error) {
   237  	var rst MountStorageListResp
   238  	_, err := c.Get(mountURL(c, id), &rst, &golangsdk.RequestOpts{
   239  		MoreHeaders: RequestOpts.MoreHeaders,
   240  	})
   241  
   242  	return &rst, err
   243  }