EMR JavaScript SDK
Example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>EMR jQuery Client Test</title>
</head>
<body>
<input type="button" id="runTest" value="Test EMR Server API" >
<table style="width:600px">
<tr>
<td>API</td>
<td>Result</td>
</tr>
<tr>
<td>getServerVersion</td>
<td id="getServerVersion">NA</td>
</tr>
<tr>
<td>createCluster</td>
<td id="createCluster">NA</td>
</tr>
<tr>
<td>listClusters</td>
<td id="listClusters">NA</td>
</tr>
<tr>
<td>terminateCluster</td>
<td id="terminateCluster">NA</td>
</tr>
</table>
<script src="../../src/jquery.js"></script>
<script src="../../src/rpc/thrift.js"></script>
<script src="../../src/rpc/Common_types.js"></script>
<script src="../../src/rpc/Errors_types.js"></script>
<script src="../../src/rpc/BaseService.js"></script>
<script src="../../src/emr/EMRService_types.js"></script>
<script src="../../src/emr/EMRSchedulerService.js"></script>
<script>
(function() {
var transport = new Thrift.TXHRTransport("http://emr.api.xiaomi.com/v1/api/scheduler");
var protocol = new Thrift.TJSONProtocol(transport);
var client = new EMRSchedulerServiceClient(protocol);
var serverVersionElement = document.getElementById("getServerVersion");
var createClusterElement = document.getElementById("createCluster");
var listClustersElement = document.getElementById("listClusters");
var terminateClusterElment = document.getElementById("terminateCluster");
document.getElementById("runTest")
.addEventListener("click", function() {
client.getServerVersion(function(ver) {
serverVersionElement.innerHTML = "Server Version: " + ver.major +
"." + ver.minor + "." + ver.revision;
});
var createClusterRequest = new CreateClusterRequest();
createClusterRequest.name = "CreateClusterTest";
createClusterRequest.region="ec2.cn-norht-1";
createClusterRequest.purpose="emr";
createClusterRequest.addInstanceGroupRequests = [
new AddInstanceGroupRequest({
name: "master",
role: InstanceGroupRole.MASTER,
instanceType: "master.test",
requestedInstanceCount: 1}),
new AddInstanceGroupRequest({
name: "control",
role: InstanceGroupRole.CONTROL,
instanceType: "control.test",
requestedInstanceCount: 3}),
new AddInstanceGroupRequest({
name: "core",
role: InstanceGroupRole.CORE,
instanceType: "core.test",
requestedInstanceCount: 1}),
];
var clusterId = null;
client.createCluster(createClusterRequest, function(createClusterResponse) {
clusterId = createClusterResponse.cluserId;
createClusterElement.innerHTML = "CreateClusterResponse: " + createClusterResponse;
}).error(function(xhr, status, e) {
createClusterElement.innerHTML = "Error code " + e.errorCode + ": " + e.errorMessage;
});
client.listClusters(0, 0x7FFFFFFF, function(clusterList){
for (var idx in clusterList) {
listClusterElement.innerHTML = listClusterElement.innerHTML +
"[id:" + clusterList[idx].clusterId + ",name:" + clusterList[idx].name + "]<br>";
}
}).error(function(xhr, status, e) {
listClustersElement.innerHTML = "Error code " + e.errorCode + ": " + e.errorMessage;
});
if (clusterId != null) {
client.terminateCluster(new TerminateClusterRequest({clusterId: clusterId}), function(response) {
terminateClusterElment.innerHTML = "terminate cluster " + clusterId + " " + response;
}).error(function(xhr, status, e) {
terminateClusterElment.innerHTML = "Error code " + e.errorCode + ": " + e.errorMessage;
});
}
});
})();
</script>
</body>
</html>