staypuft 0.5.17 → 0.5.18
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/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
|