wakame-vdc-webui 11.06.0 → 11.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. data/Rakefile +7 -7
  2. data/app/controllers/application_controller.rb +5 -1
  3. data/app/controllers/dialog_controller.rb +5 -8
  4. data/app/controllers/instances_controller.rb +25 -7
  5. data/app/controllers/keypairs_controller.rb +2 -3
  6. data/app/controllers/security_groups_controller.rb +14 -15
  7. data/app/controllers/sessions_controller.rb +4 -0
  8. data/app/controllers/snapshots_controller.rb +3 -3
  9. data/app/controllers/volumes_controller.rb +18 -12
  10. data/app/models/dcmgr_resource/instance.rb +18 -2
  11. data/app/models/dcmgr_resource/security_group.rb +38 -0
  12. data/app/models/dcmgr_resource/ssh_key_pair.rb +0 -1
  13. data/app/views/dialog/attach_volume.html.erb +7 -11
  14. data/app/views/dialog/create_and_edit_security_group.html.erb +10 -12
  15. data/app/views/dialog/create_ssh_keypair.html.erb +9 -14
  16. data/app/views/dialog/delete_security_group.html.erb +1 -1
  17. data/app/views/dialog/reboot_instances.html.erb +2 -2
  18. data/app/views/dialog/start_instances.html.erb +1 -1
  19. data/app/views/dialog/stop_instances.html.erb +2 -2
  20. data/app/views/instances/index.html.erb +114 -110
  21. data/app/views/keypairs/index.html.erb +4 -4
  22. data/app/views/layouts/login.html.erb +1 -1
  23. data/app/views/security_groups/index.html.erb +11 -11
  24. data/app/views/sessions/information.html.erb +0 -0
  25. data/app/views/sessions/new.html.erb +24 -31
  26. data/app/views/snapshots/index.html.erb +3 -0
  27. data/app/views/volumes/index.html.erb +0 -5
  28. data/config/application.rb +1 -1
  29. data/config/dcmgr_gui.yml +8 -0
  30. data/{app/api/config/environment.rb → config/environment-auth.rb} +1 -1
  31. data/config/environments/development.rb +1 -1
  32. data/config/environments/production.rb +38 -41
  33. data/config/environments/test.rb +1 -1
  34. data/config/initializers/site.rb +1 -1
  35. data/config/locales/en.yml +16 -7
  36. data/config/locales/ja.yml +6 -4
  37. data/config/routes.rb +3 -0
  38. data/db/migrations/0001_origin.rb +96 -0
  39. data/lib/cli/account.rb +43 -88
  40. data/lib/cli/user.rb +0 -37
  41. data/lib/tasks/dcmgr_gui.rake +2 -2
  42. data/public/i18n/Messages_en.properties +34 -0
  43. data/public/i18n/Messages_ja-JP.properties +0 -0
  44. data/public/i18n/Messages_ja.properties +32 -0
  45. data/public/javascripts/dcmgr_gui/application.js +7 -7
  46. data/public/javascripts/dcmgr_gui/core.js +33 -8
  47. data/public/javascripts/dcmgr_gui/image_panel.js +6 -8
  48. data/public/javascripts/dcmgr_gui/instance_panel.js +29 -29
  49. data/public/javascripts/dcmgr_gui/security_group_panel.js +8 -29
  50. data/public/javascripts/dcmgr_gui/sshkeypair_panel.js +2 -22
  51. data/public/javascripts/dcmgr_gui/volume_panel.js +16 -21
  52. data/public/javascripts/jquery-ui-1.8.4.custom.min.js +0 -0
  53. data/public/stylesheets/common.css +45 -0
  54. metadata +336 -332
  55. data/app/models/dcmgr_resource/netfilter_group.rb +0 -29
data/lib/cli/user.rb CHANGED
@@ -7,41 +7,6 @@ require 'yaml'
7
7
  module Cli
8
8
  class UserCli < Base
9
9
  namespace :user
