cluster_controller.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. App.ClusterController = Em.Controller.extend({
  20. name: 'clusterController',
  21. cluster: null,
  22. isLoaded: function(){
  23. return true;
  24. var loadList = this.get('dataLoadList');
  25. var loaded = true;
  26. for(var i in loadList){
  27. if(loadList.hasOwnProperty(i) && !loadList[i]){
  28. loaded = false;
  29. }
  30. }
  31. return loaded;
  32. }.property('dataLoadList'),
  33. dataLoadList: Em.Object.create({
  34. 'hosts': false,
  35. 'jobs': false,
  36. 'runs': false,
  37. 'services': false,
  38. 'components': false,
  39. 'cluster' : false
  40. }),
  41. /**
  42. * load cluster name
  43. */
  44. loadClusterName: function(){
  45. var self = this;
  46. var url = (App.testMode) ? '/data/clusters/info.json' : '/api/clusters';
  47. $.ajax({
  48. type: "GET",
  49. url: url,
  50. dataType: 'json',
  51. timeout: 5000,
  52. success: function (data) {
  53. self.set('cluster', data.items[0]);
  54. },
  55. error: function (request, ajaxOptions, error) {
  56. //do something
  57. console.log('failed on loading cluster name')
  58. },
  59. statusCode: require('data/statusCodes')
  60. });
  61. },
  62. getUrl: function(testUrl, url){
  63. return (App.testMode) ? testUrl: '/api/clusters/' + this.get('clusterName') + url;
  64. },
  65. /**
  66. *
  67. * load all data and update load status
  68. */
  69. loadClusterData: function(){
  70. var self = this;
  71. if(!this.get('clusterName')){
  72. return;
  73. }
  74. var clusterUrl = (App.testMode) ? '/data/clusters/cluster.json': '/api/clusters/mycluster?fields=Clusters';
  75. var jobsUrl = (App.testMode) ? "/data/apps/jobs.json" : "/api/jobs?fields=*";
  76. var runsUrl = (App.testMode) ? "/data/apps/runs.json" : "/api/runs?fields=*";
  77. var hostsUrl = (App.testMode) ? "/data/hosts/hosts.json" : "/api/hosts?fields=*";
  78. var servicesUrl = (App.testMode) ?
  79. "/data/dashboard/services.json" :
  80. "/api/clusters/mycluster/services?ServiceInfo/service_name!=MISCELLANEOUS&ServiceInfo/service_name!=DASHBOARD&fields=components/host_components/*";
  81. App.HttpClient.get(clusterUrl, App.clusterMapper,{
  82. complete:function(jqXHR, textStatus){
  83. self.set('dataLoadList.cluster', true);
  84. }
  85. });
  86. App.HttpClient.get(jobsUrl, App.jobsMapper,{
  87. complete:function(jqXHR, textStatus) {
  88. self.set('dataLoadList.jobs', true);
  89. }
  90. });
  91. App.HttpClient.get(runsUrl, App.runsMapper,{
  92. complete:function(jqXHR, textStatus) {
  93. self.set('dataLoadList.runs', true);
  94. }
  95. });
  96. App.HttpClient.get(hostsUrl, App.hostsMapper,{
  97. complete:function(jqXHR, textStatus){
  98. self.set('dataLoadList.hosts', true);
  99. }
  100. });
  101. App.HttpClient.get(servicesUrl, App.servicesMapper,{
  102. complete:function(jqXHR, textStatus){
  103. self.set('dataLoadList.services', true);
  104. }
  105. });
  106. /*App.HttpClient.get(servicesUrl, App.componentsMapper,{
  107. complete:function(jqXHR, textStatus){
  108. self.set('dataLoadList.components', true);
  109. }
  110. });*/
  111. }.observes('clusterName'),
  112. clusterName: function(){
  113. return (this.get('cluster')) ? this.get('cluster').Clusters.cluster_name : 'mycluster';
  114. }.property('cluster')
  115. })