WsDfu.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. /*##############################################################################
  2. # Copyright (C) 2011 HPCC Systems.
  3. #
  4. # All rights reserved. This program is free software: you can redistribute it and/or modify
  5. # it under the terms of the GNU Affero General Public License as
  6. # published by the Free Software Foundation, either version 3 of the
  7. # License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU Affero General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU Affero General Public License
  15. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. ############################################################################## */
  17. define([
  18. "dojo/_base/declare",
  19. "dojo/_base/lang",
  20. "dojo/_base/Deferred",
  21. "dojo/_base/array",
  22. "dojo/store/Memory",
  23. "dojo/store/Observable",
  24. "dojo/store/util/QueryResults",
  25. "dojox/xml/parser",
  26. "hpcc/ESPBase",
  27. "hpcc/ESPRequest"
  28. ], function (declare, lang, Deferred, arrayUtil, Memory, Observable, QueryResults,
  29. parser,
  30. ESPBase, ESPRequest) {
  31. var DiskUsageStore = declare([Memory], {
  32. constructor: function () {
  33. this.idProperty = "__hpcc_id";
  34. },
  35. query: function (query, options) {
  36. switch (query.CountBy) {
  37. case "Year":
  38. case "Quarter":
  39. case "Month":
  40. case "Day":
  41. query.Interval = query.CountBy;
  42. query.CountBy = "Date";
  43. break;
  44. }
  45. var results = self.DFUSpace({
  46. request: query
  47. }).then(lang.hitch(this, function (response) {
  48. var data = [];
  49. if (lang.exists("DFUSpaceResponse.DFUSpaceItems.DFUSpaceItem", response)) {
  50. arrayUtil.forEach(response.DFUSpaceResponse.DFUSpaceItems.DFUSpaceItem, function (item, idx) {
  51. data.push(lang.mixin(item, {
  52. __hpcc_id: item.Name
  53. }));
  54. }, this);
  55. }
  56. if (options.sort && options.sort.length) {
  57. data.sort(function (_l, _r) {
  58. var l = _l[options.sort[0].attribute];
  59. var r = _r[options.sort[0].attribute];
  60. if (l === r) {
  61. return 0;
  62. }
  63. switch (options.sort[0].attribute) {
  64. case "TotalSize":
  65. case "LargestSize":
  66. case "SmallestSize":
  67. case "NumOfFiles":
  68. case "NumOfFilesUnknown":
  69. l = parseInt(l.split(",").join(""));
  70. r = parseInt(r.split(",").join(""));
  71. }
  72. if (options.sort[0].descending) {
  73. return r < l ? -1 : 1;
  74. }
  75. return l < r ? -1 : 1;
  76. })
  77. }
  78. this.setData(data);
  79. return this.data;
  80. }));
  81. return QueryResults(results);
  82. }
  83. });
  84. var self = {
  85. CreateDiskUsageStore: function() {
  86. var store = new DiskUsageStore();
  87. return Observable(store);
  88. },
  89. DFUArrayAction: function (logicalFiles, actionType, callback) {
  90. arrayUtil.forEach(logicalFiles, function (item, idx) {
  91. item.qualifiedName = item.Name + "@" + item.ClusterName;
  92. });
  93. var request = {
  94. LogicalFiles: logicalFiles,
  95. Type: actionType
  96. };
  97. ESPRequest.flattenArray(request, "LogicalFiles", "qualifiedName");
  98. return ESPRequest.send("WsDfu", "DFUArrayAction", {
  99. request: request,
  100. load: function (response) {
  101. if (lang.exists("DFUArrayActionResponse.DFUArrayActionResult", response)) {
  102. dojo.publish("hpcc/brToaster", {
  103. Severity: "Error",
  104. Source: "WsDfu.DFUArrayAction",
  105. Exceptions: [{ Message: response.DFUArrayActionResponse.DFUArrayActionResult }]
  106. });
  107. }
  108. if (callback && callback.load) {
  109. callback.load(response);
  110. }
  111. },
  112. error: function (err) {
  113. if (callback && callback.error) {
  114. callback.error(err);
  115. }
  116. }
  117. });
  118. },
  119. SuperfileAction: function (action, superfile, subfiles, removeSuperfile, callback) {
  120. var request = {
  121. action: action,
  122. superfile: superfile,
  123. subfiles: subfiles,
  124. removeSuperfile: removeSuperfile
  125. };
  126. ESPRequest.flattenArray(request, "subfiles", "Name");
  127. return ESPRequest.send("WsDfu", "SuperfileAction", {
  128. request: request,
  129. load: function (response) {
  130. if (lang.exists("SuperfileActionResponse", response) && response.SuperfileActionResponse.retcode) {
  131. dojo.publish("hpcc/brToaster", {
  132. Severity: "Error",
  133. Source: "WsDfu.SuperfileAction",
  134. Exceptions: [{ Message: dojo.toJson(response.SuperfileActionResponse) }]
  135. });
  136. }
  137. if (callback && callback.load) {
  138. callback.load(response);
  139. }
  140. },
  141. error: function (err) {
  142. if (callback && callback.error) {
  143. callback.error(err);
  144. }
  145. }
  146. });
  147. },
  148. AddtoSuperfile: function (logicalFiles, superfile, existingFile, callback) {
  149. var request = {
  150. names: logicalFiles,
  151. Superfile: superfile,
  152. ExistingFile: existingFile ? 1 : 0
  153. };
  154. ESPRequest.flattenArray(request, "names", "Name");
  155. return ESPRequest.send("WsDfu", "AddtoSuperfile", {
  156. request: request,
  157. load: function (response) {
  158. if (lang.exists("AddtoSuperfileResponse.Subfiles", response)) {
  159. dojo.publish("hpcc/brToaster", {
  160. Severity: "Error",
  161. Source: "WsDfu.AddtoSuperfile",
  162. Exceptions: [{ Message: response.AddtoSuperfileResponse.Subfiles }]
  163. });
  164. }
  165. if (callback && callback.load) {
  166. callback.load(response);
  167. }
  168. },
  169. error: function (err) {
  170. if (callback && callback.error) {
  171. callback.error(err);
  172. }
  173. }
  174. });
  175. },
  176. DFUQuery: function (params) {
  177. return ESPRequest.send("WsDfu", "DFUQuery", params);
  178. },
  179. DFUSpace: function (params) {
  180. return ESPRequest.send("WsDfu", "DFUSpace", params);
  181. },
  182. DFUInfo: function (params) {
  183. return ESPRequest.send("WsDfu", "DFUInfo", params);
  184. },
  185. DFUDefFile: function (params) {
  186. lang.mixin(params, {
  187. handleAs: "text"
  188. });
  189. return ESPRequest.send("WsDfu", "DFUDefFile", params).then(function (response) {
  190. var domXml = parser.parse(response);
  191. var espBase = new ESPBase();
  192. var exceptions = espBase.getValues(domXml, "Exception", ["Exception"]);
  193. if (exceptions.length) {
  194. response = "";
  195. arrayUtil.forEach(exceptions, function (item, idx) {
  196. response += item.Message + "\n";
  197. });
  198. }
  199. return response;
  200. });
  201. }
  202. };
  203. return self;
  204. });