Use the 1&1 Go Cloud Server SDK

Table of Contents

Introduction

Learn how to use the 1&1 Go SDK, which is a wrapper for the 1&1 Cloud Server API written in Go(lang). All operations against the API are performed over SSL and authenticated using your 1&1 API key. The Go library facilitates the access to the 1&1 Cloud Server API either within an instance running on 1&1 platform or directly across the Internet from any HTTPS-enabled application.

Requirements

  • A platform (such as a server) which can send an HTTPS request and receive an HTTPS response.
  • The 1&1 Go SDK installed and configured.

Authentication

Set the authentication token and create the API client:

token := oneandone.SetToken("82ee732b8d47e451be5c6ad5b7b56c81")
api := oneandone.New(token, oneandone.BaseUrl)

Operations

Servers

List all servers:

servers, err := api.ListServers()

Alternatively, use the method with query parameters.

servers, err := api.ListServers(page, per_page, sort, query, fields)

To paginate the list of servers received in the response use page and per_page parameters. Set per_page to the number of servers that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of servers sorted in expected order, pass a server property (e.g. "name") in sort parameter.

Use query parameter to search for a string in the response and return only the server instances that contain it.

To retrieve a collection of servers containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,description,hardware.ram") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single server:

server, err := api.GetServer(server_id)

List fixed-size server templates:

fiss, err := api.ListFixedInstanceSizes()

Retrieve information about a fixed-size server template:

fis, err := api.GetFixedInstanceSize(fis_id)

Retrieve information about a server's hardware:

hardware, err := api.GetServerHardware(server_id)

List a server's HDDs:

hdds, err := api.ListServerHdds(server_id)

Retrieve a single server HDD:

hdd, err := api.GetServerHdd(server_id, hdd_id)

Retrieve information about a server's image:

image, err := api.GetServerImage(server_id)

List a server's IPs:

ips, err := api.ListServerIps(server_id)

Retrieve information about a single server IP:

ip, err := api.GetServerIp(server_id, ip_id)

Retrieve information about a server's firewall policy:

firewall, err := api.GetServerIpFirewallPolicy(server_id, ip_id)

List all load balancers assigned to a server IP:

lbs, err := api.ListServerIpLoadBalancers(server_id, ip_id)

Retrieve information about a server's status:

status, err := api.GetServerStatus(server_id)

Retrieve information about the DVD loaded into the virtual DVD unit of a server:

dvd, err := api.GetServerDvd(server_id)

List a server's private networks:

pns, err := api.ListServerPrivateNetworks(server_id)

Retrieve information about a server's private network:

pn, err := api.GetServerPrivateNetwork(server_id, pn_id)

Retrieve information about a server's snapshot:

snapshot, err := api.GetServerSnapshot(server_id)

Create a server:

req := oneandone.ServerRequest {
    Name:        "Server Name",
    Description: "Server description.",
    ApplianceId: server_appliance_id,
    PowerOn:     true,
    Hardware:    oneandone.Hardware {
      Vcores:            1,
      CoresPerProcessor: 1,
      Ram:               2,
      Hdds: []oneandone.Hdd {
        oneandone.Hdd {
            Size:   100,
            IsMain: true,
        },
      },
    },
  }

server, err := api.CreateServer(&req)

Update a server:

server, err := api.RenameServer(server_id, new_name, new_desc)

Delete a server:

server, err := api.DeleteServer(server_id, keep_ips)

Set keep_ips parameter to true for keeping server IPs after deleting a server.

Update a server's hardware:

hardware := oneandone.Hardware {
        Vcores: 2,
        CoresPerProcessor: 1,
        Ram: 2,
    }

server, err := api.UpdateServerHardware(server_id, &hardware)

Add new hard disk(s) to a server:

hdds := oneandone.ServerHdds {
    Hdds: []oneandone.Hdd {
        {
          Size: 50,
          IsMain: false,
      },
    },
  }

server, err := api.AddServerHdds(server_id, &hdds)

Resize a server's hard disk:

server, err := api.ResizeServerHdd(server_id, hdd_id, new_size)

Remove a server's hard disk:

server, err := api.DeleteServerHdd(server_id, hdd_id)

Load a DVD into the virtual DVD unit of a server:

server, err := api.LoadServerDvd(server_id, dvd_id)

Unload a DVD from the virtual DVD unit of a server:

server, err := api.EjectServerDvd(server_id)

Reinstall a new image into a server:

server, err := api.ReinstallServerImage(server_id, image_id, password, fp_id)

Assign a new IP to a server:

server, err := api.AssignServerIp(server_id, ip_type)

Release an IP and optionally remove it from a server:

server, err := api.DeleteServerIp(server_id, ip_id, keep_ip)

Set keep_ip to true for releasing the IP without removing it.

Assign a new firewall policy to a server's IP:

server, err := api.AssignServerIpFirewallPolicy(server_id, ip_id, fp_id)

Remove a firewall policy from a server's IP:

server, err := api.UnassignServerIpFirewallPolicy(server_id, ip_id)

Assign a new load balancer to a server's IP:

server, err := api.AssignServerIpLoadBalancer(server_id, ip_id, lb_id)

Remove a load balancer from a server's IP:

server, err := api.UnassignServerIpLoadBalancer(server_id, ip_id, lb_id)

Start a server:

server, err := api.StartServer(server_id)

Reboot a server:

server, err := api.RebootServer(server_id, is_hardware)

Set is_hardware to true for HARDWARE method of rebooting.

Set is_hardware to false for SOFTWARE method of rebooting.

Shutdown a server:

server, err := api.ShutdownServer(server_id, is_hardware)

Set is_hardware to true for HARDWARE method of powering off.

Set is_hardware to false for SOFTWARE method of powering off.

Assign a private network to a server:

server, err := api.AssignServerPrivateNetwork(server_id, pn_id)

Remove a server's private network:

server, err := api.RemoveServerPrivateNetwork(server_id, pn_id)

Create a new server's snapshot:

server, err := api.CreateServerSnapshot(server_id)

Restore a server's snapshot:

server, err := api.RestoreServerSnapshot(server_id, snapshot_id)

Remove a server's snapshot:

server, err := api.DeleteServerSnapshot(server_id, snapshot_id);

Clone a server:

server, err := api.CloneServer(server_id, new_name)

Images

List all images:

images, err = api.ListImages()

