staypuft 0.5.17 → 0.5.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml 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