staypuft 0.5.15 → 0.5.16

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: 393d259fe817948071494184f9fa3cd51ea8e654
4
- data.tar.gz: 3641379f31897bed7e704f231b01b56254ea2656
3
+ metadata.gz: 74a5862bd668b6f98ac0a65f485cf5ae57ce4897
4
+ data.tar.gz: e7c7a890e4c73c74722626a4c0d0e90d9ab56332
5
5
  SHA512:
6
- metadata.gz: 7ead581569132ae1531579d4ebe3b1b5808e2e7fba8e9166a34e1331ab3087227584e6eb827c68c83a1de46f75254bb065be3b5a45a45c2f77b7b01bfdf5213f
7
- data.tar.gz: 378d4ba1e8647803e39665fe020fe22b57aeb7b308f206d179b6f6f53bb526761bc514c927f87f078b50b46907adbb3bef9a666b7200123de6bac51b72101072
6
+ metadata.gz: 633895bb0b6737544b067b7dbbfc7d248e2e5fe14a49efcbfaec36aa39fb54c3282aa652f14fd4c4efb6452ba726254c3986a52b5f253a2906ab524af63b0fc1
7
+ data.tar.gz: 626fae057c887bd398b803cfd521228dd9fae377823904ec1063c1b1dda86f4c88f9f9d39e7b38683443dbb396f67146492777f71875bbffc4589838e02ec754
@@ -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());
@@ -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
 
@@ -527,6 +544,7 @@ module Staypuft
527
544
  'rbd_user' => cinder_rbd_user,
528
545
  'rbd_secret_uuid' => cinder_rbd_secret_uuid,
529
546
  'backend_eqlx' => cinder_backend_eqlx,
547
+ 'backend_netapp' => cinder_backend_netapp,
530
548
  'san_ip' => cinder_san_ip,
531
549
  'san_login' => cinder_san_login,
532
550
  'san_password' => cinder_san_password,
@@ -535,7 +553,22 @@ module Staypuft
535
553
  'eqlx_pool' => cinder_eqlx_pool,
536
554
  'eqlx_use_chap' => cinder_eqlx_use_chap,
537
555
  'eqlx_chap_login' => cinder_eqlx_chap_login,
538
- 'eqlx_chap_password' => cinder_eqlx_chap_password },
556
+ 'eqlx_chap_password' => cinder_eqlx_chap_password,
557
+ 'netapp_hostname' => cinder_netapp_hostname,
558
+ 'netapp_login' => cinder_netapp_login,
559
+ 'netapp_password' => cinder_netapp_password,
560
+ 'netapp_server_port' => cinder_netapp_server_port,
561
+ 'netapp_storage_family' => cinder_netapp_storage_family,
562
+ 'netapp_transport_type' => cinder_netapp_transport_type,
563
+ 'netapp_storage_protocol' => cinder_netapp_storage_protocol,
564
+ 'netapp_nfs_shares' => cinder_netapp_nfs_shares,
565
+ 'netapp_nfs_shares_config' => cinder_netapp_nfs_shares_config,
566
+ 'netapp_volume_list' => cinder_netapp_volume_list,
567
+ 'netapp_vfiler' => cinder_netapp_vfiler,
568
+ 'netapp_vserver' => cinder_netapp_vserver,
569
+ 'netapp_controller_ips' => cinder_netapp_controller_ips,
570
+ 'netapp_sa_password' => cinder_netapp_sa_password,
571
+ 'netapp_storage_pools' => cinder_netapp_storage_pools },
539
572
  'quickstack::pacemaker::keystone' => {
540
573
  'keystonerc' => keystonerc,
541
574
  'admin_password' => admin_pw,
@@ -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
@@ -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_protocolss,
129
+ :compute_netapp_nfs_shares, :compute_netapp_nfs_shares_configs, :compute_netapp_volume_list,
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
@@ -162,5 +230,11 @@ module Staypuft
162
230
  errors.add :base, _("Please fix the problems in selected backends")
163
231
  end
164
232
  end
233
+
234
+ def netapp_backends
235
+ unless self.netapps.all? { |item| item.valid? }
236
+ errors.add :base, _("Please fix the problems in selected backends")
237
+ end
238
+ end
165
239
  end
166
240
  end
@@ -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>
@@ -1,3 +1,3 @@
1
1
  module Staypuft
2
- VERSION = '0.5.15'
2
+ VERSION = '0.5.16'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: staypuft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.15
4
+ version: 0.5.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Staypuft team
@@ -131,6 +131,7 @@ files:
131
131
  - app/models/staypuft/deployment/abstract_param_scope.rb
132
132
  - app/models/staypuft/deployment/neutron_service/cisconexus.rb
133
133
  - app/models/staypuft/deployment/cinder_service/equallogic.rb
134
+ - app/models/staypuft/deployment/cinder_service/netapp.rb
134
135
  - app/models/staypuft/deployment/neutron_service.rb
135
136
  - app/models/staypuft/deployment/ip_check.rb
136
137
  - app/models/staypuft/deployment/glance_service.rb
@@ -200,6 +201,7 @@ files:
200
201
  - app/views/staypuft/steps/_nova_ha.html.erb
201
202
  - app/views/staypuft/steps/_glance.html.erb
202
203
  - app/views/staypuft/steps/_neutron.html.erb
204
+ - app/views/staypuft/steps/_cinder_netapp_form.html.erb
203
205
  - app/views/staypuft/steps/_wizard_form_buttons.html.erb
204
206
  - app/views/staypuft/subnet_types/_subnet_type_pull.html.erb
205
207
  - app/views/staypuft/layouts/staypuft.html.erb