2016-11-04 1 views
0

Мне было интересно, как добавить ключи ssh, которые находятся в пределах softlayer, которые будут добавлены в json bare metal order. Через графический интерфейс, он будет добавлен в конце заказа до нажатия кнопки отправитьДобавление ключей SSH в Softlayer JSON для Bare metal

интересно, если это просто с:

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 в квитанции, не могли бы вы предоставить полный код, который вы пробовали? Если у Вас возникнут этот вопрос –

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

Try следующий сценарий:

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 в ценах, но у меня есть 2 установки рейда в 'storageGroups', что хорошо? – Patrick

+0

Вы должны использовать эту цену: ** 141945 - DISK_CONTROLLER_RAID ** вместо: ** 141965 - DISK_CONTROLLER_RAID_10 **, просмотрев ваш шаблон. Пересматривая свой шаблон, вы настраиваете разделы для первого рейда (RAID 10). Невозможно установить настраиваемые разделы для первого RAID. Чтобы получить дополнительную информацию о конфигурации RAID, см.: [Заказ RAID через API] (http://sldn.softlayer.com/blog/hansKristian/Ordering-RAID-through-API) –

Смежные вопросы