【问题标题】:SoftLayer API Hardware Order Options SpecificationSoftLayer API 硬件订购选项规范
【发布时间】:2016-01-11 21:02:15
【问题描述】:

我正在尝试订购几个非常具体的节点类型,并且想知道如何通过 SoftLayer API 来做到这一点。在 Python API 中运行命令 slcli server create-options 或调用 get_create_options() 函数时,我没有收到可用硬件、操作系统、网络控制器选项(主要是由于没有冗余选项)和子网的完整列表类型。换言之,API 中的选择与 SoftLayer Web 门户中的选择不匹配。我想假设排序的节点在下面指定。

Chassis: 4U
CPU: 4*E7-4850 v2 (12-core HT, 2.30 GHz)
RAM: 256GB 
HDD: 2*1TB SATA RAID 1 (Boot); 8*600GB SAS RAID 10 (Ephemeral) (10 total)
NIC: 2*10Gbps
OS: Ubuntu 14.04 LTS Minimal Install

Chassis: 2U
CPU: 2*E5-2650 v3 (10-core HT, 2.30 GHz) 
RAM: 64 GB
HDD: 2*1TB SATA RAID 1 (Boot); 6*600GB SAS RAID 10 (Data) (8 total)
NIC: 2*10 Gbps
OS: Ubuntu 14.04 LTS Minimal Install

Chassis: 2U
CPU: 2*E5-2690 v3 (12-core HT, 2.60 GHz)
RAM: 128GB
HDD: 2*1TB SATA RAID 1 (Boot); 4*600GB SAS RAID 10 (Ephemeral) (6 total)
NIC: 2*1 Gbps
OS: Ubuntu 14.04 LTS Minimal Install

是否有任何有关完整硬件订购选项的文档?非常感谢任何帮助。

