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端在執行過程中所發生的所有例外