2016-11-09 3 views
0

Ich habe einige Suche auf Stackoverflow und schaute durch die API, aber scheint nicht, um eine Antwort speziell zu finden. Ich erstelle einige Automatisierungsskripts in Python und frage mich, ob es eine Möglichkeit gibt, die primaryNetworkComponent und die primaryBackendNetworkComponent Paare und basierend auf Ort zu greifen? Es gibt die getVlans() Methode, aber nicht sicher, welche VLANs zusammen gehen, wenn ich auf die GUI gehe. Gibt es keine Begrenzung für die Anzahl der Maschinen, die auf einem VLAN-Paar sein können? Wenn nicht, wäre es nur akzeptabel, den Router zu greifen und einfach die ersten 2 VLANs zu nehmen?Bestellung Softlayer Vlan Paare

Antwort

0

Das kann unter Skript helfen vlans von bestimmten Ort abzurufen:

""" 
Retrieves vlans from specific location 

Important manual pages: 
http://sldn.softlayer.com/reference/services/SoftLayer_Account/getNetworkVlans 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Network_Vlan/ 
http://sldn.softlayer.com/article/object-Masks 
http://sldn.softlayer.com/article/object-filters 

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

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

# Define location 
datacenter = "Seoul 1" 

# Declare the API client 
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 

# Declaring an object mask and object filter to get vlans from datacenter 
objectMask = "mask[primaryRouter[datacenter], networkSpace]" 
objectFilter = {"networkVlans": {"primaryRouter": {"datacenter": {"longName": {"operation": datacenter}}}}} 

try: 
    # Getting the VLANs 
    vlans = client['SoftLayer_Account'].getNetworkVlans(mask=objectMask, filter=objectFilter) 
    # Print vlans 
    print("PRIMARY NETWORK COMPONENT") 
    for vlan in vlans: 
     if vlan['networkSpace'] == 'PUBLIC': 
      print("Id: %s  Vlan Number: %s  Primary Router: %s" % (vlan['id'], vlan['vlanNumber'], vlan['primaryRouter']['hostname'])) 
    print("\nPRIMARY BACKEND NETWORK COMPONENT") 
    for vlan in vlans: 
     if vlan['networkSpace'] == 'PRIVATE': 
      print("Id: %s  Vlan Number: %s  Primary Router: %s" % (vlan['id'], vlan['vlanNumber'], vlan['primaryRouter']['hostname'])) 
except SoftLayer.SoftLayerAPIError as e: 
    print("Unable to get Vlans. faultCode=%s, faultString=%s" 
      % (e.faultCode, e.faultString)) 

Es gibt keine Grenze für die Anzahl der Server in einem öffentlichen vlan ist, aber es hängt von der verfügbaren IP-Adressen für private die gleiche Situation Vlán. Im Falle von privaten VLAN hat eine Grenze von 256 IP-Adressen.

Wenn der VLAN über eine Hardware-Firewall verfügt, hat er eine Beschränkung auf 30 Server (VSIs oder BMSs).

Es ist nicht möglich, die ersten vlans vom Router abzurufen, da dies eingeschränkt ist. Sie können nur die von Ihnen gekauften vlans abrufen.

Referenzen:

+0

vielen dank ruber! – Patrick

0

ich diesen Code habe

mask = 'id, hostname, domain, hardwareStatus, globalIdentifier, remoteManagementAccounts, primaryBackendIpAddress, primaryIpAddress' 
    hardware_list = mgr.list_hardware(mask=mask) 
    for hardware in hardware_list: 
     if "someGLobalID" == hardware['globalIdentifier']: 

, in dem ich versuche, die globale Kennung zu erhalten, aber ich halte einen Schlüssel Fehler bekommen

Werden globale Bezeichner generiert, nachdem ein Auftrag abgeschlossen und im Bereitstellungsstatus ist?

Ich habe versucht, einen anderen Schlüssel wie Domain-Suche und es funktioniert

+0

Ich habe eine neue Antwort, bitte, wenn Sie weitere Hilfe benötigen, lassen Sie es mich wissen –

0

Ich habe Erfolg mit dem folgenden Skript:

""" 
List Hardware 

Important manual pages: 
http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware 
https://github.com/softlayer/softlayer-python/blob/master/SoftLayer/managers/hardware.py 

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

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

# Declare the API client 
client = SoftLayer.Client(username=USERNAME, api_key=API_KEY) 
mgr = SoftLayer.HardwareManager(client) 

globalIdentifier = '93e99548-bb97-4a18-b728-9c8ebba6s9e3' 

try: 
    mask = 'id, hostname, domain, hardwareStatus, globalIdentifier, remoteManagementAccounts, primaryBackendIpAddress, primaryIpAddress' 
    hardware_list = mgr.list_hardware(mask=mask) 
    for hardware in hardware_list: 
     if globalIdentifier == hardware['globalIdentifier']: 
      print(hardware['globalIdentifier']) 

except SoftLayer.SoftLayerAPIError as e: 
    print("Error. " 
      % (e.faultCode, e.faultString)) 

Sie haben Recht, werden die globalen Identifikatoren in der Reihenfolge Eingang erzeugt, aber sie werden an die Server angeschlossen, bis der Bereitstellungsprozess abgeschlossen ist. Es ist also notwendig zu warten, bis der Bereitstellungsprozess von einem Server beendet ist, um danach zu suchen.

Verwandte Themen