wakame-vdc-webui 10.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (281) hide show
  1. data/INSTALL.txt +21 -0
  2. data/LICENSE +202 -0
  3. data/NOTICE +1 -0
  4. data/README +256 -0
  5. data/Rakefile +42 -0
  6. data/app/controllers/accounts_controller.rb +15 -0
  7. data/app/controllers/application_controller.rb +5 -0
  8. data/app/controllers/dialog_controller.rb +80 -0
  9. data/app/controllers/home_controller.rb +5 -0
  10. data/app/controllers/host_pools_controller.rb +26 -0
  11. data/app/controllers/images_controller.rb +28 -0
  12. data/app/controllers/information_controller.rb +10 -0
  13. data/app/controllers/instances_controller.rb +59 -0
  14. data/app/controllers/keypairs_controller.rb +64 -0
  15. data/app/controllers/security_groups_controller.rb +59 -0
  16. data/app/controllers/sessions_controller.rb +25 -0
  17. data/app/controllers/snapshots_controller.rb +48 -0
  18. data/app/controllers/storage_pools_controller.rb +27 -0
  19. data/app/controllers/users_controller.rb +3 -0
  20. data/app/controllers/volumes_controller.rb +86 -0
  21. data/app/helpers/accounts_helper.rb +2 -0
  22. data/app/helpers/application_helper.rb +23 -0
  23. data/app/helpers/dialog_helper.rb +2 -0
  24. data/app/helpers/home_helper.rb +2 -0
  25. data/app/helpers/host_pools_helper.rb +2 -0
  26. data/app/helpers/images_helper.rb +2 -0
  27. data/app/helpers/information_helper.rb +2 -0
  28. data/app/helpers/instances_helper.rb +2 -0
  29. data/app/helpers/keypairs_helper.rb +2 -0
  30. data/app/helpers/security_groups_helper.rb +2 -0
  31. data/app/helpers/sessions_helper.rb +2 -0
  32. data/app/helpers/snapshots_helper.rb +2 -0
  33. data/app/helpers/storage_pools_helper.rb +2 -0
  34. data/app/helpers/users_helper.rb +2 -0
  35. data/app/helpers/volumes_helper.rb +2 -0
  36. data/app/models/account.rb +104 -0
  37. data/app/models/authz.rb +102 -0
  38. data/app/models/base_new.rb +311 -0
  39. data/app/models/dcmgr_resource/account.rb +5 -0
  40. data/app/models/dcmgr_resource/base.rb +51 -0
  41. data/app/models/dcmgr_resource/host_pool.rb +11 -0
  42. data/app/models/dcmgr_resource/image.rb +11 -0
  43. data/app/models/dcmgr_resource/instance.rb +37 -0
  44. data/app/models/dcmgr_resource/mock.rb +15 -0
  45. data/app/models/dcmgr_resource/netfilter_group.rb +29 -0
  46. data/app/models/dcmgr_resource/ssh_key_pair.rb +25 -0
  47. data/app/models/dcmgr_resource/storage_pool.rb +11 -0
  48. data/app/models/dcmgr_resource/volume.rb +48 -0
  49. data/app/models/dcmgr_resource/volume_snapshot.rb +35 -0
  50. data/app/models/information.rb +9 -0
  51. data/app/models/schema.rb +51 -0
  52. data/app/models/tag.rb +121 -0
  53. data/app/models/tag_mapping.rb +25 -0
  54. data/app/models/user.rb +46 -0
  55. data/app/views/accounts/index.html.erb +68 -0
  56. data/app/views/dialog/attach_volume.html.erb +13 -0
  57. data/app/views/dialog/create_and_edit_security_group.html.erb +32 -0
  58. data/app/views/dialog/create_snapshot.html.erb +7 -0
  59. data/app/views/dialog/create_ssh_keypair.html.erb +15 -0
  60. data/app/views/dialog/create_volume.html.erb +18 -0
  61. data/app/views/dialog/create_volume_from_snapshot.html.erb +7 -0
  62. data/app/views/dialog/delete_security_group.html.erb +4 -0
  63. data/app/views/dialog/delete_snapshot.html.erb +7 -0
  64. data/app/views/dialog/delete_ssh_keypair.html.erb +4 -0
  65. data/app/views/dialog/delete_volume.html.erb +7 -0
  66. data/app/views/dialog/detach_volume.html.erb +7 -0
  67. data/app/views/dialog/launch_instance.html.erb +70 -0
  68. data/app/views/dialog/reboot_instances.html.erb +7 -0
  69. data/app/views/dialog/start_instances.html.erb +8 -0
  70. data/app/views/dialog/stop_instances.html.erb +7 -0
  71. data/app/views/dialog/terminate_instances.html.erb +7 -0
  72. data/app/views/home/index.html.erb +55 -0
  73. data/app/views/host_pools/index.html.erb +103 -0
  74. data/app/views/images/index.html.erb +126 -0
  75. data/app/views/information/index.html.erb +25 -0
  76. data/app/views/instances/index.html.erb +134 -0
  77. data/app/views/keypairs/index.html.erb +104 -0
  78. data/app/views/layouts/_footer.html.erb +4 -0
  79. data/app/views/layouts/_header.html.erb +14 -0
  80. data/app/views/layouts/_informationarea.html.erb +18 -0
  81. data/app/views/layouts/_login_header.erb +4 -0
  82. data/app/views/layouts/_service_health.erb +27 -0
  83. data/app/views/layouts/_sidemenu.html.erb +58 -0
  84. data/app/views/layouts/application.html.erb +34 -0
  85. data/app/views/layouts/login.html.erb +25 -0
  86. data/app/views/security_groups/index.html.erb +114 -0
  87. data/app/views/sessions/new.html.erb +27 -0
  88. data/app/views/snapshots/index.html.erb +110 -0
  89. data/app/views/storage_pools/index.html.erb +98 -0
  90. data/app/views/volumes/index.html.erb +117 -0
  91. data/config.ru +4 -0
  92. data/config/application.rb +48 -0
  93. data/config/boot.rb +13 -0
  94. data/config/database.yml +20 -0
  95. data/config/environment.rb +5 -0
  96. data/config/environments/development.rb +28 -0
  97. data/config/environments/production.rb +49 -0
  98. data/config/environments/test.rb +35 -0
  99. data/config/initializers/backtrace_silencers.rb +7 -0
  100. data/config/initializers/dcmgr_gui.rb +14 -0
  101. data/config/initializers/inflections.rb +10 -0
  102. data/config/initializers/mime_types.rb +5 -0
  103. data/config/initializers/secret_token.rb +7 -0
  104. data/config/initializers/session_store.rb +8 -0
  105. data/config/locales/en.yml +5 -0
  106. data/config/routes.rb +109 -0
  107. data/db/seeds.rb +7 -0
  108. data/extras/authentication.rb +94 -0
  109. data/extras/util.rb +5 -0
  110. data/lib/tasks/dcmgr_gui.rake +51 -0
  111. data/public/404.html +26 -0
  112. data/public/422.html +26 -0
  113. data/public/500.html +26 -0
  114. data/public/favicon.ico +0 -0
  115. data/public/images/app_active.gif +0 -0
  116. data/public/images/app_passive.gif +0 -0
  117. data/public/images/body_bg.gif +0 -0
  118. data/public/images/btn_change.gif +0 -0
  119. data/public/images/btn_create_security_group.gif +0 -0
  120. data/public/images/btn_create_snapshot.gif +0 -0
  121. data/public/images/btn_create_volume.gif +0 -0
  122. data/public/images/btn_createkey.gif +0 -0
  123. data/public/images/btn_de_register.gif +0 -0
  124. data/public/images/btn_delete_security_group.gif +0 -0
  125. data/public/images/btn_delete_snapshot.gif +0 -0
  126. data/public/images/btn_delete_volume.gif +0 -0
  127. data/public/images/btn_deletekey.gif +0 -0
  128. data/public/images/btn_healthdetail.gif +0 -0
  129. data/public/images/btn_hide.gif +0 -0
  130. data/public/images/btn_launch.gif +0 -0
  131. data/public/images/btn_next.gif +0 -0
  132. data/public/images/btn_prev.gif +0 -0
  133. data/public/images/btn_refresh.gif +0 -0
  134. data/public/images/btn_register_new_ami.gif +0 -0
  135. data/public/images/btn_savechange.gif +0 -0
  136. data/public/images/btn_show.gif +0 -0
  137. data/public/images/btn_show_accesskey.png +0 -0
  138. data/public/images/bup_btn_healthdetail.gif +0 -0
  139. data/public/images/bup_btn_refresh.gif +0 -0
  140. data/public/images/clear.gif +0 -0
  141. data/public/images/content_bg.png +0 -0
  142. data/public/images/content_foot_bg.gif +0 -0
  143. data/public/images/content_head_bg.gif +0 -0
  144. data/public/images/footer_bg.gif +0 -0
  145. data/public/images/head_gradation_bg.gif +0 -0
  146. data/public/images/header_logo.gif +0 -0
  147. data/public/images/icon_blockstore.gif +0 -0
  148. data/public/images/icon_caution.gif +0 -0
  149. data/public/images/icon_health.gif +0 -0
  150. data/public/images/icon_images.gif +0 -0
  151. data/public/images/icon_information.gif +0 -0
  152. data/public/images/icon_instances.gif +0 -0
  153. data/public/images/icon_resource.gif +0 -0
  154. data/public/images/icon_resource01.gif +0 -0
  155. data/public/images/icon_resource02.gif +0 -0
  156. data/public/images/icon_resource03.gif +0 -0
  157. data/public/images/icon_resource04.gif +0 -0
  158. data/public/images/icon_rss.gif +0 -0
  159. data/public/images/icon_security.gif +0 -0
  160. data/public/images/icon_service.gif +0 -0
  161. data/public/images/icon_service_stat.gif +0 -0
  162. data/public/images/icon_stop.gif +0 -0
  163. data/public/images/icon_summary.gif +0 -0
  164. data/public/images/icon_ttl_accskey.gif +0 -0
  165. data/public/images/icon_ttl_detail.gif +0 -0
  166. data/public/images/icon_ttl_instance.gif +0 -0
  167. data/public/images/icon_ttl_personal_inf.gif +0 -0
  168. data/public/images/infra_active.gif +0 -0
  169. data/public/images/infra_passive.gif +0 -0
  170. data/public/images/lastelement_bg.gif +0 -0
  171. data/public/images/lastelement_bg.png +0 -0
  172. data/public/images/listicon_useast.gif +0 -0
  173. data/public/images/loader_ball.gif +0 -0
  174. data/public/images/loader_boxes.gif +0 -0
  175. data/public/images/loading.gif +0 -0
  176. data/public/images/mainarea_bottom_bg.gif +0 -0
  177. data/public/images/mainarea_content_bg.gif +0 -0
  178. data/public/images/mainarea_h3_bg.gif +0 -0
  179. data/public/images/mainarea_wide_bottom_bg.gif +0 -0
  180. data/public/images/mainarea_wide_content_bg.gif +0 -0
  181. data/public/images/mainarea_wide_h3_bg.gif +0 -0
  182. data/public/images/menu_list_header.gif +0 -0
  183. data/public/images/menu_list_header_current.gif +0 -0
  184. data/public/images/plat_active.gif +0 -0
  185. data/public/images/plat_passive.gif +0 -0
  186. data/public/images/regionselect_bg.gif +0 -0
  187. data/public/images/select_bg_126.gif +0 -0
  188. data/public/images/select_bg_139.gif +0 -0
  189. data/public/images/sidemenu_bg.gif +0 -0
  190. data/public/images/sidemenu_bottom.gif +0 -0
  191. data/public/images/sidemenu_top.gif +0 -0
  192. data/public/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  193. data/public/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  194. data/public/images/ui-bg_flat_10_000000_40x100.png +0 -0
  195. data/public/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  196. data/public/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  197. data/public/images/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
  198. data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  199. data/public/images/ui-bg_gloss-wave_100_ece8da_500x100.png +0 -0
  200. data/public/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  201. data/public/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png +0 -0
  202. data/public/images/ui-bg_highlight-hard_100_fafaf4_1x100.png +0 -0
  203. data/public/images/ui-bg_highlight-hard_15_459e00_1x100.png +0 -0
  204. data/public/images/ui-bg_highlight-hard_95_cccccc_1x100.png +0 -0
  205. data/public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  206. data/public/images/ui-bg_highlight-soft_25_67b021_1x100.png +0 -0
  207. data/public/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  208. data/public/images/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
  209. data/public/images/ui-bg_inset-soft_15_2b2922_1x100.png +0 -0
  210. data/public/images/ui-icons_222222_256x240.png +0 -0
  211. data/public/images/ui-icons_228ef1_256x240.png +0 -0
  212. data/public/images/ui-icons_808080_256x240.png +0 -0
  213. data/public/images/ui-icons_847e71_256x240.png +0 -0
  214. data/public/images/ui-icons_8dc262_256x240.png +0 -0
  215. data/public/images/ui-icons_cd0a0a_256x240.png +0 -0
  216. data/public/images/ui-icons_eeeeee_256x240.png +0 -0
  217. data/public/images/ui-icons_ef8c08_256x240.png +0 -0
  218. data/public/images/ui-icons_ffd27a_256x240.png +0 -0
  219. data/public/images/ui-icons_ffffff_256x240.png +0 -0
  220. data/public/images/vtip_arrow.png +0 -0
  221. data/public/javascripts/controls.js +965 -0
  222. data/public/javascripts/dcmgr_gui/application.js +91 -0
  223. data/public/javascripts/dcmgr_gui/core.js +539 -0
  224. data/public/javascripts/dcmgr_gui/dashboard_panel.js +34 -0
  225. data/public/javascripts/dcmgr_gui/host_pool_panel.js +83 -0
  226. data/public/javascripts/dcmgr_gui/image_panel.js +242 -0
  227. data/public/javascripts/dcmgr_gui/instance_panel.js +197 -0
  228. data/public/javascripts/dcmgr_gui/security_group_panel.js +196 -0
  229. data/public/javascripts/dcmgr_gui/snapshot_panel.js +168 -0
  230. data/public/javascripts/dcmgr_gui/sshkeypair_panel.js +161 -0
  231. data/public/javascripts/dcmgr_gui/storage_pool_panel.js +99 -0
  232. data/public/javascripts/dcmgr_gui/volume_panel.js +311 -0
  233. data/public/javascripts/dragdrop.js +974 -0
  234. data/public/javascripts/effects.js +1123 -0
  235. data/public/javascripts/jquery-1.4.2.min.js +154 -0
  236. data/public/javascripts/jquery-ui-1.8.4.custom.min.js +763 -0
  237. data/public/javascripts/jquery.loadmask.min.js +10 -0
  238. data/public/javascripts/jquery.tmpl.js +486 -0
  239. data/public/javascripts/jsdeferred.jquery.js +385 -0
  240. data/public/javascripts/prototype.js +6001 -0
  241. data/public/javascripts/rails.js +175 -0
  242. data/public/robots.txt +5 -0
  243. data/public/stylesheets/common.css +1236 -0
  244. data/public/stylesheets/dialog.css +67 -0
  245. data/public/stylesheets/jquery-ui-1.8.4.custom.css +572 -0
  246. data/public/stylesheets/jquery.loadmask.css +40 -0
  247. data/public/stylesheets/reset.css +71 -0
  248. data/public/stylesheets/style.css +7 -0
  249. data/public/stylesheets/vtip.css +28 -0
  250. data/script/rails +6 -0
  251. data/test/functional/accounts_controller_test.rb +8 -0
  252. data/test/functional/dialog_controller_test.rb +8 -0
  253. data/test/functional/home_controller_test.rb +8 -0
  254. data/test/functional/host_pools_controller_test.rb +8 -0
  255. data/test/functional/images_controller_test.rb +8 -0
  256. data/test/functional/information_controller_test.rb +8 -0
  257. data/test/functional/instances_controller_test.rb +8 -0
  258. data/test/functional/keypairs_controller_test.rb +8 -0
  259. data/test/functional/security_groups_controller_test.rb +8 -0
  260. data/test/functional/sessions_controller_test.rb +8 -0
  261. data/test/functional/snapshots_controller_test.rb +8 -0
  262. data/test/functional/storage_pools_controller_test.rb +8 -0
  263. data/test/functional/users_controller_test.rb +8 -0
  264. data/test/functional/volumes_controller_test.rb +8 -0
  265. data/test/performance/browsing_test.rb +9 -0
  266. data/test/test_helper.rb +13 -0
  267. data/test/unit/helpers/accounts_helper_test.rb +4 -0
  268. data/test/unit/helpers/dialog_helper_test.rb +4 -0
  269. data/test/unit/helpers/home_helper_test.rb +4 -0
  270. data/test/unit/helpers/host_pools_helper_test.rb +4 -0
  271. data/test/unit/helpers/images_helper_test.rb +4 -0
  272. data/test/unit/helpers/information_helper_test.rb +4 -0
  273. data/test/unit/helpers/instances_helper_test.rb +4 -0
  274. data/test/unit/helpers/keypairs_helper_test.rb +4 -0
  275. data/test/unit/helpers/security_groups_helper_test.rb +4 -0
  276. data/test/unit/helpers/sessions_helper_test.rb +4 -0
  277. data/test/unit/helpers/snapshots_helper_test.rb +4 -0
  278. data/test/unit/helpers/storage_pools_helper_test.rb +4 -0
  279. data/test/unit/helpers/users_helper_test.rb +4 -0
  280. data/test/unit/helpers/volumes_helper_test.rb +4 -0
  281. metadata +399 -0
