Compute Systems Manager REST API リファレンスガイド
Compute Systems Manager が管理するすべてのブレードサーバの情報を取得し,レスポンスを解析する処理のサンプルコードを示します。ユーザー認証はBasic 認証を使用しています。
- HTTP ヘッダーに認証情報や入出力データのエンコード形式などを設定します。
このサンプルでは次のユーザーでログインします。
ユーザーID:system
パスワード:manager
Basic認証のAuthorization
ヘッダーは次のように設定します。Authorization: Basic <base64-id-password><base64-id-password>には,ユーザーIDとパスワードを半角コロン(:)でつないだ文字列をbase64でエンコードした値を設定します。
上記と異なるユーザーでログインする場合は,Authorization
ヘッダーに設定するエンコード済みの文字列を,実際のユーザーIDとパスワードから生成した値に置き換えてください。- localhostの 管理サーバに対して,すべてのブレードサーバの情報を取得するAPI を実行します。
- 処理2 で実行した API のレスポンスボディーを解析し,ブレードサーバの属性の
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
All Rights Reserved. Copyright© 2016, Hitachi, Ltd.