October 31, 2013

Classes
Tags blog

Getting Started with the Python CLI
<script type=text/javascript>toc_collapse=0;</script><div class=toc id=toc> <div class=toc-title>Table of conte

:…………..:…………………………………………………………:
Name : Value : :…………..:…………………………………………………………:
Username : foo :
API Key : bar :
Endpoint URL : https://api.softlayer.com/xmlrpc/v3/ :
Timeout : not set : :…………..:…………………………………………………………: Are you sure you want to write settings to “/Users/foo/.softlayer”? [Y/n]: y Configuration Updated Successfully

These values can also be manually added to the configuration file manually

Help

A comprehensive help dialogue is available for all CLI features. A general help menu can be accessed with the -h flag. Typically this flag can also be added to the end of any command to obtain additional information.

$ sl -h
usage: sl  […]
   sl help 
   sl help  
   sl [-h | –help]
 
SoftLayer Command-line Client
 
The available modules are:
 
Compute:
bmc       Bare Metal Cloud
cci       Cloud Compute Instances
image     Manages compute and flex images
metadata  Get details about this machine. Also available with ‘my’ and ‘meta’
server    Hardware servers
sshkey    Manage SSH keys on your account
 
Networking:
dns       Domain Name System
firewall  Firewall rule and security management
globalip  Global IP address management
rwhois    RWhoIs operations
ssl       Manages SSL
subnet    Subnet ordering and management
vlan      Manage VLANs on your account
 
Storage:
iscsi     View iSCSI details
nas       View NAS details
 
General:
config    View and edit configuration for this tool
summary   Display an overall summary of your account
help      Show help

Additional documentation for any specific command or module can be found with sl [] -h

$ sl cci list -h
usage: sl cci list [–hourly | –monthly] [–sortby=SORT_COLUMN] [–tags=TAGS]
               [options]
 
List CCIs
 
Examples:
sl cci list –datacenter=dal05
sl cci list –network=100 –cpu=2
sl cci list –memory=‘>= 2048’
sl cci list –tags=production,db
 
Options:
–sortby=ARG  Column to sort by. options: id, datacenter, host,
            Cores, memory, primary_ip, backend_ip
 
Filters:
-c –cpu=CPU             Number of CPU cores
-D –domain=DOMAIN       Domain portion of the FQDN. example: example.com
-d DC, –datacenter=DC   datacenter shortname (sng01, dal05, …)
-H –hostname=HOST       Host portion of the FQDN. example: server
-m –memory=MEMORY       Memory in mebibytes
-n MBPS, –network=MBPS  Network port speed in Mbps
–hourly                 Show hourly instances
–monthly                Show monthly instances
–tags=ARG               Only show instances that have one of these tags.
                         Comma-separated. (production,db)
 
For more on filters see ‘sl help filters’
 
Standard Options:
–format=ARG           Output format. [Options: table, raw] [Default: table]
-C FILE –config=FILE  Config file location. [Default: ~/.softlayer]
–debug=LEVEL          Specifies the debug noise level
                       1=warn, 2=info, 3=debug
–timings              Time each API call and display after results
-h –help              Show this screen

Filters

Filters can be used to limit the number of responses from commands that accept them as arguments. You can access the filter help entry with sl help filters.

For example a list of all CCIs on an account has “webserver” in the hostname could be found with:

$ sl cci list –hostname=’webserver

In most cases you can even apply multiple filters:

$ sl cci list –network=’< 100’ –cpu 2

Examples

CCI

Create

Retrieve options

A listing of values for cci create variables can be obtained with sl cci create-options. These values will populate your order with the proper information.

$ sl cci create-options
:……………..:……………………………………………………………………………………….:
Name : Value : :……………..:……………………………………………………………………………………….:
datacenter : ams01,dal05,sea01,sjc01,sng01,wdc01 :
cpus (private) : 1,2,4,8 :
cpus (standard) : 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 :
memory : 1024,2048,3072,4096,5120,6144,7168,8192,9216,10240,11264,12288,13312,14336,15360,16384,32768,49152 :
os (CENTOS) : CENTOS_5_32 :
: CENTOS_5_64 :
: CENTOS_6_32 …
Creating the CCI

After the appropriate values have been chosen you can create a CCI with sl cci create :

