staypuft 0.3.7 → 0.3.8
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/staypuft/host_edit.js +81 -125
- data/app/lib/staypuft/network_query.rb +5 -1
- data/app/lib/staypuft/seeder.rb +6 -6
- data/app/models/staypuft/concerns/host_fencing_extensions.rb +28 -0
- data/app/models/staypuft/concerns/nic_fencing_extensions.rb +0 -4
- data/app/models/staypuft/deployment/cinder_service/equallogic.rb +9 -2
- data/app/models/staypuft/deployment/cinder_service.rb +14 -2
- data/app/models/staypuft/host/fencing.rb +55 -0
- data/app/views/hosts/_fencing.html.erb +8 -10
- data/config/routes.rb +0 -6
- data/lib/staypuft/engine.rb +2 -0
- data/lib/staypuft/version.rb +1 -1
- metadata +4 -3
- data/app/controllers/staypuft/hosts_controller.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17db35905779581497986043c56782829969ded1
|
4
|
+
data.tar.gz: 8110916cfe794b3531fd11532e4ff800882aafce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29f22381981d26709e8c81bbd7505947a4951d48a5508690ef7261bf47afc2662cac7f838b76d140a3fa8980fb9cc605ca73c6204181bc1636e06f4e2777814c
|
7
|
+
data.tar.gz: ed56ecce9c8713e1a30199c379b96984894c6a15b95ed8d6e036fbf74078d6729d3752bd87164c14bea2f50577154df6bc924faac10011b49456bb04273a6bc8
|
@@ -1,141 +1,97 @@
|
|
1
|
-
function
|
2
|
-
|
3
|
-
|
1
|
+
$(function() {
|
2
|
+
function find_network_interface_field(fieldset, field, html_input_type) {
|
3
|
+
label = fieldset.find("label[for='" + field + "']");
|
4
|
+
html_input = label.parent().find(html_input_type);
|
4
5
|
|
5
|
-
|
6
|
-
}
|
6
|
+
return html_input;
|
7
|
+
}
|
7
8
|
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
setTimeout(function() {
|
14
|
-
override_ajax_submit();
|
15
|
-
}, 1);
|
16
|
-
});
|
17
|
-
|
18
|
-
function override_ajax_submit() {
|
19
|
-
// NOTE: method defined in app/assets/javascripts/host_edit.js but modified
|
20
|
-
// so the URL points to staypuft/hosts controller.
|
21
|
-
function submit_host(){
|
22
|
-
var url = window.location.pathname.replace(/\/edit$|\/new$/,'');
|
23
|
-
url = url.replace(/\/hosts/,'\/staypuft/hosts')
|
24
|
-
if(/\/clone$/.test(window.location.pathname)){ url = foreman_url('/staypuft/hosts'); }
|
25
|
-
$('#host_submit').attr('disabled', true);
|
26
|
-
stop_pooling = false;
|
27
|
-
$("body").css("cursor", "progress");
|
28
|
-
clear_errors();
|
29
|
-
animate_progress();
|
30
|
-
|
31
|
-
$.ajax({
|
32
|
-
type:'POST',
|
33
|
-
url: url,
|
34
|
-
data: $('form').serialize(),
|
35
|
-
success: function(response){
|
36
|
-
if(response.redirect){
|
37
|
-
window.location.replace(response.redirect);
|
38
|
-
}
|
39
|
-
else{
|
40
|
-
$("#host-progress").hide();
|
41
|
-
$('#content').replaceWith($("#content", response));
|
42
|
-
$(document.body).trigger('ContentLoad');
|
43
|
-
if($("[data-history-url]").exists()){
|
44
|
-
history.pushState({}, "Host show", $("[data-history-url]").data('history-url'));
|
45
|
-
}
|
46
|
-
}
|
47
|
-
},
|
48
|
-
error: function(response){
|
49
|
-
$('#content').html(response.responseText);
|
50
|
-
},
|
51
|
-
complete: function(){
|
52
|
-
stop_pooling = true;
|
53
|
-
$("body").css("cursor", "auto");
|
54
|
-
$('#host_submit').attr('disabled', false);
|
55
|
-
}
|
10
|
+
function get_bmc_interface_form() {
|
11
|
+
return $('fieldset#interface').filter(function(index, fieldset){
|
12
|
+
type = find_network_interface_field($(fieldset), 'type', 'select');
|
13
|
+
return type.val() == 'Nic::BMC';
|
56
14
|
});
|
57
|
-
return false;
|
58
15
|
}
|
59
16
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
17
|
+
update_fencing_form();
|
18
|
+
$(document).on('change', 'fieldset#interface', function() { update_fencing_form(); });
|
19
|
+
function update_fencing_form() {
|
20
|
+
bmc_fieldset = get_bmc_interface_form();
|
21
|
+
if (bmc_fieldset.length == 0) {
|
22
|
+
disable_fencing_form();
|
23
|
+
return;
|
24
|
+
} else {
|
25
|
+
enable_fencing_form();
|
26
|
+
}
|
27
|
+
|
28
|
+
selected_provider = find_network_interface_field(bmc_fieldset, 'provider', 'select');
|
29
|
+
|
30
|
+
ip = find_network_interface_field(bmc_fieldset, 'ip', 'input').val();
|
31
|
+
$('#host_fencing_fence_ipmilan_address').val(ip);
|
32
|
+
username = find_network_interface_field(bmc_fieldset, 'username', 'input').val();
|
33
|
+
$('#host_fencing_fence_ipmilan_username').val(username);
|
34
|
+
password = find_network_interface_field(bmc_fieldset, 'password', 'input').val();
|
35
|
+
$('#host_fencing_fence_ipmilan_password').val(password);
|
36
|
+
}
|
65
37
|
|
38
|
+
$(document).on('click', 'fieldset#interface a.remove_nested_fields', function() { check_existence_of_bmc_interface(); });
|
39
|
+
function check_existence_of_bmc_interface() {
|
40
|
+
visible_bmc_forms = $.grep(get_bmc_interface_form(), function(fieldset) {
|
41
|
+
// NOTE: The second part of the condition is necessary because Foreman
|
42
|
+
// inserts the form to the DOM tree incorrectly after the second
|
43
|
+
// time
|
44
|
+
return $(fieldset).parent().is(':visible') && $(fieldset).find(':first').is(':visible');
|
45
|
+
});
|
66
46
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
if (bmc_fieldset.length == 0) {
|
71
|
-
disable_fencing_form();
|
72
|
-
return;
|
73
|
-
} else {
|
74
|
-
enable_fencing_form();
|
47
|
+
if(visible_bmc_forms.length == 0) {
|
48
|
+
disable_fencing_form();
|
49
|
+
}
|
75
50
|
}
|
76
51
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
}
|
86
|
-
|
87
|
-
|
88
|
-
$('#
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
bmc_fieldset = get_bmc_interface_form();
|
101
|
-
selected_provider = find_network_interface_field(bmc_fieldset, 'provider', 'select');
|
102
|
-
|
103
|
-
ip = $('#host_fencing_attrs_fence_ipmilan_address').val();
|
104
|
-
find_network_interface_field(bmc_fieldset, 'ip', 'input').val(ip);
|
105
|
-
username = $('#host_fencing_attrs_fence_ipmilan_username').val();
|
106
|
-
find_network_interface_field(bmc_fieldset, 'username', 'input').val(username);
|
107
|
-
password = $('#host_fencing_attrs_fence_ipmilan_password').val();
|
108
|
-
find_network_interface_field(bmc_fieldset, 'password', 'input').val(password);
|
109
|
-
};
|
110
|
-
|
111
|
-
function get_bmc_interface_form() {
|
112
|
-
return $('fieldset#interface').filter(function(index, fieldset){
|
113
|
-
type = find_network_interface_field($(fieldset), 'type', 'select');
|
114
|
-
return type.val() == 'Nic::BMC';
|
115
|
-
});
|
116
|
-
};
|
52
|
+
function disable_fencing_form() {
|
53
|
+
$('#fencing_form').hide();
|
54
|
+
$('#fencing_disabled_notice').show();
|
55
|
+
}
|
56
|
+
|
57
|
+
function enable_fencing_form() {
|
58
|
+
$('#fencing_disabled_notice').hide();
|
59
|
+
$('#fencing_form').show();
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
$(document).on('change', '#fencing', function() { update_bmc_interface_form(); });
|
64
|
+
function update_bmc_interface_form() {
|
65
|
+
bmc_fieldset = get_bmc_interface_form();
|
66
|
+
selected_provider = find_network_interface_field(bmc_fieldset, 'provider', 'select');
|
67
|
+
|
68
|
+
ip = $('#host_fencing_fence_ipmilan_address').val();
|
69
|
+
find_network_interface_field(bmc_fieldset, 'ip', 'input').val(ip);
|
70
|
+
username = $('#host_fencing_fence_ipmilan_username').val();
|
71
|
+
find_network_interface_field(bmc_fieldset, 'username', 'input').val(username);
|
72
|
+
password = $('#host_fencing_fence_ipmilan_password').val();
|
73
|
+
find_network_interface_field(bmc_fieldset, 'password', 'input').val(password);
|
74
|
+
}
|
117
75
|
|
118
76
|
|
119
|
-
$(document).ready(function() {
|
120
77
|
$('fieldset#interface').each(function(idx, fieldset) {
|
121
78
|
update_subnet_types(fieldset);
|
122
79
|
});
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
update_subnet_types(fieldset)
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
80
|
+
$(document).on('change', 'fieldset#interface select.interface_subnet', function(event) {
|
81
|
+
fieldset = $(event.target).parents('fieldset#interface');
|
82
|
+
update_subnet_types(fieldset);
|
83
|
+
});
|
84
|
+
function update_subnet_types(fieldset) {
|
85
|
+
subnet_select = find_network_interface_field($(fieldset), 'subnet_id', 'select');
|
86
|
+
subnet_types = subnet_select.data('types');
|
87
|
+
help_message = subnet_types[subnet_select.val()];
|
88
|
+
|
89
|
+
if (!help_message || help_message == '') {
|
90
|
+
subnet_select.parent().next().empty();
|
91
|
+
return;
|
92
|
+
}
|
93
|
+
|
94
|
+
subnet_select.parent().next().empty().append(
|
95
|
+
'<div><i class="glyphicon glyphicon-info-sign" /> ' + help_message + '</div>');
|
137
96
|
}
|
138
|
-
|
139
|
-
subnet_select.parent().next().empty().append(
|
140
|
-
'<div><i class="glyphicon glyphicon-info-sign" /> ' + help_message + '</div>');
|
141
|
-
};
|
97
|
+
});
|
@@ -67,6 +67,10 @@ module Staypuft
|
|
67
67
|
gateway_hash_for_host(host)[:interface]
|
68
68
|
end
|
69
69
|
|
70
|
+
def gateway_interface_mac(host=@host)
|
71
|
+
gateway_hash_for_host(host)[:mac]
|
72
|
+
end
|
73
|
+
|
70
74
|
def controllers
|
71
75
|
@controllers ||= @deployment.controller_hostgroup.hosts.order(:id)
|
72
76
|
end
|
@@ -101,7 +105,7 @@ module Staypuft
|
|
101
105
|
class Jail < Safemode::Jail
|
102
106
|
allow :ip_for_host, :interface_for_host, :network_address_for_host,
|
103
107
|
:controller_ip, :controller_ips, :controller_fqdns, :get_vip,
|
104
|
-
:subnet_for_host, :gateway_subnet, :gateway_interface
|
108
|
+
:subnet_for_host, :gateway_subnet, :gateway_interface, :gateway_interface_mac
|
105
109
|
end
|
106
110
|
|
107
111
|
private
|
data/app/lib/staypuft/seeder.rb
CHANGED
@@ -277,19 +277,19 @@ module Staypuft
|
|
277
277
|
cinder_rbd_secret_uuid = { :string => '<%= @host.deployment.cinder.rbd_secret_uuid %>' }
|
278
278
|
|
279
279
|
cinder_backend_eqlx = { :string => '<%= @host.deployment.cinder.equallogic_backend? %>' }
|
280
|
-
cinder_backend_eqlx_name =
|
280
|
+
cinder_backend_eqlx_name = { :array => '<%= @host.deployment.cinder.compute_eqlx_backend_names %>'}
|
281
281
|
# TODO: confirm these params and add them to model where user input is needed
|
282
282
|
# below dynamic calls are commented out since the model does not yet have san/chap entries
|
283
283
|
cinder_san_ip = { :array => '<%= @host.deployment.cinder.compute_eqlx_san_ips %>' }
|
284
284
|
cinder_san_login = { :array => '<%= @host.deployment.cinder.compute_eqlx_san_logins %>' }
|
285
285
|
cinder_san_password = { :array => '<%= @host.deployment.cinder.compute_eqlx_san_passwords %>' }
|
286
286
|
cinder_eqlx_group_name = { :array => '<%= @host.deployment.cinder.compute_eqlx_group_names %>' }
|
287
|
-
cinder_eqlx_pool = { :array => '<%= @host.deployment.cinder.compute_eqlx_pools %>'}
|
287
|
+
cinder_eqlx_pool = { :array => '<%= @host.deployment.cinder.compute_eqlx_pools %>' }
|
288
288
|
|
289
|
-
cinder_san_thin_provision =
|
290
|
-
cinder_eqlx_use_chap =
|
291
|
-
cinder_eqlx_chap_login =
|
292
|
-
cinder_eqlx_chap_password =
|
289
|
+
cinder_san_thin_provision = { :array => '<%= @host.deployment.cinder.compute_eqlx_thin_provision %>' }
|
290
|
+
cinder_eqlx_use_chap = { :array => '<%= @host.deployment.cinder.compute_eqlx_use_chap %>' }
|
291
|
+
cinder_eqlx_chap_login = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_logins %>' }
|
292
|
+
cinder_eqlx_chap_password = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_passwords %>' }
|
293
293
|
|
294
294
|
# Keystone
|
295
295
|
keystonerc = 'true'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Staypuft
|
2
|
+
module Concerns
|
3
|
+
module HostFencingExtensions
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
FENCING_TYPES = {
|
7
|
+
'fence_ipmilan' => 'IPMI'
|
8
|
+
}
|
9
|
+
|
10
|
+
included do
|
11
|
+
define_method :fencing do
|
12
|
+
instance_variable_get(:@fencing_config) or
|
13
|
+
instance_variable_set(:@fencing_config, ::Staypuft::Host::Fencing.new(self))
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method :fencing= do |value|
|
17
|
+
fencing.update(value)
|
18
|
+
end
|
19
|
+
|
20
|
+
validates_associated :fencing
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class ::Host::Managed::Jail < Safemode::Jail
|
27
|
+
allow :bmc_nic
|
28
|
+
end
|
@@ -5,12 +5,17 @@ module Staypuft
|
|
5
5
|
include ActiveModel::Validations
|
6
6
|
extend ActiveModel::Naming
|
7
7
|
|
8
|
-
attr_accessor :id, :san_ip, :san_login, :san_password, :pool, :group_name
|
8
|
+
attr_accessor :id, :san_ip, :san_login, :san_password, :pool, :group_name,
|
9
|
+
:thin_provision, :use_chap, :chap_login, :chap_password
|
9
10
|
attr_reader :errors
|
10
11
|
|
11
12
|
def initialize(attrs = {})
|
12
13
|
@errors = ActiveModel::Errors.new(self)
|
13
14
|
self.attributes = attrs
|
15
|
+
self.thin_provision = false
|
16
|
+
self.use_chap = false
|
17
|
+
self.chap_login = ''
|
18
|
+
self.chap_password = ''
|
14
19
|
end
|
15
20
|
|
16
21
|
def self.human_attribute_name(attr, options = {})
|
@@ -22,7 +27,9 @@ module Staypuft
|
|
22
27
|
end
|
23
28
|
|
24
29
|
def attributes
|
25
|
-
{ 'san_ip' => nil, 'san_login' => nil, 'san_password' => nil, 'pool' => nil,
|
30
|
+
{ 'san_ip' => nil, 'san_login' => nil, 'san_password' => nil, 'pool' => nil,
|
31
|
+
'group_name' => nil, 'thin_provision' => nil, 'use_chap' => nil,
|
32
|
+
'chap_login' => nil, 'chap_password' => nil }
|
26
33
|
end
|
27
34
|
|
28
35
|
def attributes=(attrs)
|
@@ -61,7 +61,9 @@ module Staypuft
|
|
61
61
|
allow :lvm_backend?, :nfs_backend?, :ceph_backend?, :equallogic_backend?,
|
62
62
|
:multiple_backends?, :rbd_secret_uuid, :nfs_uri, :eqlxs, :eqlxs_attributes=,
|
63
63
|
:compute_eqlx_san_ips, :compute_eqlx_san_logins, :compute_eqlx_san_passwords,
|
64
|
-
:compute_eqlx_group_names, :compute_eqlx_pools
|
64
|
+
:compute_eqlx_group_names, :compute_eqlx_pools, :compute_eqlx_thin_provision,
|
65
|
+
:compute_eqlx_use_chap, :compute_eqlx_chap_logins, :compute_eqlx_chap_passwords,
|
66
|
+
:compute_eqlx_backend_names
|
65
67
|
end
|
66
68
|
|
67
69
|
def set_defaults
|
@@ -121,12 +123,22 @@ module Staypuft
|
|
121
123
|
Ptable.find_by_name('LVM with cinder-volumes')
|
122
124
|
end
|
123
125
|
|
124
|
-
%w{san_ip san_login san_password group_name pool}.each do |name|
|
126
|
+
%w{san_ip san_login san_password group_name pool chap_login chap_password}.each do |name|
|
125
127
|
define_method "compute_eqlx_#{name}s" do
|
126
128
|
self.eqlxs.collect { |e| e.send name }
|
127
129
|
end
|
128
130
|
end
|
129
131
|
|
132
|
+
%w{thin_provision use_chap}.each do |name|
|
133
|
+
define_method "compute_eqlx_#{name}" do
|
134
|
+
self.eqlxs.collect { |e| e.send name }
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def compute_eqlx_backend_names
|
139
|
+
self.eqlxs.collect.with_index { |e,i| "eqlx_backend#{i+1}" }
|
140
|
+
end
|
141
|
+
|
130
142
|
private
|
131
143
|
|
132
144
|
def set_lvm_ptable
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Staypuft
|
2
|
+
module Host
|
3
|
+
class Fencing
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
FENCING_ATTRS = {
|
7
|
+
'general' => ['fencing_enabled',
|
8
|
+
'fencing_type'],
|
9
|
+
'fence_ipmilan' => ['fence_ipmilan_address',
|
10
|
+
'fence_ipmilan_username',
|
11
|
+
'fence_ipmilan_password',
|
12
|
+
'fence_ipmilan_expose_lanplus',
|
13
|
+
'fence_ipmilan_lanplus_options']
|
14
|
+
}
|
15
|
+
|
16
|
+
validates :fencing_type, :presence => true, :if => Proc.new { |f|
|
17
|
+
f.fencing_enabled == '1' &&
|
18
|
+
@host.interfaces.any?{ |nic| nic.type == 'Nic::BMC' && !nic.marked_for_destruction? }
|
19
|
+
}
|
20
|
+
|
21
|
+
def initialize(host)
|
22
|
+
@host = host
|
23
|
+
FENCING_ATTRS.each do |key, attrs|
|
24
|
+
attrs.each do |name|
|
25
|
+
instance_var_name = :"@#{name}"
|
26
|
+
value = host.bmc_nic.attrs[name] if host.bmc_nic && host.bmc_nic.attrs.has_key?(name)
|
27
|
+
self.class.send(:define_method, name) do
|
28
|
+
instance_variable_get(instance_var_name) or
|
29
|
+
instance_variable_set(instance_var_name, value)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def update(values)
|
36
|
+
values.each do |key, value|
|
37
|
+
instance_var_name = :"@#{key}"
|
38
|
+
instance_variable_set(instance_var_name, value)
|
39
|
+
end
|
40
|
+
|
41
|
+
bmc_nics = @host.interfaces.select{ |interface| interface.type == "Nic::BMC" }
|
42
|
+
return if bmc_nics.empty?
|
43
|
+
|
44
|
+
bmc_nic = bmc_nics[0]
|
45
|
+
bmc_nic.attrs.merge!(values)
|
46
|
+
bmc_nic.save
|
47
|
+
end
|
48
|
+
|
49
|
+
# compatibility with validates_associated
|
50
|
+
def marked_for_destruction?
|
51
|
+
false
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,23 +1,21 @@
|
|
1
1
|
<div id="fencing_form">
|
2
|
-
<%= f.fields_for :fencing do |fencing_fields| %>
|
3
|
-
|
4
|
-
<%= checkbox_f attrs_fields, :fencing_enabled,
|
2
|
+
<%= f.fields_for :fencing, @host.fencing do |fencing_fields| %>
|
3
|
+
<%= checkbox_f fencing_fields, :fencing_enabled,
|
5
4
|
label: _("Enable Fencing") %>
|
6
|
-
<%= select_f
|
5
|
+
<%= select_f fencing_fields, :fencing_type, ::Host::Managed::FENCING_TYPES, :first, :last,
|
7
6
|
{ include_blank: true },
|
8
7
|
{ label: _("Type") } %>
|
9
|
-
<%= text_f
|
8
|
+
<%= text_f fencing_fields, :fence_ipmilan_address,
|
10
9
|
label: _("IP Address") %>
|
11
|
-
<%= text_f
|
10
|
+
<%= text_f fencing_fields, :fence_ipmilan_username,
|
12
11
|
label: _("Username")%>
|
13
|
-
<%= password_f
|
12
|
+
<%= password_f fencing_fields, :fence_ipmilan_password,
|
14
13
|
label: _("Password"),
|
15
14
|
placeholder: '********' %>
|
16
|
-
<%= checkbox_f
|
15
|
+
<%= checkbox_f fencing_fields, :fence_ipmilan_expose_lanplus,
|
17
16
|
label: _("Expose Lanplus") %>
|
18
|
-
<%= text_f
|
17
|
+
<%= text_f fencing_fields, :fence_ipmilan_lanplus_options,
|
19
18
|
label: _("Lanplus Options") %>
|
20
|
-
<% end %>
|
21
19
|
<% end %>
|
22
20
|
</div>
|
23
21
|
<div id="fencing_disabled_notice" style="display: none;">
|
data/config/routes.rb
CHANGED
data/lib/staypuft/engine.rb
CHANGED
@@ -27,6 +27,7 @@ module Staypuft
|
|
27
27
|
end
|
28
28
|
|
29
29
|
config.to_prepare do
|
30
|
+
# Model concerns
|
30
31
|
::Host::Base.send :include, Staypuft::Concerns::HostInterfaceManagement
|
31
32
|
::Host::Managed.send :include, Staypuft::Concerns::HostOrchestrationBuildHook
|
32
33
|
::Host::Managed.send :include, Staypuft::Concerns::HostOpenStackAffiliation
|
@@ -38,6 +39,7 @@ module Staypuft
|
|
38
39
|
::Hostgroup.send :include, Staypuft::Concerns::HostgroupExtensions
|
39
40
|
::Environment.send :include, Staypuft::Concerns::EnvironmentExtensions
|
40
41
|
::LookupKey.send :include, Staypuft::Concerns::LookupKeyExtensions
|
42
|
+
::Host::Managed.send :include, Staypuft::Concerns::HostFencingExtensions
|
41
43
|
::Nic::Base.send :include, Staypuft::Concerns::NicFencingExtensions
|
42
44
|
|
43
45
|
# preload all the Foreman's lib files but only in production
|
data/lib/staypuft/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: staypuft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Staypuft team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: foreman-tasks
|
@@ -96,7 +96,6 @@ files:
|
|
96
96
|
- app/assets/stylesheets/staypuft/staypuft.css.scss
|
97
97
|
- app/controllers/staypuft/application_controller.rb
|
98
98
|
- app/controllers/staypuft/subnet_typings_controller.rb
|
99
|
-
- app/controllers/staypuft/hosts_controller.rb
|
100
99
|
- app/controllers/staypuft/interface_assignments_controller.rb
|
101
100
|
- app/controllers/staypuft/steps_controller.rb
|
102
101
|
- app/controllers/staypuft/deployments_controller.rb
|
@@ -116,6 +115,7 @@ files:
|
|
116
115
|
- app/models/staypuft/deployment/passwords.rb
|
117
116
|
- app/models/staypuft/service_class.rb
|
118
117
|
- app/models/staypuft/subnet_type.rb
|
118
|
+
- app/models/staypuft/host/fencing.rb
|
119
119
|
- app/models/staypuft/layout.rb
|
120
120
|
- app/models/staypuft/concerns/vip_nic_scopes.rb
|
121
121
|
- app/models/staypuft/concerns/hostgroup_extensions.rb
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- app/models/staypuft/concerns/environment_extensions.rb
|
127
127
|
- app/models/staypuft/concerns/host_interface_management.rb
|
128
128
|
- app/models/staypuft/concerns/host_orchestration_build_hook.rb
|
129
|
+
- app/models/staypuft/concerns/host_fencing_extensions.rb
|
129
130
|
- app/models/staypuft/concerns/lookup_key_extensions.rb
|
130
131
|
- app/models/staypuft/concerns/host_open_stack_affiliation.rb
|
131
132
|
- app/models/staypuft/role_service.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Staypuft
|
2
|
-
class HostsController < ::HostsController
|
3
|
-
|
4
|
-
before_filter :set_fencing_params, only: 'update'
|
5
|
-
|
6
|
-
private
|
7
|
-
def set_fencing_params
|
8
|
-
fencing_params = params['host'].delete('fencing')
|
9
|
-
|
10
|
-
if fencing_params['attrs']['fencing_enabled'] == '1'
|
11
|
-
host_attrs = params['host']['interfaces_attributes'].values.find{|host_attrs| host_attrs['provider'] == 'IPMI'}
|
12
|
-
host_attrs.merge!(fencing_params)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|