package com.ping;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ping.pojo.*;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestClient {
@Test
void sendGetUtil(){
HeadBean headBean = HeadBean.getHeadBean("5e6e83881aca4888a70dff6a0282509f","mingtu","yanglin1997","mingtu");
//HeadBean headBean = new HeadBean("5e6e83881aca4888a70dff6a0282509f","mingtu","yanglin1997","mingtu");
String str = JSONObject.toJSONString(headBean);
System.out.println(str);
//获取token
String getTokenUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens";
String token = HttpClientUtils.sendPostString(getTokenUrl, str);
//System.out.println(token);
//获取所有的指标
String project_id = "5e6e83881aca4888a70dff6a0282509f";
String getMetricsUrl = "https://ces.cn-north-1.myhuaweicloud.com/V1.0/"+project_id+"/metrics";
String jsonStr = HttpClientUtils.sendGet(token, getMetricsUrl, null);
//System.out.println(jsonStr);
//获取指定的名称的指标
/* String namespace = "SYS.DCS";
List<String> metricsList = new ArrayList<>();
metricsList.add("used_memory_rss");
metricsList.add("used_memory_lua");
for (String metric_name:metricsList) {
Map<String,String> map = new HashMap<>();
map.put("namespace",namespace);
map.put("metric_name",metric_name);
String jsonStr2 = HttpClientUtils.sendGet(token, getMetricsUrl, map);
System.out.println(jsonStr2);
JSONObject jsonObject = JSON.parseObject(jsonStr2);
System.out.println(jsonObject);
}*/
// List<Metrics> metricsList = JSON.parseArray(JSON.parseObject(jsonStr).getString("metrics"), Metrics.class);
// System.out.println(metricsList.size());
// System.out.println(metricsList.toString());
// for (Metrics metrics: metricsList) {
// metrics.setUnit(null);
//
// Map<String,String> map = new HashMap<>();
// map.put("namespace",metrics.getNamespace());
// map.put("metric_name",metrics.getMetric_name());
//
// System.out.println(metrics.getMetric_name());
// System.out.println(metrics.getDimensionsList().size());
//
// List<Dimensions> dimensionsList = metrics.getDimensionsList();
// for (Dimensions dimensions : dimensionsList){
// String dim = dimensions.getName() + "," + dimensions.getValue();
// map.put("dim.0",dim);
// }
// map.put("from","1636367858296");
// map.put("to","1636368858296");
// map.put("period","1");
// map.put("filter","average");
//
// String getMetricsUrlDate = "https://ces.cn-north-1.myhuaweicloud.com/V1.0/5e6e83881aca4888a70dff6a0282509f/metric-data";
// String getMetricsList = HttpClientUtils.sendGet(token, getMetricsUrlDate, map);
// System.out.println(getMetricsList);
// }
// System.out.println("================");
String getMetricsUrlDate = "https://ces.cn-north-1.myhuaweicloud.com/V1.0/5e6e83881aca4888a70dff6a0282509f/metric-data";
Map<String,String> map = new HashMap<>();
map.put("namespace","SYS.DCS");
map.put("metric_name","used_memory_peak");
map.put("dim.0","dcs_instance_id,6bbe0978-ba76-4658-8b19-a0c6d6aecc76");
map.put("from","1636367858296");
map.put("to","1636368858296");
map.put("period","1");
map.put("filter","average");
String getMetricsList = HttpClientUtils.sendGet(token, getMetricsUrlDate, map);
System.out.println(getMetricsList);
}
}
public class Auth {
private Identity identity;
private Scope scope;
public void setIdentity(Identity identity) {
this.identity = identity;
}
public Identity getIdentity() {
return identity;
}
public void setScope(Scope scope) {
this.scope = scope;
}
public Scope getScope() {
return scope;
}
}
public class Dimensions {
private String name;
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public class Domain {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class HeadBean {
private Auth auth;
public void setAuth(Auth auth) {
this.auth = auth;
}
public Auth getAuth() {
return auth;
}
public static HeadBean getHeadBean(String projectId,String userName,String userPassword,String domainName){
HeadBean headBean = new HeadBean();
Project project = new Project();
project.setId(projectId);
Scope scope = new Scope();
scope.setProject(project);
Domain domain = new Domain();
domain.setName(domainName);
User user = new User();
user.setName(userName);
user.setPassword(userPassword);
user.setDomain(domain);
Password password = new Password();
password.setUser(user);
ArrayList<String> list = new ArrayList<String>();
list.add("password");
Identity identity = new Identity();
identity.setMethods(list);
identity.setPassword(password);
Auth auth = new Auth();
auth.setIdentity(identity);
auth.setScope(scope);
headBean.setAuth(auth);
return headBean;
}
}
public class Identity {
private List<String> methods;
private Password password;
public void setMethods(List<String> methods) {
this.methods = methods;
}
public List<String> getMethods() {
return methods;
}
public void setPassword(Password password) {
this.password = password;
}
public Password getPassword() {
return password;
}
}
public class Metrics {
private String unit;
private String metric_name;
private String namespace;
private List<Dimensions> dimensionsList;
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getMetric_name() {
return metric_name;
}
public void setMetric_name(String metric_name) {
this.metric_name = metric_name;
}
public String getNamespace() {
return namespace;
}
public void setNamespace(String namespace) {
this.namespace = namespace;
}
public List<Dimensions> getDimensionsList() {
return dimensionsList;
}
public void setDimensionsList(List<Dimensions> dimensionsList) {
this.dimensionsList = dimensionsList;
}
}
public class Password {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
public class Project {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public class Scope {
private Project project;
public void setProject(Project project) {
this.project = project;
}
public Project getProject() {
return project;
}
}
public class User {
private String name;
private String password;
private Domain domain;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
public void setDomain(Domain domain) {
this.domain = domain;
}
public Domain getDomain() {
return domain;
}
}