【问题讨论】:

    标签: ibm-cloud-infrastructure


    【解决方案1】:

    slcli 仅显示“FAST SERVERS”,这些服务器具有预设配置,使配置过程变得简单快捷。 您可以在此处查看有关裸机服务器中预设配置的更多信息: http://sldn.softlayer.com/blog/bpotter/ordering-bare-metal-servers-using-softlayer-api 因此,目前使用 scli 无法订购所有的裸机服务器风格,如 SL Portal。 但该任务可以使用 API 调用,因为您需要调用 palceOrder() 方法(这与 SL 门户使用的方法相同)。请参阅此文档,了解如何使用 API 订购设备: http://sldn.softlayer.com/es/blog/bpotter/Going-Further-SoftLayer-API-Python-Client-Part-3 看看这段代码,使用 placeOrder 方法订购裸机服务器。

    """
    Order a new server.
    
    Build a SoftLayer_Container_Product_Order object for a new
    server order and pass it to the SoftLayer_Product_Order API service to order
    it. In this care we'll order a Xeon 3460 server with 2G RAM, 100mbit NICs,
    2000GB bandwidth, a 500G SATA drive, CentOS 5 32-bit, and default server
    order options. See below for more details.
    
    Important manual pages:
    http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Product_Order
    http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server
    http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item_Price
    http://sldn.softlayer.com/reference/services/SoftLayer_Product_Order/verifyOrder
    http://sldn.softlayer.com/reference/services/SoftLayer_Product_Order/placeOrder
    
    License: http://sldn.softlayer.com/article/License
    Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
    """
    
    import SoftLayer
    
    
    # Your SoftLayer API username and key.
    USERNAME = 'set me'
    API_KEY = 'set me'
    
    
    # The number of servers you wish to order in this configuration.
    quantity = 1
    
    """
    Where you'd like your new server provisioned.
    
    This can either be the id of the datacenter you wish your new server to be
    provisioned in or the string.
    
    Location id 3     = Dallas
    Location id 18171 = Seattle
    Location id 37473 = Washington, D.C.
    
    """
    location = 'AMSTERDAM'
    
    """
    The id of the SoftLayer_Product_Package you wish to order.
    
    In this case the Intel Xeon 3460's package id is 145.
    """
    
    packageId = 146
    
    """
    Build a skeleton SoftLayer_Hardware_Server object to model the hostname and
    domain we want for our server. If you set quantity greater then 1 then you
    need to define one hostname/domain pair per server you wish to order.
    """
    hardware = [
        {
            'hostname': 'test',  # The hostname of the server you wish to order.
            'domain': 'example.org'  # The domain name of the server you wish to order.
        }
    ]
    
    
    """
    Build a skeleton SoftLayer_Product_Item_Price objects. These objects contain
    much more than ids, but SoftLayer's ordering system only needs the price's id
    to know what you want to order.
    
    Every item in SoftLayer's product catalog is assigned an id. Use these ids
    to tell the SoftLayer API which options you want in your new server. Use
    the getActivePackages() method in the SoftLayer_Account API service to get
    a list of available item and price options per available package.
    """
    prices = [
        {'id': 17232},  # Single Processor Quad Core Xeon 3460 - 2.80GHz (Lynnfield) - 1 x 8MB cache w/HT
        {'id': 637},  # 2 GB DDR2 667
        {'id': 682},  # CentOS 5.x (32 bit)
        {'id': 876},  # 2 GB DDR2 667
        {'id': 20},  # 500GB SATA II
        {'id': 342},  # 20000 GB Bandwidth
        {'id': 273},  # 100 Mbps Public & Private Network Uplinks
        {'id': 55},  # Host Ping
        {'id': 58},  # Automated Notification
        {'id': 420},  # Unlimited SSL VPN Users & 1 PPTP VPN User per account
        {'id': 418},  # Nessus Vulnerability Assessment & Reporting
        {'id': 21},  # 1 IP Address
        {'id': 57},  # Email and Ticket
        {'id': 906}  # Reboot / KVM over IP
    ]
    
    """
    Build a skeleton SoftLayer_Container_Product_Order_Hardware_Server object
    containing the order you wish to place.
    """
    
    orderTemplate = {
        'quantity': quantity,
        'location': location,
        'packageId': packageId,
        'prices': prices,
        'hardware': hardware
    }
    
    # Create a SoftLayer API client object
    client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
    
    try:
        """
        verifyOrder() will check your order for errors. Replace this with a call
        to placeOrder() when you're ready to order. Both calls return a receipt
        object that you can use for your records.
    
        Once your order is placed it'll go through SoftLayer's approval and
        provisioning process. When it's done you'll have a new
        SoftLayer_Hardware_Server object and server ready to use.
        """
        receipt = client['Product_Order'].verifyOrder(orderTemplate)
        print(receipt)
    except SoftLayer.SoftLayerAPIError as e:
        print("Unable to place a server order faultCode=%s, faultString=%s"
              % (e.faultCode, e.faultString))
        exit(1)
    

    另请参阅此示例,该示例返回所有可用的服务器以进行订购:

    """
    List all the servers to order.
    
    Important manual pages:
    http://sldn.softlayer.com/reference/services/SoftLayer_Product_Package_Server/getAllObjects
    http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Package_Server/
    http://sldn.softlayer.com/article/Object-Filters
    
    License: http://sldn.softlayer.com/article/License
    Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
    """
    
    import SoftLayer
    import json
    
    USERNAME = 'set me'
    API_KEY = 'set me'
    
    client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)
    packageService = client['SoftLayer_Product_Package_Server']
    
    objectFilter = {"packageType": {"operation": "in", "options": [{"name": "data", "value": ["BARE_METAL_CORE", "BARE_METAL_CPU", "BARE_METAL_CPU_FAST_PROVISION"]}]}}
    
    try:
        servers = packageService.getAllObjects(filter=objectFilter)
        print(json.dumps(servers, sort_keys=True, indent=2, separators=(',', ': ')))
    except SoftLayer.SoftLayerAPIError as e:
        print("Unable to list the servers to order. faultCode=%s, faultString=%s" % (e.faultCode, e.faultString
    

    【讨论】:

    • 谢谢!这正是我们想要的!
    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多