Refactor of code to accomplish the following

1) Use SolidFire puppet module which matches the release of OpenStack in this Fuel release
2) Rename the modules class to controller
3) Call out the module at the correct time within deploy and correct class of node
4) Make environment_config.yaml appropriate for this version of the driver (i.e. no caching)
5) Documents as required
6) Clean up what is checked into git

Change-Id: I05283107291d7d8a29502f043a5bb7d49b0c3bb8
This commit is contained in:
Ed Balduf 2015-08-11 09:10:39 -06:00
parent 47b68e31fe
commit 541320330b
12 changed files with 358 additions and 80 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
.tox
.build
*.pyc
repositories/centos/*
repositories/ubuntu/*
deployment_scripts/puppet/modules/inifile
deployment_scripts/puppet/modules/stdlib
build.sh
*.rpm

View File

@ -0,0 +1,17 @@
#
# Copyright 2015 SolidFire, Inc.
#
# 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.
#
include plugin_solidfire_cinder::controller

View File

@ -1,3 +0,0 @@
$fuel_settings = parseyaml($astute_settings_yaml)
#class {'plugin_solidfire_cinder::': }
include plugin_solidfire_cinder

View File

@ -0,0 +1,63 @@
# Copyright 2015 SolidFire, Inc.
#
# 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 plugin_solidfire_cinder::controller (
$backend_name = 'solidfire',
$backends = ''
) {
include cinder::params
include cinder::client
$plugin_settings = hiera('fuel-plugin-solidfire-cinder')
if $::cinder::params::volume_package {
package { $::cinder::params::volume_package:
ensure => present,
}
Package[$::cinder::params::volume_package] -> Cinder_config<||>
}
if $plugin_settings['multibackend'] {
$section = $backend_name
cinder_config {
"DEFAULT/enabled_backends": value => "${backend_name},${backends}";
}
} else {
$section = 'DEFAULT'
}
cinder::backend::solidfire { $section :
san_ip => $plugin_settings['solidfire_mvip'],
san_login => $plugin_settings['solidfire_admin_login'],
san_password => $plugin_settings['solidfire_admin_password'],
volume_backend_name => $section,
sf_emulate_512 => $plugin_settings['solidfire_emulate_512'],
sf_api_port => $plugin_settings['solidfire_api_port'],
# due to a non-update of the puppet modules in version 6.1 of fuel we need to set this
volume_driver => 'cinder.volume.drivers.solidfire.SolidFireDriver'
}
Cinder_config<||>~> Service[cinder_volume]
service { 'cinder_volume':
ensure => running,
name => $::cinder::params::volume_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
}

View File

@ -1,3 +1,4 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
@ -12,34 +13,4 @@
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_solidfire_cinder {
include cinder::params
if $::fuel_settings['fuel-plugin-solidfire-cinder']['multibackend'] {
$section = 'cinder_solidfire'
} else {
$section = 'DEFAULT'
}
if $::cinder::params::volume_package {
package { $::cinder::params::volume_package:
ensure => present,
}
Package[$::cinder::params::volume_package] -> Cinder_config<||>
}
cinder_config {
"${section}/volume_driver": value => 'cinder.volume.drivers.solidfire.SolidFireDriver';
"${section}/san_login": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_admin_login'];
"${section}/san_password": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_admin_password'];
"${section}/san_ip": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_mvip'];
"${section}/sf_api_port": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_api_port'];
"${section}/sf_emulate_512": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidifre_emulate_512'];
"${section}/sf_allow_template_caching": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_enable_image_caching'];
"${section}/sf_template_account_name": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_image_cache_account'];
"${section}/sf_account_prefix": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_account_prefix'];
}
}
class plugin__solidfire_cinder {}

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,105 @@
************************************************************
Guide to the SolidFire Cinder Plugin version 1.0.0 for Fuel
************************************************************
This document provides instructions for installing, configuring and using
SolidFire Cinder plugin for Fuel.
Key terms, acronyms and abbreviations
=====================================
MVIP
Management Virtual IP (MVIP) is the IP address (or hostname) of
the management interface to the SolidFire cluster
Cluster Admin account
The Cluster Admin account on a SolidFire cluster is the account by
which you administer the SolidFire cluster.
SolidFire accounts
SolidFire accounts are automatically created by the SolidFire
OpenStack driver as needed based on the Project ID. These accounts
manage the CHAP authentication for the volumes allocated by that
project. No configuration is needed for these accounts.
SolidFire Cinder
=============
The SolidFire Cinder Fuel plugin provides an automated method
to insert the necessary lines into the cinder.conf file. The plugin
extends the Fuel GUI to provide the necessary entry locations for the
information for the configuration file.
License
-------
======================= ==================
Component License type
======================= ==================
No Components are present
============================================
Requirements
------------
======================= ==================
Requirement Version/Comment
======================= ==================
Fuel 6.1
============================================
Limitations
-----------
Fuel does not support multiple storage backends in Cinder, therefore
the SolidFire Cinder Fuel plugin also does not support multiple backends.
The SolidFire Cinder Fuel plugin does however provide the ability to
create a configuarion file stanza such that when multi-backend support
is added to fuel the stanza is correct.
Installation Guide
==================
Provide step-by-step instructions for plugin installation.
If plugin requires pre-installation steps like backend configuration,
you should also add this information here.
SolidFire Cinder Plugin installation
--------------------------
1. Download the plugin from Fuel Plugins Catalog.
2. Copy the plugin on already installed Fuel Master node. If you do not
have the Fuel Master node yet, see Quick Start Guide:
scp fuel-plugin-solidfire-cinder-1.0-1.0.1-1.noarch.rpm root@:<the_Fuel_Master_node_IP>:/tmp
3. Log into the Fuel Master node.
4. Install the plugin:
cd /tmp
fuel plugins --install /tmp/fuel-plugin-solidfire-cinder-1.0-1.0.1-1.noarch.rpm
4. After plugin is installed, create a new OpenStack environment.
5. Configure your environment.
6. Open the Settings tab of the Fuel web UI and scroll down the page. Select the
Fuel plugin to enable SolidFire driver in Cinder plugin checkbox:
7. Enter the Cluster Admin account information (account and password) and the IP address
of the Management Virtual IP (MVIP) of the SolidFire Cluster.
7a. Select the defaults for all other SolidFire options.
User Guide
==========
Once the OpenStack instance is deployed by Fuel the SolidFire plugin provides no
user configurable or maintainable options.
The SolidFire driver (Once configured by Fuel) will output all logs into the
cinder-volume process log file with the 'SolidFire' title.
Known issues
============
There are no known issues at this time.
Appendix
========
N/A

View File

@ -1,15 +1,21 @@
attributes:
multibackend:
value: false
value: true
label: 'Multibackend enabled'
description: 'SolidFire will be used in a Multibackend env (not implemented by Fuel).'
weight: 40
description: 'SolidFire will be used in a Multibackend env.'
weight: 10
type: "checkbox"
solidifire_admin_login:
solidfire_mvip:
value: ''
label: 'Cluster MVIP (san_ip)'
description: 'The hostname (or IP address) for the SolidFire Cluster API endpoint.'
weight: 20
type: "text"
solidfire_admin_login:
value: ''
label: 'Login for Cluster Admin account (san_login)'
description: 'Cluster account used by Cinder service.'
weight: 10
weight: 30
type: "text"
regex:
source: '\S'
@ -18,17 +24,11 @@ attributes:
value: ''
label: 'Password for Cluster Admin account (san_password)'
description: 'Cluster account used by Cinder service.'
weight: 20
weight: 40
type: "password"
solidfire_mvip:
value: ''
label: 'Cluster MVIP (san_ip)'
description: 'The hostname (or IP address) for the SolidFire Cluster API endpoint.'
weight: 30
type: "text"
solidfire_api_port:
value: '443'
label: 'Cluster enpoint port'
label: 'Cluster endpoint port'
description: 'The TCP port to use for API communication with the cluster or proxy server.'
weight: 50
type: "text"
@ -36,37 +36,12 @@ attributes:
value: "true"
values:
- data: "true"
label: "true"
label: "True"
description: "Enables 512 byte emulation on volumes during creation."
- data: "false"
label: "false"
label: "False"
description: "Disables 512 byte emulation and uses the native 4096 byte block size."
label: "SolidFire Emulate 512 block size"
description: 'Enable/Disable 512 byte block size emulation (typically left enabled).'
weight: 60
type: "radio"
solidfire_enable_image_caching:
value: "true"
values:
- data: "true"
label: "true"
description: "Enables caching of glance images on the SolidFire cluster."
- data: "false"
label: "false"
description: "Disables caching of glance images on the SolidFire cluster."
label: "SolidFire enable image caching"
description: 'Enable/Disable caching of Glance images on the SolidFire cluster.'
weight: 70
type: "radio"
solidfire_image_cache_account:
value: 'openstack-vtemplate'
label: 'Image Cache account name'
description: 'The SolidFire tenant that will own cached image volumes on the Cluster.'
weight: 70
type: "text"
solidfire_account_prefix:
value: ''
label: 'Account Prefix for this OpenStack'
description: 'Pre-pend this name to all accounts on the SolidFire Array.'
weight: 80
type: "text"

View File

@ -1,11 +1,11 @@
name: fuel-plugin-solidfire-cinder
title: Fuel plugin to enable SolidFire driver in Cinder
version: '1.0.0'
version: '1.0.1'
description: Enables the SolidFire driver in Cinder
fuel_version: ['6.1']
licenses: ['Apache License Version 2.0']
authors: ['John Griffith <john.griffith@solidfire.com>']
homepage: 'https://github.com/stackforge/fuel-plugins'
authors: ['John Griffith <john.griffith@solidfire.com>', 'Ed Balduf <ed.balduf@solidfire.com>']
homepage: 'https://github.com/stackforge/fuel-plugin-solidfire-cinder'
groups: ['storage::cinder']
releases:

View File

@ -0,0 +1,141 @@
This work is licensed under the Apache License, Version 2.0.
http://www.apache.org/licenses/LICENSE-2.0
==================================================
Fuel plugin for SolidFire clusters as a Cinder backend
==================================================
SolidFire plugin for Fuel extends Mirantis OpenStack functionality by adding
support for SolidFire clusters in Cinder using iSCSI protocol.
It replaces Cinder LVM driver which is the default volume backend that uses
local volumes managed by LVM.
Problem description
===================
Currently, Fuel has no support for SolidFire clusters as block storage for
OpenStack environments. Solidfire plugin aims to provide support for it.
Proposed change
===============
Implement a Fuel plugin that will configure the SolidFire driver for
Cinder on all Controller nodes. Cinder volume service will be managed
by Pacemaker/Corosync to provide HA. Having all Cinder services run
on controllers no additional Cinder node is required in environment.
Alternatives
------------
It might have been implemented as part of Fuel core but we decided to make it
as a plugin for several reasons:
* This isn't something that all operators may want to deploy.
* Any new additional functionality makes the project's testing more difficult,
which is an additional risk for the Fuel release.
Data model impact
-----------------
None
REST API impact
---------------
None
Upgrade impact
--------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance Impact
------------------
The SolidFire storage clusters provide high performance block storage for
OpenStack envirnments, and therefore enabling the SolidFire driver in OpenStack
will greatly improve peformance of OpenStack.
Other deployer impact
---------------------
The deployer should configure the IP addresses on the SolidFire array before
they deloy the Fuel Plugin to the controllers. If not, the Cinder-volume service
will need to be restarted once the SolidFire cluster is configured
Developer impact
----------------
None
Implementation
==============
The plugin generates the approriate cinder.conf stanzas to enable the SolidFire
cluster within OpenStack. There are NO other packages required, the SolidFire driver
which is included in the OpenStack distribution is all that is necessary.
Plugin has two tasks. Each task per role. They are run in the following order:
* The first task installs and configures cinder-volume on Primary Controller.
* The second task installs and configures cinder-volume on Controller nodes.
Cinder-volume service is installed on all Controller nodes and is managed by
Pacemaker. It runs in active/passive mode where only one instance is active.
All instances of cinder-volume have the same “host” parameter in cinder.conf
file. This is required to achieve ability to manage all volumes in the
environment by any cinder-volume instance.
Assignee(s)
-----------
| Edward Balduf <ed.balduf@solidfire.com>
| John Griffith <john.griffith@solidfire.com>
Work Items
----------
* Implement the Fuel plugin.
* Implement the Puppet manifests.
* Testing.
* Write the documentation.
Dependencies
============
* Fuel 6.1 and higher.
Testing
=======
* Prepare a test plan.
* Test the plugin by deploying environments with all Fuel deployment modes.
Documentation Impact
====================
* Deployment Guide (how to install the storage backends, how to prepare an
environment for installation, how to install the plugin, how to deploy an
OpenStack environment with the plugin).
* User Guide (which features the plugin provides, how to use them in the
deployed OpenStack environment).
* Test Plan.
* Test Report.

View File

@ -2,10 +2,10 @@
# here you can also specify several roles, for example
# ['cinder', 'compute'] will be applied only on
# cinder and compute nodes
- role: ['cinder']
stage: post_deployment
- role: ['primary-controller', 'controller']
stage: post_deployment/6101
type: puppet
parameters:
puppet_manifest: puppet/manifests/site.pp
puppet_manifest: puppet/manifests/controller.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 360