Alternatively, use the method with query parameters.

images, err = api.ListImages(page, per_page, sort, query, fields)

To paginate the list of images received in the response, use page and per_page parameters. set per_page to the number of images that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of images sorted in expected order pass an image property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the elements that contain it.

To retrieve a collection of images containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,creation_date") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single image:

image, err = api.GetImage(image_id)

Create an image:

request := oneandone.ImageConfig {
    Name: image_name,
    Description: image_description,
    ServerId: server_id, 
    Frequency: image_frequenct,
    NumImages: number_of_images,
  }

image, err = api.CreateImage(&request)

All fields except Description are required. Frequency may be set to "ONCE", "DAILY" or "WEEKLY".

Update an image:

image, err = api.UpdateImage(image_id, new_name, new_description, new_frequenct)

If any of the parameters new_name, new_description or new_frequenct is set to an empty string, it is ignored in the request. Frequency may be set to "ONCE", "DAILY" or "WEEKLY".

Delete an image:

image, err = api.DeleteImage(image_id)

Shared Storages

List all shared storages:

ss, err := api.ListSharedStorages()

Alternatively, use the method with query parameters.

ss, err := api.ListSharedStorages(page, per_page, sort, query, fields)

To paginate the list of shared storages received in the response, use page and per_page parameters. Set per_page to the number of volumes that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of shared storages sorted in expected order, pass a volume property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the volume instances that contain it.

To retrieve a collection of shared storages containing only the requested fields pass a list of comma separated properties (e.g. "id,name,size,size_used") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a shared storage:

ss, err := api.GetSharedStorage(ss_id)

Create a shared storage:

request := oneandone.SharedStorageRequest {
    Name: test_ss_name, 
    Description: test_ss_desc,
    Size: oneandone.Int2Pointer(size),
  }

ss, err := api.CreateSharedStorage(&request)

Description is optional parameter.

Update a shared storage:

request := oneandone.SharedStorageRequest {
    Name: new_name, 
    Description: new_desc,
    Size: oneandone.Int2Pointer(new_size),
  }

ss, err := api.UpdateSharedStorage(ss_id, &request)

All request's parameters are optional.

Remove a shared storage:

ss, err := api.DeleteSharedStorage(ss_id)

List shared storage servers:

ss_servers, err := api.ListSharedStorageServers(ss_id)

Retrieve a shared storage server:

ss_server, err := api.GetSharedStorageServer(ss_id, server_id)

Add servers to a shared storage:

servers := []oneandone.SharedStorageServer {
    {
      Id: server_id,
      Rights: permissions,
    } ,
  }

ss, err := api.AddSharedStorageServers(ss_id, servers)

Rights may be set to R or RW string.

Remove a server from a shared storage:

ss, err := api.DeleteSharedStorageServer(ss_id, server_id)

Retrieve the credentials for accessing the shared storages:

ss_credentials, err := api.GetSharedStorageCredentials()

Change the password for accessing the shared storages:

ss_credentials, err := api.UpdateSharedStorageCredentials(new_password)

Firewall Policies

List firewall policies:

firewalls, err := api.ListFirewallPolicies()

Alternatively, use the method with query parameters.

firewalls, err := api.ListFirewallPolicies(page, per_page, sort, query, fields)

To paginate the list of firewall policies received in the response, use page and per_page parameters. Set per_page to the number of firewall policies that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of firewall policies sorted in expected order, pass a firewall policy property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the firewall policy instances that contain it.

To retrieve a collection of firewall policies containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,creation_date") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single firewall policy:

firewall, err := api.GetFirewallPolicy(fp_id)

Create a firewall policy:

request := oneandone.FirewallPolicyRequest {
    Name: fp_name, 
    Description: fp_desc,
    Rules: []oneandone.FirewallPolicyRule {
      {
        Protocol: protocol,
        PortFrom: port_from,
        PortTo: port_to,
        SourceIp: source_ip,
      },
    },
  }

firewall, err := api.CreateFirewallPolicy(&request)

SourceIp and Description are optional parameters.

Update a firewall policy:

firewall, err := api.UpdateFirewallPolicy(fp_id, fp_new_name, fp_new_description)

Passing an empty string in fp_new_name or fp_new_description skips updating the firewall policy name or description respectively.

Delete a firewall policy:

firewall, err := api.DeleteFirewallPolicy(fp_id)

List servers/IPs attached to a firewall policy:

server_ips, err := api.ListFirewallPolicyServerIps(fp_id)

Retrieve information about a server/IP assigned to a firewall policy:

server_ip, err := api.GetFirewallPolicyServerIp(fp_id, ip_id)

Add servers/IPs to a firewall policy:

firewall, err := api.AddFirewallPolicyServerIps(fp_id, ip_ids)

ip_ids is a slice of IP ID's.

Remove a server/IP from a firewall policy:

firewall, err := api.DeleteFirewallPolicyServerIp(fp_id, ip_id)

List rules of a firewall policy:

fp_rules, err := api.ListFirewallPolicyRules(fp_id)

Retrieve information about a rule of a firewall policy:

fp_rule, err := api.GetFirewallPolicyRule(fp_id, rule_id)

Adds new rules to a firewall policy:

fp_rules := []oneandone.FirewallPolicyRule {
    {
      Protocol: protocol1,
      PortFrom: port_from1,
      PortTo: port_to1,
      SourceIp: source_ip,
    },
    {
      Protocol: protocol2,
      PortFrom: port_from2,
      PortTo: port_to2,
    },
  }

firewall, err := api.AddFirewallPolicyRules(fp_id, fp_rules)

Remove a rule from a firewall policy:

firewall, err := api.DeleteFirewallPolicyRule(fp_id, rule_id)

Load Balancers

List load balancers:

loadbalancers, err := api.ListLoadBalancers()

Alternatively, use the method with query parameters.

loadbalancers, err := api.ListLoadBalancers(page, per_page, sort, query, fields)

To paginate the list of load balancers received in the response, use page and per_page parameters. Set per_page to the number of load balancers that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of load balancers sorted in expected order, pass a load balancer property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the load balancer instances that contain it.

To retrieve a collection of load balancers containing only the requested fields, pass a list of comma separated properties (e.g. "ip,name,method") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single load balancer:

loadbalancer, err := api.GetLoadBalancer(lb_id)

Create a load balancer:

