2

I cannot find where using SoftLayer Python API VSManager to reboot or power-off/on a virtual machine instance.

The operations are described in the XMLRPC API at:

http://developer.softlayer.com/reference/services/SoftLayer_Virtual_Guest

but I can't find equivalent at:

http://softlayer-python.readthedocs.org/en/latest/api/managers/vs.html

mcruz
  • 1,534
  • 2
  • 11
  • 14

2 Answers2

4

Indeed the manager does not have that implementation you have to make api calls for that 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. <sldn@softlayer.com>
"""
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))

--

"""
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. <sldn@softlayer.com>
"""
# 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))

Regards

1

slcli vs power_off and slcli vs power_on should do the trick. Working with Virtual Servers

Maybe this helps, too. Source of the reboot functionality from the cli

salomonderossi
  • 2,180
  • 14
  • 20