| <!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> |