request := oneandone.LoadBalancer {
    Name: lb_name, 
    Description: lb_description,
    Method: lb_method,
    Persistence: true_or_false,
    PersistenceTime: seconds1,
    HealthCheckTest: protocol1,
    HealthCheckInterval: seconds2,
    HealthCheckPath: health_check_path,
    HealthCheckPathParser: health_check_path_parser,
    Rules: []oneandone.LoadBalancerRule {
        {
          Protocol: protocol1,
          PortBalancer: lb_port,
          PortServer: server_port,
          Source: source_ip,
        },
    },
  }

loadbalancer, err := api.CreateLoadBalancer(&request)

Optional parameters are HealthCheckPath, HealthCheckPathParser, Source and Description. Load balancer Method must be set to "ROUND_ROBIN" or "LEAST_CONNECTIONS".

Update a load balancer:

request := oneandone.LoadBalancerUpdate {
    Name: new_name,
    Description: new_description,
    Persistence: oneandone.Bool2Pointer(true_or_false),
    PersistenceTime: oneandone.Int2Pointer(new_seconds1),
    HealthCheckTest: new_protocol,
    HealthCheckInterval: oneandone.Int2Pointer(new_seconds2),
    HealthCheckPath: new_path,
    HealthCheckPathParser: new_parser,
    Method: new_lb_method,
  }

loadbalancer, err := api.UpdateLoadBalancer(lb_id, &request)

All updatable fields are optional.

Delete a load balancer:

loadbalancer, err := api.DeleteLoadBalancer(lb_id)

List servers/IPs attached to a load balancer:

server_ips, err := api.ListLoadBalancerServerIps(lb_id)

Retrieve information about a server/IP assigned to a load balancer:

server_ip, err := api.GetLoadBalancerServerIp(lb_id, ip_id)

Add servers/IPs to a load balancer:

loadbalancer, err := api.AddLoadBalancerServerIps(lb_id, ip_ids)

ip_ids is a slice of IP ID's.

Remove a server/IP from a load balancer:

loadbalancer, err := api.DeleteLoadBalancerServerIp(lb_id, ip_id)

List rules of a load balancer:

lb_rules, err := api.ListLoadBalancerRules(lb_id)

Retrieve information about a rule of a load balancer:

lb_rule, err := api.GetLoadBalancerRule(lb_id, rule_id)

Add new rules to a load balancer:

lb_rules := []oneandone.LoadBalancerRule {
    {
      Protocol: protocol1,
      PortBalancer: lb_port1,
      PortServer: server_port1,
      Source: source_ip,
    },
    {
      Protocol: protocol2,
      PortBalancer: lb_port2,
      PortServer: server_port2,
    },
  }

loadbalancer, err := api.AddLoadBalancerRules(lb_id, lb_rules)

Remove a rule from a load balancer:

loadbalancer, err := api.DeleteLoadBalancerRule(lb_id, rule_id)

Public IPs

Retrieve a list of your public IPs:

public_ips, err := api.ListPublicIps()

Alternatively, use the method with query parameters.

public_ips, err := api.ListPublicIps(page, per_page, sort, query, fields)

To paginate the list of public IPs received in the response, use page and per_page parameters. Set per_page to the number of public IPs that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of public IPs sorted in expected order, pass a public IP property (e.g. "ip") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the public IP instances that contain it.

To retrieve a collection of public IPs containing only the requested fields, pass a list of comma separated properties (e.g. "id,ip,reverse_dns") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single public IP:

public_ip, err := api.GetPublicIp(ip_id)

Create a public IP:

public_ip, err := api.CreatePublicIp(ip_type, reverse_dns)

Both parameters are optional and may be left blank. ip_type may be set to "IPV4" or "IPV6". Presently, only IPV4 is supported.

Update the reverse DNS of a public IP:

public_ip, err := api.UpdatePublicIp(ip_id, reverse_dns)

If an empty string is passed in reverse_dns, it removes previous reverse dns of the public IP.

Remove a public IP:

public_ip, err := api.DeletePublicIp(ip_id)

Private Networks

List all private networks:

private_nets, err := api.ListPrivateNetworks()

Alternatively, use the method with query parameters.

private_nets, err := api.ListPrivateNetworks(page, per_page, sort, query, fields)

To paginate the list of private networks received in the response, use page and per_page parameters. Set per_page to the number of private networks that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of private networks sorted in expected order, pass a private network property (e.g. "-creation_date") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the private network instances that contain it.

To retrieve a collection of private networks containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,creation_date") in fields parameter.

If any of the parameters sort, query or fields is blank, it is ignored in the request.

Retrieve information about a private network:

private_net, err := api.GetPrivateNetwork(pn_id)

Create a new private network:

request := oneandone.PrivateNetworkRequest {
    Name: pn_name, 
    Description: pn_description,
    NetworkAddress: network_address,
    SubnetMask: subnet_mask,
  }

private_net, err := api.CreatePrivateNetwork(&request)

Private network Name is a required parameter.

Modify a private network:

request := oneandone.PrivateNetworkRequest {
    Name: new_pn_name, 
    Description: new_pn_description,
    NetworkAddress: new_network_address,
    SubnetMask: new_subnet_mask,
  }

private_net, err := api.UpdatePrivateNetwork(pn_id, &request)

All parameters in the request are optional.

Delete a private network:

private_net, err := api.DeletePrivateNetwork(pn_id)

List all servers attached to a private network:

servers, err = := api.ListPrivateNetworkServers(pn_id)

Retrieve a server attached to a private network:

server, err = := api.GetPrivateNetworkServer(pn_id, server_id)

Attach servers to a private network:

private_net, err := api.AttachPrivateNetworkServers(pn_id, server_ids)

server_ids is a slice of server ID's.

Note: Servers cannot be attached to a private network if they currently have a snapshot.

Remove a server from a private network:

private_net, err := api.DetachPrivateNetworkServer(pn_id, server_id)

Note: The server cannot be removed from a private network if it currently has a snapshot or it is powered on.

Monitoring Center

List all usages and alerts of monitoring servers:

server_usages, err := api.ListMonitoringServersUsages()

Alternatively, use the method with query parameters.

server_usages, err := api.ListMonitoringServersUsages(page, per_page, sort, query, fields)

To paginate the list of server usages received in the response, use page and per_page parameters. Set per_page to the number of server usages that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of server usages sorted in expected order, pass a server usage property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the usage instances that contain it.

