>

파이썬 API로 SoftLayer의 가상 서버를 주문하고 싶습니다

API 호출에 따라 =>

client['Product_Package'].getAllObjects(mask='id, name')

가상 서버의 pkg ID가 46이라는 것을 알았습니다.

또한 API 호출 =>

에 따라 가격 ID를 찾았습니다.
client['Product_Package'].getItemPrices(id=46, mask='id, itemId, recurringFee, hourlyRecurringFee, item.description, item.keyName, categories.id')`

주문 코드는 다음과 같습니다 =>

order = {
    'complexType': 'SoftLayer_Container_Product_Order_Virtual_Guest',
    'quantity': 1,
    'virtualGuests': [
        {'hostname': 'test-template', 'domain': 'example.com'}
    ],
    'location': 449604,  # Tokyo
    'packageId': 46,  # CCI Package
    'prices': [
        {'id':34183},  # 1000 GB Bandwidth
        {'id':112483},  # 1 x 2.0 GHz Core
        {'id':32578},  # 25 GB (SAN)
        {'id':27023},  # Host Ping Monitoring
        {'id':32500},  # Email and Ticket Notifications
        {'id':31985},  # CentOS 5 - Minimal Install (32 bit)
        {'id':27052},  # 10 Mbps Private Networks
        {'id':34807},  # 1 IP Address
        {'id':112985},  # 1 GB RAM
        {'id':23070},  # Reboot / Remote Console
        {'id':32627},  # Automated Notification Response
        {'id':35310},  # Nessus Vulnerability Assessment & Reporting
        {'id':33483},  # Unlimited SSL VPN Users & 1 PPTP VPN User per account
    ],
    'imageTemplateId': templateId
}
client['SoftLayer_Product_Order'].verifyOrder(order)

그러나 다음 경고가있었습니다 =>

Traceback (most recent call last):
  File "./ordervsByimg.py", line 45, in <module>
    result = client['SoftLayer_Product_Order'].verifyOrder(order)
  File "/usr/lib64/python2.7/site-packages/SoftLayer/API.py", line 392, in call_handler
    return self(name, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/SoftLayer/API.py", line 360, in call
    return self.client.call(self.name, name, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/SoftLayer/API.py", line 263, in call
    return self.transport(request)
  File "/usr/lib64/python2.7/site-packages/SoftLayer/transports.py", line 195, in __call__
    raise _ex(ex.faultCode, ex.faultString)
SoftLayer.exceptions.SoftLayerAPIError: SoftLayerAPIError(SoftLayer_Exception_Public): The price for 1 x 2.0 GHz Core (#112483) is not valid for location tok02.

이 문제를 해결하도록 도와 주시겠습니까?


  • 답변 # 1

    문제는 선택한 위치에 따라 해당 위치의 가격도 선택해야한다는 것입니다.

    가격에는 "locationGroup"이라는 속성이 있습니다.이 속성에는 가격이 작동 할 위치에 대한 정보가 포함되어 있습니다. 또한 특정 위치에 대해 특정 가격을 선택해야 할 필요가 없습니다. 모든 위치에서 가격을 얻으려면 "locationGroupId"가 null 인 가격을 찾아야합니다.

    이것에 관한이 문서를보십시오 :

    http://sldn.softlayer.com/blog/cmporter/location-based-pricing-and-you

  • 이전 ms access - 다른 테이블의 시작 및 종료 날짜를 기반으로 한 간격 방문으로 테이블 업데이트
  • 다음 mysql - 지난주의 모든 데이터를 표시 하시겠습니까?