From df3582597ecc08099b8b4cb5a979eaa4318224b8 Mon Sep 17 00:00:00 2001 From: Alexey Chekunov Date: Wed, 17 Aug 2016 17:56:21 +0300 Subject: [PATCH] support fuel 9.0 Change-Id: I77277731e7c59a94edd23c1bf3455110858afd27 --- deployment_scripts/puppet/manifests/site.pp | 24 +++- .../provider/neutron_config/ini_setting.rb | 27 ----- .../lbaas/lib/puppet/type/neutron_config.rb | 42 ------- .../puppet/modules/lbaas/manifests/init.pp | 110 +++++++----------- .../puppet/modules/lbaas/manifests/params.pp | 25 ++-- deployment_tasks.yaml | 11 ++ metadata.yaml | 26 +---- pre_build_hook | 14 +-- tasks.yaml | 8 -- 9 files changed, 89 insertions(+), 198 deletions(-) delete mode 100644 deployment_scripts/puppet/modules/lbaas/lib/puppet/provider/neutron_config/ini_setting.rb delete mode 100644 deployment_scripts/puppet/modules/lbaas/lib/puppet/type/neutron_config.rb create mode 100644 deployment_tasks.yaml delete mode 100644 tasks.yaml diff --git a/deployment_scripts/puppet/manifests/site.pp b/deployment_scripts/puppet/manifests/site.pp index e868cef..ef9d4a7 100644 --- a/deployment_scripts/puppet/manifests/site.pp +++ b/deployment_scripts/puppet/manifests/site.pp @@ -1 +1,23 @@ -include lbaas \ No newline at end of file +# Copyright 2016 Mirantis, 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. + +notice('MODULAR: neutron-lbaas') + +$lbaas = hiera('lbaas', {}) +$metadata = pick($lbaas['metadata'], {}) + +if $metadata['enabled']{ + + include lbaas +} diff --git a/deployment_scripts/puppet/modules/lbaas/lib/puppet/provider/neutron_config/ini_setting.rb b/deployment_scripts/puppet/modules/lbaas/lib/puppet/provider/neutron_config/ini_setting.rb deleted file mode 100644 index f65c3dd..0000000 --- a/deployment_scripts/puppet/modules/lbaas/lib/puppet/provider/neutron_config/ini_setting.rb +++ /dev/null @@ -1,27 +0,0 @@ -Puppet::Type.type(:neutron_config).provide( - :ini_setting, - :parent => Puppet::Type.type(:ini_setting).provider(:ruby) -) do - - def section - resource[:name].split('/', 2).first - end - - def setting - resource[:name].split('/', 2).last - end - - def separator - '=' - end - - def self.file_path - '/etc/neutron/neutron.conf' - end - - # added for backwards compatibility with older versions of inifile - def file_path - self.class.file_path - end - -end \ No newline at end of file diff --git a/deployment_scripts/puppet/modules/lbaas/lib/puppet/type/neutron_config.rb b/deployment_scripts/puppet/modules/lbaas/lib/puppet/type/neutron_config.rb deleted file mode 100644 index 26f49dd..0000000 --- a/deployment_scripts/puppet/modules/lbaas/lib/puppet/type/neutron_config.rb +++ /dev/null @@ -1,42 +0,0 @@ -Puppet::Type.newtype(:neutron_config) do - - ensurable - - newparam(:name, :namevar => true) do - desc 'Section/setting name to manage from /etc/neutron/neutron.conf' - newvalues(/\S+\/\S+/) - end - - newproperty(:value) do - desc 'The value of the setting to be defined.' - munge do |value| - value = value.to_s.strip - value.capitalize! if value =~ /^(true|false)$/i - value - end - - def is_to_s( currentvalue ) - if resource.secret? - return '[old secret redacted]' - else - return currentvalue - end - end - - def should_to_s( newvalue ) - if resource.secret? - return '[new secret redacted]' - else - return newvalue - end - end - end - - newparam(:secret, :boolean => true) do - desc 'Whether to hide the value from Puppet logs. Defaults to `false`.' - - newvalues(:true, :false) - - defaultto false - end -end diff --git a/deployment_scripts/puppet/modules/lbaas/manifests/init.pp b/deployment_scripts/puppet/modules/lbaas/manifests/init.pp index 790efb1..ab2b2f1 100644 --- a/deployment_scripts/puppet/modules/lbaas/manifests/init.pp +++ b/deployment_scripts/puppet/modules/lbaas/manifests/init.pp @@ -1,40 +1,17 @@ -# == Class: lbaas +# Copyright 2016 Mirantis, Inc. # -# Full description of class lbaas here. +# 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 # -# === Parameters -# -# Document parameters here. -# -# [*sample_parameter*] -# Explanation of what this parameter affects and what it defaults to. -# e.g. "Specify one or more upstream ntp servers as an array." -# -# === Variables -# -# Here you should define a list of variables that this module would require. -# -# [*sample_variable*] -# Explanation of how this variable affects the funtion of this class and if -# it has a default. e.g. "The parameter enc_ntp_servers must be set by the -# External Node Classifier as a comma separated list of hostnames." (Note, -# global variables should be avoided in favor of class parameters as -# of Puppet 2.6.) -# -# === Examples -# -# class { 'lbaas': -# servers => [ 'pool.ntp.org', 'ntp.local.company.com' ], -# } -# -# === Authors -# -# Author Name -# -# === Copyright -# -# Copyright 2014 Your name here, unless otherwise noted. +# 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 lbaas { include lbaas::params @@ -42,54 +19,49 @@ class lbaas { ensure => present, } -# Actually, we need to define some resource, where we will do this configs and then we will call this resource from here. It need to better split -# configuration part (we will try that package with neutron is anstalled in that defined resource) and we can notify something from resource - e.g. -# we can create notify from that resource to neutron-server service. But now it good in that view. -# if $::osfamily == 'Debian'{ -# neutron_config { -# "service_providers/service_provider": value => 'LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default'; -# } -# } + neutron_config { + 'service_providers/service_provider': value => $lbaas::params::lbaas_service_provider; + } -# Sorry, that needs to rework, obviously, but I haven't so much time to do it. - exec { "add_lbaas_plugin": - command => "/bin/sed -i \"/`egrep -v \'(^#|^$)\' $lbaas::params::neutron_conf_file | egrep \'.*service_plugins.*\'`/ s/$/,lbaas/\" $lbaas::params::neutron_conf_file", - unless => "/bin/egrep -v '(^#|^$)' $lbaas::params::neutron_conf_file | egrep '.*service_plugins.*lbaas.*'", - notify => Service['neutron-server'] + ini_subsetting {'enable_lbaas_plugin': + ensure => present, + section => 'DEFAULT', + key_val_separator => '=', + path => $lbaas::params::neutron_conf_file, + setting => 'service_plugins', + subsetting => $lbaas::params::lbaas_service_plugin_name, + subsetting_separator => ',', } lbaas_config { - "DEFAULT/device_driver": value => 'neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver'; - "DEFAULT/interface_driver": value => 'neutron.agent.linux.interface.OVSInterfaceDriver'; - "haproxy/user_group": value => $lbaas::params::usergroup; + 'DEFAULT/interface_driver': value => 'openvswitch'; } -# That too should be redesigned, but I'm not sure that I need to write whole new provider to change one string of code. - exec { "enable_lbaas": - command => "/bin/sed -i \"s/'enable_lb': False/'enable_lb': True/\" $lbaas::params::horizon_settings_file", - unless => "/bin/egrep \"'enable_lb': True\" $lbaas::params::horizon_settings_file", - notify => Service[$lbaas::params::httpd_service_name], + exec { 'neutron-db-sync': + command => 'neutron-db-manage --subproject neutron-lbaas upgrade head', + path => '/usr/bin', + logoutput => on_failure, + require => Package[$lbaas::params::lbaas_package_name], } + Neutron_config<||> ~> Service<| tag == 'lbaas-service' |> + Ini_subsetting<||> ~> Service<| tag == 'lbaas-service' |> + Lbaas_config<||> ~> Service<| tag == 'lbaas-service' |> + service { 'neutron-server': - ensure => running, - enable => true, - require => Package[$lbaas::params::lbaas_package_name], + ensure => running, + enable => true, + tag => 'lbaas-service', + hasstatus => true, + hasrestart => true, + require => Exec['neutron-db-sync'], } - service { 'neutron-lbaas-agent': + service { $lbaas::params::lbaas_service_name: ensure => running, enable => true, - require => Package[$lbaas::params::lbaas_package_name], - } - - package { $lbaas::params::haproxy_pkg: - ensure => present, - } - - service { $lbaas::params::httpd_service_name: - enable => true, - ensure => running, + tag => 'lbaas-service', + require => Exec['neutron-db-sync'], } } diff --git a/deployment_scripts/puppet/modules/lbaas/manifests/params.pp b/deployment_scripts/puppet/modules/lbaas/manifests/params.pp index 42aa867..4a30e38 100644 --- a/deployment_scripts/puppet/modules/lbaas/manifests/params.pp +++ b/deployment_scripts/puppet/modules/lbaas/manifests/params.pp @@ -1,21 +1,10 @@ +#Class lbaas::params class lbaas::params { - $neutron_conf_file = '/etc/neutron/neutron.conf' - $lbaas_conf_file = '/etc/neutron/lbaas_agent.ini' - $haproxy_pkg = 'haproxy' + $neutron_conf_file = '/etc/neutron/neutron.conf' + $lbaas_conf_file = '/etc/neutron/lbaas_agent.ini' + $lbaas_package_name = 'neutron-lbaasv2-agent' + $lbaas_service_name = 'neutron-lbaasv2-agent' + $lbaas_service_plugin_name = 'neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2' + $lbaas_service_provider = 'LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default' - if $::osfamily == 'Debian' { - $httpd_service_name = 'apache2' - $horizon_settings_file = '/etc/openstack-dashboard/local_settings.py' - $lbaas_package_name = 'neutron-lbaas-agent' - $usergroup = 'nogroup' - - } elsif($::osfamily == 'RedHat') { - $httpd_service_name = 'httpd' - $horizon_settings_file = '/etc/openstack-dashboard/local_settings' - $lbaas_package_name = 'openstack-neutron' - $usergroup = 'nobody' - - } else { - fail("unsupported family ${::osfamily}") - } } diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml new file mode 100644 index 0000000..660d987 --- /dev/null +++ b/deployment_tasks.yaml @@ -0,0 +1,11 @@ +- id: deploy-lbbas-service + type: puppet + version: 2.0.0 + groups: [primary-controller, controller] + requires: [deploy_start, openstack-network-end] + required_for: [deploy_end] + parameters: + puppet_manifest: puppet/manifests/site.pp + puppet_modules: puppet/modules:/etc/puppet/modules + timeout: 360 + diff --git a/metadata.yaml b/metadata.yaml index 2478003..b304bf7 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,33 +1,19 @@ name: lbaas title: LBaaS plugin for Neutron -version: 1.0.2 +version: 1.0.3 description: Enables LBaaS for Neutron. Be aware, in HA mode rescheduling of LB instances will not work!! -fuel_version: ['6.1'] +fuel_version: ['9.0'] licenses: ['Apache License Version 2.0'] -authors: ['Stanislaw Bogatkin'] +authors: ['Stanislaw Bogatkin, Aleksei Chekunov'] homepage: 'https://github.com/stackforge/fuel-plugin-neutron-lbaas' groups: ['network'] +is_hotpluggable: true releases: - os: ubuntu - version: 2014.2-6.0 + version: mitaka-9.0 mode: ['multinode','ha'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/ubuntu - - os: centos - version: 2014.2-6.0 - mode: ['multinode','ha'] - deployment_scripts_path: deployment_scripts/ - repository_path: repositories/centos - - os: ubuntu - version: 2014.2-6.1 - mode: ['multinode','ha'] - deployment_scripts_path: deployment_scripts/ - repository_path: repositories/ubuntu - - os: centos - version: 2014.2-6.1 - mode: ['multinode','ha'] - deployment_scripts_path: deployment_scripts/ - repository_path: repositories/centos -package_version: '2.0.0' +package_version: '3.0.0' diff --git a/pre_build_hook b/pre_build_hook index 266fb48..f5ed05f 100755 --- a/pre_build_hook +++ b/pre_build_hook @@ -1,14 +1,2 @@ #!/bin/bash - -set -eux - -ROOT="$(dirname `readlink -f $0`)" -MODULES="${ROOT}"/deployment_scripts/puppet/modules/ -TMP_DIR="${ROOT}"/tmp -mkdir -p "${MODULES}" -mkdir -p "${TMP_DIR}" -REPO_PATH='https://github.com/stackforge/fuel-library/tarball/f43d885914d74fbd062096763222f350f47480e1' - -wget -qO- "${REPO_PATH}" | \ - tar -C "${MODULES}" --strip-components=3 -zxvf - \ - stackforge-fuel-library-f43d885/deployment/puppet/inifile +# all operations should be inside plugin's folder diff --git a/tasks.yaml b/tasks.yaml deleted file mode 100644 index 1450ca2..0000000 --- a/tasks.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# Deployment is required for controllers -- role: ['primary-controller', 'controller'] - stage: post_deployment - type: puppet - parameters: - puppet_manifest: puppet/manifests/site.pp - puppet_modules: puppet/modules - timeout: 360