View.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. 'use strict';
  19. angular.module('ambariAdminConsole')
  20. .factory('View', ['$http', '$q', 'Settings', function($http, $q, Settings) {
  21. function ViewInstance(item){
  22. angular.extend(this, item);
  23. };
  24. ViewInstance.find = function(viewName, version, instanceName) {
  25. var deferred = $q.defer();
  26. var fields = [
  27. 'privileges/PrivilegeInfo',
  28. 'ViewInstanceInfo',
  29. 'resources'
  30. ];
  31. $http({
  32. method: 'GET',
  33. url: Settings.baseUrl + '/views/'+viewName+'/versions/'+version+'/instances/'+instanceName,
  34. params:{
  35. 'fields': fields.join(',')
  36. }
  37. })
  38. .success(function(data) {
  39. deferred.resolve(new ViewInstance(data));
  40. })
  41. .error(function(data) {
  42. deferred.reject(data);
  43. });
  44. return deferred.promise;
  45. };
  46. function View(item){
  47. var self = this;
  48. self.view_name = item.ViewInfo.view_name;
  49. self.versions = '';
  50. self.instances = [];
  51. angular.forEach(item.versions, function(version) {
  52. self.versions += (self.versions ? ', ' : '') + version.ViewVersionInfo.version;
  53. angular.forEach(version.instances, function(isntance) {
  54. isntance.label = version.ViewVersionInfo.label;
  55. })
  56. self.instances = self.instances.concat(version.instances);
  57. });
  58. self.versionsList = item.versions;
  59. }
  60. View.getInstance = function(viewName, version, instanceName) {
  61. return ViewInstance.find(viewName, version, instanceName);
  62. };
  63. View.deleteInstance = function(viewName, version, instanceName) {
  64. return $http.delete(Settings.baseUrl +'/views/'+viewName+'/versions/'+version+'/instances/'+instanceName, {
  65. headers: {
  66. 'X-Requested-By': 'ambari'
  67. }
  68. });
  69. };
  70. View.updateInstance = function(viewName, version, instanceName, data) {
  71. return $http({
  72. method: 'PUT',
  73. url: Settings.baseUrl + '/views/' +viewName + '/versions/'+version+'/instances/' + instanceName,
  74. data: data
  75. });
  76. };
  77. View.getPermissions = function(params) {
  78. var deferred = $q.defer();
  79. var fields = [
  80. 'permissions/PermissionInfo/permission_name'
  81. ];
  82. $http({
  83. method: 'GET',
  84. url: Settings.baseUrl + '/views/' + params.viewName + '/versions/'+ params.version,
  85. params: {
  86. 'fields': fields.join(',')
  87. }
  88. }).success(function(data) {
  89. deferred.resolve(data.permissions);
  90. })
  91. .catch(function(data) {
  92. deferred.reject(data);
  93. });
  94. return deferred.promise;
  95. };
  96. View.getPrivileges = function(params) {
  97. var deferred = $q.defer();
  98. $http({
  99. method: 'GET',
  100. url: Settings.baseUrl + '/views/' + params.viewName + '/versions/' + params.version + '/instances/' + params.instanceId,
  101. params: {
  102. fields: 'privileges/PrivilegeInfo'
  103. }
  104. })
  105. .success(function(data) {
  106. deferred.resolve(data.privileges);
  107. })
  108. .catch(function(data) {
  109. deferred.reject(data);
  110. });
  111. return deferred.promise;
  112. };
  113. View.getVersions = function(viewName) {
  114. var deferred = $q.defer();
  115. $http({
  116. method: 'GET',
  117. url: Settings.baseUrl + '/views/'+viewName
  118. }).success(function(data) {
  119. var versions = [];
  120. angular.forEach(data.versions, function(version) {
  121. versions.push(version.ViewVersionInfo.version);
  122. });
  123. deferred.resolve(versions);
  124. }).catch(function(data) {
  125. deferred.reject(data);
  126. });
  127. return deferred.promise;
  128. };
  129. View.createInstance = function(instanceInfo) {
  130. var deferred = $q.defer();
  131. var properties = {};
  132. angular.forEach(instanceInfo.properties, function(property) {
  133. properties[property.name] = property.value
  134. });
  135. $http({
  136. method: 'POST',
  137. url: Settings.baseUrl + '/views/' + instanceInfo.view_name +'/versions/'+instanceInfo.version + '/instances/'+instanceInfo.instance_name,
  138. data:{
  139. 'ViewInstanceInfo' : {
  140. instance_name: instanceInfo.instance_name,
  141. label: instanceInfo.label,
  142. visible: instanceInfo.visible,
  143. icon_path: instanceInfo.icon_path,
  144. icon64_path: instanceInfo.icon64_path,
  145. properties: properties
  146. }
  147. }
  148. })
  149. .success(function(data) {
  150. deferred.resolve(data);
  151. })
  152. .error(function(data) {
  153. deferred.reject(data);
  154. });
  155. return deferred.promise;
  156. };
  157. View.createPrivileges = function(params, data) {
  158. return $http({
  159. method: 'POST',
  160. url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges',
  161. data: data
  162. });
  163. };
  164. View.deletePrivileges = function(params, data) {
  165. return $http({
  166. method: 'DELETE',
  167. url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges',
  168. data: data
  169. });
  170. };
  171. View.deletePrivilege = function(params) {
  172. return $http({
  173. method: 'DELETE',
  174. url: Settings.baseUrl + '/views/' + params.view_name +'/versions/'+params.version+'/instances/'+params.instance_name+'/privileges',
  175. params: {
  176. 'PrivilegeInfo/principal_type': params.principalType,
  177. 'PrivilegeInfo/principal_name': params.principalName,
  178. 'PrivilegeInfo/permission_name': params.permissionName
  179. }
  180. });
  181. };
  182. View.getMeta = function(view_name, version) {
  183. return $http({
  184. method: 'GET',
  185. url: Settings.baseUrl + '/views/'+view_name+'/versions/'+version
  186. });
  187. };
  188. View.all = function() {
  189. var deferred = $q.defer();
  190. var fields = [
  191. 'versions/ViewVersionInfo/version',
  192. 'versions/instances/ViewInstanceInfo',
  193. 'versions/ViewVersionInfo'
  194. ];
  195. $http({
  196. method: 'GET',
  197. url: Settings.baseUrl + '/views',
  198. params:{
  199. 'fields': fields.join(',')
  200. }
  201. }).success(function(data) {
  202. var views = [];
  203. angular.forEach(data.items, function(item) {
  204. views.push(new View(item));
  205. });
  206. deferred.resolve(views);
  207. })
  208. .error(function(data) {
  209. deferred.reject(data);
  210. });
  211. return deferred.promise;
  212. };
  213. return View;
  214. }]);