191 lines
5.7 KiB
Go
191 lines
5.7 KiB
Go
package oneandone
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
type SharedStorage struct {
|
|
Identity
|
|
descField
|
|
Size int `json:"size"`
|
|
MinSizeAllowed int `json:"minimum_size_allowed"`
|
|
SizeUsed string `json:"size_used,omitempty"`
|
|
State string `json:"state,omitempty"`
|
|
CloudPanelId string `json:"cloudpanel_id,omitempty"`
|
|
SiteId string `json:"site_id,omitempty"`
|
|
CifsPath string `json:"cifs_path,omitempty"`
|
|
NfsPath string `json:"nfs_path,omitempty"`
|
|
CreationDate string `json:"creation_date,omitempty"`
|
|
Servers []SharedStorageServer `json:"servers,omitempty"`
|
|
Datacenter *Datacenter `json:"datacenter,omitempty"`
|
|
ApiPtr
|
|
}
|
|
|
|
type SharedStorageServer struct {
|
|
Id string `json:"id,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Rights string `json:"rights,omitempty"`
|
|
}
|
|
|
|
type SharedStorageRequest struct {
|
|
DatacenterId string `json:"datacenter_id,omitempty"`
|
|
Name string `json:"name,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
Size *int `json:"size"`
|
|
}
|
|
|
|
type SharedStorageAccess struct {
|
|
State string `json:"state,omitempty"`
|
|
KerberosContentFile string `json:"kerberos_content_file,omitempty"`
|
|
UserDomain string `json:"user_domain,omitempty"`
|
|
SiteId string `json:"site_id,omitempty"`
|
|
NeedsPasswordReset int `json:"needs_password_reset"`
|
|
}
|
|
|
|
// GET /shared_storages
|
|
func (api *API) ListSharedStorages(args ...interface{}) ([]SharedStorage, error) {
|
|
url, err := processQueryParams(createUrl(api, sharedStoragePathSegment), args...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := []SharedStorage{}
|
|
err = api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for index, _ := range result {
|
|
result[index].api = api
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /shared_storages
|
|
func (api *API) CreateSharedStorage(request *SharedStorageRequest) (string, *SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
url := createUrl(api, sharedStoragePathSegment)
|
|
err := api.Client.Post(url, request, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return "", nil, err
|
|
}
|
|
result.api = api
|
|
return result.Id, result, nil
|
|
}
|
|
|
|
// GET /shared_storages/{id}
|
|
func (api *API) GetSharedStorage(ss_id string) (*SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
url := createUrl(api, sharedStoragePathSegment, ss_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /shared_storages/{id}
|
|
func (api *API) DeleteSharedStorage(ss_id string) (*SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
url := createUrl(api, sharedStoragePathSegment, ss_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// PUT /shared_storages/{id}
|
|
func (api *API) UpdateSharedStorage(ss_id string, request *SharedStorageRequest) (*SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
url := createUrl(api, sharedStoragePathSegment, ss_id)
|
|
err := api.Client.Put(url, &request, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /shared_storages/{id}/servers
|
|
func (api *API) ListSharedStorageServers(st_id string) ([]SharedStorageServer, error) {
|
|
result := []SharedStorageServer{}
|
|
url := createUrl(api, sharedStoragePathSegment, st_id, "servers")
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// POST /shared_storages/{id}/servers
|
|
func (api *API) AddSharedStorageServers(st_id string, servers []SharedStorageServer) (*SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
req := struct {
|
|
Servers []SharedStorageServer `json:"servers"`
|
|
}{servers}
|
|
url := createUrl(api, sharedStoragePathSegment, st_id, "servers")
|
|
err := api.Client.Post(url, &req, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /shared_storages/{id}/servers/{id}
|
|
func (api *API) GetSharedStorageServer(st_id string, ser_id string) (*SharedStorageServer, error) {
|
|
result := new(SharedStorageServer)
|
|
url := createUrl(api, sharedStoragePathSegment, st_id, "servers", ser_id)
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// DELETE /shared_storages/{id}/servers/{id}
|
|
func (api *API) DeleteSharedStorageServer(st_id string, ser_id string) (*SharedStorage, error) {
|
|
result := new(SharedStorage)
|
|
url := createUrl(api, sharedStoragePathSegment, st_id, "servers", ser_id)
|
|
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result.api = api
|
|
return result, nil
|
|
}
|
|
|
|
// GET /shared_storages/access
|
|
func (api *API) GetSharedStorageCredentials() ([]SharedStorageAccess, error) {
|
|
result := []SharedStorageAccess{}
|
|
url := createUrl(api, sharedStoragePathSegment, "access")
|
|
err := api.Client.Get(url, &result, http.StatusOK)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
// PUT /shared_storages/access
|
|
func (api *API) UpdateSharedStorageCredentials(new_pass string) ([]SharedStorageAccess, error) {
|
|
result := []SharedStorageAccess{}
|
|
req := struct {
|
|
Password string `json:"password"`
|
|
}{new_pass}
|
|
url := createUrl(api, sharedStoragePathSegment, "access")
|
|
err := api.Client.Put(url, &req, &result, http.StatusAccepted)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (ss *SharedStorage) GetState() (string, error) {
|
|
in, err := ss.api.GetSharedStorage(ss.Id)
|
|
if in == nil {
|
|
return "", err
|
|
}
|
|
return in.State, err
|
|
}
|