To retrieve a collection of server usages containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,status.state") in fields parameter.

If any of the parameters sort, query or fields is blank, it is ignored in the request.

Retrieve the usages and alerts for a monitoring server:

server_usage, err := api.GetMonitoringServerUsage(server_id, period)

period may be set to "LAST_HOUR", "LAST_24H", "LAST_7D", "LAST_30D", "LAST_365D" or "CUSTOM". If period is set to "CUSTOM", the start_date and end_date parameters are required to be set in RFC 3339 date/time format (e.g. 2015-13-12T00:01:00Z).

server_usage, err := api.GetMonitoringServerUsage(server_id, period, start_date, end_date)

Monitoring Policies

List all monitoring policies:

mon_policies, err := api.ListMonitoringPolicies()

Alternatively, use the method with query parameters.

mon_policies, err := api.ListMonitoringPolicies(page, per_page, sort, query, fields)

To paginate the list of monitoring policies received in the response, use page and per_page parameters. Set per_page to the number of monitoring policies that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of monitoring policies sorted in expected order, pass a monitoring policy property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the monitoring policy instances that contain it.

To retrieve a collection of monitoring policies containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,creation_date") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single monitoring policy:

mon_policy, err := api.GetMonitoringPolicy(mp_id)

Create a monitoring policy:

request := oneandone.MonitoringPolicy {
    Name:  mp_name,
    Description: mp_desc,
    Email: mp_mail,
    Agent: true_or_false,
    Thresholds: &oneandone.MonitoringThreshold {
      Cpu: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
      },
      Ram: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
      },
      Disk: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
      },
      Transfer: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue  {
          Value: threshold_value,
          Alert: true_or_false,
        },
      },
      InternalPing: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: threshold_value,
          Alert: true_or_false,
        },
      },
    },
    Ports: []oneandone.MonitoringPort {
      {
        Protocol: protocol,
        Port: port,
        AlertIf: responding_or_not_responding,
        EmailNotification: true_or_false,
      },
    },
    Processes: []oneandone.MonitoringProcess {
      {
        Process: process_name,
        AlertIf: running_or_not_running,
        EmailNotification: true_or_false,
      },
    },
  }

mon_policy, err := api.CreateMonitoringPolicy(&request)

All fields, except Description, are required. AlertIf property accepts values "RESPONDING"/"NOT_RESPONDING" for ports, and "RUNNING"/"NOT_RUNNING" for processes.

Update a monitoring policy:

request := oneandone.MonitoringPolicy {
    Name:  new_mp_name,
    Description: new_mp_desc,
    Email: new_mp_mail,
    Thresholds: &oneandone.MonitoringThreshold {
      Cpu: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
      },
      Ram: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
      },
      Disk: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
      },
      Transfer: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue  {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
      },
      InternalPing: &oneandone.MonitoringLevel {
        Warning: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
        Critical: &oneandone.MonitoringValue {
          Value: new_threshold_value,
          Alert: true_or_false,
        },
      },
    },
  }

mon_policy, err := api.UpdateMonitoringPolicy(mp_id, &request)

All fields of the request are optional. When a threshold is specified in the request, the threshold fields are required.

Delete a monitoring policy:

mon_policy, err := api.DeleteMonitoringPolicy(mp_id)

List all ports of a monitoring policy:

mp_ports, err := api.ListMonitoringPolicyPorts(mp_id)

Retrieve information about a port of a monitoring policy:

mp_port, err := api.GetMonitoringPolicyPort(mp_id, port_id)

Add new ports to a monitoring policy:

mp_ports := []oneandone.MonitoringPort {
    {
      Protocol: protocol1,
      Port: port1,
      AlertIf: responding_or_not_responding,
      EmailNotification: true_or_false,
    },
    {
      Protocol: protocol2,
      Port: port2,
      AlertIf: responding_or_not_responding,
      EmailNotification: true_or_false,
    },
  }

mon_policy, err := api.AddMonitoringPolicyPorts(mp_id, mp_ports)

Port properties are mandatory.

Modify a port of a monitoring policy:

mp_port := oneandone.MonitoringPort {
    Protocol: protocol,
    Port: port,
    AlertIf: responding_or_not_responding,
    EmailNotification: true_or_false,
  }

mon_policy, err := api.ModifyMonitoringPolicyPort(mp_id, port_id, &mp_port)

Note: Protocol and Port cannot be changed.

Remove a port from a monitoring policy:

mon_policy, err := api.DeleteMonitoringPolicyPort(mp_id, port_id)

List the processes of a monitoring policy:

mp_processes, err := api.ListMonitoringPolicyProcesses(mp_id)

Retrieve information about a process of a monitoring policy:

mp_process, err := api.GetMonitoringPolicyProcess(mp_id, process_id)

Add new processes to a monitoring policy:

processes := []oneandone.MonitoringProcess {
    {
      Process: process_name1,
      AlertIf: running_or_not_running,
      EmailNotification: true_or_false,
    },
    {
      Process: process_name2,
      AlertIf: running_or_not_running,
      EmailNotification: true_or_false,
    },
  }

mon_policy, err := api.AddMonitoringPolicyProcesses(mp_id, processes)

All properties of the MonitoringProcess instance are required.

Modify a process of a monitoring policy:

process := oneandone.MonitoringProcess {
    Process: process_name,
    AlertIf: running_or_not_running,
    EmailNotification: true_or_false,
  }

mon_policy, err := api.ModifyMonitoringPolicyProcess(mp_id, process_id, &process)

Note: Process name cannot be changed.

Remove a process from a monitoring policy:

mon_policy, err := api.DeleteMonitoringPolicyProcess(mp_id, process_id)

List all servers attached to a monitoring policy:

mp_servers, err := api.ListMonitoringPolicyServers(mp_id)

Retrieve information about a server attached to a monitoring policy:

mp_server, err := api.GetMonitoringPolicyServer(mp_id, server_id)

Attach servers to a monitoring policy:

mon_policy, err := api.AttachMonitoringPolicyServers(mp_id, server_ids)

server_ids is a slice of server ID's.

Remove a server from a monitoring policy:

mon_policy, err := api.RemoveMonitoringPolicyServer(mp_id, server_id)

Logs

List all logs:

logs, err := api.ListLogs(period, nil, nil)

