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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2e91c90ca8e9b70669cbb9a5fe75be55fbbf977
4
- data.tar.gz: c823eea5c150ddd9044c4d4a549a0883e3ed583a
3
+ metadata.gz: 8aa1fc0e43ac4f94ddae7be23c7941b1d22c74b8
4
+ data.tar.gz: 7e4e4d1e9529729d3242e90e3fb98e934fb529d2
5
5
  SHA512:
6
- metadata.gz: 43a3e7557a2978915e8462b8bcf21f70967cba8f8ef40f49714e8852ee127370ff45c631444ba3fab8792482245df07ef7001e6e0816767ca6cb994387c6a416
7
- data.tar.gz: 0ffbd027d808222eaf87b49d66adca6b6b6562f29e792f5cbe93a72b631f43a83a9a808a9b38f7485e0c9465ccf21cab80de24d639c98d50ad9ed9343556bab4
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
@@ -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 = { :string => "<%= @host.network_query.ip_for_host('#{Staypuft::SubnetType::MANAGEMENT}') %>" }
365
- pcmk_ip = { :string => "<%= @host.network_query.ip_for_host('#{Staypuft::SubnetType::CLUSTER_MGMT}') %>" }
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' => { :array => "<%= @host.deployment.network_query.controller_ips('#{Staypuft::SubnetType::MANAGEMENT}') %>" },
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', minor: '0').first
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
@@ -88,7 +88,7 @@ module Staypuft
88
88
  end
89
89
 
90
90
  def pcmk_fs_manage
91
- backend == BACKEND_FILE
91
+ nfs_backend?
92
92
  end
93
93
 
94
94
  def backend_labels_for_layout
@@ -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 ">&nbsp;</i></a>&nbsp;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
- <%= form_for(@deployment, :url => wizard_path, :method => 'PUT') do |f| %>
5
- <%= base_errors_for @deployment %>
4
+ <div class="deployment-wizard">
5
+ <%= form_for(@deployment, :url => wizard_path, :method => 'PUT') do |f| %>
6
+ <%= base_errors_for @deployment %>
6
7
 
7
- <%= deployment_wizard 4 %>
8
- <div class="form-group tabbed_side_nav_form row">
9
- <ul class="nav nav-pills nav-stacked col-md-3 configuration" data-tabs="pills">
10
- <h3><%= _("Services") %></h3>
11
- <% @services_map.each_with_index do |service_name, i| %>
12
- <% service = @deployment.send(service_name)
13
- if service.active?
14
- %>
15
- <li class="">
16
- <a href="#<%= service_name %>" data-toggle="tab">
17
- <%= service_name.capitalize %><span style="visibility: hidden" class ="glyphicon glyphicon-exclamation-sign" />
18
- </a>
19
- </li>
20
- <% end %>
21
- <% end %>
22
- </ul>
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
- <div class="tab-content col-md-9">
25
- <% @services_map.each_with_index do |service_name, i| %>
26
- <% service = @deployment.send(service_name)
27
- if service.active?
28
- %>
29
- <div class="tab-pane" id="<%= service_name %>">
30
- <h3><%= _("%s Service Configuration") % service_name.to_s.capitalize %></h3>
31
- <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>
32
- <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>
33
- <%= render partial: service_name.to_s, locals: {f: f}%>
34
- </div>
35
- <% end %>
36
- <% end %>
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
- <div class="form_actions">
41
- <a class="btn btn-default" href="<%= previous_wizard_path %>">
42
- <span class="glyphicon glyphicon-chevron-left"></span>
43
- <%= _("Back") %>
44
- </a>
45
- <%= link_to _("Cancel"), deployment_path(@deployment),
46
- :class => "btn btn-danger" %>
47
- <%= button_tag(:type => 'submit', :class => "btn btn-primary pull-right") do %>
48
- <%= _("Submit") %>
49
- <% end %>
50
- </div>
51
- <% end %>
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 %>
@@ -1,3 +1,3 @@
1
1
  module Staypuft
2
- VERSION = '0.5.17'
2
+ VERSION = '0.5.18'
3
3
  end
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.17
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-01-26 00:00:00.000000000 Z
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
- - LICENSE
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/bonds_controller.rb
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/helpers/staypuft/application_helper.rb
125
- - app/helpers/staypuft/deployments_helper.rb
126
- - app/helpers/staypuft/hosts_helper.rb
127
- - app/lib/actions/staypuft/deployment/deploy.rb
128
- - app/lib/actions/staypuft/deployment/populate.rb
129
- - app/lib/actions/staypuft/host/assert_report_success.rb
130
- - app/lib/actions/staypuft/host/create.rb
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/fencing.rb
175
- - app/models/staypuft/interface_assigner.rb
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/layout_role.rb
178
- - app/models/staypuft/layout_subnet_type.rb
179
- - app/models/staypuft/role.rb
180
- - app/models/staypuft/role_class.rb
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/service_class.rb
184
- - app/models/staypuft/simple_subnet.rb
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/select_multiple_systems_hostgroup.rb
193
- - app/views/hosts/_fencing.html.erb
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/nic/_subnet_id_field.html.erb
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/bonds/destroy.js.erb
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/_deployed_hosts.html.erb
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/_deployment_progress_bar.html.erb
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/_hosts_header.html.erb
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/_param_field.html.erb
223
- - app/views/staypuft/deployments/edit.html.erb
224
- - app/views/staypuft/deployments/index.html.erb
225
- - app/views/staypuft/deployments/show.html.erb
226
- - app/views/staypuft/interface_assignments/_interfaces.html.erb
227
- - app/views/staypuft/interface_assignments/_nics_assignment.html.erb
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
- - db/migrate/20140309021811_create_staypuft_layouts.rb
261
- - db/migrate/20140310004533_create_staypuft_deployments.rb
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/20140312044533_create_staypuft_deployment_role_hostgroups.rb
267
- - db/migrate/20140312050001_create_staypuft_hostgroup_roles.rb
268
- - db/migrate/20140312050615_create_staypuft_role_classes.rb
269
- - db/migrate/20140312051144_create_staypuft_service_classes.rb
270
- - db/migrate/20140315031754_add_networking_to_staypuft_layout.rb
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/20140325211410_add_role_to_staypuft_deployment_role_hostgroup.rb
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/20140701074900_create_subnet_type.rb
279
- - db/migrate/20140701075033_create_layout_subnet.rb
280
- - db/migrate/20140701090256_create_staypuft_subnet_typings.rb
281
- - db/migrate/20140825164900_add_orchestration_to_staypuft_role.rb
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/20141009064907_add_custom_repos_to_deployment.rb
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/seeds.rb
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
- - test/factories/staypuft_factories.rb
292
- - test/integration/navigation_test.rb
293
- - test/staypuft_test.rb
290
+ - LICENSE
291
+ - Rakefile
292
+ - README.md
294
293
  - test/test_helper.rb
295
- - test/test_plugin_helper.rb
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.2.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/unit/staypuft_test.rb
323
- - test/integration/navigation_test.rb
324
+ - test/test_helper.rb
324
325
  - test/staypuft_test.rb
325
- - test/factories/staypuft_factories.rb
326
+ - test/unit/staypuft_test.rb
326
327
  - test/test_plugin_helper.rb
327
- - test/test_helper.rb
328
+ - test/factories/staypuft_factories.rb
329
+ - test/integration/navigation_test.rb