我正在使用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());
}
}
}
答案 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"
}
]
}
]
门户网站解析这样的信息:
因此,如果要显示与门户网站相同的数据,则需要了解门户网站如何解析该信息的所有案例。
此致
答案 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));
}
}
}
}