| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| package cloudstack |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| "net/url" |
| "strconv" |
| "strings" |
| ) |
| |
| type ObjectStoreServiceIface interface { |
| CreateBucket(p *CreateBucketParams) (*CreateBucketResponse, error) |
| NewCreateBucketParams(name string, objectstorageid string, quota int) *CreateBucketParams |
| DeleteBucket(p *DeleteBucketParams) (*DeleteBucketResponse, error) |
| NewDeleteBucketParams(id string) *DeleteBucketParams |
| UpdateBucket(p *UpdateBucketParams) (*UpdateBucketResponse, error) |
| NewUpdateBucketParams(id string) *UpdateBucketParams |
| ListBuckets(p *ListBucketsParams) (*ListBucketsResponse, error) |
| NewListBucketsParams() *ListBucketsParams |
| GetBucketID(name string, opts ...OptionFunc) (string, int, error) |
| GetBucketByName(name string, opts ...OptionFunc) (*Bucket, int, error) |
| GetBucketByID(id string, opts ...OptionFunc) (*Bucket, int, error) |
| } |
| |
| type CreateBucketParams struct { |
| p map[string]interface{} |
| } |
| |
| func (p *CreateBucketParams) toURLValues() url.Values { |
| u := url.Values{} |
| if p.p == nil { |
| return u |
| } |
| if v, found := p.p["account"]; found { |
| u.Set("account", v.(string)) |
| } |
| if v, found := p.p["domainid"]; found { |
| u.Set("domainid", v.(string)) |
| } |
| if v, found := p.p["encryption"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("encryption", vv) |
| } |
| if v, found := p.p["name"]; found { |
| u.Set("name", v.(string)) |
| } |
| if v, found := p.p["objectlocking"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("objectlocking", vv) |
| } |
| if v, found := p.p["objectstorageid"]; found { |
| u.Set("objectstorageid", v.(string)) |
| } |
| if v, found := p.p["policy"]; found { |
| u.Set("policy", v.(string)) |
| } |
| if v, found := p.p["projectid"]; found { |
| u.Set("projectid", v.(string)) |
| } |
| if v, found := p.p["quota"]; found { |
| vv := strconv.Itoa(v.(int)) |
| u.Set("quota", vv) |
| } |
| if v, found := p.p["versioning"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("versioning", vv) |
| } |
| return u |
| } |
| |
| func (p *CreateBucketParams) SetAccount(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["account"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetAccount() { |
| if p.p != nil && p.p["account"] != nil { |
| delete(p.p, "account") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetAccount() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["account"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetDomainid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["domainid"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetDomainid() { |
| if p.p != nil && p.p["domainid"] != nil { |
| delete(p.p, "domainid") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetDomainid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["domainid"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetEncryption(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["encryption"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetEncryption() { |
| if p.p != nil && p.p["encryption"] != nil { |
| delete(p.p, "encryption") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetEncryption() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["encryption"].(bool) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetName(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["name"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetName() { |
| if p.p != nil && p.p["name"] != nil { |
| delete(p.p, "name") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetName() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["name"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetObjectlocking(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["objectlocking"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetObjectlocking() { |
| if p.p != nil && p.p["objectlocking"] != nil { |
| delete(p.p, "objectlocking") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetObjectlocking() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["objectlocking"].(bool) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetObjectstorageid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["objectstorageid"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetObjectstorageid() { |
| if p.p != nil && p.p["objectstorageid"] != nil { |
| delete(p.p, "objectstorageid") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetObjectstorageid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["objectstorageid"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetPolicy(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["policy"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetPolicy() { |
| if p.p != nil && p.p["policy"] != nil { |
| delete(p.p, "policy") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetPolicy() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["policy"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetProjectid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["projectid"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetProjectid() { |
| if p.p != nil && p.p["projectid"] != nil { |
| delete(p.p, "projectid") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetProjectid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["projectid"].(string) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetQuota(v int) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["quota"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetQuota() { |
| if p.p != nil && p.p["quota"] != nil { |
| delete(p.p, "quota") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetQuota() (int, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["quota"].(int) |
| return value, ok |
| } |
| |
| func (p *CreateBucketParams) SetVersioning(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["versioning"] = v |
| } |
| |
| func (p *CreateBucketParams) ResetVersioning() { |
| if p.p != nil && p.p["versioning"] != nil { |
| delete(p.p, "versioning") |
| } |
| } |
| |
| func (p *CreateBucketParams) GetVersioning() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["versioning"].(bool) |
| return value, ok |
| } |
| |
| // You should always use this function to get a new CreateBucketParams instance, |
| // as then you are sure you have configured all required params |
| func (s *ObjectStoreService) NewCreateBucketParams(name string, objectstorageid string, quota int) *CreateBucketParams { |
| p := &CreateBucketParams{} |
| p.p = make(map[string]interface{}) |
| p.p["name"] = name |
| p.p["objectstorageid"] = objectstorageid |
| p.p["quota"] = quota |
| return p |
| } |
| |
| // Creates a bucket in the specified object storage pool. |
| func (s *ObjectStoreService) CreateBucket(p *CreateBucketParams) (*CreateBucketResponse, error) { |
| resp, err := s.cs.newPostRequest("createBucket", p.toURLValues()) |
| if err != nil { |
| return nil, err |
| } |
| |
| var r CreateBucketResponse |
| if err := json.Unmarshal(resp, &r); err != nil { |
| return nil, err |
| } |
| |
| // If we have a async client, we need to wait for the async result |
| if s.cs.async { |
| b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout) |
| if err != nil { |
| if err == AsyncTimeoutErr { |
| return &r, err |
| } |
| return nil, err |
| } |
| |
| b, err = getRawValue(b) |
| if err != nil { |
| return nil, err |
| } |
| |
| if err := json.Unmarshal(b, &r); err != nil { |
| return nil, err |
| } |
| } |
| |
| return &r, nil |
| } |
| |
| type CreateBucketResponse struct { |
| Accesskey string `json:"accesskey"` |
| Account string `json:"account"` |
| Created string `json:"created"` |
| Domain string `json:"domain"` |
| Domainid string `json:"domainid"` |
| Domainpath string `json:"domainpath"` |
| Encryption bool `json:"encryption"` |
| Hasannotations bool `json:"hasannotations"` |
| Id string `json:"id"` |
| JobID string `json:"jobid"` |
| Jobstatus int `json:"jobstatus"` |
| Name string `json:"name"` |
| Objectlocking bool `json:"objectlocking"` |
| Objectstorageid string `json:"objectstorageid"` |
| Objectstore string `json:"objectstore"` |
| Policy string `json:"policy"` |
| Project string `json:"project"` |
| Projectid string `json:"projectid"` |
| Provider string `json:"provider"` |
| Quota int `json:"quota"` |
| Size int64 `json:"size"` |
| State string `json:"state"` |
| Tags []Tags `json:"tags"` |
| Url string `json:"url"` |
| Usersecretkey string `json:"usersecretkey"` |
| Versioning bool `json:"versioning"` |
| } |
| |
| type DeleteBucketParams struct { |
| p map[string]interface{} |
| } |
| |
| func (p *DeleteBucketParams) toURLValues() url.Values { |
| u := url.Values{} |
| if p.p == nil { |
| return u |
| } |
| if v, found := p.p["id"]; found { |
| u.Set("id", v.(string)) |
| } |
| return u |
| } |
| |
| func (p *DeleteBucketParams) SetId(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["id"] = v |
| } |
| |
| func (p *DeleteBucketParams) ResetId() { |
| if p.p != nil && p.p["id"] != nil { |
| delete(p.p, "id") |
| } |
| } |
| |
| func (p *DeleteBucketParams) GetId() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["id"].(string) |
| return value, ok |
| } |
| |
| // You should always use this function to get a new DeleteBucketParams instance, |
| // as then you are sure you have configured all required params |
| func (s *ObjectStoreService) NewDeleteBucketParams(id string) *DeleteBucketParams { |
| p := &DeleteBucketParams{} |
| p.p = make(map[string]interface{}) |
| p.p["id"] = id |
| return p |
| } |
| |
| // Deletes an empty Bucket. |
| func (s *ObjectStoreService) DeleteBucket(p *DeleteBucketParams) (*DeleteBucketResponse, error) { |
| resp, err := s.cs.newPostRequest("deleteBucket", p.toURLValues()) |
| if err != nil { |
| return nil, err |
| } |
| |
| var r DeleteBucketResponse |
| if err := json.Unmarshal(resp, &r); err != nil { |
| return nil, err |
| } |
| |
| return &r, nil |
| } |
| |
| type DeleteBucketResponse struct { |
| Displaytext string `json:"displaytext"` |
| JobID string `json:"jobid"` |
| Jobstatus int `json:"jobstatus"` |
| Success bool `json:"success"` |
| } |
| |
| func (r *DeleteBucketResponse) UnmarshalJSON(b []byte) error { |
| var m map[string]interface{} |
| err := json.Unmarshal(b, &m) |
| if err != nil { |
| return err |
| } |
| |
| if success, ok := m["success"].(string); ok { |
| m["success"] = success == "true" |
| b, err = json.Marshal(m) |
| if err != nil { |
| return err |
| } |
| } |
| |
| if ostypeid, ok := m["ostypeid"].(float64); ok { |
| m["ostypeid"] = strconv.Itoa(int(ostypeid)) |
| b, err = json.Marshal(m) |
| if err != nil { |
| return err |
| } |
| } |
| |
| type alias DeleteBucketResponse |
| return json.Unmarshal(b, (*alias)(r)) |
| } |
| |
| type UpdateBucketParams struct { |
| p map[string]interface{} |
| } |
| |
| func (p *UpdateBucketParams) toURLValues() url.Values { |
| u := url.Values{} |
| if p.p == nil { |
| return u |
| } |
| if v, found := p.p["encryption"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("encryption", vv) |
| } |
| if v, found := p.p["id"]; found { |
| u.Set("id", v.(string)) |
| } |
| if v, found := p.p["policy"]; found { |
| u.Set("policy", v.(string)) |
| } |
| if v, found := p.p["quota"]; found { |
| vv := strconv.Itoa(v.(int)) |
| u.Set("quota", vv) |
| } |
| if v, found := p.p["versioning"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("versioning", vv) |
| } |
| return u |
| } |
| |
| func (p *UpdateBucketParams) SetEncryption(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["encryption"] = v |
| } |
| |
| func (p *UpdateBucketParams) ResetEncryption() { |
| if p.p != nil && p.p["encryption"] != nil { |
| delete(p.p, "encryption") |
| } |
| } |
| |
| func (p *UpdateBucketParams) GetEncryption() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["encryption"].(bool) |
| return value, ok |
| } |
| |
| func (p *UpdateBucketParams) SetId(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["id"] = v |
| } |
| |
| func (p *UpdateBucketParams) ResetId() { |
| if p.p != nil && p.p["id"] != nil { |
| delete(p.p, "id") |
| } |
| } |
| |
| func (p *UpdateBucketParams) GetId() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["id"].(string) |
| return value, ok |
| } |
| |
| func (p *UpdateBucketParams) SetPolicy(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["policy"] = v |
| } |
| |
| func (p *UpdateBucketParams) ResetPolicy() { |
| if p.p != nil && p.p["policy"] != nil { |
| delete(p.p, "policy") |
| } |
| } |
| |
| func (p *UpdateBucketParams) GetPolicy() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["policy"].(string) |
| return value, ok |
| } |
| |
| func (p *UpdateBucketParams) SetQuota(v int) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["quota"] = v |
| } |
| |
| func (p *UpdateBucketParams) ResetQuota() { |
| if p.p != nil && p.p["quota"] != nil { |
| delete(p.p, "quota") |
| } |
| } |
| |
| func (p *UpdateBucketParams) GetQuota() (int, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["quota"].(int) |
| return value, ok |
| } |
| |
| func (p *UpdateBucketParams) SetVersioning(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["versioning"] = v |
| } |
| |
| func (p *UpdateBucketParams) ResetVersioning() { |
| if p.p != nil && p.p["versioning"] != nil { |
| delete(p.p, "versioning") |
| } |
| } |
| |
| func (p *UpdateBucketParams) GetVersioning() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["versioning"].(bool) |
| return value, ok |
| } |
| |
| // You should always use this function to get a new UpdateBucketParams instance, |
| // as then you are sure you have configured all required params |
| func (s *ObjectStoreService) NewUpdateBucketParams(id string) *UpdateBucketParams { |
| p := &UpdateBucketParams{} |
| p.p = make(map[string]interface{}) |
| p.p["id"] = id |
| return p |
| } |
| |
| // Updates Bucket properties |
| func (s *ObjectStoreService) UpdateBucket(p *UpdateBucketParams) (*UpdateBucketResponse, error) { |
| resp, err := s.cs.newPostRequest("updateBucket", p.toURLValues()) |
| if err != nil { |
| return nil, err |
| } |
| |
| var r UpdateBucketResponse |
| if err := json.Unmarshal(resp, &r); err != nil { |
| return nil, err |
| } |
| |
| return &r, nil |
| } |
| |
| type UpdateBucketResponse struct { |
| Displaytext string `json:"displaytext"` |
| JobID string `json:"jobid"` |
| Jobstatus int `json:"jobstatus"` |
| Success bool `json:"success"` |
| } |
| |
| func (r *UpdateBucketResponse) UnmarshalJSON(b []byte) error { |
| var m map[string]interface{} |
| err := json.Unmarshal(b, &m) |
| if err != nil { |
| return err |
| } |
| |
| if success, ok := m["success"].(string); ok { |
| m["success"] = success == "true" |
| b, err = json.Marshal(m) |
| if err != nil { |
| return err |
| } |
| } |
| |
| if ostypeid, ok := m["ostypeid"].(float64); ok { |
| m["ostypeid"] = strconv.Itoa(int(ostypeid)) |
| b, err = json.Marshal(m) |
| if err != nil { |
| return err |
| } |
| } |
| |
| type alias UpdateBucketResponse |
| return json.Unmarshal(b, (*alias)(r)) |
| } |
| |
| type ListBucketsParams struct { |
| p map[string]interface{} |
| } |
| |
| func (p *ListBucketsParams) toURLValues() url.Values { |
| u := url.Values{} |
| if p.p == nil { |
| return u |
| } |
| if v, found := p.p["account"]; found { |
| u.Set("account", v.(string)) |
| } |
| if v, found := p.p["domainid"]; found { |
| u.Set("domainid", v.(string)) |
| } |
| if v, found := p.p["id"]; found { |
| u.Set("id", v.(string)) |
| } |
| if v, found := p.p["ids"]; found { |
| vv := strings.Join(v.([]string), ",") |
| u.Set("ids", vv) |
| } |
| if v, found := p.p["isrecursive"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("isrecursive", vv) |
| } |
| if v, found := p.p["keyword"]; found { |
| u.Set("keyword", v.(string)) |
| } |
| if v, found := p.p["listall"]; found { |
| vv := strconv.FormatBool(v.(bool)) |
| u.Set("listall", vv) |
| } |
| if v, found := p.p["name"]; found { |
| u.Set("name", v.(string)) |
| } |
| if v, found := p.p["objectstorageid"]; found { |
| u.Set("objectstorageid", v.(string)) |
| } |
| if v, found := p.p["page"]; found { |
| vv := strconv.Itoa(v.(int)) |
| u.Set("page", vv) |
| } |
| if v, found := p.p["pagesize"]; found { |
| vv := strconv.Itoa(v.(int)) |
| u.Set("pagesize", vv) |
| } |
| if v, found := p.p["projectid"]; found { |
| u.Set("projectid", v.(string)) |
| } |
| if v, found := p.p["tags"]; found { |
| m := v.(map[string]string) |
| for i, k := range getSortedKeysFromMap(m) { |
| u.Set(fmt.Sprintf("tags[%d].key", i), k) |
| u.Set(fmt.Sprintf("tags[%d].value", i), m[k]) |
| } |
| } |
| return u |
| } |
| |
| func (p *ListBucketsParams) SetAccount(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["account"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetAccount() { |
| if p.p != nil && p.p["account"] != nil { |
| delete(p.p, "account") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetAccount() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["account"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetDomainid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["domainid"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetDomainid() { |
| if p.p != nil && p.p["domainid"] != nil { |
| delete(p.p, "domainid") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetDomainid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["domainid"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetId(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["id"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetId() { |
| if p.p != nil && p.p["id"] != nil { |
| delete(p.p, "id") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetId() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["id"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetIds(v []string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["ids"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetIds() { |
| if p.p != nil && p.p["ids"] != nil { |
| delete(p.p, "ids") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetIds() ([]string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["ids"].([]string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetIsrecursive(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["isrecursive"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetIsrecursive() { |
| if p.p != nil && p.p["isrecursive"] != nil { |
| delete(p.p, "isrecursive") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetIsrecursive() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["isrecursive"].(bool) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetKeyword(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["keyword"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetKeyword() { |
| if p.p != nil && p.p["keyword"] != nil { |
| delete(p.p, "keyword") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetKeyword() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["keyword"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetListall(v bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["listall"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetListall() { |
| if p.p != nil && p.p["listall"] != nil { |
| delete(p.p, "listall") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetListall() (bool, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["listall"].(bool) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetName(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["name"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetName() { |
| if p.p != nil && p.p["name"] != nil { |
| delete(p.p, "name") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetName() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["name"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetObjectstorageid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["objectstorageid"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetObjectstorageid() { |
| if p.p != nil && p.p["objectstorageid"] != nil { |
| delete(p.p, "objectstorageid") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetObjectstorageid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["objectstorageid"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetPage(v int) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["page"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetPage() { |
| if p.p != nil && p.p["page"] != nil { |
| delete(p.p, "page") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetPage() (int, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["page"].(int) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetPagesize(v int) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["pagesize"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetPagesize() { |
| if p.p != nil && p.p["pagesize"] != nil { |
| delete(p.p, "pagesize") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetPagesize() (int, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["pagesize"].(int) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetProjectid(v string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["projectid"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetProjectid() { |
| if p.p != nil && p.p["projectid"] != nil { |
| delete(p.p, "projectid") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetProjectid() (string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["projectid"].(string) |
| return value, ok |
| } |
| |
| func (p *ListBucketsParams) SetTags(v map[string]string) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| p.p["tags"] = v |
| } |
| |
| func (p *ListBucketsParams) ResetTags() { |
| if p.p != nil && p.p["tags"] != nil { |
| delete(p.p, "tags") |
| } |
| } |
| |
| func (p *ListBucketsParams) GetTags() (map[string]string, bool) { |
| if p.p == nil { |
| p.p = make(map[string]interface{}) |
| } |
| value, ok := p.p["tags"].(map[string]string) |
| return value, ok |
| } |
| |
| // You should always use this function to get a new ListBucketsParams instance, |
| // as then you are sure you have configured all required params |
| func (s *ObjectStoreService) NewListBucketsParams() *ListBucketsParams { |
| p := &ListBucketsParams{} |
| p.p = make(map[string]interface{}) |
| return p |
| } |
| |
| // This is a courtesy helper function, which in some cases may not work as expected! |
| func (s *ObjectStoreService) GetBucketID(name string, opts ...OptionFunc) (string, int, error) { |
| p := &ListBucketsParams{} |
| p.p = make(map[string]interface{}) |
| |
| p.p["name"] = name |
| |
| for _, fn := range append(s.cs.options, opts...) { |
| if err := fn(s.cs, p); err != nil { |
| return "", -1, err |
| } |
| } |
| |
| l, err := s.ListBuckets(p) |
| if err != nil { |
| return "", -1, err |
| } |
| |
| if l.Count == 0 { |
| return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l) |
| } |
| |
| if l.Count == 1 { |
| return l.Buckets[0].Id, l.Count, nil |
| } |
| |
| if l.Count > 1 { |
| for _, v := range l.Buckets { |
| if v.Name == name { |
| return v.Id, l.Count, nil |
| } |
| } |
| } |
| return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l) |
| } |
| |
| // This is a courtesy helper function, which in some cases may not work as expected! |
| func (s *ObjectStoreService) GetBucketByName(name string, opts ...OptionFunc) (*Bucket, int, error) { |
| id, count, err := s.GetBucketID(name, opts...) |
| if err != nil { |
| return nil, count, err |
| } |
| |
| r, count, err := s.GetBucketByID(id, opts...) |
| if err != nil { |
| return nil, count, err |
| } |
| return r, count, nil |
| } |
| |
| // This is a courtesy helper function, which in some cases may not work as expected! |
| func (s *ObjectStoreService) GetBucketByID(id string, opts ...OptionFunc) (*Bucket, int, error) { |
| p := &ListBucketsParams{} |
| p.p = make(map[string]interface{}) |
| |
| p.p["id"] = id |
| |
| for _, fn := range append(s.cs.options, opts...) { |
| if err := fn(s.cs, p); err != nil { |
| return nil, -1, err |
| } |
| } |
| |
| l, err := s.ListBuckets(p) |
| if err != nil { |
| if strings.Contains(err.Error(), fmt.Sprintf( |
| "Invalid parameter id value=%s due to incorrect long value format, "+ |
| "or entity does not exist", id)) { |
| return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l) |
| } |
| return nil, -1, err |
| } |
| |
| if l.Count == 0 { |
| return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l) |
| } |
| |
| if l.Count == 1 { |
| return l.Buckets[0], l.Count, nil |
| } |
| return nil, l.Count, fmt.Errorf("There is more then one result for Bucket UUID: %s!", id) |
| } |
| |
| // Lists all Buckets. |
| func (s *ObjectStoreService) ListBuckets(p *ListBucketsParams) (*ListBucketsResponse, error) { |
| resp, err := s.cs.newRequest("listBuckets", p.toURLValues()) |
| if err != nil { |
| return nil, err |
| } |
| |
| var r ListBucketsResponse |
| if err := json.Unmarshal(resp, &r); err != nil { |
| return nil, err |
| } |
| |
| return &r, nil |
| } |
| |
| type ListBucketsResponse struct { |
| Count int `json:"count"` |
| Buckets []*Bucket `json:"bucket"` |
| } |
| |
| type Bucket struct { |
| Accesskey string `json:"accesskey"` |
| Account string `json:"account"` |
| Created string `json:"created"` |
| Domain string `json:"domain"` |
| Domainid string `json:"domainid"` |
| Domainpath string `json:"domainpath"` |
| Encryption bool `json:"encryption"` |
| Hasannotations bool `json:"hasannotations"` |
| Id string `json:"id"` |
| JobID string `json:"jobid"` |
| Jobstatus int `json:"jobstatus"` |
| Name string `json:"name"` |
| Objectlocking bool `json:"objectlocking"` |
| Objectstorageid string `json:"objectstorageid"` |
| Objectstore string `json:"objectstore"` |
| Policy string `json:"policy"` |
| Project string `json:"project"` |
| Projectid string `json:"projectid"` |
| Provider string `json:"provider"` |
| Quota int `json:"quota"` |
| Size int64 `json:"size"` |
| State string `json:"state"` |
| Tags []Tags `json:"tags"` |
| Url string `json:"url"` |
| Usersecretkey string `json:"usersecretkey"` |
| Versioning bool `json:"versioning"` |
| } |