PageRenderTime 33ms CodeModel.GetById 1ms RepoModel.GetById 1ms app.codeStats 0ms

/js/models/InstanceModel.js

http://github.com/ging/horizon-js
JavaScript | 204 lines | 179 code | 25 blank | 0 comment | 24 complexity | 994354fd8c06b47d7ca736ff64afba98 MD5 | raw file
  1. var Instance = Backbone.Model.extend({
  2. _action:function(method, options) {
  3. var model = this;
  4. if (options == null) options = {};
  5. options.success = function(resp) {
  6. model.trigger('sync', model, resp, options);
  7. if (options.callback!=undefined) {
  8. options.callback(resp);
  9. }
  10. }
  11. var xhr = (this.sync || Backbone.sync).call(this, method, this, options);
  12. return xhr;
  13. },
  14. createsnapshot: function(options) {
  15. console.log("Enter snapshot");
  16. return this._action('snapshot', options);
  17. },
  18. pauseserver: function(options) {
  19. console.log("Enter pause server");
  20. return this._action('pause', options);
  21. },
  22. unpauseserver: function(options) {
  23. console.log("Enter unpause server");
  24. return this._action('unpause', options);
  25. },
  26. suspendserver: function(options) {
  27. console.log("Enter suspend server");
  28. return this._action('suspend', options);
  29. },
  30. resumeserver: function(options) {
  31. console.log("Enter resume server");
  32. return this._action('resume', options);
  33. },
  34. reboot: function(soft, options) {
  35. options = options || {};
  36. options.soft = soft;
  37. return this._action("reboot", options);
  38. },
  39. resize: function(flavor, options) {
  40. options = options || {};
  41. options.flavor = flavor;
  42. return this._action('resize', options);
  43. },
  44. confirmresize: function(options) {
  45. return this._action('confirm-resize', options);
  46. },
  47. revertresize: function(options) {
  48. return this._action('revert-resize', options);
  49. },
  50. changepassword: function(adminPass, options) {
  51. options = options || {};
  52. options.adminPass = adminPass;
  53. return this._action('change-password', options);
  54. },
  55. createimage: function(options) {
  56. return this._action('create-image', options);
  57. },
  58. vncconsole: function(options) {
  59. return this._action('get-vncconsole', options);
  60. },
  61. consoleoutput: function(options) {
  62. if (options == undefined) {
  63. options = {};
  64. }
  65. if (options.length == undefined) {
  66. options.length = 35;
  67. }
  68. return this._action('consoleoutput', options);
  69. },
  70. attachvolume: function(options) {
  71. if (options == undefined) {
  72. options = {};
  73. }
  74. return this._action('attachvolume', options);
  75. },
  76. detachvolume: function(options) {
  77. if (options == undefined) {
  78. options = {};
  79. }
  80. return this._action('detachvolume', options);
  81. },
  82. attachedvolumes: function(options) {
  83. if (options == undefined) {
  84. options = {};
  85. }
  86. return this._action('attachedvolumes', options);
  87. },
  88. sync: function(method, model, options) {
  89. switch(method) {
  90. case "create":
  91. JSTACK.Nova.createserver(model.get("name"), model.get("imageReg"), model.get("flavorReg"), model.get("key_name"),
  92. model.get("user_data"), model.get("security_groups"), model.get("min_count"), model.get("max_count"),
  93. model.get("availability_zone"), options.success);
  94. break;
  95. case "delete":
  96. JSTACK.Nova.deleteserver(model.get("id"), options.success);
  97. break;
  98. case "update":
  99. JSTACK.Nova.updateserver(model.get("id"), model.get("name"), options.success);
  100. break;
  101. case "read":
  102. JSTACK.Nova.getserverdetail(model.get("id"), options.success);
  103. break;
  104. case "reboot":
  105. if (options.soft != undefined && options.soft) {
  106. JSTACK.Nova.rebootserversoft(model.get("id"), options.success);
  107. } else {
  108. JSTACK.Nova.rebootserverhard(model.get("id"), options.success);
  109. }
  110. break;
  111. case "resize":
  112. JSTACK.Nova.resizeserver(model.get("id"), options.flavor.id, options.success);
  113. break;
  114. case "snapshot":
  115. JSTACK.Nova.createsnapshot(model.get("id"), model.get("name"), options.success);
  116. break;
  117. case "confirm-resize":
  118. JSTACK.Nova.confirmresizedserver(model.get("id"), options.success);
  119. break;
  120. case "revert-resize":
  121. JSTACK.Nova.revertresizedserver(nmodel.get("id"), options.success);
  122. break;
  123. case "pause":
  124. JSTACK.Nova.pauseserver(model.get("id"), options.success);
  125. break;
  126. case "unpause":
  127. JSTACK.Nova.unpauseserver(model.get("id"), options.success);
  128. break;
  129. case "suspend":
  130. JSTACK.Nova.suspendserver(model.get("id"), options.success);
  131. break;
  132. case "resume":
  133. JSTACK.Nova.resumeserver(model.get("id"), options.success);
  134. break;
  135. case "change-password":
  136. JSTACK.Nova.changepasswordserver(model.get("id"), options.adminPass, options.success);
  137. break;
  138. case "create-image":
  139. JSTACK.Nova.createimage(model.get("id"), options.success);
  140. break;
  141. case "get-vncconsole":
  142. JSTACK.Nova.getvncconsole(model.get("id"), "novnc", options.success);
  143. break;
  144. case "consoleoutput":
  145. JSTACK.Nova.getconsoleoutput(model.get("id"), options.length, options.success);
  146. break;
  147. case "attachvolume":
  148. JSTACK.Nova.attachvolume(model.get("id"), options.volume_id, options.device, options.success);
  149. break;
  150. case "detachvolume":
  151. console.log("Detaching " + options.volume_id + " from " + model.get("id"));
  152. JSTACK.Nova.detachvolume(model.get("id"), options.volume_id, options.success);
  153. break;
  154. case "attachedvolumes":
  155. JSTACK.Nova.getattachedvolumes(model.get("id"), options.success);
  156. break;
  157. }
  158. },
  159. parse: function(resp) {
  160. if (resp.server != undefined) {
  161. return resp.server;
  162. } else {
  163. return resp;
  164. }
  165. }
  166. });
  167. var Instances = Backbone.Collection.extend({
  168. model: Instance,
  169. sync: function(method, model, options) {
  170. switch(method) {
  171. case "read":
  172. JSTACK.Nova.getserverlist(true, this.alltenants, options.success);
  173. break;
  174. }
  175. },
  176. parse: function(resp) {
  177. return resp.servers;
  178. }
  179. });