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(); } } } }
使用說明
- 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); // 取得VM監控資料 GetInstancesStatsResponse instancesStatsResult = serviceProxy.getInstancesStats(request);
- hicloud CaaS / CVPC API的例外訊息,HiCloud SDK的所有方法皆會定義兩類例外,分別為HiCloudServerException與HiCloudClientException
-
Server端例外(HiCloudServerException),在類別內定義hwsCode與message,接收來自HiCloudServer回傳的例外訊息,相關訊息請參考各服務定義的錯誤代碼
- 相關錯誤代碼,請參考錯誤代碼
- Client端例外(HiCloudClientException),宣告Client端在執行過程中所發生的所有例外