wakame-vdc-webui 11.06.0 → 11.12.0

Sign up to get free protection for your applications and to get access to all the features.
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 = {};