2016-06-09 2 views
0

How to reload system with flex image using softlayer REST API gibt an, wie ein Reload mit REST durchgeführt wird. Wie mache ich das vom "slcli" -Befehl?So laden Sie OS mit einem bestimmten Flex-Image von slcli neu

Mit "slcli server reload --help" wird keine Option zur Angabe der imageTemplateId angezeigt. Es aktiviert nur sshKeys und installiert Skripte.

Mit dem "slcli call-api ..." verstehe ich nicht, ob Parameter übergeben werden können. Es sieht wirklich nicht so aus.

Antwort

1

Die SLCLI ist dazu nicht in der Lage, ich empfehle Ihnen, Python Scrips zu verwenden, um die API aufzurufen.

dieses Beispiel über Reloads sehen: https://gist.github.com/softlayer/2789898

und hier ein Beispiel aus einer Bildvorlage neu zu laden, müssen Sie nur sicherstellen, dass der Imagetemplate-ID die richtige für Ihr flex Bild ist:

""" 
Reload servers from a list of IPs 

This script looks for a server with a determinate IP address and reload it from an image template. 

Important manual pages: 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server 
http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/findByIpAddress 
http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/reloadOperatingSystem 

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

import SoftLayer 
import json 

ipsToReload = ['184.172.45.215', '1.1.1.1'] 

# Call the Softlayer_Account::getPrivateBlockDeviceTemplateGroups method. 
# to get the images templates in the account. 
imageTemplateId = 51236 

USERNAME = 'set me' 
API_KEY = 'set me' 

client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 
hardwareService = client['SoftLayer_Hardware_Server'] 


failedServers = [] 
for ipToReload in ipsToReload: 
    failedServer = {} 
    failedServer['ip'] = ipToReload 
    try: 
     server = hardwareService.findByIpAddress(ipToReload) 
     if server == '': 
      failedServer['error'] = "Ip does not exist." 
      failedServers.append(failedServer) 
      continue 
    except SoftLayer.SoftLayerAPIError as e: 
     failedServer['error'] = e 
     failedServers.append(failedServer) 
     continue 
    if 'activeTransaction' in server: 
     failedServer['error'] = "There is an active transaction." 
     failedServers.append(failedServer) 
     continue 

    config = { 
     'imageTemplateId': imageTemplateId 
    } 

    try: 
     reload = hardwareService.reloadOperatingSystem('FORCE', config, id=server['id']) 
    except SoftLayer.SoftLayerAPIError as e: 
     failedServer['error'] = e 
     failedServers.append(failedServer) 
     continue 

print("The reload failed for these IPs:") 
print(json.dumps(failedServers, sort_keys=True, indent=2, separators=(',', ': '))) 

Grüße

Verwandte Themen