period can be set to "LAST_HOUR", "LAST_24H", "LAST_7D", "LAST_30D", "LAST_365D" or "CUSTOM". If period is set to "CUSTOM", the start_date and end_date parameters are required to be set in RFC 3339 date/time format (e.g. 2015-13-12T00:01:00Z).

logs, err := api.ListLogs(period, start_date, end_date)

Additional query parameters can be used.

logs, err := api.ListLogs(period, start_date, end_date, page, per_page, sort, query, fields)

To paginate the list of logs received in the response, use page and per_page parameters. Set per_page to the number of logs that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of logs sorted in expected order, pass a logs property (e.g. "action") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the logs instances that contain it.

To retrieve a collection of logs containing only the requested fields, pass a list of comma separated properties (e.g. "id,action,type") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve a single log:

log, err := api.GetLog(log_id)

Users

List all users:

users, err := api.ListUsers()

Alternatively, use the method with query parameters.

users, err := api.ListUsers(page, per_page, sort, query, fields)

To paginate the list of users received in the response, use page and per_page parameters. Set per_page to the number of users that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of users sorted in expected order, pass a user property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the user instances that contain it.

To retrieve a collection of users containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,creation_date,email") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Retrieve information about a user:

user, err := api.GetUser(user_id)

Create a user:

request := oneandone.UserRequest {
    Name: username, 
    Description: user_description,
    Password: password,
    Email: user_email,
  }

user, err := api.CreateUser(&request)

Name and Password are required parameters. The password must contain at least 8 characters using uppercase letters, numbers and other special symbols.

Modify a user:

request := oneandone.UserRequest {
    Description: new_desc,
    Email: new_mail,
    Password: new_pass,
    State: state,
  }

user, err := api.ModifyUser(user_id, &request)

All listed fields in the request are optional. State can be set to "ACTIVE" or "DISABLED".

Delete a user:

user, err := api.DeleteUser(user_id)

Retrieve information about a user's API privileges:

api_info, err := api.GetUserApi(user_id)

Retrieve a user's API key:

api_key, err := api.GetUserApiKey(user_id)

List IP's from which API access is allowed for a user:

allowed_ips, err := api.ListUserApiAllowedIps(user_id)

Add new IP's to a user:

user_ips := []string{ my_public_ip, "192.168.7.77", "10.81.12.101" }

user, err := api.AddUserApiAlowedIps(user_id, user_ips)

Remove an IP and forbid API access from it:

user, err := api.RemoveUserApiAllowedIp(user_id, ip)

Modify a user's API privileges:

user, err := api.ModifyUserApi(user_id, is_active)

Renew a user's API key:

user, err := api.RenewUserApiKey(user_id)

Usages

List your usages:

usages, err := api.ListUsages(period, nil, nil)

period can be set to "LAST_HOUR", "LAST_24H", "LAST_7D", "LAST_30D", "LAST_365D" or "CUSTOM". If period is set to "CUSTOM", the start_date and end_date parameters are required to be set in RFC 3339 date/time format (e.g. 2015-13-12T00:01:00Z).

usages, err := api.ListUsages(period, start_date, end_date)

Additional query parameters can be used.

usages, err := api.ListUsages(period, start_date, end_date, page, per_page, sort, query, fields)

To paginate the list of usages received in the response, use page and per_page parameters. Set per_page to the number of usages that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of usages sorted in expected order, pass a usages property (e.g. "name") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the usages instances that contain it.

To retrieve a collection of usages containing only the requested fields, pass a list of comma separated properties (e.g. "id,name") in fields parameter.

If any of the parameters sort, query or fields is set to an empty string, it is ignored in the request.

Server Appliances

List all the appliances that you can use to create a server:

server_appliances, err := api.ListServerAppliances()

Alternatively, use the method with query parameters.

server_appliances, err := api.ListServerAppliances(page, per_page, sort, query, fields)

To paginate the list of server appliances received in the response, use page and per_page parameters. Set per_page to the number of server appliances that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of server appliances sorted in expected order, pass a server appliance property (e.g. "os") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the server appliance instances that contain it.

To retrieve a collection of server appliances containing only the requested fields, pass a list of comma separated properties (e.g. "id,os,architecture") in fields parameter.

If any of the parameters sort, query or fields is blank, it is ignored in the request.

Retrieve information about specific appliance:

server_appliance, err := api.GetServerAppliance(appliance_id)

DVD ISO

List all operative systems and tools that you can load into your virtual DVD unit:

dvd_isos, err := api.ListDvdIsos()

Alternatively, use the method with query parameters.

dvd_isos, err := api.ListDvdIsos(page, per_page, sort, query, fields)

To paginate the list of ISO DVDs received in the response, use page and per_page parameters. Set per_page to the number of ISO DVDs that will be shown in each page. page indicates the current page. When set to an integer value that is less or equal to zero, the parameters are ignored by the framework.

To receive the list of ISO DVDs sorted in expected order, pass a ISO DVD property (e.g. "type") in sort parameter. Prefix the sorting attribute with - sign for sorting in descending order.

Use query parameter to search for a string in the response and return only the ISO DVD instances that contain it.

To retrieve a collection of ISO DVDs containing only the requested fields, pass a list of comma separated properties (e.g. "id,name,type") in fields parameter.

If any of the parameters sort, query or fields is blank, it is ignored in the request.

Retrieve a specific ISO image:

dvd_iso, err := api.GetDvdIso(dvd_id)

Example

package main

import (
    "fmt"
    "github.com/1and1/oneandone-cloudserver-sdk-go"
    "time"
)

