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 }