2016-11-04 23 views
0

我想知道如何添加softlayer中的ssh密钥以添加到json裸机订单。通过GUI,它将在顺序的末尾添加您点击提交为Softlayer JSON订单添加SSH密钥裸金属

想知道,如果它只是与前:

productOrder = { "quantity": 1, "location": 1234, "packageId": 1234, "sshKeyIds": 1234, "hardware": [ ...

我做了verifyOrder(),但不知道这是否是正确的

回答

1

如果您正在使用:SoftLayer_Product_Order::placeOrder方法,一起来看看下面的例子:

""" 
Order a new server with SSH Keys 

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. <[email protected]> 
""" 
import SoftLayer 


# Your SoftLayer API username and key. 
USERNAME = 'set me' 
API_KEY = 'set me' 


productOrder = { 
    'quantity': 1, 
    'location': "DALLAS09", 
    'packageId': 255, 
    'hardware': [ 
       { 
        'hostname': 'rcvtest-11', # The hostname of the server you wish to order. 
        'domain': 'example.org' # The domain name of the server you wish to order. 
        } 
       ], 
    'prices': [ 
       {'id': 50357}, 
       {'id': 50041}, 
       {'id': 876}, 
       {'id': 55}, 
       {'id': 57}, 
       {'id': 44988}, 
       {'id': 273}, 
       {'id': 21}, 
       {'id': 50387}, 
       {'id': 906}, 
       {'id': 58}, 
       {'id': 50397}, 
       {'id': 420}, 
       {'id': 418} 
       ], 
     'sshKeys': [{'sshKeyIds': [214147, 94206]}] 

} 

# 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(productOrder) 
    print(receipt) 
except SoftLayer.SoftLayerAPIError as e: 
    print("Unable to place a server order faultCode=%s, faultString=%s" 
      % (e.faultCode, e.faultString)) 
    exit(1) 

我希望它能帮助,让我知道有任何疑问或评论

+0

谢谢,我之前试过这个,我在收据中得到了这个: ''sshKeys“:[{'sshKeyIds':[]}],' 在sshKeys部分,它没有显示任何这就是为什么我关注 – Patrick

+0

我知道我的ssh密钥/编号是正确的,通过验证getSshKeys函数 – Patrick

+0

我已经成功定义并查看收据中的ssh密钥,您能否提供您尝试的完整代码?如果你继续从pprint进口pprint有这个问题 –

0

你可以试试这个:

http://$username:[email protected]/rest/v3/SoftLayer_Hardware_Server/createObject.json 
Method: POST 
Request body: 

{ 
    "parameters":[ 
     { 
     "hostname":"test", 
     "domain":"softlayer.com", 
     "processorCoreAmount":2, 
     "memoryCapacity":2, 
     "hourlyBillingFlag":true, 
     "datacenter":{ 
      "name":"dal05" 
     }, 
     "operatingSystemReferenceCode":"UBUNTU_LATEST", 
     "sshKeys":[ 
      { "id":21414 }, 
      { "id":9420 } 
     ] 
     } 
    ] 
} 

其他链接查看: http://sldn.softlayer.com/reference/services/SoftLayer_Hardware_Server/createObject http://sldn.softlayer.com/reference/services/SoftLayer_Account/getSshKeys http://sldn.softlayer.com/reference/services/SoftLayer_Hardware/getCreateObjectOptions

0
import SoftLayer 
import json 
from pprint import pprint as pp 

productOrder = { 
    "quantity": 1, 
    "location": 1441195, 
    "packageId": 251, 
    "sshKeyIds": 248873, 
    "hardware": [ 
     { 
      "hostname": "db2oncloud-tshirt-plan-customer-#-letter-datacenter", 
      "primaryNetworkComponent": { 
       "networkVlan": { 
        "id": 1351859 
       } 
      }, 
      "domain": "bluemix.net", 
      "primaryBackendNetworkComponent": { 
       "networkVlan": { 
        "id": 1351879 
       } 
      } 

     } 
    ], 
    "prices": [ 
     { 
      "id": 50691, 
      "description": "Dual Intel Xeon E5-2620 v3 (12 Cores, 2.40 GHz)" 
     }, 
     { 
      "id": 49437, 
      "description": "128 GB RAM" 
     }, 
     { 
      "id": 49081, 
      "description": "Red Hat Enterprise Linux 7.x (64 bit) (per-processor licensing)" 
     }, 
     { 
      "id": 35686, 
      "description": "10 Gbps Redundant Public & Private Network Uplinks" 
     }, 
     { 
      "id": 34241, 
      "description": "Host Ping and TCP Service Monitoring" 
     }, 
     { 
      "id": 34996, 
      "description": "Automated Reboot from Monitoring" 
     }, 
     { 
      "id": 50359, 
      "description": "500 GB Bandwidth" 
     }, 
     { 
      "id": 33483, 
      "description": "Unlimited SSL VPN Users & 1 PPTP VPN User per account" 
     }, 
     { 
      "id": 141833, # Disk0 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk1 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk2 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk3 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk4 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk5 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 50143, # Disk6 
      "description": "800 GB SSD (10 DWPD)" 
     }, 
     { 
      "id": 50143, # Disk7 
      "description": "800 GB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141965, 
      "description": "DISK_CONTROLLER_RAID_10" 
     }, 
     { 
      "id": 32500, 
      "description": "Email and Ticket" 
     }, 
     { 
      "id": 35310, 
      "description": "Nessus Vulnerability Assessment & Reporting" 
     }, 
     { 
      "id": 34807, 
      "description": "1 IP Address" 
     }, 
     { 
      "id": 25014, 
      "description": "Reboot/KVM over IP" 
     } 
    ], 
    "sshKeys": [ 
     { 
      "sshKeyIds":248873 
     } 
    ], 
    "storageGroups": [ 
     { 
      "arraySize": 100, 
      "arrayTypeId": 5, # Raid 10 
      "hardDrives": [ 
       0, 
       1, 
       2, 
       3, 
       4, 
       5 
      ], 
      "partitionTemplateId": 1, # Linux Basic 
      "partitions": [ 
       { 
        "isGrow": True, 
        "name": "/ssd_disk1", 
        "size": 3501 
       } 
      ] 
     }, 
     { 
      "arraySize": 800, 
      "arrayTypeId": 2, # Raid 1 
      "hardDrives": [ 
       6, 
       7 
      ], 
      "partitions": [ 
       { 
        "isGrow": True, 
        "name": "/ssd_disk2", 
        "side": 800 
       } 
      ] 
     } 
    ] 
} 

client = SoftLayer.Client(username=&apikey) 

order = client['Product_Order'].verifyOrder(productOrder) 
pp(order) 
0

尝试以下脚本:

import SoftLayer 
import json 
from pprint import pprint as pp 

productOrder = { 
    "quantity": 1, 
    "location": 1441195, 
    "packageId": 251, 
    #"sshKeyIds": 248873, 
    "hardware": [ 
     { 
      "hostname": "db2oncloud-tshirt-plan-customer-#-letter-datacenter", 
      "primaryNetworkComponent": { 
       "networkVlan": { 
        "id": 1351859 
       } 
      }, 
      "domain": "bluemix.net", 
      "primaryBackendNetworkComponent": { 
       "networkVlan": { 
        "id": 1351879 
       } 
      } 

     } 
    ], 
    "prices": [ 
     { 
      "id": 50691, 
      "description": "Dual Intel Xeon E5-2620 v3 (12 Cores, 2.40 GHz)" 
     }, 
     { 
      "id": 49437, 
      "description": "128 GB RAM" 
     }, 
     { 
      "id": 49081, 
      "description": "Red Hat Enterprise Linux 7.x (64 bit) (per-processor licensing)" 
     }, 
     { 
      "id": 35686, 
      "description": "10 Gbps Redundant Public & Private Network Uplinks" 
     }, 
     { 
      "id": 34241, 
      "description": "Host Ping and TCP Service Monitoring" 
     }, 
     { 
      "id": 34996, 
      "description": "Automated Reboot from Monitoring" 
     }, 
     { 
      "id": 50359, 
      "description": "500 GB Bandwidth" 
     }, 
     { 
      "id": 33483, 
      "description": "Unlimited SSL VPN Users & 1 PPTP VPN User per account" 
     }, 
     { 
      "id": 141833, # Disk0 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk1 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk2 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk3 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk4 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141833, # Disk5 
      "description": "1.2 TB SSD (10 DWPD)" 
     }, 
     { 
      "id": 50143, # Disk6 
      "description": "800 GB SSD (10 DWPD)" 
     }, 
     { 
      "id": 50143, # Disk7 
      "description": "800 GB SSD (10 DWPD)" 
     }, 
     { 
      "id": 141965, 
      "description": "DISK_CONTROLLER_RAID_10" 
     }, 
     { 
      "id": 32500, 
      "description": "Email and Ticket" 
     }, 
     { 
      "id": 35310, 
      "description": "Nessus Vulnerability Assessment & Reporting" 
     }, 
     { 
      "id": 34807, 
      "description": "1 IP Address" 
     }, 
     { 
      "id": 25014, 
      "description": "Reboot/KVM over IP" 
     } 
    ], 
    "sshKeys": [ 
     { 
      "sshKeyIds":[248873] 
     } 
    ], 
    "storageGroups": [ 
     { 
      "arraySize": 100, 
      "arrayTypeId": 5, # Raid 10 
      "hardDrives": [ 
       0, 
       1, 
       2, 
       3, 
       4, 
       5 
      ], 
      "partitionTemplateId": 1, # Linux Basic 
      "partitions": [ 
       { 
        "isGrow": True, 
        "name": "/ssd_disk1", 
        "size": 3501 
       } 
      ] 
     }, 
     { 
      "arraySize": 800, 
      "arrayTypeId": 2, # Raid 1 
      "hardDrives": [ 
       6, 
       7 
      ], 
      "partitions": [ 
       { 
        "isGrow": True, 
        "name": "/ssd_disk2", 
        "side": 800 
       } 
      ] 
     } 
    ] 
} 

#client = Client(username=USERNAME, api_key=API_KEY) 
client = SoftLayer.Client(username=&apikey) 

order = client['Product_Order'].verifyOrder(productOrder) 
pp(order) 
+0

非常感谢Ruber,你是最棒的! – Patrick

+0

我看到我在价格上有RAID选项,但在'storageGroups'中有2个raid设置可以吗? – Patrick

+0

您应该使用此价格:** 141945 - DISK_CONTROLLER_RAID **而不是:** 141965 - DISK_CONTROLLER_RAID_10 **,查看您的模板。 检查您的模板,您正在为第一个raid(RAID 10)配置分区,无法为第一个RAID设置自定义分区。要获得有关RAID配置的更多信息,请参阅:[通过API订购RAID](http://sldn.softlayer.com/blog/hansKristian/Ordering-RAID-through-API) –