可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I was wondering how to add ssh keys that are within softlayer to be added to a json bare metal order. Through the GUI, it would be added at the end of the order before you click submit
wondering if it's just with:
productOrder = {
"quantity": 1,
"location": 1234,
"packageId": 1234,
"sshKeyIds": 1234,
"hardware": [ ...
I did a verifyOrder() but not sure if it's correct
回答1:
If you are using: SoftLayer_Product_Order::placeOrder method, take a look the following example:
"""
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. <sldn@softlayer.com>
"""
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)
I hope it helps, let me know any doubt or comments
回答2:
You could try this:
http://$username:$apiKey@api.softlayer.com/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 }
]
}
]
}
Additional links to review:
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
回答3:
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)
回答4:
Try the following script:
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)