SL中的自动定标策略数据

时间:2016-07-14 10:49:00

标签: ibm-cloud-infrastructure

我正在使用Java客户端实现自动缩放策略。 如何在触发数据中获取“资源使用”信息? (请参阅随附的png文件) 这是获取Watch数据的代码,但它总是返回null。

    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

2 个答案:

答案 0 :(得分: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"
                        }
                    ]
                }
            ]

门户网站解析这样的信息:

  • “算法”:“EWMA” - &gt;如果我的
  • “metric”:“host.cpu.percent” - &gt; CPU百分比
  • “operator”:“&gt;” - &GT;大于
  • “value”:“80” - &gt; 80
  • “period”:1800 - &gt; 30分钟

因此,如果要显示与门户网站相同的数据,则需要了解门户网站如何解析该信息的所有案例。

此致

答案 1 :(得分: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));
            }

        }
    }

}