SDK的使用方法
上次更新时间: 2024/06/27
以下为SDK使用的实际示例 (以 runInstances 与 describeInstances 为例)
案例说明:申请云服务器,并持续追踪订单状态直到云服务器完成供装
package chttl.cloud.hws; import java.util.List; import chttl.cloud.hws.auth.HwsBasicCredential; import chttl.cloud.hws.auth.HwsCredential; import chttl.cloud.hws.exception.HiCloudClientException; import chttl.cloud.hws.exception.HiCloudServerException; import chttl.cloud.hws.services.caas.VirtualMachineService; import chttl.cloud.hws.services.caas.model.DescribeInstancesRequest; import chttl.cloud.hws.services.caas.model.DescribeInstancesResponse; import chttl.cloud.hws.services.caas.model.RunInstancesRequest; import chttl.cloud.hws.services.caas.model.RunInstancesResponse; import chttl.cloud.hws.services.caas.model.VirtualMachineEntry; public class ExampleApp { public static void main(String[] args) throws HiCloudClientException, HiCloudServerException { // 添加凭证 String accessKey = "U0U0MU5UQXhNREF3TVRFek5qSTVPRFkxTURneU1UWT0"; String secretKey = "WWpJNU16a3pOV1JsWWpNeU5HVXdOMkkxTURNd1lUbG1OMlEwTXpSaFptST0"; HwsCredential credential = new HwsBasicCredential(accessKey, secretKey); // 添加凭证(使用Property文件) // HwsCredential credential = new HwsPropertyCredential(); // 创建Client End HiCloudWebServiceClient client = new HiCloudWebServiceClient("hws.hicloud.hinet.net", credential); // 若使用Proxy Server,可通过以下方式设置 client.getConfiguration().setProxyServerIp("proxy.cht.com.tw"); client.getConfiguration().setProxyServerPort(8080); // 创建VM Service Proxy,负责代理处理参数传递与数据验证 VirtualMachineService serviceProxy = client.newServiceProxy(VirtualMachineService.class); // 步骤1:添加VM // 添加Run Instance Request RunInstancesRequest request = new RunInstancesRequest(); request.setImageId("hi-cuium8up"); request.setCount(1); request.setInstanceName("Test HA"); request.setMonitoringEnabled(false); request.setInstanceType("HC1.S.WIN"); request.setRegionId("region-tw-1"); // 呼叫CaaS / CVPC API创建VM並返回RunInstancesResponse RunInstancesResponse runInstancesResult = serviceProxy.runInstances(request); // 顯示RunInstancesResponse結果 System.out.println(runInstancesResult); // 步驟2:查詢云服务器資訊 // 添加Describe Instance Request DescribeInstancesRequest describeRequest = new DescribeInstancesRequest(); // 根据添加RunInstance返回的uuid查询,云服务器订单状态 describeRequest.setOrderUuid(runInstancesResult.getOrderUuidList()); boolean isProvisionFinished = false; // 持续查询云服务器信息,直到云服务器供装完毕 while (!isProvisionFinished) { // 呼叫CaaS / CVPC API查詢VM並返回DescribeInstancesResponse DescribeInstancesResponse describeInstancesResult = serviceProxy.describeInstances(describeRequest); // 显示VM订单状态 System.out.println(describeInstancesResult); List<VirtualMachineEntry> instances = describeInstancesResult.getInstanceList(); for (VirtualMachineEntry instance : instances) { if (!instance.getProvisionStatus().equals("provisioning")) { isProvisionFinished = true; } } try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
使用说明
- 1. hiCloud CaaS / CVPC SDK下载
- hicloud CaaS / CVPC API的相关信息
- 主机: hws.hicloud.hinet.net
- Port: 443
- HTTP protocol: HTTPS
- 取得凭证信息,先到 User Portal 取得 Access Key、Secret key 的信息,如:
Access Key: U0U0MU5UQXhNREF3TVRFek5qSTVPRFkxTURneU1UWT0
Secret key: WWpJNU16a3pOV1JsWWpNeU5HVXdOMkkxTURNd1lUbG1OMlEwTXpSaFptST0 - 注册凭证信息,可以以下两种方式宣告凭证
-
直接宣告于Java Code
String accessKey = "U0U0MU5UQXhNREF3TVRFek5qSTVPRFkxTURneU1UWT0"; String secretKey = "WWpJNU16a3pOV1JsWWpNeU5HVXdOMkkxTURNd1lUbG1OMlEwTXpSaFptST0"; HwsCredential credential = new HwsBasicCredential(accessKey, secretKey);
-
将凭证信息写入Property文件,预设凭证文件名为HwsCredential.properties
accessKey = U0U0MU5UQXhNREF3TVRFek5qSTVPRFkxTURneU1UWT0 secretKey = WWpJNU16a3pOV1JsWWpNeU5HVXdOMkkxTURNd1lUbG1OMlEwTXpSaFptST0
并宣告凭证,类名为HwsPropertyCredentialHwsCredential credential = new HwsPropertyCredential();
- 创建服务器连接信息
-
创建HiCloud Service Client
HiCloudWebServiceClient client = new HiCloudWebServiceClient("hws.hicloud.hinet.net", credential);
-
若使用Proxy Server,可透过以下方式设置
client.getConfiguration().setProxyServerIp("proxy.cht.com.tw"); client.getConfiguration().setProxyServerPort(8080);
- 创建云运算服务代理,透过代理机制将设置参数送往hicloud CaaS / CVPC API,各项服务代理如下:
-
云服务器:相关方法与参数,请参考Java开发者中心 > 云运算 > 云服务器
// 创建Client End HiCloudWebServiceClient client = new HiCloudWebServiceClient("hws.hicloud.hinet.net", credential); // 创建云服务器服务Proxy VirtualMachineService serviceProxy = client.newServiceProxy(VirtualMachineService.class); // 添加Run Instance Request RunInstancesRequest request = new RunInstancesRequest(); request.setImageId("hi-cuium8up"); request.setCount(1); request.setInstanceName("Test HA"); request.setMonitoringEnabled(false); request.setInstanceType("HC1.S.WIN"); // 呼叫CaaS / CVPC API创建VM并返回RunInstancesResponse RunInstancesResponse runInstancesResult = serviceProxy.runInstances(request);
-
负载均衡:相关方法与参数,请参考Java开发者中心 > 云运算 > 负载均衡
// 创建Client End HiCloudWebServiceClient client = new HiCloudWebServiceClient("hws.hicloud.hinet.net", credential); // 创建负载均衡服务Proxy ServerLoadBalancerService serviceProxy = client.newServiceProxy(ServerLoadBalancerService.class); CreateLoadBalancerPolicyRequest request = new CreateLoadBalancerPolicyRequest(); // 创建云服务器负载均衡群组 List<String> instanceIds = new ArrayList<String>(); instanceIds.add("BV55010001000A"); instanceIds.add("BV55010001000B"); request.setInstanceId(instanceIds); // 设置SLB服务Port List<Integer> slbPorts = new ArrayList<Integer>(); slbPorts.add(Integer.valueOf(80)); slbPorts.add(Integer.valueOf(443)); request.setPort(slbPorts); // 创建SLB Policy CreateLoadBalancerPolicyResponse slbResult = serviceProxy.createLoadBalancerPolicy(request);
-
云服务器监控:相关方法与参数,请参考Java开发者中心 > 云运算 > 云服务器监控
// 创建Client End HiCloudWebServiceClient client = new HiCloudWebServiceClient("hws.hicloud.hinet.net", credential); // 创建虛擬機監控服務Proxy MonitorService serviceProxy = client.newServiceProxy(MonitorService.class); // 添加GetInstancesStats Request GetInstancesStatsRequest request =new GetInstancesStatsRequest(); // 设置欲查询VM的Instance ID List<String> instanceIds = new ArrayList<String>(); instanceIds.add("BV55010001000A"); instanceIds.add("BV55010001000B"); request.setInstanceId(instanceIds); // 取得云服务器监控资料 GetInstancesStatsResponse instancesStatsResult = serviceProxy.getInstancesStats(request);
- hicloud CaaS / CVPC API的的异常信息,HiCloud SDK的所有方法皆会定义两类异常,分別為HiCloudServerException與HiCloudClientException
-
Server端异常(HiCloudServerException),在類內定義hwsCode與message,接收來自HiCloudServer返回的异常訊息,相关信息请参考各服务定义的错误代码
- 相关错误代码,请参考错误代码
- Client端异常(HiCloudClientException),宣告Client端在执行过程中所发生的所有异常