Terry Corley Terry Corley - 1 month ago 7
JSON Question

SoftLayer API: Provision Server with Basic RAID Configuration

How do you get the appropriate RAID configured on a server order issued through the API?

When attempting to provision a server using the SoftLayer API, we can never get it to properly provision even basic configurations.

After reading https://sldn.softlayer.com/blog/hanskristian/ordering-raid-through-api, the assumption is that if these criteria are true:


  1. All disks are the same;

  2. A RAID controller is selected with a specific RAID type; and

  3. An appropriate number of disks are ordered



That a single RAID group will be configured as requested.

The problem is, we've ordered servers repeatedly using this recommendation and we've never received the proper configuration. To make matters worse, we've never received the same configuration.

Most recently, we wanted a server configured with RAID10 using 6 SSD drives. Here is the payload submitted:

{
"parameters": [
{

"packageId": 271,
"location": 449494,
"quantity": 1,
"hardware": [{
"hostname": "server-name",
"domain": "domain.com",
"primaryBackendNetworkComponent": {
"networkVlanId": 1235

},
"primaryNetworkComponent": {
"networkVlanId": 1234
}
}],
"prices": [
{"id": 163397},
{"id": 49447},
{"id": 141807},
{"id": 141807},
{"id": 141807},
{"id": 141807},
{"id": 141807},
{"id": 141807},
{"id": 29691},
{"id": 27597},
{"id": 50243},
{"id": 37622},
{"id": 34807},
{"id": 32500},
{"id": 33483},
{"id": 35310},
{"id": 27023},
{"id": 32627},
{"id": 25014},
{"id": 50223}
]
}
]
}


Before submitting the payload, we checked it against https://api.softlayer.com/rest/v3/SoftLayer_Product_Order/verifyOrder.json to ensure that it showed RAID 10. It did.

After receiving the servers posted with this configuration, this is the topology of the RAID card:

TOPOLOGY :
========

------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type State BT Size PDC PI SED DS3 FSpace
------------------------------------------------------------------------
0 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
0 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
0 0 0 8:0 9 DRIVE Onln N 1.091 TB dflt N N dflt -
1 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
1 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
1 0 0 8:1 12 DRIVE Onln N 1.091 TB dflt N N dflt -
2 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
2 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
2 0 0 8:2 10 DRIVE Onln N 1.091 TB dflt N N dflt -
3 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
3 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
3 0 0 8:3 13 DRIVE Onln N 1.091 TB dflt N N dflt -
4 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
4 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
4 0 0 8:4 11 DRIVE Onln N 1.091 TB dflt N N dflt -
5 - - - - RAID0 Optl N 1.091 TB dflt N N dflt N
5 0 - - - RAID0 Optl N 1.091 TB dflt N N dflt N
5 0 0 8:5 14 DRIVE Onln N 1.091 TB dflt N N dflt -
------------------------------------------------------------------------


This doesn't even come resemble what we requested. What payload do we need for RAID 10 to provision it reliably and repeatedly?

Update: After checking servers ordered via the API with other RAID configurations, such as RAID1, this is not confined to RAID10. This problem exhibits with RAID1 requests with 2 identical disks.

Answer

In your payload is missing the raid configuration, it should be something like this:

{
    "parameters": [{

        "packageId": 271,
        "location": 449494,
        "quantity": 1,
        "hardware": [{
            "hostname": "server-name",
            "domain": "domain.com",
            "primaryBackendNetworkComponent": {
                "networkVlanId": 1235

            },
            "primaryNetworkComponent": {
                "networkVlanId": 1234
            }
        }],
        "prices": [{
            "id": 163397
        }, {
            "id": 49447
        }, {
            "id": 141807
        }, {
            "id": 141807
        }, {
            "id": 141807
        }, {
            "id": 141807
        }, {
            "id": 141807
        }, {
            "id": 141807
        }, {
            "id": 29691
        }, {
            "id": 27597
        }, {
            "id": 50243
        }, {
            "id": 37622
        }, {
            "id": 34807
        }, {
            "id": 32500
        }, {
            "id": 33483
        }, {
            "id": 35310
        }, {
            "id": 27023
        }, {
            "id": 32627
        }, {
            "id": 25014
        }, {
            "id": 50223
        }]
    }],
    "storageGroups": [{
        "arraySize": 1200,
        "arrayTypeId": 5,
        "hardDrives": [
            0,
            1,
            2,
            3,
            4,
            5
        ],
        "partitionTemplateId": 6
    }]
}

See the description for the properties here: http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Product_Order_Storage_Group

"arrayType: 5" is the configuration for the RAID10 you can get all the RAID options using this method http://sldn.softlayer.com/reference/services/SoftLayer_Configuration_Storage_Group_Array_Type/getAllObjects

See this: Configuring Softlayer Disk Partitions at Order Time for to know more about the partitions templates and RAID configuration

Regards

Comments