2016-05-02 6 views
0

Ich habe ein Python-API-Skript, das ich seit zwei Jahren verwendet habe. Es funktioniert jedes Mal. In den letzten zwei Jahren wird es manchmal länger als eine Minute dauern, bis eine IP-Adresse erreicht wird.Softlayer Python API kann IP für lange Zeit nicht abrufen

In den letzten zwei Wochen kann das Abrufen von IP jedoch 20 Minuten bis zu drei Stunden dauern, um eine IP abzurufen. Dies ist die Nachricht, die ich bekomme, solange sie es versucht, bis sie es bekommt. Ich habe ein Ticket erstellt, aber sie haben mich gebeten, hier zu fragen.

INFO: root: Noch keine IP für Industriebranchen. Warten vor dem erneuten Versuch INFO: SoftLayer.transports: POST https://api.softlayer.com/xmlrpc/v3.1/SoftLayer_Virtual_Guest

Hier ist der entsprechende Code. Ich Apss in den Parametern und warten auf die IP.

#

Erstellt eine neue CCI basiert auf den Eingabeoptionen DIKT

#

def createImagesFromTemplate (inputDict, überprüfen, Client): # greifen eine Sitzung mit den vs-Manager Client Mgr = SoftLayer.VSManager (Client)

try: 
    if (verify): 
     logging.info("Verifying Input Options") 
     vsi = mgr.verify_create_instances(inputDict) 
     logging.info("Verify Response was: ") 
     pp(resp) 
    else: #we create for real 
     #logging.info("Creating image for %s from Template ID: %s", input_options['hostname'], input_options['image_id']) 
     #mgr.create_instances(input) 
     vsi = mgr.create_instances(inputDict) 
     if vsi: 
      print("The list has been submitted") 
     else: 
      print("An error has occurred in the submission") 

except SoftLayer.SoftLayerAPIError as e: 
    logging.info("CCI Create request failed") 
    logging.info("SoftLayerAPIError occurred faultCode=%s, faultString=%s" % (e.faultCode, e.faultString)) 

#

Wartet, bis es eine IP-Adresse in einem bestimmten CCI und die abruft und gibt sie

#

def getIpFromVs (INST_ID, Client): #get die IP-Adresse von der cci Manager Erweiterung Mgr = SoftLayer.VSManager (Client) vsi = mgr.get_instance (INST_ID)

get_ip = '' #No IP yet 
# wait until we get an ip address... should be anytime now 
while ('primaryIpAddress' not in vsi): 
    logging.info("No IP for %s yet. Waiting before retry" % vsi['hostname']) 
    time.sleep(20) 
    vsi = mgr.get_instance(inst_id) 

while (vsi['primaryIpAddress'] == ''): 
    logging.info("Still no IP for %s yet. Waiting before retry" % vsi['hostname']) 
    time.sleep(5) 
    vsi = mgr.get_instance(inst_id) 

get_ip = vsi['primaryIpAddress'] 
return get_ip 

Der Antrag war in der Regel ohne eine Wiederholung zu tun. Gab es eine Veränderung?

Antwort

0

Wenn Sie ein neues CCI erstellen, muss es genehmigt werden und dann beginnt der bereitgestellte Prozess. Sobald der bereitgestellte Prozess abgeschlossen ist, wird Ihr Computer eingeschaltet und Sie können die IP-Adressinformationen abrufen.

Das Problem, mit dem Sie konfrontiert sind, ist wahrscheinlich folgende: 1.- Ihr CCI wurde nicht genehmigt, dies muss automatisch von Softlayer durchgeführt werden, aber manchmal könnte etwas schief gehen, so ein Softlayer Mitarbeiter muss manuell genehmigen Auftrag. 2. - Der Bereitstellungsprozess benötigt mehr Zeit als erwartet. Manchmal hat das Provisioning Probleme und ein Softlayer-Mitarbeiter muss überprüfen, was schief gelaufen ist, und es beheben.

Diese Verzögerungen bei der Bereitstellung können die Ursache des Problems sein, dem Sie gegenüberstehen. Ich empfehle Ihnen, bevor Sie überprüfen, ob die IP verfügbar ist, müssen Sie überprüfen, ob die CCI bereitgestellt wurde. Sehen Sie diesen Code für die:

client = SoftLayer.Client(
    username= "arst" 
    api_key = "1234arst" 
) 

object_mask = 'mask.provisionDate' 

cci = client['Virtual_Guest'].getObject(mask=object_mask) 

if ('provisionDate' in cci and cci['provisionDate'] !=): 
    print 'CCI %s is online' % cci['hostname'] 
else: 
    print 'CCI %s is provisioning' % cci['hostname'] 

hier weitere Informationen siehe: http://sldn.softlayer.com/blog/phil/simplified-cci-creation

Grüße

+0

Dieses Skript für zwei Jahre mit dem obigen Code ausgeführt wird. Jeder einmal in einer großen Zeit konnte es für vielleicht 5 Minuten keine IP bekommen.In 99% der Fälle wäre es innerhalb einer Minute abgeschlossen. Die meiste Zeit dauert es zwischen 20 Minuten und Stunden. Ich habe das nicht gesehen, wenn ich es über die UI gemacht habe. Ich werde Ihren Code implementieren. Ein paar Mal wurde das Gerät bereitgestellt und die IP kommt später. Die meiste Zeit, nachdem die IP-Adresse erhalten wurde, erfolgt die Bereitstellung sofort. Danke für die Hilfe. – pmsuite

Verwandte Themen