staypuft 0.5.17 → 0.5.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/staypuft/staypuft.js +80 -0
- data/app/assets/stylesheets/staypuft/staypuft.css.scss +14 -1
- data/app/lib/actions/staypuft/host/puppet_run.rb +1 -1
- data/app/lib/staypuft/seeder.rb +40 -4
- data/app/models/staypuft/deployment.rb +1 -1
- data/app/models/staypuft/deployment/cinder_service.rb +87 -5
- data/app/models/staypuft/deployment/cinder_service/netapp.rb +59 -0
- data/app/models/staypuft/deployment/glance_service.rb +1 -1
- data/app/views/staypuft/deployments/_deployment_overview.html.erb +6 -1
- data/app/views/staypuft/steps/_cinder.html.erb +21 -0
- data/app/views/staypuft/steps/_cinder_netapp_form.html.erb +55 -0
- data/app/views/staypuft/steps/_wizard_form_buttons.html.erb +4 -4
- data/app/views/staypuft/steps/network_configuration.html.erb +3 -2
- data/app/views/staypuft/steps/services_configuration.html.erb +46 -44
- data/lib/staypuft/version.rb +1 -1
- metadata +149 -147
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8aa1fc0e43ac4f94ddae7be23c7941b1d22c74b8
|
4
|
+
data.tar.gz: 7e4e4d1e9529729d3242e90e3fb98e934fb529d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a71e8eba640b5a17c09a4524d26154e258ff1c00ca78e8d3f685996aa34b952028f75cfeaa5e955e7d5157d4d258a43c3dfbb91f27f21c201775d3d24b4f4146
|
7
|
+
data.tar.gz: f237025c2388b22842315478a46c834cc04c9f490eb5c494be8c9f89a788956f90fa1f85517952f3dda8b9f73f5ae13b72a2c8aeccbcd48c608f79ea9103f14d
|
@@ -221,6 +221,61 @@ $('.neutron_ml2_mechanisms').parent().parent().removeClass('col-md-6').addClass(
|
|
221
221
|
}
|
222
222
|
}
|
223
223
|
|
224
|
+
showCinderNetApp();
|
225
|
+
// trigger function whenever NetApp checkmark is changed
|
226
|
+
$("#staypuft_deployment_cinder_backend_netapp").change(showCinderNetApp);
|
227
|
+
|
228
|
+
/**
|
229
|
+
* Shows NetApp configuration options if it is selected as a backend
|
230
|
+
*/
|
231
|
+
function showCinderNetApp() {
|
232
|
+
if ($('#staypuft_deployment_cinder_backend_netapp').is(":checked")) {
|
233
|
+
$('.cinder_netapp').show();
|
234
|
+
if($('#netapps').children().length == 0) {
|
235
|
+
$('.add_another_netapp').click();
|
236
|
+
}
|
237
|
+
}
|
238
|
+
else {
|
239
|
+
$('.cinder_netapp').hide();
|
240
|
+
}
|
241
|
+
}
|
242
|
+
|
243
|
+
/**
|
244
|
+
* The user first selects their NetApp storage family and protocol
|
245
|
+
* and then relevant options are presented to them.
|
246
|
+
*/
|
247
|
+
function showHideNetAppOptions(){
|
248
|
+
$('#netapps').children().each(function(){
|
249
|
+
var family = $(this).find('.netapp-main select[name*=storage_family]').val()
|
250
|
+
var protocol = $(this).find('.netapp-main select[name*=storage_protocol]').val()
|
251
|
+
|
252
|
+
// Hide all NetApp options
|
253
|
+
$(this).find('.netapp-option').hide();
|
254
|
+
$(this).find('.netapp-main select[name*=storage_protocol]').removeAttr("disabled");
|
255
|
+
|
256
|
+
// Selectively show options based on storage family & protocol
|
257
|
+
if (family == 'eseries'){
|
258
|
+
protocol = 'iscsi';
|
259
|
+
$(this).find('.netapp-main select[name*=storage_protocol]').val(protocol).attr('disabled', 'disabled');
|
260
|
+
$(this).find('.netapp-eseries').show();
|
261
|
+
}
|
262
|
+
|
263
|
+
if (protocol == 'nfs'){
|
264
|
+
$(this).find('.netapp-nfs').show();
|
265
|
+
}
|
266
|
+
|
267
|
+
if (protocol == 'iscsi' && family == 'ontap_7mode'){
|
268
|
+
$(this).find('.netapp-7mode-iscsi').show();
|
269
|
+
}
|
270
|
+
|
271
|
+
if (family == 'ontap_cluster'){
|
272
|
+
$(this).find('.netapp-vserver').show();
|
273
|
+
}
|
274
|
+
|
275
|
+
})
|
276
|
+
|
277
|
+
}
|
278
|
+
|
224
279
|
showNeutronMl2CiscoNexus();
|
225
280
|
$("#staypuft_deployment_neutron_ml2_cisco_nexus").change(showNeutronMl2CiscoNexus);
|
226
281
|
function showNeutronMl2CiscoNexus() {
|
@@ -413,6 +468,25 @@ $('.neutron_ml2_mechanisms').parent().parent().removeClass('col-md-6').addClass(
|
|
413
468
|
}
|
414
469
|
})
|
415
470
|
|
471
|
+
/**
|
472
|
+
* Adds another NetApp storage system configuration section
|
473
|
+
*/
|
474
|
+
$("button.add_another_netapp").live("click", function() {
|
475
|
+
var netapp_form = function () {
|
476
|
+
return $('#netapp_form_template').text().replace(/NEW_RECORD/g, new Date().getTime());
|
477
|
+
}
|
478
|
+
$('#netapps').append(netapp_form());
|
479
|
+
if($('#netapps').children().length > 1) {
|
480
|
+
var added_form_span = $('#netapps').children().last().find('h5').find('.server_number');
|
481
|
+
var previous_span_number = $('#netapps').children().eq(-2).find('h5').find('.server_number');
|
482
|
+
added_form_span.html(parseInt(previous_span_number.html(), 10) + 1);
|
483
|
+
}
|
484
|
+
|
485
|
+
// Unbind existing handlers & add event handlers to all NetApp config sections
|
486
|
+
$(".netapp-main select[name*=storage_family]").unbind().change(showHideNetAppOptions);
|
487
|
+
$(".netapp-main select[name*=storage_protocol]").unbind().change(showHideNetAppOptions);
|
488
|
+
})
|
489
|
+
|
416
490
|
$("button.add_another_switch").live("click", function() {
|
417
491
|
var nexus_form = function() {
|
418
492
|
return $('#nexus_form_template').text().replace(/NEW_RECORD/g, new Date().getTime());
|
@@ -433,4 +507,10 @@ $('.neutron_ml2_mechanisms').parent().parent().removeClass('col-md-6').addClass(
|
|
433
507
|
|
434
508
|
remove_element_on_click('.eqlx');
|
435
509
|
remove_element_on_click('.nexus');
|
510
|
+
|
511
|
+
var networks_configured = $('#networks_configured');
|
512
|
+
networks_configured.click(function(){
|
513
|
+
$(".modal-footer .btn-primary").removeClass("disabled").attr("disabled", !networks_configured.is(":checked"));
|
514
|
+
$(".network_checkbox_unchecked").toggle();
|
515
|
+
});
|
436
516
|
});
|
@@ -26,7 +26,7 @@ li.inner-nav a {
|
|
26
26
|
li.inner-nav.active a {
|
27
27
|
text-decoration:underline;
|
28
28
|
}
|
29
|
-
.deployment-wizard .wizard {
|
29
|
+
.deployment-wizard .wizard, .wizard-container .wizard {
|
30
30
|
width: 100%;
|
31
31
|
float: left;
|
32
32
|
padding-left: 0;
|
@@ -50,6 +50,19 @@ li.inner-nav.active a {
|
|
50
50
|
right: 20px;
|
51
51
|
}
|
52
52
|
|
53
|
+
.deployment-wizard .pull-right {
|
54
|
+
margin-left: 5px;
|
55
|
+
}
|
56
|
+
|
57
|
+
.deployment-wizard .cancel {
|
58
|
+
margin-right: 5px;
|
59
|
+
float: left;
|
60
|
+
}
|
61
|
+
|
62
|
+
.network_checkbox {
|
63
|
+
padding: 20px 5px 0px 0px;
|
64
|
+
}
|
65
|
+
|
53
66
|
.top_actions {
|
54
67
|
//same margin as h1 (title)
|
55
68
|
margin: 20px 0 10px;
|
@@ -31,6 +31,7 @@ module Actions
|
|
31
31
|
while !result && tries < 3
|
32
32
|
result = host.puppetrun!
|
33
33
|
tries += 1
|
34
|
+
output[:errors] = host.errors.full_messages unless result
|
34
35
|
end
|
35
36
|
|
36
37
|
# we need executed_at for both success and failure cases
|
@@ -40,7 +41,6 @@ module Actions
|
|
40
41
|
output[:result] = result
|
41
42
|
|
42
43
|
unless result
|
43
|
-
output[:errors] = host.errors.full_messages
|
44
44
|
fail(::Staypuft::Exception, "Puppet run failed for host: #{host.id}")
|
45
45
|
end
|
46
46
|
end
|
data/app/lib/staypuft/seeder.rb
CHANGED
@@ -311,6 +311,23 @@ module Staypuft
|
|
311
311
|
cinder_eqlx_chap_login = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_logins %>' }
|
312
312
|
cinder_eqlx_chap_password = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_passwords %>' }
|
313
313
|
|
314
|
+
cinder_backend_netapp = { :string => '<%= @host.deployment.cinder.netapp_backend? %>' }
|
315
|
+
cinder_netapp_hostname = { :array => '<%= @host.deployment.cinder.compute_netapp_hostnames %>' }
|
316
|
+
cinder_netapp_login = { :array => '<%= @host.deployment.cinder.compute_netapp_logins %>' }
|
317
|
+
cinder_netapp_password = { :array => '<%= @host.deployment.cinder.compute_netapp_passwords %>' }
|
318
|
+
cinder_netapp_server_port = { :array => '<%= @host.deployment.cinder.compute_netapp_server_ports %>' }
|
319
|
+
cinder_netapp_storage_family = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_families %>' }
|
320
|
+
cinder_netapp_transport_type = { :array => '<%= @host.deployment.cinder.compute_netapp_transport_types %>' }
|
321
|
+
cinder_netapp_storage_protocol = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_protocols %>' }
|
322
|
+
cinder_netapp_nfs_shares = { :array => '<%= @host.deployment.cinder.compute_netapp_nfs_shares %>' }
|
323
|
+
cinder_netapp_nfs_shares_config = { :array => '<%= @host.deployment.cinder.compute_netapp_nfs_shares_configs %>' }
|
324
|
+
cinder_netapp_volume_list = { :array => '<%= @host.deployment.cinder.compute_netapp_volume_lists %>' }
|
325
|
+
cinder_netapp_vfiler = { :array => '<%= @host.deployment.cinder.compute_netapp_vfilers %>' }
|
326
|
+
cinder_netapp_vserver = { :array => '<%= @host.deployment.cinder.compute_netapp_vservers %>' }
|
327
|
+
cinder_netapp_controller_ips = { :array => '<%= @host.deployment.cinder.compute_netapp_controller_ips %>' }
|
328
|
+
cinder_netapp_sa_password = { :array => '<%= @host.deployment.cinder.compute_netapp_sa_passwords %>' }
|
329
|
+
cinder_netapp_storage_pools = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_pools %>' }
|
330
|
+
|
314
331
|
# Keystone
|
315
332
|
keystonerc = 'true'
|
316
333
|
|
@@ -361,8 +378,9 @@ module Staypuft
|
|
361
378
|
neutron_metadata_proxy_secret = { :string => '<%= @host.deployment.passwords.neutron_metadata_proxy_secret %>' }
|
362
379
|
|
363
380
|
|
364
|
-
private_ip
|
365
|
-
pcmk_ip
|
381
|
+
private_ip = { :string => "<%= @host.network_query.ip_for_host('#{Staypuft::SubnetType::MANAGEMENT}') %>" }
|
382
|
+
pcmk_ip = { :string => "<%= @host.network_query.ip_for_host('#{Staypuft::SubnetType::CLUSTER_MGMT}') %>" }
|
383
|
+
lb_backend_server_addrs = { :array => "<%= @host.deployment.network_query.controller_ips('#{Staypuft::SubnetType::MANAGEMENT}') %>" }
|
366
384
|
# private API/management
|
367
385
|
amqp_host = get_host_format :amqp_vip, Staypuft::SubnetType::MANAGEMENT
|
368
386
|
mysql_host = get_host_format :db_vip, Staypuft::SubnetType::MANAGEMENT
|
@@ -466,7 +484,7 @@ module Staypuft
|
|
466
484
|
'private_ip' => private_ip,
|
467
485
|
'pcmk_ip' => pcmk_ip,
|
468
486
|
'cluster_control_ip' => { :string => "<%= @host.deployment.network_query.controller_ips('#{Staypuft::SubnetType::MANAGEMENT}').first %>" },
|
469
|
-
'lb_backend_server_addrs' =>
|
487
|
+
'lb_backend_server_addrs' => lb_backend_server_addrs,
|
470
488
|
'lb_backend_server_names' => { :array => '<%= @host.deployment.network_query.controller_lb_backend_shortnames %>' },
|
471
489
|
'pcmk_server_addrs' => { :array => "<%= @host.deployment.network_query.controller_ips('#{Staypuft::SubnetType::CLUSTER_MGMT}') %>" },
|
472
490
|
'pcmk_server_names' => { :array => '<%= @host.deployment.network_query.controller_pcmk_shortnames %>' },
|
@@ -527,6 +545,7 @@ module Staypuft
|
|
527
545
|
'rbd_user' => cinder_rbd_user,
|
528
546
|
'rbd_secret_uuid' => cinder_rbd_secret_uuid,
|
529
547
|
'backend_eqlx' => cinder_backend_eqlx,
|
548
|
+
'backend_netapp' => cinder_backend_netapp,
|
530
549
|
'san_ip' => cinder_san_ip,
|
531
550
|
'san_login' => cinder_san_login,
|
532
551
|
'san_password' => cinder_san_password,
|
@@ -535,7 +554,22 @@ module Staypuft
|
|
535
554
|
'eqlx_pool' => cinder_eqlx_pool,
|
536
555
|
'eqlx_use_chap' => cinder_eqlx_use_chap,
|
537
556
|
'eqlx_chap_login' => cinder_eqlx_chap_login,
|
538
|
-
'eqlx_chap_password' => cinder_eqlx_chap_password
|
557
|
+
'eqlx_chap_password' => cinder_eqlx_chap_password,
|
558
|
+
'netapp_hostname' => cinder_netapp_hostname,
|
559
|
+
'netapp_login' => cinder_netapp_login,
|
560
|
+
'netapp_password' => cinder_netapp_password,
|
561
|
+
'netapp_server_port' => cinder_netapp_server_port,
|
562
|
+
'netapp_storage_family' => cinder_netapp_storage_family,
|
563
|
+
'netapp_transport_type' => cinder_netapp_transport_type,
|
564
|
+
'netapp_storage_protocol' => cinder_netapp_storage_protocol,
|
565
|
+
'netapp_nfs_shares' => cinder_netapp_nfs_shares,
|
566
|
+
'netapp_nfs_shares_config' => cinder_netapp_nfs_shares_config,
|
567
|
+
'netapp_volume_list' => cinder_netapp_volume_list,
|
568
|
+
'netapp_vfiler' => cinder_netapp_vfiler,
|
569
|
+
'netapp_vserver' => cinder_netapp_vserver,
|
570
|
+
'netapp_controller_ips' => cinder_netapp_controller_ips,
|
571
|
+
'netapp_sa_password' => cinder_netapp_sa_password,
|
572
|
+
'netapp_storage_pools' => cinder_netapp_storage_pools },
|
539
573
|
'quickstack::pacemaker::keystone' => {
|
540
574
|
'keystonerc' => keystonerc,
|
541
575
|
'admin_password' => admin_pw,
|
@@ -594,6 +628,7 @@ module Staypuft
|
|
594
628
|
'nova_host' => nova_host,
|
595
629
|
'private_ip' => private_ip,
|
596
630
|
'network_device_mtu' => nova_network_device_mtu,
|
631
|
+
'rabbit_hosts' => lb_backend_server_addrs,
|
597
632
|
},
|
598
633
|
'quickstack::neutron::compute' => {
|
599
634
|
'amqp_provider' => amqp_provider,
|
@@ -635,6 +670,7 @@ module Staypuft
|
|
635
670
|
'security_group_api' => neutron_security_group_api,
|
636
671
|
'network_device_mtu' => neutron_network_device_mtu,
|
637
672
|
'veth_mtu' => neutron_network_device_mtu,
|
673
|
+
'rabbit_hosts' => lb_backend_server_addrs,
|
638
674
|
},
|
639
675
|
'quickstack::pacemaker::rsync::keystone' => {
|
640
676
|
'keystone_private_vip' => vip_format(:keystone) },
|
@@ -341,7 +341,7 @@ module Staypuft
|
|
341
341
|
when Platform::RHEL6
|
342
342
|
Operatingsystem.where(name: name, major: '6', minor: '5').first
|
343
343
|
when Platform::RHEL7
|
344
|
-
Operatingsystem.where(name: name, major: '7'
|
344
|
+
Operatingsystem.where(name: name, major: '7').order('minor desc').first
|
345
345
|
end or
|
346
346
|
raise 'missing Operatingsystem'
|
347
347
|
self.hostgroup.save!
|
@@ -5,11 +5,12 @@ module Staypuft
|
|
5
5
|
'cinder'
|
6
6
|
end
|
7
7
|
|
8
|
-
BACKEND_TYPE_PARAMS = :backend_eqlx, :backend_nfs, :backend_lvm, :backend_ceph
|
8
|
+
BACKEND_TYPE_PARAMS = :backend_eqlx, :backend_nfs, :backend_lvm, :backend_ceph, :backend_netapp
|
9
9
|
BACKEND_PARAMS = :nfs_uri, :rbd_secret_uuid
|
10
10
|
|
11
11
|
param_attr *BACKEND_TYPE_PARAMS, *BACKEND_PARAMS
|
12
12
|
param_attr_array :eqlxs => Equallogic
|
13
|
+
param_attr_array :netapps => Netapp
|
13
14
|
|
14
15
|
after_save :set_lvm_ptable
|
15
16
|
|
@@ -18,10 +19,12 @@ module Staypuft
|
|
18
19
|
NFS = 'nfs'
|
19
20
|
CEPH = 'ceph'
|
20
21
|
EQUALLOGIC = 'equallogic'
|
22
|
+
NETAPP = 'netapp'
|
21
23
|
LABELS = { LVM => N_('LVM'),
|
22
24
|
NFS => N_('NFS'),
|
23
25
|
CEPH => N_('Ceph'),
|
24
|
-
EQUALLOGIC => N_('EqualLogic')
|
26
|
+
EQUALLOGIC => N_('EqualLogic'),
|
27
|
+
NETAPP => N_('NetApp') }
|
25
28
|
TYPES = LABELS.keys
|
26
29
|
HUMAN = N_('Choose Driver Backend')
|
27
30
|
end
|
@@ -62,12 +65,70 @@ module Staypuft
|
|
62
65
|
validate :equallogic_backends,
|
63
66
|
:if => :equallogic_backend?
|
64
67
|
|
68
|
+
module NetappHostname
|
69
|
+
HUMAN = N_('Hostname:')
|
70
|
+
end
|
71
|
+
module NetappLogin
|
72
|
+
HUMAN = N_('Login:')
|
73
|
+
end
|
74
|
+
module NetappPassword
|
75
|
+
HUMAN = N_('Password:')
|
76
|
+
end
|
77
|
+
module NetappServerPort
|
78
|
+
HUMAN = N_('Server Port:')
|
79
|
+
end
|
80
|
+
module NetappStorageFamily
|
81
|
+
HUMAN = N_('Storage Family:')
|
82
|
+
end
|
83
|
+
module NetappTransportType
|
84
|
+
HUMAN = N_('Transport Type:')
|
85
|
+
end
|
86
|
+
module NetappStorageProtocol
|
87
|
+
HUMAN = N_('Storage Protocol:')
|
88
|
+
end
|
89
|
+
module NetappNfsShares
|
90
|
+
HUMAN = N_('NFS Shares:')
|
91
|
+
end
|
92
|
+
module NetappNfsSharesConfig
|
93
|
+
HUMAN = N_('NFS Shares Config:')
|
94
|
+
end
|
95
|
+
module NetappVolumeList
|
96
|
+
HUMAN = N_('Volume List:')
|
97
|
+
end
|
98
|
+
module NetappVfiler
|
99
|
+
HUMAN = N_('vFiler:')
|
100
|
+
end
|
101
|
+
module NetappVserver
|
102
|
+
HUMAN = N_('Storage Virtual Machine (SVM):')
|
103
|
+
end
|
104
|
+
module NetappControllerIps
|
105
|
+
HUMAN = N_('Controller IPs:')
|
106
|
+
end
|
107
|
+
module NetappSaPassword
|
108
|
+
HUMAN = N_('SA Password:')
|
109
|
+
end
|
110
|
+
module NetappStoragePools
|
111
|
+
HUMAN = N_('Storage Pools:')
|
112
|
+
end
|
113
|
+
|
114
|
+
validates :netapps,
|
115
|
+
:presence => true,
|
116
|
+
:if => :netapp_backend?
|
117
|
+
validate :netapp_backends,
|
118
|
+
:if => :netapp_backend?
|
119
|
+
|
65
120
|
class Jail < Safemode::Jail
|
66
|
-
allow :lvm_backend?, :nfs_backend?, :ceph_backend?, :equallogic_backend?,
|
121
|
+
allow :lvm_backend?, :nfs_backend?, :ceph_backend?, :equallogic_backend?, :netapp_backend?,
|
67
122
|
:multiple_backends?, :rbd_secret_uuid, :nfs_uri, :eqlxs, :eqlxs_attributes=,
|
68
123
|
:compute_eqlx_san_ips, :compute_eqlx_san_logins, :compute_eqlx_san_passwords,
|
69
124
|
:compute_eqlx_group_names, :compute_eqlx_pools, :compute_eqlx_thin_provision,
|
70
|
-
:compute_eqlx_use_chap, :compute_eqlx_chap_logins, :compute_eqlx_chap_passwords
|
125
|
+
:compute_eqlx_use_chap, :compute_eqlx_chap_logins, :compute_eqlx_chap_passwords,
|
126
|
+
:netapps, :compute_netapp_hostnames, :compute_netapp_logins, :compute_netapp_passwords,
|
127
|
+
:compute_netapp_server_ports, :compute_netapp_storage_families,
|
128
|
+
:compute_netapp_transport_types, :compute_netapp_storage_protocols,
|
129
|
+
:compute_netapp_nfs_shares, :compute_netapp_nfs_shares_configs, :compute_netapp_volume_lists,
|
130
|
+
:compute_netapp_vfilers, :compute_netapp_vservers, :compute_netapp_controller_ips,
|
131
|
+
:compute_netapp_sa_passwords, :compute_netapp_storage_pools
|
71
132
|
end
|
72
133
|
|
73
134
|
def set_defaults
|
@@ -75,6 +136,7 @@ module Staypuft
|
|
75
136
|
self.backend_ceph = "false"
|
76
137
|
self.backend_nfs = "false"
|
77
138
|
self.backend_eqlx = "false"
|
139
|
+
self.backend_netapp = "false"
|
78
140
|
self.rbd_secret_uuid = SecureRandom.uuid
|
79
141
|
end
|
80
142
|
|
@@ -99,8 +161,13 @@ module Staypuft
|
|
99
161
|
self.backend_eqlx == "true"
|
100
162
|
end
|
101
163
|
|
164
|
+
def netapp_backend?
|
165
|
+
self.backend_netapp == "true"
|
166
|
+
end
|
167
|
+
|
102
168
|
def multiple_backends?
|
103
169
|
(equallogic_backend? and self.eqlxs.length > 1) or
|
170
|
+
(netapp_backend? and self.netapps.length > 1) or
|
104
171
|
BACKEND_TYPE_PARAMS.select { |type| send(type.to_s) == "true" }.length > 1
|
105
172
|
end
|
106
173
|
|
@@ -115,7 +182,8 @@ module Staypuft
|
|
115
182
|
{ "backend_lvm" => backend_lvm, "backend_ceph" => backend_ceph,
|
116
183
|
"backend_nfs" => backend_nfs, "backend_eqlx" => backend_eqlx,
|
117
184
|
"nfs_uri" => nfs_uri, "rbd_secret_uuid" => rbd_secret_uuid,
|
118
|
-
"eqlxs" => self.eqlxs
|
185
|
+
"eqlxs" => self.eqlxs, "backend_netapp" => backend_netapp,
|
186
|
+
"netapps" => self.netapps }
|
119
187
|
end
|
120
188
|
|
121
189
|
def lvm_ptable
|
@@ -134,6 +202,14 @@ module Staypuft
|
|
134
202
|
end
|
135
203
|
end
|
136
204
|
|
205
|
+
%w{hostname login password server_port storage_familie transport_type storage_protocol
|
206
|
+
nfs_share nfs_shares_config volume_list vfiler vserver controller_ip sa_password
|
207
|
+
storage_pool }.each do |name|
|
208
|
+
define_method "compute_netapp_#{name}s" do
|
209
|
+
self.netapps.collect { |e| e.send name }
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
137
213
|
private
|
138
214
|
|
139
215
|
def set_lvm_ptable
|
@@ -162,5 +238,11 @@ module Staypuft
|
|
162
238
|
errors.add :base, _("Please fix the problems in selected backends")
|
163
239
|
end
|
164
240
|
end
|
241
|
+
|
242
|
+
def netapp_backends
|
243
|
+
unless self.netapps.all? { |item| item.valid? }
|
244
|
+
errors.add :base, _("Please fix the problems in selected backends")
|
245
|
+
end
|
246
|
+
end
|
165
247
|
end
|
166
248
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
module Staypuft
|
3
|
+
class Deployment::CinderService::Netapp
|
4
|
+
include ActiveModel::Serializers::JSON
|
5
|
+
include ActiveModel::Validations
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
|
8
|
+
attr_accessor :id, :hostname, :login, :password, :server_port,
|
9
|
+
:storage_family, :transport_type, :storage_protocol,
|
10
|
+
:nfs_shares, :nfs_shares_config, :volume_list, :vfiler,
|
11
|
+
:vserver, :controller_ips, :sa_password, :storage_pools
|
12
|
+
attr_reader :errors
|
13
|
+
|
14
|
+
STORAGE_FAMILIES = { :ontap_cluster => 'Clustered Data ONTAP',
|
15
|
+
:ontap_7mode => 'Data ONTAP 7-mode',
|
16
|
+
:eseries => 'E-Series' }
|
17
|
+
STORAGE_PROTOCOLS = { :nfs => 'NFS', :iscsi => 'iSCSI' }
|
18
|
+
TRANSPORT_TYPES = { :http => 'http', :https => 'https' }
|
19
|
+
|
20
|
+
def initialize(attrs = {})
|
21
|
+
@errors = ActiveModel::Errors.new(self)
|
22
|
+
self.attributes = attrs
|
23
|
+
self.server_port = 80
|
24
|
+
self.storage_family = 'ontap_cluster'
|
25
|
+
self.transport_type = 'http'
|
26
|
+
self.storage_protocol = 'nfs'
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.human_attribute_name(attr, options = {})
|
30
|
+
attr
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.lookup_ancestors
|
34
|
+
[self]
|
35
|
+
end
|
36
|
+
|
37
|
+
def attributes
|
38
|
+
{ 'hostname' => nil, 'login' => nil, 'password' => nil,
|
39
|
+
'server_port' => nil, 'storage_family' => nil, 'transport_type' => nil,
|
40
|
+
'storage_protocol' => nil, 'nfs_shares' => nil, 'nfs_shares_config' => nil,
|
41
|
+
'volume_list' => nil, 'vfiler' => nil, 'vserver' => nil,
|
42
|
+
'controller_ips' => nil, 'sa_password' => nil,
|
43
|
+
'storage_pools' => nil }
|
44
|
+
end
|
45
|
+
|
46
|
+
def attributes=(attrs)
|
47
|
+
attrs.each { |attr, value| send "#{attr}=", value } unless attrs.nil?
|
48
|
+
end
|
49
|
+
|
50
|
+
validates :login,
|
51
|
+
presence: true,
|
52
|
+
format: /\A[a-zA-Z\d][\w\.\-]*[\w\-]\z/,
|
53
|
+
length: { maximum: 16 }
|
54
|
+
validates :password,
|
55
|
+
presence: true,
|
56
|
+
format: /\A[!-~]+\z/,
|
57
|
+
length: { minimum:3, maximum: 16 }
|
58
|
+
end
|
59
|
+
end
|
@@ -82,12 +82,17 @@
|
|
82
82
|
</div>
|
83
83
|
<% end %>
|
84
84
|
</div>
|
85
|
+
<div class="network_checkbox">
|
86
|
+
<%= check_box_tag 'networks_configured' %>
|
87
|
+
<%= label_tag 'networks_configured', _("The networks have been configured for these hosts.") %>
|
88
|
+
</div>
|
85
89
|
</div>
|
86
90
|
<div class="modal-footer">
|
91
|
+
<div class="network_checkbox_unchecked"><p class="small"><%= _("In order to deploy, you must acknowledge that networks have been configured by checking above.") %></p></div>
|
87
92
|
<button type="button" class="btn btn-default" data-dismiss="modal"><%= _("Cancel") %></button>
|
88
93
|
<%= display_link_if_authorized(_("Deploy"),
|
89
94
|
hash_for_deploy_deployment_path,
|
90
|
-
:class => 'btn btn-primary',
|
95
|
+
:class => 'btn btn-primary disabled',
|
91
96
|
:method => :post,
|
92
97
|
:data => { :disable_with => _("Deploying...") }) %>
|
93
98
|
</div>
|
@@ -35,6 +35,13 @@
|
|
35
35
|
:unchecked_value => 'false',
|
36
36
|
:text => _(Staypuft::Deployment::CinderService::DriverBackend::LABELS['equallogic']))
|
37
37
|
%>
|
38
|
+
|
39
|
+
<%= check_box_f_non_inline(p, :backend_netapp,
|
40
|
+
:checked_value => 'true',
|
41
|
+
:unchecked_value => 'false',
|
42
|
+
:text => _(Staypuft::Deployment::CinderService::DriverBackend::LABELS['netapp']))
|
43
|
+
%>
|
44
|
+
|
38
45
|
<div class="cinder_equallogic col-md-offset-1 hide">
|
39
46
|
<div id="eqlxs" class="cinder_equallogic_picker">
|
40
47
|
<% @deployment.cinder.eqlxs.each_with_index do |eqlx, index| %>
|
@@ -48,6 +55,20 @@
|
|
48
55
|
</script>
|
49
56
|
<button type="button" class= "btn btn-primary btn-sm add_another_server"><%= _("Add Another Server") %></button>
|
50
57
|
</div>
|
58
|
+
|
59
|
+
<div class="cinder_netapp col-md-offset-1 hide">
|
60
|
+
<div id="netapps" class="cinder_netapp_picker">
|
61
|
+
<% @deployment.cinder.netapps.each_with_index do |netapp, index| %>
|
62
|
+
<%= p.fields_for "netapps[]", netapp, index: index do |e| %>
|
63
|
+
<% render partial: 'cinder_netapp_form', locals: {e: e} %>
|
64
|
+
<% end %>
|
65
|
+
<% end %>
|
66
|
+
</div>
|
67
|
+
<script type='html/template' id='netapp_form_template'>
|
68
|
+
<%= p.fields_for 'netapps[]', Staypuft::Deployment::CinderService::Netapp.new, index: 'NEW_RECORD' do |e| render(partial: 'cinder_netapp_form', locals: {e: e}); end %>
|
69
|
+
</script>
|
70
|
+
<button type="button" class= "btn btn-primary btn-sm add_another_netapp"><%= _("Add Another NetApp Storage System") %></button>
|
71
|
+
</div>
|
51
72
|
<%end%>
|
52
73
|
</div>
|
53
74
|
</div>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<div class="netapp well">
|
2
|
+
<h5 class="muted"><a href="#" class="remove"><i class="glyphicon glyphicon-remove-sign "> </i></a> Storage System #<span class="server_number">1</span></h5>
|
3
|
+
|
4
|
+
<div class="netapp-main">
|
5
|
+
<%= select_f e, :storage_family, Staypuft::Deployment::CinderService::Netapp::STORAGE_FAMILIES,
|
6
|
+
:first, :last,
|
7
|
+
{},
|
8
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappStorageFamily::HUMAN) } %>
|
9
|
+
<%= select_f e, :storage_protocol, Staypuft::Deployment::CinderService::Netapp::STORAGE_PROTOCOLS,
|
10
|
+
:first, :last,
|
11
|
+
{},
|
12
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappStorageProtocol::HUMAN) } %>
|
13
|
+
<%= text_f e, :hostname, class: "cinder_netapp",
|
14
|
+
label: _(Staypuft::Deployment::CinderService::NetappHostname::HUMAN) %>
|
15
|
+
<%= text_f e, :login, class: "cinder_netapp",
|
16
|
+
label: _(Staypuft::Deployment::CinderService::NetappLogin::HUMAN) %>
|
17
|
+
<%= password_f e, :password, class: "cinder_netapp",
|
18
|
+
label: _(Staypuft::Deployment::CinderService::NetappPassword::HUMAN) %>
|
19
|
+
<%= text_f e, :server_port, class: "cinder_netapp",
|
20
|
+
label: _(Staypuft::Deployment::CinderService::NetappServerPort::HUMAN) %>
|
21
|
+
|
22
|
+
<%= select_f e, :transport_type, Staypuft::Deployment::CinderService::Netapp::TRANSPORT_TYPES,
|
23
|
+
:first, :last,
|
24
|
+
{},
|
25
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappTransportType::HUMAN) } %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="netapp-nfs netapp-option">
|
29
|
+
<%= text_f e, :nfs_shares, class: "cinder_netapp",
|
30
|
+
label: _(Staypuft::Deployment::CinderService::NetappNfsShares::HUMAN) %>
|
31
|
+
<%= text_f e, :nfs_shares_config, class: "cinder_netapp",
|
32
|
+
label: _(Staypuft::Deployment::CinderService::NetappNfsSharesConfig::HUMAN) %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="netapp-7mode-iscsi netapp-option hide">
|
36
|
+
<%= text_f e, :volume_list, class: "cinder_netapp",
|
37
|
+
label: _(Staypuft::Deployment::CinderService::NetappVolumeList::HUMAN) %>
|
38
|
+
<%= text_f e, :vfiler, class: "cinder_netapp",
|
39
|
+
label: _(Staypuft::Deployment::CinderService::NetappVfiler::HUMAN) %>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div class="netapp-vserver netapp-option">
|
43
|
+
<%= text_f e, :vserver, class: "cinder_netapp",
|
44
|
+
label: _(Staypuft::Deployment::CinderService::NetappVserver::HUMAN) %>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div class="netapp-eseries netapp-option hide">
|
48
|
+
<%= text_f e, :controller_ips, class: "cinder_netapp",
|
49
|
+
label: _(Staypuft::Deployment::CinderService::NetappControllerIps::HUMAN) %>
|
50
|
+
<%= text_f e, :sa_password, class: "cinder_netapp",
|
51
|
+
label: _(Staypuft::Deployment::CinderService::NetappSaPassword::HUMAN) %>
|
52
|
+
<%= text_f e, :storage_pools, class: "cinder_netapp",
|
53
|
+
label: _(Staypuft::Deployment::CinderService::NetappStoragePools::HUMAN) %>
|
54
|
+
</div>
|
55
|
+
</div>
|
@@ -6,10 +6,10 @@
|
|
6
6
|
<%= link_to _("Cancel"), deployment_path(@deployment),
|
7
7
|
:method => :delete,
|
8
8
|
:confirm => _("This will clear whole deployment configuration. Are you sure?"),
|
9
|
-
:class => "btn btn-danger" %>
|
9
|
+
:class => "btn btn-danger cancel" %>
|
10
10
|
<% else %>
|
11
11
|
<%= link_to _("Cancel"), deployment_path(@deployment),
|
12
|
-
:class => "btn btn-danger" %>
|
12
|
+
:class => "btn btn-danger cancel" %>
|
13
13
|
<% end %>
|
14
14
|
|
15
15
|
<!-- Render Back Button -->
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<% end %>
|
22
22
|
|
23
23
|
<!-- Render Next/Submit Button -->
|
24
|
-
<%= button_tag(:type => 'submit', :class => "btn btn-primary") do %>
|
24
|
+
<%= button_tag(:type => 'submit', :class => "btn btn-primary pull-right") do %>
|
25
25
|
<% if step == Staypuft::Deployment::STEP_CONFIGURATION %>
|
26
26
|
<%= _("Submit") %>
|
27
27
|
<% else %>
|
@@ -30,4 +30,4 @@
|
|
30
30
|
<% end %>
|
31
31
|
<% end %>
|
32
32
|
|
33
|
-
</div>
|
33
|
+
</div>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<%= render :layout => 'title' do %>
|
5
5
|
<%= alert_if_deployed %>
|
6
6
|
|
7
|
-
<div class="well">
|
7
|
+
<div class="well deployment-wizard">
|
8
8
|
<div class="wizard-container">
|
9
9
|
<%= deployment_wizard 2 %>
|
10
10
|
</div>
|
@@ -53,9 +53,10 @@
|
|
53
53
|
<%= _("Back") %>
|
54
54
|
</a>
|
55
55
|
<%= link_to _("Cancel"), deployment_path(@deployment),
|
56
|
-
:class => "btn btn-danger" %>
|
56
|
+
:class => "btn btn-danger cancel" %>
|
57
57
|
<%= button_tag(:type => 'submit', :class => "btn btn-primary pull-right", :id => "vip_modal_button" ) do %>
|
58
58
|
<%= _("Next") %>
|
59
|
+
<span class="glyphicon glyphicon-chevron-right"></span>
|
59
60
|
<% end %>
|
60
61
|
</div>
|
61
62
|
<% end %>
|
@@ -1,52 +1,54 @@
|
|
1
1
|
<%= render :layout => 'title' do %>
|
2
2
|
<%= alert_if_deployed %>
|
3
3
|
|
4
|
-
|
5
|
-
<%=
|
4
|
+
<div class="deployment-wizard">
|
5
|
+
<%= form_for(@deployment, :url => wizard_path, :method => 'PUT') do |f| %>
|
6
|
+
<%= base_errors_for @deployment %>
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
8
|
+
<%= deployment_wizard 4 %>
|
9
|
+
<div class="form-group tabbed_side_nav_form row">
|
10
|
+
<ul class="nav nav-pills nav-stacked col-md-3 configuration" data-tabs="pills">
|
11
|
+
<h3><%= _("Services") %></h3>
|
12
|
+
<% @services_map.each_with_index do |service_name, i| %>
|
13
|
+
<% service = @deployment.send(service_name)
|
14
|
+
if service.active?
|
15
|
+
%>
|
16
|
+
<li class="">
|
17
|
+
<a href="#<%= service_name %>" data-toggle="tab">
|
18
|
+
<%= service_name.capitalize %><span style="visibility: hidden" class ="glyphicon glyphicon-exclamation-sign" />
|
19
|
+
</a>
|
20
|
+
</li>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
</ul>
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
<div class="tab-content col-md-9">
|
26
|
+
<% @services_map.each_with_index do |service_name, i| %>
|
27
|
+
<% service = @deployment.send(service_name)
|
28
|
+
if service.active?
|
29
|
+
%>
|
30
|
+
<div class="tab-pane" id="<%= service_name %>">
|
31
|
+
<h3><%= _("%s Service Configuration") % service_name.to_s.capitalize %></h3>
|
32
|
+
<div class="<%= "%s-controller-warning" % service_name.to_s %> alert alert-warning base in fade alert-dismissable hide"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><h4 class="alert-heading"><%= _("Warning") %></h4><li><%= _("Only one controller should be assigned when using this option.") %><span class="replace"></span></li></div>
|
33
|
+
<div class="<%= "%s-ceph-warning" % service_name.to_s %> alert alert-warning base in fade alert-dismissable hide"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">x</button><h4 class="alert-heading"><%= _("Warning") %></h4><li><%= _("Manual steps are required when deploying with Ceph as a backend for #{service_name.to_s}. Please see documentation for additional steps.") %><span class="replace"></span></li></div>
|
34
|
+
<%= render partial: service_name.to_s, locals: {f: f}%>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
</div>
|
37
39
|
</div>
|
38
|
-
</div>
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
41
|
+
<div class="form_actions">
|
42
|
+
<a class="btn btn-default" href="<%= previous_wizard_path %>">
|
43
|
+
<span class="glyphicon glyphicon-chevron-left"></span>
|
44
|
+
<%= _("Back") %>
|
45
|
+
</a>
|
46
|
+
<%= link_to _("Cancel"), deployment_path(@deployment),
|
47
|
+
:class => "btn btn-danger cancel" %>
|
48
|
+
<%= button_tag(:type => 'submit', :class => "btn btn-primary pull-right") do %>
|
49
|
+
<%= _("Submit") %>
|
50
|
+
<% end %>
|
51
|
+
</div>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
52
54
|
<% end %>
|
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.5.
|
4
|
+
version: 0.5.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Staypuft team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: foreman-tasks
|
@@ -101,199 +101,201 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
-
|
105
|
-
- README.md
|
106
|
-
- Rakefile
|
104
|
+
- app/assets/javascripts/staypuft/nics_assignment.js
|
107
105
|
- app/assets/javascripts/staypuft/host_edit.js
|
108
106
|
- app/assets/javascripts/staypuft/new_subnet.js
|
109
|
-
- app/assets/javascripts/staypuft/nics_assignment.js
|
110
107
|
- app/assets/javascripts/staypuft/staypuft.js
|
111
108
|
- app/assets/javascripts/staypuft/subnets_assignment.js
|
112
109
|
- app/assets/stylesheets/staypuft/bootstrap_and_overrides.css.scss
|
113
110
|
- app/assets/stylesheets/staypuft/foreman_helper.scss
|
114
111
|
- app/assets/stylesheets/staypuft/staypuft.css.scss
|
115
112
|
- app/controllers/staypuft/application_controller.rb
|
116
|
-
- app/controllers/staypuft/
|
113
|
+
- app/controllers/staypuft/subnet_typings_controller.rb
|
114
|
+
- app/controllers/staypuft/interface_assignments_controller.rb
|
115
|
+
- app/controllers/staypuft/steps_controller.rb
|
117
116
|
- app/controllers/staypuft/concerns/hosts_api_extensions.rb
|
118
117
|
- app/controllers/staypuft/concerns/hosts_controller_extensions.rb
|
119
118
|
- app/controllers/staypuft/deployments_controller.rb
|
120
|
-
- app/controllers/staypuft/interface_assignments_controller.rb
|
121
|
-
- app/controllers/staypuft/steps_controller.rb
|
122
|
-
- app/controllers/staypuft/subnet_typings_controller.rb
|
123
119
|
- app/controllers/staypuft/subnets_controller.rb
|
124
|
-
- app/
|
125
|
-
- app/
|
126
|
-
- app/
|
127
|
-
- app/
|
128
|
-
- app/
|
129
|
-
- app/
|
130
|
-
- app/
|
131
|
-
- app/lib/actions/staypuft/host/deploy.rb
|
132
|
-
- app/lib/actions/staypuft/host/puppet_run.rb
|
133
|
-
- app/lib/actions/staypuft/host/report_wait.rb
|
134
|
-
- app/lib/actions/staypuft/host/trigger_provisioning.rb
|
135
|
-
- app/lib/actions/staypuft/host/update.rb
|
136
|
-
- app/lib/actions/staypuft/host/wait_until_provisioned.rb
|
137
|
-
- app/lib/actions/staypuft/host/wait_until_ready.rb
|
138
|
-
- app/lib/actions/staypuft/hostgroup/ordered_deploy.rb
|
139
|
-
- app/lib/actions/staypuft/middleware/as_current_user.rb
|
140
|
-
- app/lib/actions/staypuft/middleware/timeout.rb
|
141
|
-
- app/lib/staypuft/deployment_param_exporter.rb
|
142
|
-
- app/lib/staypuft/deployment_param_importer.rb
|
143
|
-
- app/lib/staypuft/exception.rb
|
144
|
-
- app/lib/staypuft/network_query.rb
|
145
|
-
- app/lib/staypuft/seeder.rb
|
146
|
-
- app/models/setting/staypuft_provisioning.rb
|
147
|
-
- app/models/staypuft/concerns/environment_extensions.rb
|
148
|
-
- app/models/staypuft/concerns/host_details_helper.rb
|
149
|
-
- app/models/staypuft/concerns/host_fencing_extensions.rb
|
150
|
-
- app/models/staypuft/concerns/host_interface_management.rb
|
151
|
-
- app/models/staypuft/concerns/host_open_stack_affiliation.rb
|
152
|
-
- app/models/staypuft/concerns/host_orchestration_build_hook.rb
|
153
|
-
- app/models/staypuft/concerns/hostgroup_extensions.rb
|
154
|
-
- app/models/staypuft/concerns/lookup_key_extensions.rb
|
155
|
-
- app/models/staypuft/concerns/nic_fencing_extensions.rb
|
156
|
-
- app/models/staypuft/concerns/puppetclass_extensions.rb
|
157
|
-
- app/models/staypuft/deployment.rb
|
158
|
-
- app/models/staypuft/deployment/abstract_param_scope.rb
|
159
|
-
- app/models/staypuft/deployment/attribute_param_storage.rb
|
120
|
+
- app/controllers/staypuft/bonds_controller.rb
|
121
|
+
- app/models/staypuft/fencing.rb
|
122
|
+
- app/models/staypuft/simple_subnet.rb
|
123
|
+
- app/models/staypuft/layout_role.rb
|
124
|
+
- app/models/staypuft/interface_assigner.rb
|
125
|
+
- app/models/staypuft/role.rb
|
126
|
+
- app/models/staypuft/deployment/vlan_range_values_validator.rb
|
160
127
|
- app/models/staypuft/deployment/ceph_service.rb
|
128
|
+
- app/models/staypuft/deployment/nova_service.rb
|
161
129
|
- app/models/staypuft/deployment/cinder_service.rb
|
130
|
+
- app/models/staypuft/deployment/nfs_uri_validator.rb
|
131
|
+
- app/models/staypuft/deployment/abstract_param_scope.rb
|
132
|
+
- app/models/staypuft/deployment/neutron_service/cisconexus.rb
|
162
133
|
- app/models/staypuft/deployment/cinder_service/equallogic.rb
|
134
|
+
- app/models/staypuft/deployment/cinder_service/netapp.rb
|
135
|
+
- app/models/staypuft/deployment/neutron_service.rb
|
136
|
+
- app/models/staypuft/deployment/ip_check.rb
|
163
137
|
- app/models/staypuft/deployment/glance_service.rb
|
138
|
+
- app/models/staypuft/deployment/attribute_param_storage.rb
|
164
139
|
- app/models/staypuft/deployment/ip_address_validator.rb
|
165
|
-
- app/models/staypuft/deployment/ip_check.rb
|
166
|
-
- app/models/staypuft/deployment/neutron_service.rb
|
167
|
-
- app/models/staypuft/deployment/neutron_service/cisconexus.rb
|
168
|
-
- app/models/staypuft/deployment/nfs_uri_validator.rb
|
169
|
-
- app/models/staypuft/deployment/nova_service.rb
|
170
140
|
- app/models/staypuft/deployment/passwords.rb
|
171
|
-
- app/models/staypuft/deployment/vlan_range_values_validator.rb
|
172
|
-
- app/models/staypuft/deployment_role_hostgroup.rb
|
173
141
|
- app/models/staypuft/deployment_vip_nic.rb
|
174
|
-
- app/models/staypuft/
|
175
|
-
- app/models/staypuft/
|
142
|
+
- app/models/staypuft/service_class.rb
|
143
|
+
- app/models/staypuft/subnet_type.rb
|
176
144
|
- app/models/staypuft/layout.rb
|
177
|
-
- app/models/staypuft/
|
178
|
-
- app/models/staypuft/
|
179
|
-
- app/models/staypuft/
|
180
|
-
- app/models/staypuft/
|
145
|
+
- app/models/staypuft/concerns/hostgroup_extensions.rb
|
146
|
+
- app/models/staypuft/concerns/puppetclass_extensions.rb
|
147
|
+
- app/models/staypuft/concerns/nic_fencing_extensions.rb
|
148
|
+
- app/models/staypuft/concerns/host_details_helper.rb
|
149
|
+
- app/models/staypuft/concerns/environment_extensions.rb
|
150
|
+
- app/models/staypuft/concerns/host_interface_management.rb
|
151
|
+
- app/models/staypuft/concerns/host_orchestration_build_hook.rb
|
152
|
+
- app/models/staypuft/concerns/host_fencing_extensions.rb
|
153
|
+
- app/models/staypuft/concerns/lookup_key_extensions.rb
|
154
|
+
- app/models/staypuft/concerns/host_open_stack_affiliation.rb
|
181
155
|
- app/models/staypuft/role_service.rb
|
182
156
|
- app/models/staypuft/service.rb
|
183
|
-
- app/models/staypuft/
|
184
|
-
- app/models/staypuft/
|
185
|
-
- app/models/staypuft/subnet_type.rb
|
186
|
-
- app/models/staypuft/subnet_typing.rb
|
157
|
+
- app/models/staypuft/role_class.rb
|
158
|
+
- app/models/staypuft/layout_subnet_type.rb
|
187
159
|
- app/models/staypuft/vip_nic.rb
|
160
|
+
- app/models/staypuft/deployment.rb
|
161
|
+
- app/models/staypuft/subnet_typing.rb
|
162
|
+
- app/models/staypuft/deployment_role_hostgroup.rb
|
163
|
+
- app/models/setting/staypuft_provisioning.rb
|
188
164
|
- app/overrides/customize_foreman_tasks_show_page.rb
|
165
|
+
- app/overrides/select_multiple_systems_hostgroup.rb
|
189
166
|
- app/overrides/foreman_hosts_edit.rb
|
190
|
-
- app/overrides/hide_subscription_manager_passwords.rb
|
191
167
|
- app/overrides/hosts_edit_subnet_types.rb
|
192
|
-
- app/overrides/
|
193
|
-
- app/
|
168
|
+
- app/overrides/hide_subscription_manager_passwords.rb
|
169
|
+
- app/lib/actions/staypuft/hostgroup/ordered_deploy.rb
|
170
|
+
- app/lib/actions/staypuft/deployment/populate.rb
|
171
|
+
- app/lib/actions/staypuft/deployment/deploy.rb
|
172
|
+
- app/lib/actions/staypuft/host/assert_report_success.rb
|
173
|
+
- app/lib/actions/staypuft/host/update.rb
|
174
|
+
- app/lib/actions/staypuft/host/wait_until_ready.rb
|
175
|
+
- app/lib/actions/staypuft/host/puppet_run.rb
|
176
|
+
- app/lib/actions/staypuft/host/trigger_provisioning.rb
|
177
|
+
- app/lib/actions/staypuft/host/report_wait.rb
|
178
|
+
- app/lib/actions/staypuft/host/wait_until_provisioned.rb
|
179
|
+
- app/lib/actions/staypuft/host/deploy.rb
|
180
|
+
- app/lib/actions/staypuft/host/create.rb
|
181
|
+
- app/lib/actions/staypuft/middleware/as_current_user.rb
|
182
|
+
- app/lib/actions/staypuft/middleware/timeout.rb
|
183
|
+
- app/lib/staypuft/network_query.rb
|
184
|
+
- app/lib/staypuft/deployment_param_importer.rb
|
185
|
+
- app/lib/staypuft/seeder.rb
|
186
|
+
- app/lib/staypuft/exception.rb
|
187
|
+
- app/lib/staypuft/deployment_param_exporter.rb
|
194
188
|
- app/views/hosts/_new_nic_fields.html.erb
|
189
|
+
- app/views/hosts/_fencing.html.erb
|
195
190
|
- app/views/hosts/_primary_interface_subnet.html.erb
|
196
|
-
- app/views/
|
191
|
+
- app/views/staypuft/steps/_nova.html.erb
|
192
|
+
- app/views/staypuft/steps/services_overview.html.erb
|
193
|
+
- app/views/staypuft/steps/_neutron_cisco_nexus_form.html.erb
|
194
|
+
- app/views/staypuft/steps/network_configuration.html.erb
|
195
|
+
- app/views/staypuft/steps/_cinder_equallogic_form.html.erb
|
196
|
+
- app/views/staypuft/steps/_title.html.erb
|
197
|
+
- app/views/staypuft/steps/services_configuration.html.erb
|
198
|
+
- app/views/staypuft/steps/_neutron_ha.html.erb
|
199
|
+
- app/views/staypuft/steps/deployment_settings.html.erb
|
200
|
+
- app/views/staypuft/steps/_cinder.html.erb
|
201
|
+
- app/views/staypuft/steps/_nova_ha.html.erb
|
202
|
+
- app/views/staypuft/steps/_glance.html.erb
|
203
|
+
- app/views/staypuft/steps/_neutron.html.erb
|
204
|
+
- app/views/staypuft/steps/_cinder_netapp_form.html.erb
|
205
|
+
- app/views/staypuft/steps/_wizard_form_buttons.html.erb
|
206
|
+
- app/views/staypuft/subnet_types/_subnet_type_pull.html.erb
|
207
|
+
- app/views/staypuft/layouts/staypuft.html.erb
|
208
|
+
- app/views/staypuft/layouts/application.html.erb
|
209
|
+
- app/views/staypuft/bonds/destroy.js.erb
|
197
210
|
- app/views/staypuft/bonds/add_slave.js.erb
|
198
211
|
- app/views/staypuft/bonds/create.js.erb
|
199
|
-
- app/views/staypuft/
|
212
|
+
- app/views/staypuft/subnet_typings/destroy.js.erb
|
213
|
+
- app/views/staypuft/subnet_typings/create.js.erb
|
214
|
+
- app/views/staypuft/subnet_typings/update.js.erb
|
215
|
+
- app/views/staypuft/subnets/new.html.erb
|
216
|
+
- app/views/staypuft/subnets/create.js.erb
|
217
|
+
- app/views/staypuft/subnets/_subnet_pull.html.erb
|
218
|
+
- app/views/staypuft/subnets/_form.html.erb
|
219
|
+
- app/views/staypuft/subnets/_drop_zone.html.erb
|
220
|
+
- app/views/staypuft/interfaces/_drop_zone.html.erb
|
221
|
+
- app/views/staypuft/interface_assignments/index.html.erb
|
222
|
+
- app/views/staypuft/interface_assignments/destroy.js.erb
|
223
|
+
- app/views/staypuft/interface_assignments/_interfaces.html.erb
|
224
|
+
- app/views/staypuft/interface_assignments/create.js.erb
|
225
|
+
- app/views/staypuft/interface_assignments/_nics_assignment.html.erb
|
226
|
+
- app/views/staypuft/interface_assignments/_nics_assignment_overview.html.erb
|
227
|
+
- app/views/staypuft/deployments/edit.html.erb
|
200
228
|
- app/views/staypuft/deployments/_advanced_configuration.html.erb
|
201
|
-
- app/views/staypuft/deployments/_assigned_hosts.html.erb
|
202
229
|
- app/views/staypuft/deployments/_assigned_hosts_table.html.erb
|
203
|
-
- app/views/staypuft/deployments/
|
204
|
-
- app/views/staypuft/deployments/_deployed_hosts_table.html.erb
|
205
|
-
- app/views/staypuft/deployments/_deployment_access_all_details_dialogue.html.erb
|
206
|
-
- app/views/staypuft/deployments/_deployment_hosts.html.erb
|
207
|
-
- app/views/staypuft/deployments/_deployment_networking.html.erb
|
230
|
+
- app/views/staypuft/deployments/index.html.erb
|
208
231
|
- app/views/staypuft/deployments/_deployment_overview.html.erb
|
209
|
-
- app/views/staypuft/deployments/
|
232
|
+
- app/views/staypuft/deployments/_param_field.html.erb
|
233
|
+
- app/views/staypuft/deployments/_host_head_row.html.erb
|
210
234
|
- app/views/staypuft/deployments/_deployment_progress_page_header.html.erb
|
211
|
-
- app/views/staypuft/deployments/_deployment_show_header.html.erb
|
212
|
-
- app/views/staypuft/deployments/_deployment_summary.html.erb
|
213
|
-
- app/views/staypuft/deployments/_empty_hosts.html.erb
|
214
|
-
- app/views/staypuft/deployments/_free_hosts.html.erb
|
215
235
|
- app/views/staypuft/deployments/_free_hosts_table.html.erb
|
216
|
-
- app/views/staypuft/deployments/_host_head_row.html.erb
|
217
|
-
- app/views/staypuft/deployments/_host_row.html.erb
|
218
236
|
- app/views/staypuft/deployments/_hosts_filter.html.erb
|
219
|
-
- app/views/staypuft/deployments/
|
237
|
+
- app/views/staypuft/deployments/_empty_hosts.html.erb
|
238
|
+
- app/views/staypuft/deployments/_assigned_hosts.html.erb
|
239
|
+
- app/views/staypuft/deployments/_host_row.html.erb
|
240
|
+
- app/views/staypuft/deployments/_deployment_hosts.html.erb
|
241
|
+
- app/views/staypuft/deployments/show.html.erb
|
242
|
+
- app/views/staypuft/deployments/_deployed_hosts_table.html.erb
|
243
|
+
- app/views/staypuft/deployments/_deployed_hosts.html.erb
|
244
|
+
- app/views/staypuft/deployments/_free_hosts.html.erb
|
220
245
|
- app/views/staypuft/deployments/_hosts_table.html.erb
|
246
|
+
- app/views/staypuft/deployments/_deployment_show_header.html.erb
|
247
|
+
- app/views/staypuft/deployments/_hosts_header.html.erb
|
248
|
+
- app/views/staypuft/deployments/_deployment_access_all_details_dialogue.html.erb
|
249
|
+
- app/views/staypuft/deployments/_deployment_progress_bar.html.erb
|
221
250
|
- app/views/staypuft/deployments/_import_form.html.erb
|
222
|
-
- app/views/staypuft/deployments/
|
223
|
-
- app/views/staypuft/deployments/
|
224
|
-
- app/views/
|
225
|
-
- app/
|
226
|
-
- app/
|
227
|
-
- app/
|
228
|
-
- app/views/staypuft/interface_assignments/_nics_assignment_overview.html.erb
|
229
|
-
- app/views/staypuft/interface_assignments/create.js.erb
|
230
|
-
- app/views/staypuft/interface_assignments/destroy.js.erb
|
231
|
-
- app/views/staypuft/interface_assignments/index.html.erb
|
232
|
-
- app/views/staypuft/interfaces/_drop_zone.html.erb
|
233
|
-
- app/views/staypuft/layouts/application.html.erb
|
234
|
-
- app/views/staypuft/layouts/staypuft.html.erb
|
235
|
-
- app/views/staypuft/steps/_cinder.html.erb
|
236
|
-
- app/views/staypuft/steps/_cinder_equallogic_form.html.erb
|
237
|
-
- app/views/staypuft/steps/_glance.html.erb
|
238
|
-
- app/views/staypuft/steps/_neutron.html.erb
|
239
|
-
- app/views/staypuft/steps/_neutron_cisco_nexus_form.html.erb
|
240
|
-
- app/views/staypuft/steps/_neutron_ha.html.erb
|
241
|
-
- app/views/staypuft/steps/_nova.html.erb
|
242
|
-
- app/views/staypuft/steps/_nova_ha.html.erb
|
243
|
-
- app/views/staypuft/steps/_title.html.erb
|
244
|
-
- app/views/staypuft/steps/_wizard_form_buttons.html.erb
|
245
|
-
- app/views/staypuft/steps/deployment_settings.html.erb
|
246
|
-
- app/views/staypuft/steps/network_configuration.html.erb
|
247
|
-
- app/views/staypuft/steps/services_configuration.html.erb
|
248
|
-
- app/views/staypuft/steps/services_overview.html.erb
|
249
|
-
- app/views/staypuft/subnet_types/_subnet_type_pull.html.erb
|
250
|
-
- app/views/staypuft/subnet_typings/create.js.erb
|
251
|
-
- app/views/staypuft/subnet_typings/destroy.js.erb
|
252
|
-
- app/views/staypuft/subnet_typings/update.js.erb
|
253
|
-
- app/views/staypuft/subnets/_drop_zone.html.erb
|
254
|
-
- app/views/staypuft/subnets/_form.html.erb
|
255
|
-
- app/views/staypuft/subnets/_subnet_pull.html.erb
|
256
|
-
- app/views/staypuft/subnets/create.js.erb
|
257
|
-
- app/views/staypuft/subnets/new.html.erb
|
258
|
-
- config/routes.rb
|
251
|
+
- app/views/staypuft/deployments/_deployment_summary.html.erb
|
252
|
+
- app/views/staypuft/deployments/_deployment_networking.html.erb
|
253
|
+
- app/views/nic/_subnet_id_field.html.erb
|
254
|
+
- app/helpers/staypuft/hosts_helper.rb
|
255
|
+
- app/helpers/staypuft/deployments_helper.rb
|
256
|
+
- app/helpers/staypuft/application_helper.rb
|
259
257
|
- config/staypuft.local.rb
|
260
|
-
-
|
261
|
-
- db/
|
258
|
+
- config/routes.rb
|
259
|
+
- db/seeds.rb
|
260
|
+
- db/migrate/20140701075033_create_layout_subnet.rb
|
262
261
|
- db/migrate/20140310023613_create_staypuft_roles.rb
|
263
|
-
- db/migrate/20140310174152_create_staypuft_layout_roles.rb
|
264
|
-
- db/migrate/20140310194221_create_staypuft_services.rb
|
265
262
|
- db/migrate/20140310203855_create_staypuft_role_services.rb
|
266
|
-
- db/migrate/
|
267
|
-
- db/migrate/
|
268
|
-
- db/migrate/
|
269
|
-
- db/migrate/
|
270
|
-
- db/migrate/
|
263
|
+
- db/migrate/20140701090256_create_staypuft_subnet_typings.rb
|
264
|
+
- db/migrate/20140701074900_create_subnet_type.rb
|
265
|
+
- db/migrate/20140602121501_add_amqp_provider_to_staypuft_deployment.rb
|
266
|
+
- db/migrate/20140309021811_create_staypuft_layouts.rb
|
267
|
+
- db/migrate/20140310174152_create_staypuft_layout_roles.rb
|
271
268
|
- db/migrate/20140318163222_add_deploy_order_to_staypuft_layout_role.rb
|
272
|
-
- db/migrate/
|
269
|
+
- db/migrate/20140825164900_add_orchestration_to_staypuft_role.rb
|
273
270
|
- db/migrate/20140326032027_drop_staypuft_hostgroup_roles.rb
|
274
|
-
- db/migrate/20140507103716_add_form_step_to_staypuft_deployment.rb
|
275
|
-
- db/migrate/20140513124807_change_column_default_form_step_on_staypuft_deployment.rb
|
276
|
-
- db/migrate/20140602121501_add_amqp_provider_to_staypuft_deployment.rb
|
277
271
|
- db/migrate/20140623142500_remove_amqp_provider_from_staypuft_deployment.rb
|
278
|
-
- db/migrate/
|
279
|
-
- db/migrate/
|
280
|
-
- db/migrate/
|
281
|
-
- db/migrate/
|
272
|
+
- db/migrate/20141009064907_add_custom_repos_to_deployment.rb
|
273
|
+
- db/migrate/20140513124807_change_column_default_form_step_on_staypuft_deployment.rb
|
274
|
+
- db/migrate/20140312050615_create_staypuft_role_classes.rb
|
275
|
+
- db/migrate/20140310004533_create_staypuft_deployments.rb
|
276
|
+
- db/migrate/20140312050001_create_staypuft_hostgroup_roles.rb
|
282
277
|
- db/migrate/20140831234000_add_required_to_subnet_types.rb
|
278
|
+
- db/migrate/20140325211410_add_role_to_staypuft_deployment_role_hostgroup.rb
|
279
|
+
- db/migrate/20140312051144_create_staypuft_service_classes.rb
|
283
280
|
- db/migrate/20141003223000_add_validation_to_subnet_types.rb
|
284
|
-
- db/migrate/
|
281
|
+
- db/migrate/20140312044533_create_staypuft_deployment_role_hostgroups.rb
|
282
|
+
- db/migrate/20140315031754_add_networking_to_staypuft_layout.rb
|
283
|
+
- db/migrate/20140507103716_add_form_step_to_staypuft_deployment.rb
|
285
284
|
- db/migrate/20141107144800_create_staypuft_deployment_vip_nics.rb
|
286
|
-
- db/
|
285
|
+
- db/migrate/20140310194221_create_staypuft_services.rb
|
287
286
|
- lib/staypuft.rb
|
288
287
|
- lib/staypuft/engine.rb
|
289
288
|
- lib/staypuft/version.rb
|
290
289
|
- lib/tasks/staypuft_tasks.rake
|
291
|
-
-
|
292
|
-
-
|
293
|
-
-
|
290
|
+
- LICENSE
|
291
|
+
- Rakefile
|
292
|
+
- README.md
|
294
293
|
- test/test_helper.rb
|
295
|
-
- test/
|
294
|
+
- test/staypuft_test.rb
|
296
295
|
- test/unit/staypuft_test.rb
|
296
|
+
- test/test_plugin_helper.rb
|
297
|
+
- test/factories/staypuft_factories.rb
|
298
|
+
- test/integration/navigation_test.rb
|
297
299
|
homepage: https://github.com/theforeman/staypuft
|
298
300
|
licenses:
|
299
301
|
- GPL-3.0+
|
@@ -314,14 +316,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
314
316
|
version: '0'
|
315
317
|
requirements: []
|
316
318
|
rubyforge_project:
|
317
|
-
rubygems_version: 2.
|
319
|
+
rubygems_version: 2.0.14
|
318
320
|
signing_key:
|
319
321
|
specification_version: 4
|
320
322
|
summary: OpenStack Foreman Installer
|
321
323
|
test_files:
|
322
|
-
- test/
|
323
|
-
- test/integration/navigation_test.rb
|
324
|
+
- test/test_helper.rb
|
324
325
|
- test/staypuft_test.rb
|
325
|
-
- test/
|
326
|
+
- test/unit/staypuft_test.rb
|
326
327
|
- test/test_plugin_helper.rb
|
327
|
-
- test/
|
328
|
+
- test/factories/staypuft_factories.rb
|
329
|
+
- test/integration/navigation_test.rb
|