2016-12-08 9 views
0

REST APIを使用して仮想ゲストのデフォルト監視を無効にすることはできますが、Rubyではこれを動作させることはできません。Ruby経由のデフォルト監視を無効にしようとするとエラーが発生する

カール例:

curl -s --user "$SOFTLAYER_USERNAME:$SOFTLAYER_API_KEY" -X POST --data @editmonitoring.json "https://api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/26223285/editObject" 

editmonitoring.jsonファイルが

{ "parameters": [ 
    { 
     "monitoringServiceFlag": "false" 
    } 
] 
} 

私のRubyファイルが

require 'softlayer_api' 
require 'pp' 

client = SoftLayer::Client.new(:timeout => 120) 

parameters = [ 
    { 
     'id' => 26223283, 
     'monitoringServiceFlag' => 'false' 
    } 
] 

begin 
    editMonitoring = client['SoftLayer_Virtual_Guest'].editObject(parameters) 
    puts editMonitoring 
rescue Exception => exception 
    puts "There is an error in the order: #{exception}" 
end 

誤差である私が帰ってきた

$ ruby disablemonitoring.rb 
There is an error in the order: Object does not exist to execute method on. (SoftLayer_Virtual_Guest::editObject) 
取得します10

答えて

0

残念ながら、このフラグをに設定することはできません。monitoringServiceFlag = falseは、サーバーに高度な監視パッケージがインストールされていることを示します。、このフラグをfalseに設定する唯一の方法はサービスをキャンセルすることです。

あなたの目標は、以下のRubyスクリプトを試してみてください、このサービスを中止する場合:

# Cancel Advanced Monitoring Package for a VSI 
# 
# Important manual pages 
# http://sldn.softlayer.com/reference/services/SoftLayer_Virtual_Guest/getObject 
# http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Item_Cancellation_Request/createObject 
# 
# License: http://sldn.softlayer.com/article/License 
# Author: SoftLayer Technologies, Inc.<[email protected]> 

require 'softlayer_api' 
require 'pp' 

# Create connection1 
client = SoftLayer::Client.new(:timeout => 120) 

# Define your vsi's identifier 
vsi_id = 15002321 

# Define an object mask to get additional information from monitoring 
object_mask = 'mask[billingItem[monitoringBillingItems]]' 

begin 
    # Getting vsi information 
    vsi_result = client['SoftLayer_Virtual_Guest'].object_mask(object_mask).object_with_id(vsi_id).getObject 

    # Define template to cancel monitoring billing item 
    template = { 
    "accountId" => 112233, 
    "items"=>[{ 
     "billingItemId"=> vsi_result['billingItem']['monitoringBillingItems'][0]['id'], 
     "immediateCancellationFlag"=> true 
    }] 
    } 

    # Canceling service 
    result = client['SoftLayer_Billing_Item_Cancellation_Request'].createObject(template) 
    puts result 
rescue Exception => exception 
    puts "Error: #{exception}" 
end 
+0

私はこれを行う方法を見つけましたが、これは他の問題が発生するかどうかについてアドバイスを求めているようなので、それが見えます。 'SoftLayer_Virtual_Guest :: getNetworkMonitors'を使用すると、私は監視IDを取得できます。私はそれを 'SoftLayer_Network_Monitor_Version1_Query_Host :: deleteObject'に渡し、デフォルトの監視がサーバから削除されます。ポータルとAPIを介してこれを確認しました。 – greyhoundforty

関連する問題