Support for Dell EMC VMAX ISCSI Cinder Driver
authorrajinir <rajini_ram@dell.com>
Mon, 31 Jul 2017 20:56:28 +0000 (15:56 -0500)
committerrajinir <rajini_ram@dell.com>
Mon, 14 Aug 2017 15:06:49 +0000 (10:06 -0500)
This changes adds Dell EMC VMAX ISCSI backend as composable service
and matches the tripleo-heat-templates.

Change-Id: Ifc169c60994856e382b76b72e020624ca64eef9f
Implements: blueprint dellemc-vmax-isci

manifests/profile/base/cinder/volume.pp
manifests/profile/base/cinder/volume/dellemc_vmax_iscsi.pp [new file with mode: 0644]
spec/classes/tripleo_profile_base_cinder_vmax_spec.rb [new file with mode: 0644]

index 252bae1..b9cee83 100644 (file)
 #   (Optional) Whether to enable the unity backend
 #   Defaults to false
 #
+# [*cinder_enable_dellemc_vmax_iscsi_backend*]
+#   (Optional) Whether to enable the vmax iscsi backend
+#   Defaults to false
+#
 # [*cinder_enable_hpelefthand_backend*]
 #   (Optional) Whether to enable the hpelefthand backend
 #   Defaults to false
 #   Defaults to hiera('step')
 #
 class tripleo::profile::base::cinder::volume (
-  $cinder_enable_pure_backend          = false,
-  $cinder_enable_dellsc_backend        = false,
-  $cinder_enable_dellemc_unity_backend = false,
-  $cinder_enable_hpelefthand_backend   = false,
-  $cinder_enable_dellps_backend        = false,
-  $cinder_enable_iscsi_backend         = true,
-  $cinder_enable_netapp_backend        = false,
-  $cinder_enable_nfs_backend           = false,
-  $cinder_enable_rbd_backend           = false,
-  $cinder_enable_scaleio_backend       = false,
-  $cinder_enable_vrts_hs_backend       = false,
-  $cinder_user_enabled_backends        = hiera('cinder_user_enabled_backends', undef),
-  $step                                = Integer(hiera('step')),
+  $cinder_enable_pure_backend               = false,
+  $cinder_enable_dellsc_backend             = false,
+  $cinder_enable_dellemc_unity_backend      = false,
+  $cinder_enable_dellemc_vmax_iscsi_backend = false,
+  $cinder_enable_hpelefthand_backend        = false,
+  $cinder_enable_dellps_backend             = false,
+  $cinder_enable_iscsi_backend              = true,
+  $cinder_enable_netapp_backend             = false,
+  $cinder_enable_nfs_backend                = false,
+  $cinder_enable_rbd_backend                = false,
+  $cinder_enable_scaleio_backend            = false,
+  $cinder_enable_vrts_hs_backend            = false,
+  $cinder_user_enabled_backends             = hiera('cinder_user_enabled_backends', undef),
+  $step                                     = Integer(hiera('step')),
 ) {
   include ::tripleo::profile::base::cinder
 
@@ -112,6 +117,14 @@ class tripleo::profile::base::cinder::volume (
       $cinder_dellemc_unity_backend_name = undef
     }
 
+    if $cinder_enable_dellemc_vmax_iscsi_backend {
+      include ::tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi
+      $cinder_dellemc_vmax_iscsi_backend_name = hiera('cinder::backend::dellemc_vmax_iscsi::volume_backend_name',
+          'tripleo_dellemc_vmax_iscsi')
+    } else {
+      $cinder_dellemc_vmax_iscsi_backend_name = undef
+    }
+
     if $cinder_enable_hpelefthand_backend {
       include ::tripleo::profile::base::cinder::volume::hpelefthand
       $cinder_hpelefthand_backend_name = hiera('cinder::backend::hpelefthand_iscsi::volume_backend_name', 'tripleo_hpelefthand')
@@ -174,6 +187,7 @@ class tripleo::profile::base::cinder::volume (
                                       $cinder_dellps_backend_name,
                                       $cinder_dellsc_backend_name,
                                       $cinder_dellemc_unity_backend_name,
+                                      $cinder_dellemc_vmax_iscsi_backend_name,
                                       $cinder_hpelefthand_backend_name,
                                       $cinder_netapp_backend_name,
                                       $cinder_nfs_backend_name,
diff --git a/manifests/profile/base/cinder/volume/dellemc_vmax_iscsi.pp b/manifests/profile/base/cinder/volume/dellemc_vmax_iscsi.pp
new file mode 100644 (file)
index 0000000..d09481f
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright (c) 2016-2017 Dell Inc, or its subsidiaries.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi
+#
+# Cinder Volume dellemc_vmax_iscsi profile for tripleo
+#
+# === Parameters
+#
+# [*backend_name*]
+#   (Optional) Name given to the Cinder backend stanza
+#   Defaults to 'tripleo_dellemc_vmax_iscsi'
+#
+# [*step*]
+#   (Optional) The current step in deployment. See tripleo-heat-templates
+#   for more details.
+#   Defaults to hiera('step')
+#
+class tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi (
+  $backend_name = hiera('cinder::backend::dellemc_vmax_iscsi::volume_backend_name', 'tripleo_dellemc_vmax_iscsi'),
+  $step         = Integer(hiera('step')),
+) {
+  include ::tripleo::profile::base::cinder::volume
+
+  if $step >= 4 {
+    cinder::backend::dellemc_vmax_iscsi { $backend_name :
+      cinder_emc_config_file   => hiera('cinder::backend::dellemc_vmax_iscsi::cinder_emc_config_file', undef),
+    }
+  }
+
+}
diff --git a/spec/classes/tripleo_profile_base_cinder_vmax_spec.rb b/spec/classes/tripleo_profile_base_cinder_vmax_spec.rb
new file mode 100644 (file)
index 0000000..bcb40c5
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (c) 2016-2017 Dell Inc, or its subsidiaries
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi' do
+  shared_examples_for 'tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi' do
+    before :each do
+      facts.merge!({ :step => params[:step] })
+    end
+
+    context 'with step less than 4' do
+      let(:params) { { :step => 3 } }
+
+      it 'should do nothing' do
+        is_expected.to contain_class('tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi')
+        is_expected.to contain_class('tripleo::profile::base::cinder::volume')
+        is_expected.to contain_class('tripleo::profile::base::cinder')
+        is_expected.to_not contain_cinder__backend__dellemc_vmax_iscsi('tripleo_dellemc_vmax_iscsi')
+      end
+    end
+
+    context 'with step 4' do
+      let(:params) { {
+        :step => 4,
+      } }
+
+      it 'should trigger complete configuration' do
+        # TODO(aschultz): check hiera parameters
+        is_expected.to contain_cinder__backend__dellemc_vmax_iscsi('tripleo_dellemc_vmax_iscsi')
+      end
+    end
+  end
+
+
+  on_supported_os.each do |os, facts|
+    context "on #{os}" do
+      let(:facts) do
+        facts.merge({ :hostname => 'node.example.com' })
+      end
+
+      it_behaves_like 'tripleo::profile::base::cinder::volume::dellemc_vmax_iscsi'
+    end
+  end
+end