@@ -0,0 +1,34 @@
1
+ DcmgrGUI.prototype.dashboardPanel = function(){
2
+
3
+ var bt_refresh = new DcmgrGUI.Refresh();
4
+ var loading_image = DcmgrGUI.Util.getLoadingImage('ball');
5
+
6
+ bt_refresh.element.bind('dcmgrGUI.refresh', function(){
7
+
8
+ $("#total_instance").empty().html(loading_image);
9
+ $("#total_image").empty().html(loading_image);
10
+ $("#total_volume").empty().html(loading_image);
11
+ $("#total_snapshot").empty().html(loading_image);
12
+ $("#total_security_group").empty().html(loading_image);
13
+ $("#total_keypair").empty().html(loading_image);
14
+
15
+ parallel({
16
+ total_instance: $.getJSON('/instances/total.json'),
17
+ total_image: $.getJSON('/images/total.json'),
18
+ total_volume: $.getJSON('/volumes/total.json'),
19
+ total_snapshot: $.getJSON('/snapshots/total.json'),
20
+ total_security_group: $.getJSON('/security_groups/total.json'),
21
+ total_keypair: $.getJSON('/keypairs/total.json')
22
+ }).next(function(results) {
23
+ $('#total_instance').html(results.total_instance);
24
+ $('#total_image').html(results.total_image);
25
+ $('#total_volume').html(results.total_volume);
26
+ $('#total_snapshot').html(results.total_snapshot);
27
+ $('#total_security_group').html(results.total_security_group);
28
+ $('#total_keypair').html(results.total_keypair);
29
+ });
30
+
31
+ });
32
+
33
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
34
+ }
@@ -0,0 +1,83 @@
1
+ DcmgrGUI.prototype.hostPoolPanel = function(){
2
+
3
+ var total = 0;
4
+ var maxrow = 10;
5
+ var page = 1;
6
+ var list_request = {
7
+ "url":DcmgrGUI.Util.getPagePath('/host_pools/list/',1),
8
+ "data" : DcmgrGUI.Util.getPagenateData(page,maxrow)
9
+ };
10
+
11
+ DcmgrGUI.List.prototype.getEmptyData = function(){
12
+ return [{
13
+ "id":'',
14
+ "uuid":'',
15
+ "node_id":'',
16
+ "host_pool_id":'',
17
+ "status":''
18
+ }]
19
+ }
20
+
21
+ DcmgrGUI.Detail.prototype.getEmptyData = function(){
22
+ return {
23
+ "id":'-',
24
+ "uuid":'-',
25
+ "node_id":'-',
26
+ "host_pool_id":'-',
27
+ "status":'-',
28
+ "created_at":'-',
29
+ "updated_at":'-'
30
+ }
31
+ }
32
+
33
+ var c_pagenate = new DcmgrGUI.Pagenate({
34
+ row:maxrow,
35
+ total:total
36
+ });
37
+
38
+ var c_list = new DcmgrGUI.List({
39
+ element_id:'#display_host_pools',
40
+ template_id:'#hostPoolsListTemplate',
41
+ maxrow:maxrow,
42
+ page:page
43
+ });
44
+
45
+ c_list.setDetailTemplate({
46
+ template_id:'#hostPoolsDetailTemplate',
47
+ detail_path:'/host_pools/show/'
48
+ });
49
+
50
+ c_list.element.bind('dcmgrGUI.contentChange',function(event,params){
51
+ var host_pool = params.data.host_pool;
52
+ c_pagenate.changeTotal(host_pool.owner_total);
53
+ c_list.setData(host_pool.results);
54
+ c_list.multiCheckList(c_list.detail_template);
55
+ });
56
+
57
+ var bt_refresh = new DcmgrGUI.Refresh();
58
+
59
+ bt_refresh.element.bind('dcmgrGUI.refresh',function(){
60
+ c_list.page = c_pagenate.current_page;
61
+ list_request.url = DcmgrGUI.Util.getPagePath('/host_pools/list/',c_list.page);
62
+ list_request.data = DcmgrGUI.Util.getPagenateData(c_pagenate.start,c_pagenate.row);
63
+ c_list.element.trigger('dcmgrGUI.updateList',{request:list_request})
64
+
65
+ //update detail
66
+ $.each(c_list.checked_list,function(check_id,obj){
67
+ $($('#detail').find('#'+check_id)).remove();
68
+ c_list.checked_list[check_id].c_detail.update({
69
+ url:DcmgrGUI.Util.getPagePath('/host_pools/show/',check_id)
70
+ },true);
71
+ });
72
+ });
73
+
74
+ c_pagenate.element.bind('dcmgrGUI.updatePagenate',function(){
75
+ c_list.clearCheckedList();
76
+ $('#detail').html('');
77
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
78
+ });
79
+
80
+ //list
81
+ c_list.setData(null);
82
+ c_list.update(list_request,true);
83
+ }
@@ -0,0 +1,242 @@
1
+ DcmgrGUI.prototype.imagePanel = function(){
2
+ var total = 0;
3
+ var maxrow = 10;
4
+ var page = 1;
5
+ var list_request = {
6
+ "url":DcmgrGUI.Util.getPagePath('/images/list/',page),
7
+ "data" : DcmgrGUI.Util.getPagenateData(page,maxrow)
8
+ }
9
+
10
+ DcmgrGUI.List.prototype.getEmptyData = function(){
11
+ return [{
12
+ "id":'',
13
+ "wmi_id":'',
14
+ "source":'',
15
+ "owner":'',
16
+ "visibility":'',
17
+ "state":''
18
+ }]
19
+ }
20
+
21
+ DcmgrGUI.Detail.prototype.getEmptyData = function(){
22
+ return {
23
+ "name" : "-",
24
+ "description" : "-",
25
+ "source" : "-",
26
+ "owner" : "-",
27
+ "visibility" : "-",
28
+ "product_code" : "-",
29
+ "state" : "-",
30
+ "karnel_id":"-",
31
+ "platform" : "-",
32
+ "root_device_type":"-",
33
+ "root_device":"-",
34
+ "image_size":"-",
35
+ "block_devices":"-",
36
+ "virtualization":"",
37
+ "state_reason":"-"
38
+ }
39
+ }
40
+ var c_pagenate = new DcmgrGUI.Pagenate({
41
+ row:maxrow,
42
+ total:total
43
+ });
44
+
45
+ var c_list = new DcmgrGUI.List({
46
+ element_id:'#display_images',
47
+ template_id:'#imagesListTemplate',
48
+ maxrow:maxrow,
49
+ page:page
50
+ });
51
+
52
+ c_list.setDetailTemplate({
53
+ template_id:'#imagesDetailTemplate',
54
+ detail_path:'/images/show/'
55
+ });
56
+
57
+ c_list.element.bind('dcmgrGUI.contentChange',function(event,params){
58
+ var image = params.data.image;
59
+ c_pagenate.changeTotal(image.owner_total);
60
+ c_list.setData(image.results);
61
+ c_list.singleCheckList(c_list.detail_template);
62
+ });
63
+
64
+ var bt_refresh = new DcmgrGUI.Refresh();
65
+
66
+ bt_refresh.element.bind('dcmgrGUI.refresh',function(){
67
+ c_list.page = c_pagenate.current_page;
68
+ list_request.url = DcmgrGUI.Util.getPagePath('/images/list/',c_pagenate.current_page);
69
+ list_request.data = DcmgrGUI.Util.getPagenateData(c_pagenate.start,c_pagenate.row);
70
+ c_list.element.trigger('dcmgrGUI.updateList',{request:list_request})
71
+
72
+ //update detail
73
+ $.each(c_list.checked_list,function(check_id,obj){
74
+
75
+ //remove
76
+ $($('#detail').find('#'+check_id)).remove();
77
+
78
+ //update
79
+ c_list.checked_list[check_id].c_detail.update({
80
+ url:DcmgrGUI.Util.getPagePath('/images/show/',check_id)
81
+ },true);
82
+ });
83
+ });
84
+
85
+ c_pagenate.element.bind('dcmgrGUI.updatePagenate',function(){
86
+ c_list.clearCheckedList();
87
+ $('#detail').html('');
88
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
89
+ });
90
+
91
+ var bt_launch_instance = new DcmgrGUI.Dialog({
92
+ target:'.launch_instance',
93
+ width:583,
94
+ height:600,
95
+ title:'Launch Instance',
96
+ path:'/launch_instance',
97
+ callback: function(){
98
+ var self = this;
99
+
100
+ var loading_image = DcmgrGUI.Util.getLoadingImage('boxes');
101
+ $(this).find('#select_host_pool').empty().html(loading_image);
102
+ $(this).find('#select_ssh_key_pair').empty().html(loading_image);
103
+ $(this).find("#left_select_list").mask("Loading...");
104
+
105
+ parallel({
106
+ //get host_pools
107
+ host_pools:
108
+ $.ajax({
109
+ "type": "GET",
110
+ "async": true,
111
+ "url": '/host_pools/show_host_pools.json',
112
+ "dataType": "json",
113
+ success: function(json,status){
114
+ var select_html = '<select id="host_pool" name="host_pool"></select>';
115
+ $(self).find('#select_host_pool').empty().html(select_html);
116
+
117
+ var results = json.host_pool.results;
118
+ var size = results.length;
119
+ var select_host_pool = $(self).find('#host_pool');
120
+ for (var i=0; i < size ; i++) {
121
+ var uuid = results[i].result.uuid;
122
+ var html = '<option value="'+ uuid +'">'+uuid+'</option>';
123
+ select_host_pool.append(html);
124
+ }
125
+ }
126
+ }),
127
+ //get ssh key pairs
128
+ ssh_keypairs:
129
+ $.ajax({
130
+ "type": "GET",
131
+ "async": true,
132
+ "url": '/keypairs/all.json',
133
+ "dataType": "json",
134
+ "data": "",
135
+ success: function(json,status){
136
+ var select_html = '<select id="ssh_key_pair" name="host_pool"></select>';
137
+ $(self).find('#select_ssh_key_pair').empty().html(select_html);
138
+
139
+ var results = json.ssh_key_pair.results;
140
+ var size = results.length;
141
+ var select_keypair = $(self).find('#ssh_key_pair');
142
+ for (var i=0; i < size ; i++) {
143
+ var name = results[i].result.name;
144
+ var ssh_keypair_id = results[i].result.id;
145
+ var html = '<option id="'+ ssh_keypair_id +'" value="'+ name +'">'+name+'</option>'
146
+ select_keypair.append(html);
147
+ }
148
+ }
149
+ }),
150
+ //get security groups
151
+ security_groups:
152
+ $.ajax({
153
+ "type": "GET",
154
+ "async": true,
155
+ "url": '/security_groups/all.json',
156
+ "dataType": "json",
157
+ "data": "",
158
+ success: function(json,status){
159
+ var data = [];
160
+ var results = json.netfilter_group.results;
161
+ var size = results.length
162
+ for (var i=0; i < size ; i++) {
163
+ data.push({
164
+ "value" : results[i].result.uuid,
165
+ "name" : results[i].result.name
166
+ });
167
+ }
168
+
169
+ var security_group = new DcmgrGUI.ItemSelector({
170
+ 'left_select_id' : '#left_select_list',
171
+ 'right_select_id' : "#right_select_list",
172
+ "data" : data
173
+ });
174
+
175
+ $(self).find('#right_button').click(function(){
176
+ security_group.leftToRight();
177
+ });
178
+
179
+ $(self).find('#left_button').click(function(){
180
+ security_group.rightToLeft();
181
+ });
182
+ }
183
+ })
184
+ }).next(function(results) {
185
+ bt_launch_instance.disabledButton('Launch',false);
186
+ $("#left_select_list").unmask();
187
+ });
188
+ },
189
+ button:{
190
+ "Launch": function() {
191
+ var image_id = $(this).find('#image_id').val();
192
+ var host_pool_id = $(this).find('#host_pool').find('option:selected').val();
193
+ var host_name = $(this).find('#host_name').val();
194
+ var instance_spec = $(this).find('#instance_spec').val();
195
+ var ssh_key_pair = $(this).find('#ssh_key_pair').find('option:selected').text();
196
+ var launch_in = $(this).find('#right_select_list').find('option');
197
+ var user_data = $(this).find('#user_data').val();
198
+ var nf_group = [];
199
+ $.each(launch_in,function(i){
200
+ nf_group.push("nf_group[]="+ $(this).text());
201
+ });
202
+ var nf_strings = nf_group.join('&');
203
+
204
+ var data = "image_id="+image_id
205
+ +"&host_pool_id="+host_pool_id
206
+ +"&instance_spec_id="+instance_spec
207
+ +"&host_name="+host_name
208
+ +"&user_data="+user_data
209
+ +"&"+nf_strings
210
+ +"&ssh_key="+ssh_key_pair;
211
+
212
+ $.ajax({
213
+ "type": "POST",
214
+ "async": true,
215
+ "url": '/instances',
216
+ "dataType": "json",
217
+ "data": data,
218
+ success: function(json,status){
219
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
220
+ }
221
+ });
222
+ $(this).dialog("close");
223
+ }
224
+ }
225
+ });
226
+
227
+ bt_launch_instance.element.bind('dialogopen',function(){
228
+ bt_launch_instance.disabledButton('Launch',true);
229
+ });
230
+
231
+ bt_launch_instance.target.bind('click',function(){
232
+ var id = c_list.currentChecked();
233
+ if( id ){
234
+ bt_launch_instance.open({"ids":[id]});
235
+ }
236
+ return false;
237
+ });
238
+
239
+ //list
240
+ c_list.setData(null);
241
+ c_list.update(list_request,true);
242
+ }
@@ -0,0 +1,197 @@
1
+ DcmgrGUI.prototype.instancePanel = function(){
2
+ var total = 0;
3
+ var maxrow = 10;
4
+ var page = 1;
5
+ var list_request = {
6
+ "url" : DcmgrGUI.Util.getPagePath('/instances/list/',1),
7
+ "data" : DcmgrGUI.Util.getPagenateData(page,maxrow)
8
+ };
9
+
10
+ DcmgrGUI.List.prototype.getEmptyData = function(){
11
+ return [{
12
+ "id":'',
13
+ "instance_id":'',
14
+ "owner":'',
15
+ "wmi_id":'',
16
+ "state":'',
17
+ "private_ip":'',
18
+ "type":''
19
+ }]
20
+ }
21
+
22
+ DcmgrGUI.Detail.prototype.getEmptyData = function(){
23
+ return {
24
+ "instance_id":'-',
25
+ "wmi_id":'-',
26
+ "zone":'-',
27
+ "security_groups":'-',
28
+ "type":'-',
29
+ "status":'-',
30
+ "owner":'-'
31
+ }
32
+ }
33
+
34
+ var c_pagenate = new DcmgrGUI.Pagenate({
35
+ row:maxrow,
36
+ total:total
37
+ });
38
+
39
+ var c_list = new DcmgrGUI.List({
40
+ element_id:'#display_instances',
41
+ template_id:'#instancesListTemplate',
42
+ maxrow:maxrow,
43
+ page:page
44
+ });
45
+
46
+ var detail_filter = new DcmgrGUI.Filter();
47
+ detail_filter.add(function(data){
48
+ data.item.memory_size = data.item.memory_size + 'MB';
49
+ return data;
50
+ });
51
+
52
+ c_list.setDetailTemplate({
53
+ template_id:'#instancesDetailTemplate',
54
+ detail_path:'/instances/show/',
55
+ filter: detail_filter
56
+ });
57
+
58
+ c_list.element.bind('dcmgrGUI.contentChange',function(event,params){
59
+ var instance = params.data.instance;
60
+ c_pagenate.changeTotal(instance.owner_total);
61
+ c_list.setData(instance.results);
62
+ c_list.multiCheckList(c_list.detail_template);
63
+ });
64
+
65
+ c_list.filter.add(function(data){
66
+ var results = data.instance.results;
67
+ var size = results.length;
68
+ for(var i = 0; i < size; i++) {
69
+ results[i].result.memory_size = results[i].result.memory_size + 'MB';
70
+ }
71
+ return data;
72
+ });
73
+
74
+ var bt_refresh = new DcmgrGUI.Refresh();
75
+
76
+ var instance_action_helper = function(action){
77
+
78
+ var instances = $(this).find('#instances').find('li');
79
+ var ids = [];
80
+
81
+ $.each(instances, function() {
82
+ ids.push($(this).text());
83
+ });
84
+
85
+ var data = $.param({ids:ids});
86
+
87
+ $.ajax({
88
+ "type": "POST",
89
+ "async": true,
90
+ "url": '/instances/'+ action,
91
+ "dataType": "json",
92
+ "data": data,
93
+ success: function(json, status) {
94
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
95
+ }
96
+ });
97
+
98
+ $(this).dialog("close");
99
+ };
100
+
101
+ var bt_instance_start = new DcmgrGUI.Dialog({
102
+ target:'.start_instances',
103
+ width:400,
104
+ height:200,
105
+ title:'Start Instances',
106
+ path:'/start_instances',
107
+ button:{
108
+ "Close": function() { $(this).dialog("close"); },
109
+ "Yes, Start": function() {
110
+ $(this).dialog("close");
111
+ }
112
+ }
113
+ });
114
+
115
+ var bt_instance_stop = new DcmgrGUI.Dialog({
116
+ target:'.stop_instances',
117
+ width:400,
118
+ height:200,
119
+ title:'Stop Instances',
120
+ path:'/stop_instances',
121
+ button:{
122
+ "Close": function() { $(this).dialog("close"); },
123
+ "Yes, Stop": function() {
124
+ $(this).dialog("close");
125
+ }
126
+ }
127
+ });
128
+
129
+ var bt_instance_reboot = new DcmgrGUI.Dialog({
130
+ target:'.reboot_instances',
131
+ width:400,
132
+ height:200,
133
+ title:'Reboot Instances',
134
+ path:'/reboot_instances',
135
+ button:{
136
+ "Close": function() { $(this).dialog("close"); },
137
+ "Yes, Reboot": function() {
138
+ instance_action_helper.call(this,'reboot');
139
+ }
140
+ }
141
+ });
142
+
143
+ var bt_instance_terminate = new DcmgrGUI.Dialog({
144
+ target:'.terminate_instances',
145
+ width:400,
146
+ height:200,
147
+ title:'Terminate Instances',
148
+ path:'/terminate_instances',
149
+ button:{
150
+ "Close": function() { $(this).dialog("close"); },
151
+ "Yes, Terminate": function() {
152
+ instance_action_helper.call(this,'terminate');
153
+ }
154
+ }
155
+ });
156
+
157
+ bt_instance_start.target.bind('click',function(){
158
+ bt_instance_start.open(c_list.getCheckedInstanceIds());
159
+ });
160
+
161
+ bt_instance_stop.target.bind('click',function(){
162
+ bt_instance_stop.open(c_list.getCheckedInstanceIds());
163
+ });
164
+
165
+ bt_instance_reboot.target.bind('click',function(){
166
+ bt_instance_reboot.open(c_list.getCheckedInstanceIds());
167
+ });
168
+
169
+ bt_instance_terminate.target.bind('click',function(){
170
+ bt_instance_terminate.open(c_list.getCheckedInstanceIds());
171
+ });
172
+
173
+ bt_refresh.element.bind('dcmgrGUI.refresh',function(){
174
+ c_list.page = c_pagenate.current_page;
175
+ list_request.url = DcmgrGUI.Util.getPagePath('/instances/list/',c_list.page);
176
+ list_request.data = DcmgrGUI.Util.getPagenateData(c_pagenate.start,c_pagenate.row);
177
+ c_list.element.trigger('dcmgrGUI.updateList',{request:list_request})
178
+
179
+ //update detail
180
+ $.each(c_list.checked_list,function(check_id,obj){
181
+ $($('#detail').find('#'+check_id)).remove();
182
+ c_list.checked_list[check_id].c_detail.update({
183
+ url:DcmgrGUI.Util.getPagePath('/instances/show/',check_id)
184
+ },true);
185
+ });
186
+ });
187
+
188
+ c_pagenate.element.bind('dcmgrGUI.updatePagenate',function(){
189
+ c_list.clearCheckedList();
190
+ $('#detail').html('');
191
+ bt_refresh.element.trigger('dcmgrGUI.refresh');
192
+ });
193
+
194
+ //list
195
+ c_list.setData(null);
196
+ c_list.update(list_request,true);
197
+ }