func main() {
    //Set an authentication token
    token := oneandone.SetToken("82ee732b8d47e451be5c6ad5b7b56c81")
    //Create an API client
    api := oneandone.New(token, oneandone.BaseUrl)

    // List server appliances
    saps, err := api.ListServerAppliances()

    var sa oneandone.ServerAppliance
    for _, a := range saps {
        if a.IsAutomaticInstall && a.Type == "IMAGE" {
            sa = a
        }
    }

    // Create a server
    req := oneandone.ServerRequest{
        Name:        "Example Server",
        Description: "Example server description.",
        ApplianceId: sa.Id,
        PowerOn:     true,
        Hardware:    oneandone.Hardware{
            Vcores:            1,
            CoresPerProcessor: 1,
            Ram:               2,
            Hdds: []oneandone.Hdd {
                oneandone.Hdd {
                        Size:   sa.MinHddSize,
                        IsMain: true,
                },
            },
        },
    }
    server, err := api.CreateServer(&req)
    if err == nil {
        // Wait until server is created and powered on for at most 60 x 10 seconds
        err = api.WaitForState(server, "POWERED_ON", 10, 60)
    }

    // Get a server
    server, err = api.GetServer(server.Id)

    // Create a load balancer
    lbr := oneandone.LoadBalancer {
        Name: "Load Balancer Example", 
        Description: "API created load balancer.",
        Method: "ROUND_ROBIN",
        Persistence: true,
        PersistenceTime: 1200,
        HealthCheckTest: "TCP",
        HealthCheckInterval: 40,
        Rules: []oneandone.LoadBalancerRule {
                {
                    Protocol: "TCP",
                    PortBalancer: 80,
                    PortServer: 80,
                    Source: "0.0.0.0",
                },
        },
    }
    var lb *oneandone.LoadBalancer
    lb, err = api.CreateLoadBalancer(&lbr)
    if err != nil {
        api.WaitForState(lb, "ACTIVE", 10, 30)
    }

    // Get a load balancer
    lb, err = api.GetLoadBalancer(lb.Id)

    // Assign a load balancer to server's IP
    server, err = api.AssignServerIpLoadBalancer(server.Id, server.Ips[0].Id, lb.Id)

    // Create a firewall policy
    fpr := oneandone.FirewallPolicyRequest{
        Name: "Firewall Policy Example", 
        Description: "API created firewall policy.",
        Rules: []oneandone.FirewallPolicyRule {
            {
                Protocol: "TCP",
                PortFrom: 80,
                PortTo: 80,
            },
        },
    }
    var fp *oneandone.FirewallPolicy
    fp, err = api.CreateFirewallPolicy(&fpr)
    if err == nil {
        api.WaitForState(fp, "ACTIVE", 10, 30)
    }

    // Get a firewall policy
    fp, err = api.GetFirewallPolicy(fp.Id)

    // Add servers IPs to a firewall policy.
    ips := []string{ server.Ips[0].Id }
    fp, err = api.AddFirewallPolicyServerIps(fp.Id, ips)
    if err == nil {
        api.WaitForState(fp, "ACTIVE", 10, 60)
    }

    //Shutdown a server using 'SOFTWARE' method
    server, err = api.ShutdownServer(server.Id, false)
    if err != nil {
        err = api.WaitForState(server, "POWERED_OFF", 5, 20)
    }

    // Delete a load balancer
    lb, err = api.DeleteLoadBalancer(lb.Id)
    if err != nil {
        err = api.WaitUntilDeleted(lb)
    }

    // Delete a firewall policy
    fp, err = api.DeleteFirewallPolicy(fp.Id)
    if err != nil {
        err = api.WaitUntilDeleted(fp)
    }

    // List usages in last 24h
    var usages *oneandone.Usages
    usages, err = api.ListUsages("LAST_24H", nil, nil)

    fmt.Println(usages.Servers)

    // List usages in last 5 hours
    n := time.Now()
    ed := time.Date(n.Year(), n.Month(), n.Day(), n.Hour(), n.Minute(), n.Second(), 0, time.UTC)
    sd := ed.Add(-(time.Hour * 5))
    usages, err = api.ListUsages("CUSTOM", &sd, &ed)

    //Create a shared storage
    ssr := oneandone.SharedStorageRequest {
        Name: "Shared Storage Example", 
        Description: "API alocated 100 GB disk.",
        Size: oneandone.Int2Pointer(100),
    }
    var ss *oneandone.SharedStorage
    ss, err = api.CreateSharedStorage(&ssr)
    if err != nil {
        api.WaitForState(ss, "ACTIVE", 10, 30)
    }

    // List shared storages on page 1, 5 results per page and sort by 'name' field.
    // Include only 'name', 'size' and 'minimum_size_allowed' fields in the result.
    var shs []oneandone.SharedStorage
    shs, err = api.ListSharedStorages(1, 5, "name", "", "name,size,minimum_size_allowed")

    // List all shared storages that contain 'example' string
    shs, err = api.ListSharedStorages(0, 0, "", "example", "")

    // Delete a shared storage
    ss, err = api.DeleteSharedStorage(ss.Id)
    if err == nil {
        err = api.WaitUntilDeleted(ss)
    }

    // Delete a server
    server, err = api.DeleteServer(server.Id, false)
    if err == nil {
        err = api.WaitUntilDeleted(server)
    }
}

Index