10
-
11
- #no_tasks {
12
- #def before_task
13
- ## Setup DB connections and load paths for dcmgr_gui
14
- #root_dir = File.expand_path('../../../', __FILE__)
15
-
16
- ##get the database details
17
- ##TODO:get this path in a less hard-coded way?
18
- #content = File.new(File.expand_path('../../frontend/dcmgr_gui/config/database.yml', root_dir)).read
19
- #settings = YAML::load content
20
-
21
- ##load the database variables
22
- ##TODO: get environment from RAILS_ENV
23
- #db_environment = 'development'
24
- #db_adapter = settings[db_environment]['adapter']
25
- #db_host = settings[db_environment]['host']
26
- #db_name = settings[db_environment]['database']
27
- #db_user = settings[db_environment]['user']
28
- #db_pwd = settings[db_environment]['password']
29
-
30
- ##Connect to the database
31
- #url = "#{db_adapter}://#{db_host}/#{db_name}?user=#{db_user}&password=#{db_pwd}"
32
- #db = Sequel.connect(url)
33
-
34
- ##load the cli environment
35
- #$LOAD_PATH.unshift File.expand_path('../../frontend/dcmgr_gui/config', root_dir)
36
- #$LOAD_PATH.unshift File.expand_path('../../frontend/dcmgr_gui/app/models', root_dir)
37
-
38
- #require 'environment-cli'
39
- #require 'user'
40
- #require 'account'
41
- #User.db = db
42
- #Account.db = db
43
- #end
44
- #}
45
10
 
46
11
  desc "add [options]", "Create a new user."
47
12
  method_option :name, :type => :string, :required => true, :aliases => "-n", :desc => "The name for the new user." #Maximum size: 200
@@ -49,7 +14,6 @@ module Cli
49
14
  method_option :login_id, :type => :string, :aliases => "-l", :desc => "Optional: The login_id for the new user." #Maximum size: 255
50
15
  method_option :password, :type => :string, :required => true, :aliases => "-p", :desc => "The password for the new user." #Maximum size: 255
51
16
  method_option :primary_account_id, :type => :string, :aliases => "-a", :desc => "Optional: The primary account to associate this user with." #Maximum size: 255
52
- #method_option :verbose, :type => :boolean, :aliases => "-v", :desc => "Print feedback on what is happening."
53
17
  def add
54
18
  if options[:name].length > 200
55
19
  Error.raise("User name can not be longer than 200 characters", 100)
@@ -140,7 +104,6 @@ __END
140
104
  method_option :name, :type => :string, :aliases => "-n", :desc => "The new name for the user." #Maximum size: 200
141
105
  method_option :login_id, :type => :string, :aliases => "-l", :desc => "The new login_id for the user." #Maximum size: 255
142
106
  method_option :password, :type => :string, :aliases => "-p", :desc => "The new password for the user." #Maximum size: 255
143
- #method_option :primary_account_id, :type => :string, :aliases => "-a", :desc => "The new primary account to associate this user with."
144
107
  def modify(uuid)
145
108
  Error.raise("User name can not be longer than 200 characters",100) if options[:name] != nil && options[:name].length > 200
146
109
  Error.raise("User login_id can not be longer than 255 characters",100) if options[:login_id] != nil && options[:login_id].length > 255
@@ -33,8 +33,8 @@ namespace :db do
33
33
  DB['users_accounts'].with_sql(sql,2,2).first
34
34
 
35
35
  publish_date = '2010-11-19 9:00:00'
36
- title = "新機能の提供を開始しました。"
37
- description = "・GUIの提供・KVM対応\n・EBSとしてZFS対応\n・セキュリティグループ対応'\n"
36
+ title = "News1"
37
+ description = "New description."
38
38
 
