我使用了两年的Python API脚本。它每次都有效。在过去两年中,偶尔需要一分钟以上才能获得IP地址。
然而,在过去两周内,检索IP可能需要20分钟长达3小时才能检索到IP。这是我尝试的消息,直到它得到它。我创建了一张票,但他们让我问这里。
信息:root:工业界还没有知识产权。在重试之前等待 信息:SoftLayer.transports:POST https://api.softlayer.com/xmlrpc/v3.1/SoftLayer_Virtual_Guest
这是相关代码。我在参数中apss并等待IP。
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))
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
请求通常无需重试。有变化吗?
答案 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
此致