2016-07-14 44 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代码。 –