$ sl cci create –hostname=foo-webserver –domain=example.com –cpu=1 –memory=1024 –hourly –os=DEBIAN_7_64
This action will incur charges on your account. Continue? [y/N]: y
:………:………………………………..:
name : value : :………:………………………………..:
id : 1234212 :
created : 2013-09-30T06:51:02-06:00 :
guid : 093nt23n-90nl-9n2i-u902-902n3t09n23t : :………:………………………………..:

The CLI will either respond as it has above with the details of your new instance, or it will provide an error message explaining what went wrong.

Cancel

The cancellation command in the CCI argument will deprovision a CCI and remove its billing from you account. Cancellation is a destructive action - back up all data you wish to retain before running this command, as we do not keep records of information stored on your device.. Cancellation of an instance will result in the immediate destruction of the target CCI.

When using the cancel command you will be prompted to enter the CCI ID to start the cancellation process.

$ sl cci cancel pjackson-cli-test
This action cannot be undone! Type “341234” or press Enter to abort: 341234

Reboot

Reboot a CCI with the sl cci reboot command. YoYou will be prompted to confirm the reboot before it begins. By default a soft reboot is attempted with the –soft option which will gracefully restart the device. If unable to complete a soft reboot, the –hard switch can be passed which will simulate a power cycling of the device.

$ sl cci reboot foo-webserver
This will reboot the CCI with id 1234212. Continue? [y/N]: y

Retrieve a list of all CCIs on your account can be retrieved with sl cci list. Filter your results by adding the appropriate switch.

$ sl cci list –datacenter=dal05

DNS

Interact with our authoritative DNS service through the dns module.

$ sl dns
usage: sl dns [] […] [options]
 
Manage DNS
 
The available zone commands are:
create  Create zone
delete  Delete zone
list    List zones or a zone’s records
print   Print zone in BIND format
 
The available record commands are:
add     Add resource record
edit    Update resource records (bulk/single)
remove  Remove resource records

The module contains two subsections: zone and record

Zone Print

The contents of a BIND zone file can be printed to the screen with the print command.

$ sl dns print example.com
$ORIGIN example.com.
$TTL 86400
@ IN SOA ns1.softlayer.com. support.softlayer.com. (
                   2013041501        ; Serial
                   7200              ; Refresh
                   600               ; Retry
                   1728000           ; Expire
                   43200)            ; Minimum
 
@                      86400    IN NS    ns1.softlayer.com.
@                      86400    IN NS    ns2.softlayer.com.
 
 
@                      86400    IN A     127.0.0.1
server01               7200     IN A     127.0.0.1

Zone Creation

Create a new zone combining the create command with the path for the new zone.

$ sl dns create phil.example.com

Record Creation

Zone records are created with the add command. Enter the zone along with the desired record type and corresponding record details. This example creates an A record for the IP 127.0.0.1 with a standard ttl of 86400.

$ sl dns add phil.example.com mail A 127.0.0.1 –ttl=86400

Record Editing

Edit a zone record with the edit command.

$ sl dns edit phil.example.com mail –data=192.168.1.1

p>The module contains two subsections: zone and record

Zone Print

The contents of a BIND zone file can be printed to the screen with the print command.

$ sl dns print example.com
$ORIGIN example.com.
$TTL 86400
@ IN SOA ns1.softlayer.com. support.softlayer.com. (
                       2013041501        ; Serial
                       7200              ; Refresh
                       600               ; Retry
                       1728000           ; Expire
                       43200)            ; Minimum
 
@                      86400    IN NS    ns1.softlayer.com.
@                      86400    IN NS    ns2.softlayer.com.
 
 
@                      86400    IN A     127.0.0.1
server01               7200     IN A     127.0.0.1

Zone Creation

Create a new zone combining the create command with the path for the new zone.

$ sl dns create phil.example.com

Record Creation

Zone records are created with the add command. Enter the zone along with the desired record type and corresponding record details. This example creates an A record for the IP 127.0.0.1 with a standard ttl of 86400.

$ sl dns add phil.example.com mail A 127.0.0.1 –ttl=86400

Record Editing

Edit a zone record with the edit command.

$ sl dns edit phil.example.com mail –data=192.168.1.1


Feedback?

We would love to hear it
Open an issue