Softlayer Python API无法长时间检索IP

时间:2016-05-02 14:18:53

标签: ibm-cloud-infrastructure

我使用了两年的Python API脚本。它每次都有效。在过去两年中,偶尔需要一分钟以上才能获得IP地址。

然而,在过去两周内,检索IP可能需要20分钟长达3小时才能检索到IP。这是我尝试的消息,直到它得到它。我创建了一张票,但他们让我问这里。

信息:root:工业界还没有知识产权。在重试之前等待 信息:SoftLayer.transports:POST https://api.softlayer.com/xmlrpc/v3.1/SoftLayer_Virtual_Guest

这是相关代码。我在参数中apss并等待IP。

根据输入选项dict

创建新的CCI

def createImagesFromTemplate(inputDict,verify,client):     #抓取与vs Manager客户端的会话     mgr = SoftLayer.VSManager(客户端)

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))

等待指定的CCI中存在IP地址并检索并返回

def getIpFromVs(inst_id,client):     #get cci管理器扩展中的IP地址     mgr = SoftLayer.VSManager(客户端)     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

请求通常无需重试。有变化吗?

1 个答案:

答案 0 :(得分:0)

当您创建新的CCI时,必须获得批准,然后开始配置的流程,一旦完成配置的流程,您的计算机就会启动,您将能够获得IP地址信息。

您面临的问题很可能是由于: 1.-您的CCI未获批准,这必须由Softlayer自动执行,但有时可能出现问题,因此Softlayer的员工必须手动批准您的订单。 2.-供应过程花费的时间比预期的要长。有时,配置存在问题,Softlayer的员工必须检查出错的原因并进行修复。

配置中的这种延迟可能是您面临的问题的根源。我建议您在验证IP是否可用之前,必须检查是否已配置CCI。请参阅此代码:

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']

在此处查看更多信息:http://sldn.softlayer.com/blog/phil/simplified-cci-creation

此致