packer-cn/vendor/github.com/1and1/oneandone-cloudserver-sdk-go/privatenetworks.go

150 lines
4.3 KiB
Go

package oneandone
import (
"net/http"
)
type PrivateNetwork struct {
Identity
descField
CloudpanelId string `json:"cloudpanel_id,omitempty"`
NetworkAddress string `json:"network_address,omitempty"`
SubnetMask string `json:"subnet_mask,omitempty"`
State string `json:"state,omitempty"`
SiteId string `json:"site_id,omitempty"`
CreationDate string `json:"creation_date,omitempty"`
Servers []Identity `json:"servers,omitempty"`
Datacenter *Datacenter `json:"datacenter,omitempty"`
ApiPtr
}
type PrivateNetworkRequest struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
DatacenterId string `json:"datacenter_id,omitempty"`
NetworkAddress string `json:"network_address,omitempty"`
SubnetMask string `json:"subnet_mask,omitempty"`
}
// GET /private_networks
func (api *API) ListPrivateNetworks(args ...interface{}) ([]PrivateNetwork, error) {
url, err := processQueryParams(createUrl(api, privateNetworkPathSegment), args...)
if err != nil {
return nil, err
}
result := []PrivateNetwork{}
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 /private_networks
func (api *API) CreatePrivateNetwork(request *PrivateNetworkRequest) (string, *PrivateNetwork, error) {
result := new(PrivateNetwork)
url := createUrl(api, privateNetworkPathSegment)
err := api.Client.Post(url, &request, &result, http.StatusAccepted)
if err != nil {
return "", nil, err
}
result.api = api
return result.Id, result, nil
}
// GET /private_networks/{id}
func (api *API) GetPrivateNetwork(pn_id string) (*PrivateNetwork, error) {
result := new(PrivateNetwork)
url := createUrl(api, privateNetworkPathSegment, pn_id)
err := api.Client.Get(url, &result, http.StatusOK)
if err != nil {
return nil, err
}
result.api = api
return result, nil
}
// PUT /private_networks/{id}
func (api *API) UpdatePrivateNetwork(pn_id string, request *PrivateNetworkRequest) (*PrivateNetwork, error) {
result := new(PrivateNetwork)
url := createUrl(api, privateNetworkPathSegment, pn_id)
err := api.Client.Put(url, &request, &result, http.StatusOK)
if err != nil {
return nil, err
}
result.api = api
return result, nil
}
// DELETE /private_networks/{id}
func (api *API) DeletePrivateNetwork(pn_id string) (*PrivateNetwork, error) {
result := new(PrivateNetwork)
url := createUrl(api, privateNetworkPathSegment, pn_id)
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
if err != nil {
return nil, err
}
result.api = api
return result, nil
}
// GET /private_networks/{id}/servers
func (api *API) ListPrivateNetworkServers(pn_id string) ([]Identity, error) {
result := []Identity{}
url := createUrl(api, privateNetworkPathSegment, pn_id, "servers")
err := api.Client.Get(url, &result, http.StatusOK)
if err != nil {
return nil, err
}
return result, nil
}
// POST /private_networks/{id}/servers
func (api *API) AttachPrivateNetworkServers(pn_id string, sids []string) (*PrivateNetwork, error) {
result := new(PrivateNetwork)
req := servers{
Servers: sids,
}
url := createUrl(api, privateNetworkPathSegment, pn_id, "servers")
err := api.Client.Post(url, &req, &result, http.StatusAccepted)
if err != nil {
return nil, err
}
result.api = api
return result, nil
}
// GET /private_networks/{id}/servers/{id}
func (api *API) GetPrivateNetworkServer(pn_id string, server_id string) (*Identity, error) {
result := new(Identity)
url := createUrl(api, privateNetworkPathSegment, pn_id, "servers", server_id)
err := api.Client.Get(url, &result, http.StatusOK)
if err != nil {
return nil, err
}
return result, nil
}
// DELETE /private_networks/{id}/servers/{id}
func (api *API) DetachPrivateNetworkServer(pn_id string, pns_id string) (*PrivateNetwork, error) {
result := new(PrivateNetwork)
url := createUrl(api, privateNetworkPathSegment, pn_id, "servers", pns_id)
err := api.Client.Delete(url, nil, &result, http.StatusAccepted)
if err != nil {
return nil, err
}
result.api = api
return result, nil
}
func (pn *PrivateNetwork) GetState() (string, error) {
in, err := pn.api.GetPrivateNetwork(pn.Id)
if in == nil {
return "", err
}
return in.State, err
}