blob: 556982da92da38a0e3b187efbe85129e287b3b87 [file] [log] [blame]
<!DOCTYPE HTML>
<html>
<body>
<section>
<h3>Define A Software Stack</h3>
<form class="form">
<div class="column">
<p>
Software stack name<br>
<input type="text" id="name">
<span id="name_message" class="warn"></span>
</p>
<p>
Software stack version<br>
<input type="text" id="version">
<span id="version_message" class="warn"></span>
</p>
</div>
Specify the download URL(s) to compose the stack:
<p>
Java<br>
<input type="text" id="java_url" class="formInput">
<span id="java_message" class="warn"></span>
</p>
<p>
Hadoop<br>
<input type="text" id="hadoop_url" class="formInput">
</p>
<p>
HBase<br>
<input type="text" id="hbase_url" class="formInput">
</p>
<p>
Pig<br>
<input type="text" id="pig_url" class="formInput">
</p>
<p>
HCatalog/Hive<br>
<input type="text" id="hcatalog_url" class="formInput">
</p>
<p>
<button type="submit" id="save" onclick="return verifySoftwareStack()" value="save">Save</button>
<button type="cancel" onclick="javasccript:window.location='/';">Cancel</button>
</p>
</form>
</section>
<script type="text/javascript">
var software = {
'hadoop' : [ 'namenode', 'secondary-namenode', 'datanode', 'jobtracker', 'tasktracker', 'gateway' ],
'hbase' : [ 'hbase-master', 'hbase-regionserver', 'gateway' ],
'pig' : [ 'gateway' ],
'hcatalog' : [ 'hcatalog-server', 'gateway' ]
};
function verifySoftwareStack() {
var name = $('#name').val();
var version = $('#version').val();
var java = $('#java_url').val();
var hadoop = $('#hadoop_url').val();
var hbase = $('#hbase_url').val();
var pig = $('#pig_url').val();
var hcatalog = $('hcatalog_url').val();
var bailout = false;
if(name=="") {
$('#name_message').text("Name can not be empty.");
bailout = true;
}
if(version=="") {
$('#version_message').text("Version can not be empty.");
bailout = true;
}
if(java=="") {
$('#java_message').text("Java URL can not be empty.");
bailout = true;
}
if(bailout) {
return false;
}
return saveSoftwareStack()
}
function saveSoftwareStack() {
var stack = {
'@url' : window.location.protocol+"//"+window.location.host+"/v1/software/stack/"+$('#name').val()+'-'+$('#version').val(),
'@name' : $('#name').val(),
'@version' : $('#version').val(),
'roles' : []
};
var roles = {};
for(var component in software) {
var components = software[component];
for(var roleIndex in components) {
if($('#'+component+'_url').val()!=null &&
$('#'+component+'_url').val()!="") {
var roleName = components[roleIndex];
var packages;
var found = false;
var role;
for(x in roles) {
if(x==roleName) {
role = roles[x];
var size = role['package'].length;
role['package'][size] = { 'name' : $('#'+component+'_url').val() };
found = true;
break;
}
}
if(!found) {
packages = [
{ 'name' : $('#java_url').val() },
{ 'name' : $('#'+component+'_url').val() }
];
role = {
'@name' : roleName,
'package' : packages
};
}
roles[roleName] = role;
}
}
}
for(var index in roles) {
var size = stack['roles'].length;
stack['roles'][size] = roles[index];
}
var data = JSON.stringify(stack);
$.ajax({
type: 'POST',
url: '/v1/software/stack',
contentType: "application/json; charset=utf-8",
data: data,
success: function(data) {
var url = '/?func=list-software';
window.location.href = url;
},
dataType:'json'
});
return false;
}
</script>
</body>
</html>