func New(token string, url string) *API
func (api *API) AddFirewallPolicyRules(fp_id string, fp_rules []FirewallPolicyRule) (*FirewallPolicy, error)
func (api *API) AddFirewallPolicyServerIps(fp_id string, ip_ids []string) (*FirewallPolicy, error)
func (api *API) AddLoadBalancerRules(lb_id string, lb_rules []LoadBalancerRule) (*LoadBalancer, error)
func (api *API) AddLoadBalancerServerIps(lb_id string, ip_ids []string) (*LoadBalancer, error)
func (api *API) AddMonitoringPolicyPorts(mp_id string, mp_ports []MonitoringPort) (*MonitoringPolicy, error)
func (api *API) AddMonitoringPolicyProcesses(mp_id string, mp_procs []MonitoringProcess) (*MonitoringPolicy, error)
func (api *API) AddServerHdds(server_id string, hdds *ServerHdds) (*Server, error)
func (api *API) AddSharedStorageServers(st_id string, servers []SharedStorageServer) (*SharedStorage, error)
func (api *API) AddUserApiAlowedIps(user_id string, ips []string) (*User, error)
func (api *API) AssignServerIp(server_id string, ip_type string) (*Server, error)
func (api *API) AssignServerIpFirewallPolicy(server_id string, ip_id string, fp_id string) (*Server, error)
func (api *API) AssignServerIpLoadBalancer(server_id string, ip_id string, lb_id string) (*Server, error)
func (api *API) AssignServerPrivateNetwork(server_id string, pn_id string) (*Server, error)
func (api *API) AttachMonitoringPolicyServers(mp_id string, sids []string) (*MonitoringPolicy, error)
func (api *API) AttachPrivateNetworkServers(pn_id string, sids []string) (*PrivateNetwork, error)
func (api *API) CloneServer(server_id string, new_name string) (*Server, error)
func (api *API) CreateFirewallPolicy(fp_data *FirewallPolicyRequest) (*FirewallPolicy, error)
func (api *API) CreateImage(request *ImageConfig) (*Image, error)
func (api *API) CreateLoadBalancer(lb *LoadBalancer) (*LoadBalancer, error)
func (api *API) CreateMonitoringPolicy(mp *MonitoringPolicy) (*MonitoringPolicy, error)
func (api *API) CreatePrivateNetwork(request *PrivateNetworkRequest) (*PrivateNetwork, error)
func (api *API) CreatePublicIp(ip_type string, reverse_dns string) (*PublicIp, error)
Go
func (api *API) CreateServer(request *ServerRequest) (*Server, error)
func (api *API) CreateServerSnapshot(server_id string) (*Server, error)
func (api *API) CreateSharedStorage(request *SharedStorageRequest) (*SharedStorage, error)
func (api *API) CreateUser(user *UserRequest) (*User, error)
func (api *API) DeleteFirewallPolicy(fp_id string) (*FirewallPolicy, error)
func (api *API) DeleteFirewallPolicyRule(fp_id string, rule_id string) (*FirewallPolicy, error)
func (api *API) DeleteFirewallPolicyServerIp(fp_id string, ip_id string) (*FirewallPolicy, error)
func (api *API) DeleteImage(img_id string) (*Image, error)
func (api *API) DeleteLoadBalancer(lb_id string) (*LoadBalancer, error)
func (api *API) DeleteLoadBalancerRule(lb_id string, rule_id string) (*LoadBalancer, error)
func (api *API) DeleteLoadBalancerServerIp(lb_id string, ip_id string) (*LoadBalancer, error)
func (api *API) DeleteMonitoringPolicy(mp_id string) (*MonitoringPolicy, error)
func (api *API) DeleteMonitoringPolicyPort(mp_id string, port_id string) (*MonitoringPolicy, error)
func (api *API) DeleteMonitoringPolicyProcess(mp_id string, proc_id string) (*MonitoringPolicy, error)
func (api *API) DeletePrivateNetwork(pn_id string) (*PrivateNetwork, error)
func (api *API) DeletePublicIp(ip_id string) (*PublicIp, error)
func (api *API) DeleteServer(server_id string, keep_ips bool) (*Server, error)
func (api *API) DeleteServerHdd(server_id string, hdd_id string) (*Server, error)
func (api *API) DeleteServerIp(server_id string, ip_id string, keep_ip bool) (*Server, error)
func (api *API) DeleteServerSnapshot(server_id string, snapshot_id string) (*Server, error)
func (api *API) DeleteSharedStorage(ss_id string) (*SharedStorage, error)
func (api *API) DeleteSharedStorageServer(st_id string, ser_id string) (*SharedStorage, error)
func (api *API) DeleteUser(user_id string) (*User, error)
func (api *API) DetachPrivateNetworkServer(pn_id string, pns_id string) (*PrivateNetwork, error)
func (api *API) EjectServerDvd(server_id string) (*Server, error)
func (api *API) GetDvdIso(dvd_id string) (*DvdIso, error)
func (api *API) GetFirewallPolicy(fp_id string) (*FirewallPolicy, error)
func (api *API) GetFirewallPolicyRule(fp_id string, rule_id string) (*FirewallPolicyRule, error)
func (api *API) GetFirewallPolicyServerIp(fp_id string, ip_id string) (*ServerIpInfo, error)
func (api *API) GetFixedInstanceSize(fis_id string) (*FixedInstanceInfo, error)
func (api *API) GetImage(img_id string) (*Image, error)
func (api *API) GetLoadBalancer(lb_id string) (*LoadBalancer, error)
func (api *API) GetLoadBalancerRule(lb_id string, rule_id string) (*LoadBalancerRule, error)
func (api *API) GetLoadBalancerServerIp(lb_id string, ip_id string) (*ServerIpInfo, error)
func (api *API) GetLog(log_id string) (*Log, error)
func (api *API) GetMonitoringPolicy(mp_id string) (*MonitoringPolicy, error)
func (api *API) GetMonitoringPolicyPort(mp_id string, port_id string) (*MonitoringPort, error)
func (api *API) GetMonitoringPolicyProcess(mp_id string, proc_id string) (*MonitoringProcess, error)
func (api *API) GetMonitoringPolicyServer(mp_id string, ser_id string) (*Identity, error)
func (api *API) GetMonitoringServerUsage(ser_id string, period string, dates ...time.Time) (*MonServerUsageDetails, error)
func (api *API) GetPrivateNetwork(pn_id string) (*PrivateNetwork, error)
func (api *API) GetPrivateNetworkServer(pn_id string, server_id string) (*Identity, error)
func (api *API) GetPublicIp(ip_id string) (*PublicIp, error)
func (api *API) GetServer(server_id string) (*Server, error)
func (api *API) GetServerAppliance(sa_id string) (*ServerAppliance, error)
func (api *API) GetServerDvd(server_id string) (*Identity, error)
func (api *API) GetServerHardware(server_id string) (*Hardware, error)
func (api *API) GetServerHdd(server_id string, hdd_id string) (*Hdd, error)
func (api *API) GetServerImage(server_id string) (*Identity, error)
func (api *API) GetServerIp(server_id string, ip_id string) (*ServerIp, error)
func (api *API) GetServerIpFirewallPolicy(server_id string, ip_id string) (*Identity, error)
func (api *API) GetServerPrivateNetwork(server_id string, pn_id string) (*PrivateNetwork, error)
func (api *API) GetServerSnapshot(server_id string) (*ServerSnapshot, error)
func (api *API) GetServerStatus(server_id string) (*Status, error)
func (api *API) GetSharedStorage(ss_id string) (*SharedStorage, error)
func (api *API) GetSharedStorageCredentials() ([]SharedStorageAccess, error)
func (api *API) GetSharedStorageServer(st_id string, ser_id string) (*SharedStorageServer, error)
func (api *API) GetUser(user_id string) (*User, error)
func (api *API) GetUserApi(user_id string) (*UserApi, error)
func (api *API) GetUserApiKey(user_id string) (*UserApiKey, error)
func (api *API) ListDvdIsos(args ...interface{}) ([]DvdIso, error)
func (api *API) ListFirewallPolicies(args ...interface{}) ([]FirewallPolicy, error)
func (api *API) ListFirewallPolicyRules(fp_id string) ([]FirewallPolicyRule, error)
func (api *API) ListFirewallPolicyServerIps(fp_id string) ([]ServerIpInfo, error)
func (api *API) ListFixedInstanceSizes() ([]FixedInstanceInfo, error)
func (api *API) ListImages(args ...interface{}) ([]Image, error)
func (api *API) ListLoadBalancerRules(lb_id string) ([]LoadBalancerRule, error)
func (api *API) ListLoadBalancerServerIps(lb_id string) ([]ServerIpInfo, error)
func (api *API) ListLoadBalancers(args ...interface{}) ([]LoadBalancer, error)
func (api *API) ListLogs(period string, sd *time.Time, ed *time.Time, args ...interface{}) ([]Log, error)
func (api *API) ListMonitoringPolicies(args ...interface{}) ([]MonitoringPolicy, error)
func (api *API) ListMonitoringPolicyPorts(mp_id string) ([]MonitoringPort, error)
func (api *API) ListMonitoringPolicyProcesses(mp_id string) ([]MonitoringProcess, error)
func (api *API) ListMonitoringPolicyServers(mp_id string) ([]Identity, error)
func (api *API) ListMonitoringServersUsages(args ...interface{}) ([]MonServerUsageSummary, error)
func (api *API) ListPrivateNetworkServers(pn_id string) ([]Identity, error)
func (api *API) ListPrivateNetworks(args ...interface{}) ([]PrivateNetwork, error)
func (api *API) ListPublicIps(args ...interface{}) ([]PublicIp, error)
func (api *API) ListServerAppliances(args ...interface{}) ([]ServerAppliance, error)
func (api *API) ListServerHdds(server_id string) ([]Hdd, error)
func (api *API) ListServerIpLoadBalancers(server_id string, ip_id string) ([]Identity, error)
func (api *API) ListServerIps(server_id string) ([]ServerIp, error)
func (api *API) ListServerPrivateNetworks(server_id string) ([]Identity, error)
func (api *API) ListServers(args ...interface{}) ([]Server, error)
func (api *API) ListSharedStorageServers(st_id string) ([]SharedStorageServer, error)
func (api *API) ListSharedStorages(args ...interface{}) ([]SharedStorage, error)
func (api *API) ListUsages(period string, sd *time.Time, ed *time.Time, args ...interface{}) (*Usages, error)
func (api *API) ListUserApiAllowedIps(user_id string) ([]string, error)
func (api *API) ListUsers(args ...interface{}) ([]User, error)
func (api *API) LoadServerDvd(server_id string, dvd_id string) (*Server, error)
func (api *API) ModifyMonitoringPolicyPort(mp_id string, port_id string, mp_port *MonitoringPort) (*MonitoringPolicy, error)
func (api *API) ModifyMonitoringPolicyProcess(mp_id string, proc_id string, mp_proc *MonitoringProcess) (*MonitoringPolicy, error)
func (api *API) ModifyUser(user_id string, user *UserRequest) (*User, error)
func (api *API) ModifyUserApi(user_id string, active bool) (*User, error)
func (api *API) RebootServer(server_id string, is_hardware bool) (*Server, error)
func (api *API) ReinstallServerImage(server_id string, image_id string, password string, fp_id string) (*Server, error)
func (api *API) RemoveMonitoringPolicyServer(mp_id string, ser_id string) (*MonitoringPolicy, error)
func (api *API) RemoveServerPrivateNetwork(server_id string, pn_id string) (*Server, error)
func (api *API) RemoveUserApiAllowedIp(user_id string, ip string) (*User, error)
func (api *API) RenameServer(server_id string, new_name string, new_desc string) (*Server, error)
func (api *API) RenewUserApiKey(user_id string) (*User, error)
func (api *API) ResizeServerHdd(server_id string, hdd_id string, new_size int) (*Server, error)
func (api *API) RestoreServerSnapshot(server_id string, snapshot_id string) (*Server, error)
func (api *API) ShutdownServer(server_id string, is_hardware bool) (*Server, error)
func (api *API) StartServer(server_id string) (*Server, error)
func (api *API) UnassignServerIpFirewallPolicy(server_id string, ip_id string) (*Server, error)
func (api *API) UnassignServerIpLoadBalancer(server_id string, ip_id string, lb_id string) (*Server, error)
func (api *API) UpdateFirewallPolicy(fp_id string, fp_new_name string, fp_new_desc string) (*FirewallPolicy, error)
func (api *API) UpdateImage(img_id string, new_name string, new_desc string, new_freq string) (*Image, error)
func (api *API) UpdateLoadBalancer(lb_id string, lb_update *LoadBalancerUpdate) (*LoadBalancer, error)
func (api *API) UpdateMonitoringPolicy(mp_id string, mp *MonitoringPolicy) (*MonitoringPolicy, error)
func (api *API) UpdatePrivateNetwork(pn_id string, request *PrivateNetworkRequest) (*PrivateNetwork, error)
func (api *API) UpdatePublicIp(ip_id string, reverse_dns string) (*PublicIp, error)
func (api *API) UpdateServerHardware(server_id string, hardware *Hardware) (*Server, error)
func (api *API) UpdateSharedStorage(ss_id string, request *SharedStorageRequest) (*SharedStorage, error)
func (api *API) UpdateSharedStorageCredentials(new_pass string) ([]SharedStorageAccess, error)
func (api *API) WaitForState(in ApiInstance, state string, sec time.Duration, count int) error
func (api *API) WaitUntilDeleted(in ApiInstance) error
func (fp *FirewallPolicy) GetState() (string, error)
func (im *Image) GetState() (string, error)
func (lb *LoadBalancer) GetState() (string, error)
func (mp *MonitoringPolicy) GetState() (string, error)
func (pn *PrivateNetwork) GetState() (string, error)
func (ip *PublicIp) GetState() (string, error)
func (s *Server) GetState() (string, error)
func (ss *SharedStorage) GetState() (string, error)
func (u *User) GetState() (string, error)
func Bool2Pointer(input bool) *bool
func Int2Pointer(input int) *int
func SetBaseUrl(newbaseurl string) string
func SetToken(newtoken string) string

Comments

Tags: Management