Adding SSH keys to Softlayer JSON order for Bare m

2019-09-10 00:13发布

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

4条回答
疯言疯语
2楼-- · 2019-09-10 00:19
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)
查看更多
Anthone
3楼-- · 2019-09-10 00:26

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)
查看更多
迷人小祖宗
4楼-- · 2019-09-10 00:35

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

查看更多
我命由我不由天
5楼-- · 2019-09-10 00:38

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

查看更多
登录 后发表回答