Compute Systems Manager が管理するすべてのブレードサーバの情報を取得し,レスポンスを解析する処理のサンプルコードを示します。ユーザー認証はBasic 認証を使用しています。
処理の概要
system
manager
Authorization
ヘッダーは次のように設定します。Authorization: Basic <base64-id-password>
<base64-id-password>には,ユーザーIDとパスワードを半角コロン(:)でつないだ文字列をbase64でエンコードした値を設定します。Authorization
ヘッダーに設定するエンコード済みの文字列を,実際のユーザーIDとパスワードから生成した値に置き換えてください。instanceId
,serverProductName
,slotNumber
,serverStatus
を取得します。サンプルコード
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HCSM REST API Sample</title>
<script type="text/javascript" lang="javascript">
function CreateHttpRequest() {
try {
return new XMLHttpRequest();
} catch (e) {
}
try {
return new ActiveXObject('MSXML2.XMLHTTP.6.0');
} catch (e) {
}
try {
return new ActiveXObject('MSXML2.XMLHTTP.3.0');
} catch (e) {
}
try {
return new ActiveXObject('MSXML2.XMLHTTP');
} catch (e) {
}
return null;
}
/**
* Set the request header to call HCSM API
*/
function setHeader(req) {
// In the Authorization header of the request,
// specify the word Basic, followed by a base64-encoded string
// that encodes the user name and password separated by a colon.
req.setRequestHeader("Authorization", "Basic c3lzdGVtOm1hbmFnZXI=");
req.setRequestHeader('Accept', 'application/json');
req.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
return req;
}
/**
* Send request (HTTP GET)
*/
function sendGetRequest(url) {
var req = new CreateHttpRequest();
req.open("GET", url, false);
setHeader(req);
req.send(null);
return req;
}
/**
* Parse blade information (JSON)
*/
function parseBlades(res) {
// parse responce
var jsonObj = JSON.parse(res);
var servers = jsonObj.Server;
var data = "";
for (i = 0; i < servers.length; i++) {
var serverData = "#"
+ i
+ "¥t instanceId="
+ servers[i].instanceId
+ ", serverProductName="
+ servers[i].serverProductName
+ ", slotNumber="
+ servers[i].slotNumber
+ ", serverStatus="
+ servers[i].serverStatus
+ "<br>";
data = data
+ serverData;
}
// display a result
document.getElementById("after").innerHTML = data;
}
/**
* Parse error respose
*/
function parseErrorRespose(req) {
var statusCode = req.status;
var statusText = req.statusText;
var errorCode;
var detailCode;
var resformat = req.getResponseHeader("Content-Type");
if (req.responseText != null
&& resformat == "application/json") {
var jsonObj = JSON.parse(req.responseText);
errorCode = jsonObj.resultCode;
detailCode = jsonObj.detailCode;
}
document.getElementById("after").innerHTML = "HTTP status : "
+ statusCode
+ " "
+ statusText
+ "¥nerrorCode : "
+ errorCode
+ "¥netailCode : "
+ detailCode;
}
/**
* Obtain information for all blade servers
*/
function GetBlades() {
try {
// execute HCSM REST API
var uri = "http://localhost:22015/ComputeSystemsManager/v1/objects/Blades";
var req = sendGetRequest(uri);
if (req.status == 200) {
// success
parseBlades(req.responseText);
} else if (req.status == 204) {
// success(no content)
document.getElementById("after").innerHTML = req.status
+ " "
+ req.statusText;
} else {
// error
parseErrorRespose(req);
}
} catch (err) {
alert(err.description);
}
}
</script>
</head>
<body onload="GetBlades()">
Obtain some attributes from the information of all blade servers
<br>
<hr>
<div id="after"></div>
</body>
サンプルコードの実行結果例
#0 instanceId=SGl0YWNoaV8wX0RNWV9CTF9TTl8wMTAxMDEwMV8wMA==, serverProductName=BladeSymphony 520AA1, slotNumber=0, serverStatus=Running
#1 instanceId=SGl0YWNoaV8wX0RNWV9CTF9TTl8wMTAxMDEwMV8wMQ==, serverProductName=BladeSymphony 520AA1, slotNumber=1, serverStatus=Running
#2 instanceId=SGl0YWNoaV8wX0RNWV9CTF9TTl8wMTAxMDEwMV8wMg==, serverProductName=BladeSymphony 520AA1, slotNumber=2,3, serverStatus=Running
#3 instanceId=SGl0YWNoaV8wX0RNWV9CTF9TTl8wMTAxMDEwMV8wNA==, serverProductName=BladeSymphony 520HA1, slotNumber=4, serverStatus=Running
#4 instanceId=SGl0YWNoaV8wX0RNWV9CTF9TTl8wMTAxMDEwMV8wNQ==, serverProductName=BladeSymphony 520AA1, slotNumber=5, serverStatus=Running