最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何将用户元数据添加到IBM Cloud虚拟设备订单?

运维笔记admin9浏览0评论

如何将用户元数据添加到IBM Cloud虚拟设备订单?

如何将用户元数据添加到IBM Cloud虚拟设备订单?

我通过发布如下所示的JSON,使用NodeJS(JavaScript)在IBM Cloud(前SoftLayer)上成功订购了新设备。现在我正在尝试修改我的订单并将用户元数据添加到每个订购的设备,但无法找到轻松添加它的方法。

这是我的工作订单(在一次API调用中请求3个Ubuntu框):

var ibm_order = {
  imageTemplateGlobalIdentifier: 'a1237539-c54d-46dd-bece-c17c2329c607',
  imageTemplateId: '',
  location: 138124,
  packageId: 46,
  presetId: '',
  quantity: 3,
  sourceVirtualGuestId: '',
  useHourlyPricing: true,
  complexType: 'SoftLayer_Container_Product_Order_Virtual_Guest',
  prices: 
  [{id: 1641},        // description: 2 x 2.0 GHz Cores
    {id: 1647},       // description: 8 GB
    {id: 13899},      // description: 25 GB (LOCAL)
    {id: 905},        // description: Reboot / Remote Console
    {id: 274},        // description: 1 Gbps Public & Private Network Uplinks
    {id: 1800},       // description: 0 GB Bandwidth
    {id: 21},         // description: 1 IP Address
    {id: 55},         // description: Host Ping
    {id: 57},         // description: Email and Ticket
    {id: 58},         // description: Automated Notification
    {id: 420},        // description: Unlimited SSL VPN Users & 1 PPTP VPN User per account
    {id: 418}],       // description: Nessus Vulnerability Assessment & Reporting
    sshKeys: [{sshKeyIds: [4512]}],
    virtualGuests: [
      {domain: 'mydomain', hostname: 'rw-ff-dal05-1a'},
      {domain: 'mydomain', hostname: 'rw-ff-dal05-1b'},
      {domain: 'mydomain', hostname: 'rw-ff-dal05-1c'}
    ]
  }

此代码使用softlayer-node npm发布上述订单:

  var SoftLayer = require('softlayer-node');
  var softlayer_client = new SoftLayer();

  // actual SL API call
  softlayer_client
  .auth(softlayer_username, softlayer_api_key)
  .path('Product_Order', 'placeOrder')
  .parameters(ibm_order)
  .post()
  .then(function(result:any) {
    console.log('success! result: ' + JSON.stringify(result, null, 4) );
  }, function(error:any) {
    console.log('error: details: ' + JSON.stringify(error, null, 4) );
  });

问题:如何向每个请求的设备添加用户元数据?用户元数据是一个字符串数组,可能应该是virtualGuests数组元素的一部分(每个“虚拟客户”都有自己的user_metadata数组),但是当我尝试指定“UserMetadata”时,我收到一个错误:

error: details: {
    "message": {
        "error": "The property 'UserMetadata' is not valid for 'SoftLayer_Virtual_Guest'.",
        "code": "SoftLayer_Exception_Public"
    },
    "statusCode": 500
}

我找到了这些SoftLayer API参考页面: 1)参考»数据类型»SoftLayer_Container_Product_Order_Virtual_Guest 2)参考»服务»SoftLayer_Virtual_Guest 但那些并非100%相关(他们建议使用setUserMetadata方法,但我所拥有的只是一个低级别的“预烘焙”JSON!)

或者可能还有其他更优雅的方式从NodeJS从IBM Cloud(前SoftLayer)订购新设备?

回答如下:

你是对的,但错误是由于你发送的属性“UserMetaData”,这不是virtualGuests的有效属性,你正在寻找的特定属性被称为“userData”,而是在数据类型Virtual_Guest内。

请尝试以下方法:

var ibm_order = {
imageTemplateGlobalIdentifier: 'a1237539-c54d-46dd-bece-c17c2329c607',
imageTemplateId: '',
location: 138124,
packageId: 46,
presetId: '',
quantity: 3,
sourceVirtualGuestId: '',
useHourlyPricing: true,
complexType: 'SoftLayer_Container_Product_Order_Virtual_Guest',
prices: 
[{id: 1641},        // description: 2 x 2.0 GHz Cores
  {id: 1647},       // description: 8 GB
  {id: 13899},      // description: 25 GB (LOCAL)
  {id: 905},        // description: Reboot / Remote Console
  {id: 274},        // description: 1 Gbps Public & Private Network Uplinks
  {id: 1800},       // description: 0 GB Bandwidth
  {id: 21},         // description: 1 IP Address
  {id: 55},         // description: Host Ping
  {id: 57},         // description: Email and Ticket
  {id: 58},         // description: Automated Notification
  {id: 420},        // description: Unlimited SSL VPN Users & 1 PPTP VPN User per account
  {id: 418}],       // description: Nessus Vulnerability Assessment & Reporting
  sshKeys: [{sshKeyIds: [4512]}],
  virtualGuests: [
  {domain: 'mydomain', hostname: 'rw-ff-dal05-1a', userData: [{value: 'someValue1'}]},
  {domain: 'mydomain', hostname: 'rw-ff-dal05-1b', userData: [{value: 'someValue2'}]},
  {domain: 'mydomain', hostname: 'rw-ff-dal05-1c', userData: [{value: 'someValue3'}]}
  ]
}

有关详细信息,请参阅以下内容:

http://sldn.softlayer/blog/jarteche/getting-started-user-data-and-post-provisioning-scripts

Retrieving user metadata about a provisioned SoftLayer server comes back null

https://sldn.softlayer/article/softlayer-api-overview

发布评论

评论列表(0)

  1. 暂无评论