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 +4 -4
- data/app/assets/javascripts/staypuft/staypuft.js +74 -0
- data/app/lib/staypuft/seeder.rb +34 -1
- data/app/models/staypuft/deployment/cinder_service/netapp.rb +59 -0
- data/app/models/staypuft/deployment/cinder_service.rb +79 -5
- data/app/views/staypuft/steps/_cinder.html.erb +21 -0
- data/app/views/staypuft/steps/_cinder_netapp_form.html.erb +55 -0
- data/lib/staypuft/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74a5862bd668b6f98ac0a65f485cf5ae57ce4897
|
4
|
+
data.tar.gz: e7c7a890e4c73c74722626a4c0d0e90d9ab56332
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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());
|
data/app/lib/staypuft/seeder.rb
CHANGED
@@ -311,6 +311,23 @@ module Staypuft
|
|
311
311
|
cinder_eqlx_chap_login = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_logins %>' }
|
312
312
|
cinder_eqlx_chap_password = { :array => '<%= @host.deployment.cinder.compute_eqlx_chap_passwords %>' }
|
313
313
|
|
314
|
+
cinder_backend_netapp = { :string => '<%= @host.deployment.cinder.netapp_backend? %>' }
|
315
|
+
cinder_netapp_hostname = { :array => '<%= @host.deployment.cinder.compute_netapp_hostnames %>' }
|
316
|
+
cinder_netapp_login = { :array => '<%= @host.deployment.cinder.compute_netapp_logins %>' }
|
317
|
+
cinder_netapp_password = { :array => '<%= @host.deployment.cinder.compute_netapp_passwords %>' }
|
318
|
+
cinder_netapp_server_port = { :array => '<%= @host.deployment.cinder.compute_netapp_server_ports %>' }
|
319
|
+
cinder_netapp_storage_family = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_families %>' }
|
320
|
+
cinder_netapp_transport_type = { :array => '<%= @host.deployment.cinder.compute_netapp_transport_types %>' }
|
321
|
+
cinder_netapp_storage_protocol = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_protocols %>' }
|
322
|
+
cinder_netapp_nfs_shares = { :array => '<%= @host.deployment.cinder.compute_netapp_nfs_shares %>' }
|
323
|
+
cinder_netapp_nfs_shares_config = { :array => '<%= @host.deployment.cinder.compute_netapp_nfs_shares_configs %>' }
|
324
|
+
cinder_netapp_volume_list = { :array => '<%= @host.deployment.cinder.compute_netapp_volume_lists %>' }
|
325
|
+
cinder_netapp_vfiler = { :array => '<%= @host.deployment.cinder.compute_netapp_vfilers %>' }
|
326
|
+
cinder_netapp_vserver = { :array => '<%= @host.deployment.cinder.compute_netapp_vservers %>' }
|
327
|
+
cinder_netapp_controller_ips = { :array => '<%= @host.deployment.cinder.compute_netapp_controller_ips %>' }
|
328
|
+
cinder_netapp_sa_password = { :array => '<%= @host.deployment.cinder.compute_netapp_sa_passwords %>' }
|
329
|
+
cinder_netapp_storage_pools = { :array => '<%= @host.deployment.cinder.compute_netapp_storage_pools %>' }
|
330
|
+
|
314
331
|
# Keystone
|
315
332
|
keystonerc = 'true'
|
316
333
|
|
@@ -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 "> </i></a> Storage System #<span class="server_number">1</span></h5>
|
3
|
+
|
4
|
+
<div class="netapp-main">
|
5
|
+
<%= select_f e, :storage_family, Staypuft::Deployment::CinderService::Netapp::STORAGE_FAMILIES,
|
6
|
+
:first, :last,
|
7
|
+
{},
|
8
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappStorageFamily::HUMAN) } %>
|
9
|
+
<%= select_f e, :storage_protocol, Staypuft::Deployment::CinderService::Netapp::STORAGE_PROTOCOLS,
|
10
|
+
:first, :last,
|
11
|
+
{},
|
12
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappStorageProtocol::HUMAN) } %>
|
13
|
+
<%= text_f e, :hostname, class: "cinder_netapp",
|
14
|
+
label: _(Staypuft::Deployment::CinderService::NetappHostname::HUMAN) %>
|
15
|
+
<%= text_f e, :login, class: "cinder_netapp",
|
16
|
+
label: _(Staypuft::Deployment::CinderService::NetappLogin::HUMAN) %>
|
17
|
+
<%= password_f e, :password, class: "cinder_netapp",
|
18
|
+
label: _(Staypuft::Deployment::CinderService::NetappPassword::HUMAN) %>
|
19
|
+
<%= text_f e, :server_port, class: "cinder_netapp",
|
20
|
+
label: _(Staypuft::Deployment::CinderService::NetappServerPort::HUMAN) %>
|
21
|
+
|
22
|
+
<%= select_f e, :transport_type, Staypuft::Deployment::CinderService::Netapp::TRANSPORT_TYPES,
|
23
|
+
:first, :last,
|
24
|
+
{},
|
25
|
+
{ :label => _(Staypuft::Deployment::CinderService::NetappTransportType::HUMAN) } %>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<div class="netapp-nfs netapp-option">
|
29
|
+
<%= text_f e, :nfs_shares, class: "cinder_netapp",
|
30
|
+
label: _(Staypuft::Deployment::CinderService::NetappNfsShares::HUMAN) %>
|
31
|
+
<%= text_f e, :nfs_shares_config, class: "cinder_netapp",
|
32
|
+
label: _(Staypuft::Deployment::CinderService::NetappNfsSharesConfig::HUMAN) %>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div class="netapp-7mode-iscsi netapp-option hide">
|
36
|
+
<%= text_f e, :volume_list, class: "cinder_netapp",
|
37
|
+
label: _(Staypuft::Deployment::CinderService::NetappVolumeList::HUMAN) %>
|
38
|
+
<%= text_f e, :vfiler, class: "cinder_netapp",
|
39
|
+
label: _(Staypuft::Deployment::CinderService::NetappVfiler::HUMAN) %>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<div class="netapp-vserver netapp-option">
|
43
|
+
<%= text_f e, :vserver, class: "cinder_netapp",
|
44
|
+
label: _(Staypuft::Deployment::CinderService::NetappVserver::HUMAN) %>
|
45
|
+
</div>
|
46
|
+
|
47
|
+
<div class="netapp-eseries netapp-option hide">
|
48
|
+
<%= text_f e, :controller_ips, class: "cinder_netapp",
|
49
|
+
label: _(Staypuft::Deployment::CinderService::NetappControllerIps::HUMAN) %>
|
50
|
+
<%= text_f e, :sa_password, class: "cinder_netapp",
|
51
|
+
label: _(Staypuft::Deployment::CinderService::NetappSaPassword::HUMAN) %>
|
52
|
+
<%= text_f e, :storage_pools, class: "cinder_netapp",
|
53
|
+
label: _(Staypuft::Deployment::CinderService::NetappStoragePools::HUMAN) %>
|
54
|
+
</div>
|
55
|
+
</div>
|
data/lib/staypuft/version.rb
CHANGED
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.
|
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
|