ProfitBricks Client documentation

Contents:

Introduction

The ProfitBricks client can be used to manage your data centers through ProfitBricks’ public API. It comes as a command line tool with Bash completion and as a profitbricks_client Python module. You can use the profitbricks_client Python module to write your own scripts or to interactively use it with tools like ipython.

Quick start

Call

profitbricks-client --help

to get a help message. Then you probably want to know which API calls are available:

profitbricks-client --list

You will be asked for your username and password. The password will be stored in your keyring (if you have the keyring Python module installed). Then you might want to know how to list all your data centers:

profitbricks-client getAllDataCenters --help

This call takes no arguments. To list all your datacenters, run:

profitbricks-client getAllDataCenters

Then you are interested in getting one of your data centers by specifying one of your data centers:

profitbricks-client getDataCenter --dataCenterId <dataCenterId>

Python Module example

Imagine you want to write a small Python script that shows the list of IP addresses for every server. You can walk through this example step by step with ipython. First you need to import the profitbricks_client and create a client object:

import profitbricks_client
client = profitbricks_client.get_profitbricks_client()

Then you can retrieve a list of all data centers by calling getAllDataCenters(). You get the ID, name, and version for every data center. You can iterate over all data center IDs or just select the ones that you are interested in. To keep this example simple, you just take the first one. For the following example, you just want to have the unique IDs.

all_datacenters = client.getAllDataCenters()
datacenter_id = all_datacenters[0].dataCenterId

The function getDataCenter() gives you all information about your data center including all servers, storages, load balancers and so on. So let’s call this function for your selected data center:

datacenter = client.getDataCenter(dataCenterId=datacenter_id)

You can print the name of the data center:

print datacenter.dataCenterName + ':'

The returned datacenter object has an attribute servers which contains a list of all servers in that data center. Every server in this list has a serverName and a list of ips. You can sort the servers list by the serverName attribute and then print the server name with the IPs belonging to it:

from operator import attrgetter
for server in sorted(datacenter.servers, key=attrgetter('serverName')):
    print server.serverName + '   '+ ' '.join(server.ips)

The full script to print all servers and their IP addresses for every data center look like this:

#!/usr/bin/python

# Copyright (C) 2014, ProfitBricks GmbH
# Authors: Benjamin Drung <benjamin.drung@profitbricks.com>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

from operator import attrgetter

import profitbricks_client


def main():
    client = profitbricks_client.get_profitbricks_client()
    datacenter_ids = [dc.dataCenterId for dc in client.getAllDataCenters()]
    for datacenter_id in datacenter_ids:
        datacenter = client.getDataCenter(dataCenterId=datacenter_id)
        print datacenter.dataCenterName + ':'
        for server in sorted(datacenter.servers, key=attrgetter('serverName')):
            print server.serverName + '   ' + ' '.join(server.ips)
        print


if __name__ == '__main__':
    main()

Indices and tables

Table Of Contents

Next topic

profitbricks-client

This Page