John Westrik
John Westrik

Reputation: 11

How do I setup slcli Softlayer api

Looking for help to start using slcli in order to run commands against Softlayer machines for shutdown, startup and reboot vms. I installed the package under ubuntu 14.04 sudo apt-get install python-softlayer, now trying to run slcli setup command, however having trouble locating where to run this from, it is not in the path on the bash shell, nor in python after I import SoftLayer, what am I missing to move forward?

Upvotes: 1

Views: 2688

Answers (2)

Make sure python and pip are correctly installed, then run:

sudo apt-get install python-softlayer

Nevertheless if this not works, then try installing using pip:

sudo pip install softlayer

Once slcli is correctly installed running slcli without arguments should display the options menu where you can get extra information using slcli [command] --help

Use slcli setup to set your default values and slcli config show to display it.

In order to manage vs with slcli use these commands:

slcli vs list
slcli vs power-on 1234567
slcli vs power-off 1234567
slcli vs reboot 1234567

1234567 would be the virtual guest id obtained using slcli vs list

It's also possible to accomplish the above using a standard python script, here some examples:

"""
Power off Guest

The scripts will look for a VSI which has an specific
hostname and the it powers off the VSI by making a single call
to the SoftLayer_Virtual_Guest::powerOff method.

Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_Acount/
http://sldn.softlayer.com/reference/services/SoftLayer_Acount/getVirtualGuests
http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/setTags

License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <[email protected]>
"""
import SoftLayer

"""
# Your SoftLayer API username and key.
#
# Generate an API key at the SoftLayer Customer Portal:
# https://manage.softlayer.com/Administrative/apiKeychain
"""
username = 'set me'
key = 'set me'

# The name of the machine you wish to power off
virtualGuestName = 'rctest'

# Declare a new API service object
client = SoftLayer.Client(username=username, api_key=key)


try:
    # Getting all virtual guest that the account has:
    virtualGuests = client['SoftLayer_Account'].getVirtualGuests()
except SoftLayer.SoftLayerAPIError as e:
    """
    If there was an error returned from the SoftLayer API then bomb out with the
    error message.
    """
    print("Unable to retrieve hardware. "
          % (e.faultCode, e.faultString))

# Looking for the virtual guest
virtualGuestId = ''
for virtualGuest in virtualGuests:
    if virtualGuest['hostname'] == virtualGuestName:
        virtualGuestId = virtualGuest['id']

try:
    # Power off the virtual guest
    virtualMachines = client['SoftLayer_Virtual_Guest'].powerOff(id=virtualGuestId)
    print ("powered off")
except SoftLayer.SoftLayerAPIError as e:
    """
    If there was an error returned from the SoftLayer API then bomb out with the
    error message.
    """
    print("Unable to power off the virtual guest"
          % (e.faultCode, e.faultString))

For rebooting

"""
    Reboot Virtual Guest.
    It reboots a SoftLayer Virtual Guest


    Important manual pages:
    http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/rebootDefault

    License: http://sldn.softlayer.com/article/License
    Author: SoftLayer Technologies, Inc. <[email protected]>
    """
    # So we can talk to the SoftLayer API:
    import SoftLayer

    # From pprint import pprint as pp
    # For nice debug output
    from pprint import pprint as pp

    # Your SoftLayer API username and key.
    API_USERNAME = 'set me'
    API_KEY = 'set me'

    # If you don't know your server id you can call getVirtualGuests() in the
    # SoftLayer_Account API service to get a list of Virtual Guests
    serverId = 10403817

    # Create a connection to API service.
    client = SoftLayer.Client(
            username=API_USERNAME,
            api_key=API_KEY
    )

    # Reboot the Virtual Guest
    try:

        result = client['Virtual_Guest'].rebootDefault(id=serverId)
        pp(result)

    except SoftLayer.SoftLayerAPIError as e:
            pp('Unable to reboot the server faultCode=%s, faultString=%s'
                % (e.faultCode, e.faultString))

Upvotes: 1

greyhoundforty
greyhoundforty

Reputation: 239

You can run the slcli config setup command from anywhere provided the package installed properly. I generally recommend using pip to install the SoftLayer package.

sudo apt-get purge python-softlayer

sudo apt-get install python-setuptools python-pip

sudo pip install softlayer

Upvotes: 0

Related Questions