2016-07-11 13 views
0

Ich implementiere die Detailinformationen für automatische Skalierung mit Java API. Wie kann ich detaillierte Informationen zur Mitgliederkonfiguration erhalten? Bitte beachten Sie die Felder im roten Kasten im angehängten Bild. Ich könnte eine detaillierte Information bekommen. Zum Beispiel könnte ich den Betriebsreferenzcode erhalten, der CENTOS_6_64 ist, aber wie kann ich die lange Art der Beschreibung wie CentOS 6.x - minimale Installation (64bit) bekommen. member config group configDetailinformationen für Auto Scale in SL

Antwort

0

Versuch mit dieser Objektmaske

mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount] 

hier ein Beispiel mit Python:

""" 
Get the scale group details (configuration). 

Important manual pages: 
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group 
http://sldn.softlayer.com/reference/services/SoftLayer_Scale_Group/getObject 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Scale_Group 

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

import SoftLayer 
import json 

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

scaleGroupId = 595465 

# Create a SoftLayer API client object 
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 
scaleGroupService = client['SoftLayer_Scale_Group'] 

objectMask = "mask[id, name, status[name, keyName], regionalGroup[id, name, description], suspendedFlag, terminationPolicy, cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, balancedTerminationFlag, networkVlans[ id, networkVlan[ id, name, vlanNumber, networkSpace, primaryRouter[id,hostname,datacenter[name,longName]],localDiskStorageCapabilityFlag,sanStorageCapabilityFlag]],virtualGuestMemberTemplate[hostname,domain,fullyQualifiedDomainName,startCpus,maxMemory,hourlyBillingFlag,localDiskFlag,operatingSystem,datacenter,privateNetworkOnlyFlag,networkComponents.maxSpeed,sshKeys,operatingSystemReferenceCode,blockDevices[device,diskImage.capacity],blockDeviceTemplateGroup.globalIdentifier,postInstallScriptUri],policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType],triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule],triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]],loadBalancers[id,port,healthCheck[id,attributes[value,type.keyname],type[id,keyname,name]],virtualServer[id,port,virtualIpAddress.ipAddress.ipAddress,virtualIpAddress.id,serviceGroups.routingType.name]],virtualGuestMemberCount]" 

try: 
    scaleGroup = scaleGroupService.getObject(id=scaleGroupId, mask=objectMask) 
    config = {} 
    config['groupDetails'] = {} 
    config['groupDetails']['groupName'] = scaleGroup['name'] 
    config['groupDetails']['region'] = scaleGroup['regionalGroup']['name'] 
    config['groupDetails']['datacenter'] = scaleGroup['regionalGroup']['name'] 
    config['groupDetails']['terminationPolicy'] = scaleGroup['terminationPolicy']['name'] 
    config['groupSettings'] = {} 
    config['groupSettings']['minimumMemberCount'] = scaleGroup['minimumMemberCount'] 
    config['groupSettings']['maximumMemberCount'] = scaleGroup['maximumMemberCount'] 
    config['groupSettings']['cooldown'] = str(scaleGroup['cooldown']/60) + " Minutes" 
    config['memberDetails'] = {} 
    config['memberDetails']['hostname'] = scaleGroup['virtualGuestMemberTemplate']['hostname'] 
    config['memberDetails']['domain'] = scaleGroup['virtualGuestMemberTemplate']['domain'] 
    config['computingInstance'] = {} 
    config['computingInstance']['cores'] = str(scaleGroup['virtualGuestMemberTemplate']['startCpus']) + "x 2.0 GHz Core" 
    config['computingInstance']['ram'] = str(scaleGroup['virtualGuestMemberTemplate']['maxMemory']/1024) + "GB" 
    if 'networkComponents' in scaleGroup['virtualGuestMemberTemplate']: 
     config['computingInstance']['speed'] = scaleGroup['virtualGuestMemberTemplate']['networkComponents'][0]['maxSpeed'] 
    else: 
     config['computingInstance']['speed'] = "Default" 
    if 'sshKeys' in scaleGroup['virtualGuestMemberTemplate']: 
     config['computingInstance']['sshKeys'] = scaleGroup['virtualGuestMemberTemplate']['sshKeys'] 
    else: 
     config['computingInstance']['sshKeys'] = 'None' 
    config['storage'] = {} 
    if scaleGroup['virtualGuestMemberTemplate']['localDiskFlag']: 
     config['storage']['selectedStorage'] = 'Local Storage' 
    else: 
     config['storage']['selectedStorage'] = 'SAN Storage' 
    config['operatingSystem'] = {} 
    config['operatingSystem']['selectedOperatingSystem'] = scaleGroup['virtualGuestMemberTemplate']['operatingSystemReferenceCode'] 
    config['postInstallScript'] = {} 
    config['postInstallScript']['url'] = scaleGroup['virtualGuestMemberTemplate']['postInstallScriptUri'] 
    config['policies'] = scaleGroup['policies'] 
    print(json.dumps(config, sort_keys=True, indent=2, separators=(',', ': '))) 
except SoftLayer.SoftLayerAPIError as e: 
    print("Unable to get the scale group details. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString)) 

Aber wenn Sie versuchen, die gleichen Informationen wie das Portal zu kopieren, werden Sie wirklich haben Spaß :).

In Bezug auf das Betriebssystem, dass Informationen nicht über den SoftLayer_Scale_Group-Dienst abgerufen werden können, müssen Sie die SoftLayer_Virtual_Guest :: getCreateObjectOptions-Methode verwenden. Wenn Sie das Ergebnis des Verfahrens sehen Sie das sehen:

{ 
      "itemPrice": { 
       "hourlyRecurringFee": "0", 
       "recurringFee": "0", 
       "item": { 
        "description": "CentOS 6.x - Minimal Install (64 bit)" 
       } 
      }, 
      "template": { 
       "id": null, 
       "operatingSystemReferenceCode": "CENTOS_6_64" 
      } 
     } 

Wie Sie das Ergebnis sehen die „operatingSystemReferenceCode“ enthält und die Beschreibung, die Sie wollen, so müssen nur die Aufzeichnung sehen, die mit übereinstimmen der Wert "operatingSystemReferenceCode", den Sie mit der SoftLayer_Scale_Group :: getObject-Methode erhalten haben.

In Bezug auf das Netzwerk privat oder öffentlich, hier können Sie nur die Szenarien haben: 1.- öffentlich und privat wurde festgelegt. 2.- Nur privat wurde festgelegt.

bestimmten, dass Sie die „privateNetworkOnlyFlag“ Eigenschaft überprüfen: 1.-, wenn die Eigenschaft wahr ist, das Netzwerk 2.-, wenn die Eigenschaft privat ist so nicht festgelegt wurde (der Standardwert ist false) Das Netzwerk ist öffentlich und privat.

Um die gleiche Beschreibung wie das Portal die Methode SoftLayer_Virtual_Guest :: getCreateObjectOptions verwenden müssen, um zu bekommen, ist dies das Ergebnis, das Sie bekam:

"networkComponents": [ 
     { 
      "itemPrice": { 
       "hourlyRecurringFee": "0", 
       "recurringFee": "0", 
       "item": { 
        "description": "10 Mbps Public & Private Network Uplinks" 
       } 
      }, 
      "template": { 
       "id": null, 
       "networkComponents": [ 
        { 
         "maxSpeed": 10 
        } 
       ], 
       "privateNetworkOnlyFlag": false 
      } 
     } 

Wie Sie die Idee ist die gleiche sehen wie mit dem Betriebssystem.

Und betrachten Sie das Datencenter "First Available", ich denke, wenn Sie die SoftLayer_Scale_Group :: getObject aufrufen Ich denke, dass die virtualGuestMemberTemplate.datacenter -Eigenschaft leer ist oder nicht existiert, wenn Sie sehen, dass Sie den Wert anzeigen können als " Zuerst verfügbar ".

Grüße

+0

Im Falle von Geschwindigkeit gibt es Private Network Uplinks und Public & Private Network Uplinks. Mit welcher Flagge kann ich dieses Netzwerk unterscheiden? –

+0

Im Betriebssystem gibt die API nur OS_Reference_Code zurück. Wie kann ich vollen Namen von OS wie CentOS 6.x Minimal installieren (64bit) haben. Die API für das Datencenter wird wie oben beschrieben verwendet, aber Controll.com gibt "First Available" für das Datencenter zurück. Was bedeutet "First Available"? –

+0

Ich habe meine Antwort aktualisiert –

0

Dies ist der Code-Tests ein Netzwerk Flagge zu erhalten. Das Flag gibt "true" zurück, aber das Portal sagt "Public & Private Network".

private void getPrivateNetwork() { 

    Group.Service groupSrv = Group.service(client, 1046365L); 
    groupSrv.withMask().virtualGuestMemberTemplate().privateNetworkOnlyFlag(); 

    Group result = groupSrv.getObject(); 
    System.out.println(
      "private Network flag : " + result.getVirtualGuestMemberTemplate().getPrivateNetworkOnlyFlag()); 

}