cluster_controller.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. 'cluster' : false
  39. }),
  40. /**
  41. * load cluster name
  42. */
  43. loadClusterName: function(){
  44. var self = this;
  45. var url = (App.testMode) ? '/data/clusters/info.json' : '/api/clusters';
  46. $.ajax({
  47. type: "GET",
  48. url: url,
  49. dataType: 'json',
  50. timeout: 5000,
  51. success: function (data) {
  52. self.set('cluster', data.items[0]);
  53. },
  54. error: function (request, ajaxOptions, error) {
  55. //do something
  56. console.log('failed on loading cluster name')
  57. },
  58. statusCode: require('data/statusCodes')
  59. });
  60. },
  61. getUrl: function(testUrl, url){
  62. return (App.testMode) ? testUrl: '/api/clusters/' + this.get('clusterName') + url;
  63. },
  64. /**
  65. *
  66. * load all data and update load status
  67. */
  68. loadClusterData: function(){
  69. var self = this;
  70. if(!this.get('clusterName')){
  71. return;
  72. }
  73. var clusterUrl = (App.testMode) ? '/data/clusters/cluster.json': '/api/clusters/mycluster?fields=Clusters';
  74. var jobsUrl = (App.testMode) ? "/data/apps/jobs.json" : "/api/jobs?fields=*";
  75. var runsUrl = (App.testMode) ? "/data/apps/runs.json" : "/api/runs?fields=*";
  76. var hostsUrl = (App.testMode) ? "/data/hosts/hosts.json" : "/api/hosts?fields=*";
  77. var servicesUrl = (App.testMode) ?
  78. "/data/dashboard/services.json" :
  79. "/api/clusters/mycluster/services?ServiceInfo/service_name!=MISCELLANEOUS&ServiceInfo/service_name!=DASHBOARD&fields=components/host_components/*";
  80. App.HttpClient.get(clusterUrl, App.clusterMapper,{
  81. complete:function(jqXHR, textStatus){
  82. self.set('dataLoadList.cluster', true);
  83. }
  84. });
  85. App.HttpClient.get(jobsUrl, App.jobsMapper,{
  86. complete:function(jqXHR, textStatus) {
  87. self.set('dataLoadList.jobs', true);
  88. }
  89. });
  90. App.HttpClient.get(runsUrl, App.runsMapper,{
  91. complete:function(jqXHR, textStatus) {
  92. self.set('dataLoadList.runs', true);
  93. }
  94. });
  95. App.HttpClient.get(hostsUrl, App.hostsMapper,{
  96. complete:function(jqXHR, textStatus){
  97. self.set('dataLoadList.hosts', true);
  98. }
  99. });
  100. App.HttpClient.get(servicesUrl, App.servicesMapper,{
  101. complete:function(jqXHR, textStatus){
  102. self.set('dataLoadList.services', true);
  103. }
  104. });
  105. }.observes('clusterName'),
  106. clusterName: function(){
  107. return (this.get('cluster')) ? this.get('cluster').Clusters.cluster_name : 'mycluster';
  108. }.property('cluster')
  109. })