39
39
  Information.create(:title => title,
40
40
  :description => description,
@@ -0,0 +1,34 @@
1
+ code_error_box = ErrorCode
2
+ stop_button = Stop
3
+ close_button = Close
4
+ delete_button = Yes, Delete
5
+ terminate_button = Terminate
6
+ refresh_button = Refresh
7
+ start_button = Start
8
+ attach_button = Yes, Attach
9
+ reboot_button = Reboot
10
+ create_button = Create
11
+ update_button = Update
12
+ launch_button = Launch
13
+ detach_button = Yes, Detach
14
+ loading_parts = Loading...
15
+ display_date = {0}-{1}-{2} {3}:{4}:{5}
16
+ launch_instance_header = Launch Instance
17
+ delete_security_group_header = Delete Security Group
18
+ stop_instances_header = Stop Instances
19
+ start_instances_header = Start Instances
20
+ delete_ssh_keypair_header = Delete SSH Key Pair
21
+ create_volume_from_snapshot_header = Create Volume
22
+ delete_snapshot_header = Delete Snapshot
23
+ terminate_instances_header = Terminate Instances
24
+ create_security_group_header = Create Security Group
25
+ delete_volume_header = Delete Volume
26
+ reboot_instances_header = Reboot Instances
27
+ create_snapshot_header = Create Snapshot
28
+ detach_volume_header = Detach Volume
29
+ create_ssh_keypair_header = Create SSH Key Pair
30
+ attach_volume_header = Attach Volume
31
+ create_volume_header = Create Volume
32
+ edit_security_group_header = Edit Security Group
33
+ total_pagenate = Total {0}
34
+ page_pagenate = {0} Page
File without changes
@@ -0,0 +1,32 @@
1
+ code_error_box = エラーコード
2
+ stop_button = 一時停止
3
+ close_button = 閉じる
4
+ delete_button = 削除
5
+ terminate_button = 停止
6
+ refresh_button = 更新
7
+ start_button = 再開
8
+ attach_button = アタッチ
9
+ reboot_button = 再起動
10
+ create_button = 作成
11
+ update_button = 更新
12
+ launch_button = 起動
13
+ detach_button = デタッチ
14
+ loading_parts = 読み込み中...
15
+ display_date = {0}年{1}月{2}日 {3}時{4}分{5}秒
16
+ launch_instance_header = インスタンスを起動
17
+ delete_security_group_header = セキュリティーグループを削除
18
+ delete_ssh_keypair_header = キーペアを削除
19
+ create_volume_from_snapshot_header = ボリュームを作成
20
+ delete_snapshot_header = スナップショットを削除
21
+ terminate_instances_header = インスタンスを停止
22
+ create_security_group_header = セキュリティグループを作成
23
+ delete_volume_header = ボリュームを削除
24
+ reboot_instances_header = インスタンスを再起動
25
+ create_snapshot_header = スナップショットを作成
26
+ detach_volume_header = ボリュームをデタッチ
27
+ create_ssh_keypair_header = キーペアを作成
28
+ attach_volume_header = ボリュームをアタッチ
29
+ create_volume_header = ボリュームを作成
30
+ edit_security_group_header = セキュリティグループを編集
31
+ total_pagenate = 全{0}件
32
+ page_pagenate = {0} ページ
@@ -9,7 +9,7 @@ jQuery(function($){
9
9
  dcmgrGUI.initialize();
10
10
  dcmgrGUI.notification = new DcmgrGUI.Notification;
11
11
 
12
- //サイドメニュー開閉関数
12
+ //Toggle side menus.
13
13
  var regionpos = 0;
14
14
  $('#regionselect').click(function () {
15
15
  if(regionpos==0){regionpos+=33;}else{regionpos=0;}
@@ -24,10 +24,10 @@ jQuery(function($){
24
24
  $('#regionmenu').toggle();
25
25
  });
26
26
 
27
- //maincontent開閉関数
27
+ //Toggle maincontent
28
28
  $('.showhide').click(function(){
29
- $(this).parent().next().toggle();//開閉
30
- //backgroundの切り替え
29
+ $(this).parent().next().toggle();
30
+ //Swap background image.
31
31
  var imgurl = $(this).css("background-image");
32
32
  var img = imgurl.match(/.+\/images\/(btn_[a-z]+\.gif)/);
33
33
  if(img[1] == "btn_hide.gif"){
@@ -39,7 +39,7 @@ jQuery(function($){
39
39
  }
40
40
  });
41
41
 
42
- //InstanceActionsメニュー開閉関数
42
+ //Toggle InstanceActions menu.
43
43
  var instancepos = 0;
44
44
  $('#instanceaction').click(function () {
45
45
  if(instancepos==0){instancepos+=26;}else{instancepos=0;}
@@ -54,7 +54,7 @@ jQuery(function($){
54
54
  $('#actionlist').toggle();
55
55
  });
56
56
 
57
- //VolumeActionsメニュー開閉関数
57
+ //Toggle VolumeActions menu.
58
58
  var volumepos = 0;
59
59
  $('#volumeaction').click(function () {
60
60
  if(volumepos==0){volumepos+=26;}else{volumepos=0;}
@@ -69,7 +69,7 @@ jQuery(function($){
69
69
  $('#volumelist').toggle();
70
70
  });
71
71
 
72
- //ReservedInstancesメニュー開閉関数
72
+ //Toggle ReservedInstances menu.
73
73
  var rsvinstancepos = 0;
74
74
  $('#reservedinstance').click(function () {
75
75
  if(rsvinstancepos==0){rsvinstancepos+=26;}else{rsvinstancepos=0;}
@@ -110,7 +110,7 @@ DcmgrGUI.date.parseISO8601 = function (str) {
110
110
  _date = new Date;
111
111
 
112
112
  _date.setUTCFullYear(Number(dateParts[0]));
113
- _date.setUTCMonth(Number(dateParts[1]));
113
+ _date.setUTCMonth(Number(dateParts[1] - 1 ));
114
114
  _date.setUTCDate(Number(dateParts[2]));
115
115
  _date.setUTCHours(Number(timeHours));
116
116
  _date.setUTCMinutes(Number(timeSubParts[1]));
@@ -133,11 +133,11 @@ DcmgrGUI.date.getI18n = function(date_str){
133
133
  }
134
134
 
135
135
  return $.i18n.prop('display_date', [date_str.getUTCFullYear(),
136
- convert(date_str.getUTCMonth()),
137
- convert(date_str.getUTCDate()),
138
- convert(date_str.getUTCHours()),
139
- convert(date_str.getUTCMinutes()),
140
- convert(date_str.getUTCSeconds())
136
+ convert(date_str.getMonth() + 1),
137
+ convert(date_str.getDate()),
138
+ convert(date_str.getHours()),
139
+ convert(date_str.getMinutes()),
140
+ convert(date_str.getSeconds())
141
141
  ]);
142
142
  };
143
143
 
@@ -455,6 +455,33 @@ DcmgrGUI.Util.createUIButton = function(element,options){
455
455
  });
456
456
  }
457
457
 
458
+ DcmgrGUI.Util.availableTextField = function(e){
459
+
460
+ var d = e.data;
461
+ var button = d.button;
462
+ var element_id = d.element_id;
463
+
464
+ if(e.type == 'paste') {
465
+ var el = $(this);
466
+ setTimeout(function() {
467
+ var text = $(el).val();
468
+ if(text) {
469
+ button.disabledButton(element_id, false);
470
+ } else {
471
+ button.disabledButton(element_id, true);
472
+ }
473
+ }, 100);
474
+ } else {
475
+ var text = $(this).val();
476
+ if(text) {
477
+ button.disabledButton(element_id, false);
478
+ } else {
479
+ button.disabledButton(element_id, true);
480
+ }
481
+ }
482
+ return true;
483
+ }
484
+
458
485
  DcmgrGUI.Event = DcmgrGUI.Class.create({
459
486
 
460
487
  initialize: function(){
@@ -538,13 +565,11 @@ DcmgrGUI.List = DcmgrGUI.Class.create(DcmgrGUI.ContentBase, {
538
565
 
539
566
  if(data.item.created_at) {
540
567
  data.item.created_at = DcmgrGUI.date.parseISO8601(data.item.created_at);
541
- data.item.created_at = DcmgrGUI.date.setTimezoneOffset(data.item.created_at, dcmgrGUI.getConfig('time_zone_utc_offset'));
542
568
  data.item.created_at = DcmgrGUI.date.getI18n(data.item.created_at);
543
569
  }
544
570
 
545
571
  if(data.item.updated_at) {
546
572
  data.item.updated_at = DcmgrGUI.date.parseISO8601(data.item.updated_at);
547
- data.item.updated_at = DcmgrGUI.date.setTimezoneOffset(data.item.updated_at, dcmgrGUI.getConfig('time_zone_utc_offset'));
548
573
  data.item.updated_at = DcmgrGUI.date.getI18n(data.item.updated_at);
549
574
  }
550
575
 
@@ -102,18 +102,17 @@ DcmgrGUI.prototype.imagePanel = function(){
102
102
  var ssh_key_pair = $(this).find('#ssh_key_pair').find('option:selected').text();
103
103
  var launch_in = $(this).find('#right_select_list').find('option');
104
104
  var user_data = $(this).find('#user_data').val();
105
- var nf_group = [];
105
+ var security_groups = [];
106
106
  $.each(launch_in,function(i){
107
- nf_group.push("nf_group[]="+ $(this).text());
107
+ security_groups.push("security_groups[]="+ $(this).text());
108
108
  });
109
- var nf_strings = nf_group.join('&');
110
109
 
111
110
  var data = "image_id="+image_id
112
111
  +"&host_pool_id="+host_pool_id
113
112
  +"&instance_spec_id="+instance_spec_id
114
113
  +"&host_name="+host_name
115
114
  +"&user_data="+user_data
116
- +"&"+nf_strings
115
+ +"&" + security_groups.join('&')
117
116
  +"&ssh_key="+ssh_key_pair;
118
117
 
119
118
  request = new DcmgrGUI.Request;
@@ -221,9 +220,8 @@ DcmgrGUI.prototype.imagePanel = function(){
221
220
  }
222
221
 
223
222
  for (var i=0; i < size ; i++) {
224
- var name = results[i].result.name;
225
223
  var ssh_keypair_id = results[i].result.id;
226
- var html = '<option id="'+ ssh_keypair_id +'" value="'+ name +'">'+name+'</option>'
224
+ var html = '<option id="'+ ssh_keypair_id +'" value="'+ ssh_keypair_id +'">'+ssh_keypair_id+'</option>'
227
225
  select_keypair.append(html);
228
226
  }
229
227
  }
@@ -235,12 +233,12 @@ DcmgrGUI.prototype.imagePanel = function(){
235
233
  "data": "",
236
234
  success: function(json,status){
237
235
  var data = [];
238
- var results = json.netfilter_group.results;
236
+ var results = json.security_group.results;
239
237
  var size = results.length;
240
238
  for (var i=0; i < size ; i++) {
241
239
  data.push({
242
240
  "value" : results[i].result.uuid,
243
- "name" : results[i].result.name
241
+ "name" : results[i].result.uuid,
244
242
  });
245
243
  }
246
244
 
@@ -102,29 +102,27 @@ DcmgrGUI.prototype.instancePanel = function(){
102
102
  target:'.start_instances',
103
103
  width:400,
104
104
  height:200,
105
- title:'Start Instances',
105
+ title:$.i18n.prop('start_instances_header'),
106
106
  path:'/start_instances',
107
- button:{
108
- "Close": function() { $(this).dialog("close"); },
109
- "Yes, Start": function() {
110
- $(this).dialog("close");
111
- }
112
- }
107
+ button:{},
113
108
  });
114
-
109
+ bt_instance_start.button[$.i18n.prop('close_button')]=function() { $(this).dialog("close"); };
110
+ bt_instance_start.button[$.i18n.prop('start_button')]=function() {
111
+ instance_action_helper.call(this,'start');
112
+ };
113
+
115
114
  var bt_instance_stop = new DcmgrGUI.Dialog({
116
115
  target:'.stop_instances',
117
116
  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
- }
117
+ height:200,
118
+ title: $.i18n.prop('stop_instances_header'),
119
+ path:'/stop_instances',
120
+ button:{},
127
121
  });
122
+ bt_instance_stop.button[$.i18n.prop('close_button')]=function() { $(this).dialog("close"); };
123
+ bt_instance_stop.button[$.i18n.prop('stop_button')]=function() {
124
+ instance_action_helper.call(this,'stop');
125
+ };
128
126
 
129
127
  var instance_reboot_buttons = {};
130
128
  instance_reboot_buttons[close_button_name] = function() { $(this).dialog("close"); }
@@ -154,14 +152,6 @@ DcmgrGUI.prototype.instancePanel = function(){
154
152
  button: instance_terminate_buttons
155
153
  });
156
154
 
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
155
  bt_refresh.element.bind('dcmgrGUI.refresh',function(){
166
156
  c_list.page = c_pagenate.current_page;
167
157
  list_request.url = DcmgrGUI.Util.getPagePath('/instances/list/',c_list.page);
@@ -190,10 +180,20 @@ DcmgrGUI.prototype.instancePanel = function(){
190
180
  style:'dropdown',
191
181
  select: function(event){
192
182
  var select_action = $(this).val()
193
- if (select_action == "terminate") {
194
- bt_instance_terminate.open(c_list.getCheckedInstanceIds());
195
- }else if(select_action == "reboot") {
196
- bt_instance_reboot.open(c_list.getCheckedInstanceIds());
183
+ var selected_ids = c_list.getCheckedInstanceIds();
184
+ switch(select_action) {
185
+ case 'terminate':
186
+ bt_instance_terminate.open(selected_ids);
187
+ break;
188
+ case 'reboot':
189
+ bt_instance_reboot.open(selected_ids);
190
+ break;
191
+ case 'start':
192
+ bt_instance_start.open(selected_ids);
193
+ break;
194
+ case 'stop':
195
+ bt_instance_stop.open(selected_ids);
196
+ break;
197
197
  }
198
198
  }
199
199
  });
@@ -9,7 +9,6 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
9
9
 
10
10
  DcmgrGUI.List.prototype.getEmptyData = function(){
11
11
  return [{
12
- "name":'',
13
12
  "description":''
14
13
  }]
15
14
  }
@@ -17,7 +16,6 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
17
16
 
18
17
  DcmgrGUI.Detail.prototype.getEmptyData = function(){
19
18
  return {
20
- "name" : "-",
21
19
  "description" : "-",
22
20
  "rule":''
23
21
  }
@@ -50,13 +48,7 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
50
48
  'element': this
51
49
  });
52
50
 
53
- $(this).find('#security_group_name').keyup(function(){
54
- if( $(this).val() ) {
55
- bt_create_security_group.disabledButton(1, false);
56
- } else {
57
- bt_create_security_group.disabledButton(1 ,true);
58
- }
59
- });
51
+ var params = { 'button': bt_create_security_group, 'element_id': 1 };
60
52
 
61
53
  $(this).find('#rule_help').hide();
62
54
  security_group_help.create(config_tooltip);
@@ -86,9 +78,9 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
86
78
  });
87
79
 
88
80
  c_list.element.bind('dcmgrGUI.contentChange',function(event,params){
89
- var netfilter_group = params.data.netfilter_group;
90
- c_pagenate.changeTotal(netfilter_group.owner_total);
91
- c_list.setData(netfilter_group.results);
81
+ var security_group = params.data.security_group;
82
+ c_pagenate.changeTotal(security_group.owner_total);
83
+ c_list.setData(security_group.results);
92
84
  c_list.singleCheckList(c_list.detail_template);
93
85
 
94
86
  var edit_security_group_buttons = {};
@@ -115,7 +107,7 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
115
107
  var bt_edit_security_group = new DcmgrGUI.Dialog({
116
108
  target:'.edit_security_group',
117
109
  width:500,
118
- height:590,
110
+ height:580,
119
111
  title:$.i18n.prop('edit_security_group_header'),
120
112
  path:'/edit_security_group',
121
113
  button: edit_security_group_buttons,
@@ -123,7 +115,7 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
123
115
  });
124
116
 
125
117
  bt_edit_security_group.target.bind('click',function(event){
126
- var uuid = $(this).attr('id').replace(/edit_(ng-[a-z0-9]+)/,'$1');
118
+ var uuid = $(this).attr('id').replace(/edit_(sg-[a-z0-9]+)/,'$1');
127
119
  if( uuid ){
128
120
  bt_edit_security_group.open({"ids":[uuid]});
129
121
  }
@@ -164,23 +156,11 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
164
156
  var create_security_group_buttons = {};
165
157
  create_security_group_buttons[close_button_name] = function() { $(this).dialog("close"); };
166
158
  create_security_group_buttons[create_button_name] = function() {
167
- var name = $(this).find('#security_group_name').val();
168
159
  var description = $(this).find('#security_group_description').val();
169
160
  var rule = $(this).find('#security_group_rule').val();
170
- var data = 'name=' + name
171
- +'&description=' + description
161
+ var data = 'description=' + description
172
162
  +'&rule=' + rule;
173
163
 
174
- if(!name){
175
- $('#security_group_name').focus();
176
- return false;
177
- }
178
-
179
- if(!name.match(/[a-z_]+/)){
180
- $('#security_group_name').focus();
181
- return false;
182
- }
183
-
184
164
  var request = new DcmgrGUI.Request;
185
165
  request.post({
186
166
  "url": '/security_groups.json',
@@ -196,7 +176,7 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
196
176
  var bt_create_security_group = new DcmgrGUI.Dialog({
197
177
  target:'.create_security_group',
198
178
  width:500,
199
- height:590,
179
+ height:550,
200
180
  title:$.i18n.prop('create_security_group_header'),
201
181
  path:'/create_security_group',
202
182
  button: create_security_group_buttons,
@@ -205,7 +185,6 @@ DcmgrGUI.prototype.securityGroupPanel = function(){
205
185
 
206
186
  bt_create_security_group.target.bind('click',function(){
207
187
  bt_create_security_group.open();
208
- bt_create_security_group.disabledButton(1, true);
209
188
  });
210
189
 
211
190
  var delete_security_group_buttons = {};