2016-07-14 10 views
0

Javaクライアントを使用して自動スケールポリシーを実装しています。 トリガデータに「リソース使用」情報を取得するにはどうすればよいですか? (添付のPNGファイルを参照してください) これは私のコードウォッチデータですが、常にnullを返します。SLの自動スケールポリシーデータ

private void getPolicies(){ 

     Group.Service groupSrv = Group.service(client, 1046365L); 

     List<Policy> pList = groupSrv.getPolicies(); 

     for(Policy po : pList){ 
      System.out.println("policy name : " + po.getName()); 
      System.out.println("Cooldown : " + po.getCooldown()); // /60/60/24 
      List<ResourceUse> resourceList = po.asService(client).getResourceUseTriggers(); 

      for(ResourceUse rsc : resourceList){ 
       System.out.println("rsc id : " + rsc.getId()); 

       List<Watch> watList = rsc.getWatches(); 

       for(Watch wat:watList){ 
        System.out.println("watch Id : " + wat.getId()); 
        System.out.println("watch : " + wat.getMetric()); 
       } 

      } 
} 

policy

答えて

0

情報を取得し、それはSOFTLAYER Javaクライアント・オブジェクトに適切にマップされていないようです。下のコードを試してみると、情報が印刷されます。

Softlayer Javaクライアントの最新バージョンを試してみることをお勧めします。問題が再現可能であれば、Softlayer JavaクライアントGitHubプロジェクトで問題を提出してください。

import java.util.List; 
import com.google.gson.Gson; 
import com.softlayer.api.ApiClient; 
import com.softlayer.api.RestApiClient; 
import com.softlayer.api.service.scale.Group; 
import com.softlayer.api.service.scale.Policy; 
import com.softlayer.api.service.scale.policy.Trigger; 

public class TriggersAutoScale { 

private static String user = "set me"; 

    private static String apiKey = "set me"; 

    private static ApiClient client = new RestApiClient().withCredentials(user, apiKey); 

    public static void main(String[] args) { 
     getTriggerWatch(); 

    } 

    public static void getTriggerWatch() { 
     Group.Service groupSrv = Group.service(client, 1046365L); 

     String triggerMask = "mask[id, name, status[name, keyName], suspendedFlag, " 
       + "cooldown, regionalGroupId, minimumMemberCount, maximumMemberCount, " 
       + "balancedTerminationFlag ,policies[id,cooldown,name,scaleActions[id,type[id,keyName,name],amount,scaleType]," 
       + "triggers[id,type],triggers(SoftLayer_Scale_Policy_Trigger_OneTime)[date],triggers(SoftLayer_Scale_Policy_Trigger_Repeating)[schedule]," 
       + "triggers(SoftLayer_Scale_Policy_Trigger_ResourceUse)[watches[id,algorithm,metric,operator,period,value]]]," 
       + "virtualGuestMemberCount]"; 

     groupSrv.setMask(triggerMask); 
     List<Policy> pList = groupSrv.getObject().getPolicies(); 
     for (Policy policy : pList) { 
      System.out.println (policy.getResourceUseTriggers().size()); 
      for (Trigger trigger : policy.getTriggers()) { 
       Gson gson = new Gson(); 
       System.out.println(gson.toJson(trigger)); 
      } 

     } 
    } 

} 
+0

最新のクライアントにも同じ問題があります。私はgsonを使ってデータを検索するほうがいいと思う。ありがとう.. –

0

私はあなたが必要なすべての情報このpostリターンであなたを与えたオブジェクトマスク。しかし、私が言ったように、ポータルは顧客に理解できる情報を表示し、その情報はAPIを使用することができません。リソースの使用に表示され、この値付オートスケールグループのために例えば

私はこれを得た

「私のCPUの割合は、30分(秒)を、80よりも大きい場合」私のAPIレスポンスに:

  "triggers": [ 
       { 
        "id": 145903, 
        "type": { 
         "id": 3, 
         "keyName": "RESOURCE_USE", 
         "name": "Resource Use" 
        }, 
        "watches": [ 
         { 
          "algorithm": "EWMA", 
          "id": 120803, 
          "metric": "host.cpu.percent", 
          "operator": ">", 
          "period": 1800, 
          "value": "80" 
         } 
        ] 
       } 
      ] 

ポータルは、解析し、このようなinforamtion:

  • "アルゴリズム": "EWMA" - >私の
  • "メトリック" の場合: "host.cpu.percent" - > CPUの割合
  • "演算子": ">" - >はより大きい
  • "値": "80" - > 80
  • "期間":1800 - > 30分(秒)ですから、ポータルと同じデータを表示したい場合は

のために、あなたが知っている必要がありますポータルがその情報を解析する方法に関するすべてのケース

よろしく

+0

ありがとうございました。私はマスクを使って時計データを取得しようとしましたが、動作しませんでした。上記の私のJavaコードを確認してください。 –

関連する問題