Separate step for Murano configuration
* Make ia new granular manifest for Murano deployment * Refactor external_network parameter for both old and new manifests to get rid of fuel_settings dependency Related blueprint fuel-library-modularization Fuel-CI: disable Change-Id: I25efe73ac9f621cb9e01717f6b7d802c0688dc23
This commit is contained in:
parent
3953195848
commit
f1f25c6895
@ -1,7 +1,9 @@
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:get_ext_net_name, :type => :rvalue) do |args|
|
||||
networks, default_net = args
|
||||
networks = args.first
|
||||
fail 'No network data provided!' unless networks.is_a? Hash
|
||||
ext_net_array = networks.find { |_, value| value.fetch('L2', {})['router_ext'] }
|
||||
ext_net_array ? ext_net_array[0] : default_net
|
||||
break unless ext_net_array
|
||||
ext_net_array.first
|
||||
end
|
||||
end
|
||||
|
@ -42,9 +42,8 @@ class murano::api (
|
||||
$primary_controller = true,
|
||||
|
||||
$use_neutron = false,
|
||||
$default_network = 'net04_ext',
|
||||
$default_router = 'murano-default-router',
|
||||
$neutron_settings = {},
|
||||
$external_network = 'net04_ext',
|
||||
) {
|
||||
|
||||
$database_connection = "mysql://${murano_db_name}:${murano_db_password}@${murano_db_host}:3306/${murano_db_name}?read_timeout=60"
|
||||
@ -95,7 +94,7 @@ class murano::api (
|
||||
|
||||
if $use_neutron {
|
||||
murano_config {
|
||||
'networking/external_network' : value => get_ext_net_name($neutron_settings['predefined_networks'], $default_network);
|
||||
'networking/external_network' : value => $external_network;
|
||||
'networking/router_name' : value => $default_router;
|
||||
'networking/create_router' : value => true;
|
||||
}
|
||||
|
@ -59,6 +59,7 @@ class murano (
|
||||
$admin_address = '127.0.0.1',
|
||||
$public_address = '127.0.0.1',
|
||||
$internal_address = '127.0.0.1',
|
||||
$external_network = 'net04_ext',
|
||||
) {
|
||||
|
||||
Class['mysql::server'] -> Class['murano::db::mysql'] -> Class['murano::murano_rabbitmq'] -> Class['murano::keystone'] -> Class['murano::python_muranoclient'] -> Class['murano::api'] -> Class['murano::apps'] -> Class['murano::dashboard'] -> Class['murano::cirros']
|
||||
@ -153,8 +154,7 @@ class murano (
|
||||
|
||||
use_neutron => $use_neutron,
|
||||
default_router => 'murano-default-router',
|
||||
default_network => 'net04_ext',
|
||||
neutron_settings => $neutron_settings,
|
||||
external_network => $external_network,
|
||||
}
|
||||
|
||||
class { 'murano::apps':
|
||||
|
@ -7,8 +7,8 @@ describe 'get_ext_net_name' do
|
||||
Puppet::Parser::Functions.function('get_ext_net_name').should == 'function_get_ext_net_name'
|
||||
end
|
||||
|
||||
it 'should return network specified in net04_ext' do
|
||||
scope.function_get_ext_net_name(
|
||||
it 'should return the network name that has router_ext enabled' do
|
||||
expect(scope.function_get_ext_net_name(
|
||||
[
|
||||
{
|
||||
"net04" =>
|
||||
@ -25,14 +25,13 @@ describe 'get_ext_net_name' do
|
||||
"router_ext" => true,
|
||||
}
|
||||
}
|
||||
},
|
||||
'net99_ext'
|
||||
}
|
||||
]
|
||||
).should eql 'net04_ext'
|
||||
)).to eq 'net04_ext'
|
||||
end
|
||||
|
||||
it 'should return default_net' do
|
||||
scope.function_get_ext_net_name(
|
||||
it 'should return nil if router_ext is not enabled' do
|
||||
expect(scope.function_get_ext_net_name(
|
||||
[
|
||||
{
|
||||
"net04" =>
|
||||
@ -49,14 +48,13 @@ describe 'get_ext_net_name' do
|
||||
"router_ext" => false,
|
||||
}
|
||||
}
|
||||
},
|
||||
'net99_ext'
|
||||
}
|
||||
],
|
||||
).should eql 'net99_ext'
|
||||
)).to be_nil
|
||||
end
|
||||
|
||||
it 'should return default_net' do
|
||||
scope.function_get_ext_net_name(
|
||||
it 'should return nil if there is no router_ext' do
|
||||
expect(scope.function_get_ext_net_name(
|
||||
[
|
||||
{
|
||||
"net04" =>
|
||||
@ -71,19 +69,17 @@ describe 'get_ext_net_name' do
|
||||
{
|
||||
}
|
||||
}
|
||||
},
|
||||
'net99_ext'
|
||||
}
|
||||
]
|
||||
).should eql 'net99_ext'
|
||||
)).to be_nil
|
||||
end
|
||||
|
||||
it 'should return default_net' do
|
||||
scope.function_get_ext_net_name(
|
||||
it 'should return nil with empty network data' do
|
||||
expect(scope.function_get_ext_net_name(
|
||||
[
|
||||
{},
|
||||
'net99_ext'
|
||||
{}
|
||||
]
|
||||
).should eql 'net99_ext'
|
||||
)).to be_nil
|
||||
end
|
||||
|
||||
end
|
||||
|
95
deployment/puppet/osnailyfacter/modular/murano/murano.pp
Normal file
95
deployment/puppet/osnailyfacter/modular/murano/murano.pp
Normal file
@ -0,0 +1,95 @@
|
||||
notice('MODULAR: murano.pp')
|
||||
|
||||
$murano_hash = hiera('murano')
|
||||
$openstack_version = hiera('openstack_version')
|
||||
$controller_node_address = hiera('controller_node_address')
|
||||
$controller_node_public = hiera('controller_node_public')
|
||||
$public_ip = hiera('public_vip', $controller_node_public)
|
||||
$management_ip = hiera('management_vip', $controller_node_address)
|
||||
$amqp_hosts = hiera('amqp_hosts')
|
||||
$rabbit_ha_queues = hiera('rabbit_ha_queues')
|
||||
$rabbit_hash = hiera('rabbit_hash')
|
||||
$heat_hash = hiera('heat')
|
||||
$use_neutron = hiera('use_neutron')
|
||||
$neutron_config = hiera('neutron_config', {})
|
||||
$debug = hiera('debug', false)
|
||||
$verbose = hiera('verbose', true)
|
||||
$syslog_log_facility_murano = hiera('syslog_log_facility_murano')
|
||||
$primary_controller = hiera('primary_controller')
|
||||
|
||||
#################################################################
|
||||
|
||||
if $murano_hash['enabled'] {
|
||||
|
||||
#NOTE(mattymo): Backward compatibility for Icehouse
|
||||
case $openstack_version {
|
||||
/201[1-3]\./: {
|
||||
fail("Unsupported OpenStack version: ${openstack_version}")
|
||||
}
|
||||
/2014\.1\./: {
|
||||
$murano_package_name = 'murano-api'
|
||||
}
|
||||
default: {
|
||||
$murano_package_name = 'murano'
|
||||
}
|
||||
}
|
||||
|
||||
$external_network = get_ext_net_name($neutron_config['predefined_networks'])
|
||||
|
||||
class { 'murano' :
|
||||
murano_package_name => $murano_package_name,
|
||||
murano_api_host => $management_ip,
|
||||
|
||||
# Controller adresses (for endpoints)
|
||||
admin_address => $controller_node_address,
|
||||
public_address => $controller_node_public,
|
||||
internal_address => $controller_node_address,
|
||||
|
||||
# Murano uses two RabbitMQ - one from OpenStack and another one installed on each controller.
|
||||
# The second instance is used for communication with agents.
|
||||
# * murano_rabbit_host provides address for murano-engine which communicates with this
|
||||
# 'separate' rabbitmq directly (without oslo.messaging).
|
||||
# * murano_rabbit_ha_hosts / murano_rabbit_ha_queues are required for murano-api which
|
||||
# communicates with 'system' RabbitMQ and uses oslo.messaging.
|
||||
murano_rabbit_host => $public_ip,
|
||||
murano_rabbit_ha_hosts => $amqp_hosts,
|
||||
murano_rabbit_ha_queues => $rabbit_ha_queues,
|
||||
murano_os_rabbit_userid => $rabbit_hash['user'],
|
||||
murano_os_rabbit_passwd => $rabbit_hash['password'],
|
||||
murano_own_rabbit_userid => 'murano',
|
||||
murano_own_rabbit_passwd => $heat_hash['rabbit_password'],
|
||||
|
||||
|
||||
murano_db_host => $management_ip,
|
||||
murano_db_password => $murano_hash['db_password'],
|
||||
|
||||
murano_keystone_host => $management_ip,
|
||||
murano_keystone_user => 'murano',
|
||||
murano_keystone_password => $murano_hash['user_password'],
|
||||
murano_keystone_tenant => 'services',
|
||||
|
||||
use_neutron => $use_neutron,
|
||||
|
||||
use_syslog => $use_syslog,
|
||||
debug => $debug,
|
||||
verbose => $verbose,
|
||||
syslog_log_facility => $syslog_log_facility_murano,
|
||||
|
||||
primary_controller => $primary_controller,
|
||||
external_network => $external_network,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
######################
|
||||
|
||||
class mysql::server {}
|
||||
class mysql::config {}
|
||||
class rabbitmq::service {}
|
||||
class openstack::firewall {}
|
||||
include mysql::server
|
||||
include mysql::config
|
||||
include rabbitmq::service
|
||||
include openstack::firewall
|
||||
|
||||
file { '/etc/openstack-dashboard/local_settings' :}
|
@ -0,0 +1,43 @@
|
||||
require 'test/unit'
|
||||
|
||||
def process_tree
|
||||
return $process_tree if $process_tree
|
||||
$process_tree = {}
|
||||
ps = `ps haxo pid,ppid,cmd`
|
||||
ps.split("\n").each do |p|
|
||||
f = p.split
|
||||
pid = f.shift.to_i
|
||||
ppid = f.shift.to_i
|
||||
cmd = f.join ' '
|
||||
|
||||
# create entry for this pid if not present
|
||||
$process_tree[pid] = {
|
||||
:children => []
|
||||
} unless $process_tree.key? pid
|
||||
|
||||
# fill this entry
|
||||
$process_tree[pid][:ppid] = ppid
|
||||
$process_tree[pid][:pid] = pid
|
||||
$process_tree[pid][:cmd] = cmd
|
||||
|
||||
unless ppid == 0
|
||||
# create entry for parent process if not present
|
||||
$process_tree[ppid] = {
|
||||
:children => [],
|
||||
:cmd => '',
|
||||
} unless $process_tree.key? ppid
|
||||
|
||||
# fill parent's children
|
||||
$process_tree[ppid][:children] << pid
|
||||
end
|
||||
end
|
||||
$process_tree
|
||||
end
|
||||
|
||||
class MuranoPostTest < Test::Unit::TestCase
|
||||
|
||||
def test_murano_is_running
|
||||
assert process_tree.find { |pid, proc| proc[:cmd].include? 'murano' }, 'Murano is not running!'
|
||||
end
|
||||
|
||||
end
|
15
deployment/puppet/osnailyfacter/modular/murano/murano_pre.rb
Normal file
15
deployment/puppet/osnailyfacter/modular/murano/murano_pre.rb
Normal file
@ -0,0 +1,15 @@
|
||||
require 'test/unit'
|
||||
|
||||
class MuranoPreTest < Test::Unit::TestCase
|
||||
def test_rabbitmq_available
|
||||
#TODO
|
||||
end
|
||||
|
||||
def test_mysql_available
|
||||
#TODO
|
||||
end
|
||||
|
||||
def test_heat_available
|
||||
#TODO
|
||||
end
|
||||
end
|
13
deployment/puppet/osnailyfacter/modular/murano/tasks.yaml
Normal file
13
deployment/puppet/osnailyfacter/modular/murano/tasks.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
- id: murano
|
||||
type: puppet
|
||||
groups: [primary-controller, controller]
|
||||
required_for: [deploy_end, top-role-controller]
|
||||
requires: [hiera, globals, netconfig, firewall, heat]
|
||||
parameters:
|
||||
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/murano/murano.pp
|
||||
puppet_modules: /etc/puppet/modules
|
||||
timeout: 3600
|
||||
test_pre:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/murano/murano_pre.rb
|
||||
test_post:
|
||||
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/murano/murano_post.rb
|
@ -343,66 +343,6 @@ nova_config {
|
||||
'DEFAULT/ram_weight_multiplier': value => '1.0'
|
||||
}
|
||||
|
||||
if $murano_hash['enabled'] {
|
||||
|
||||
#NOTE(mattymo): Backward compatibility for Icehouse
|
||||
case $hiera_openstack_version {
|
||||
/201[1-3]\./: {
|
||||
fail("Unsupported OpenStack version: ${hiera_openstack_version}")
|
||||
}
|
||||
/2014\.1\./: {
|
||||
$murano_package_name = 'murano-api'
|
||||
}
|
||||
default: {
|
||||
$murano_package_name = 'murano'
|
||||
}
|
||||
}
|
||||
|
||||
class { 'murano' :
|
||||
murano_package_name => $murano_package_name,
|
||||
murano_api_host => $management_vip,
|
||||
|
||||
# Controller adresses (for endpoints)
|
||||
admin_address => $controller_node_address,
|
||||
public_address => $controller_node_public,
|
||||
internal_address => $controller_node_address,
|
||||
|
||||
# Murano uses two RabbitMQ - one from OpenStack and another one installed on each controller.
|
||||
# The second instance is used for communication with agents.
|
||||
# * murano_rabbit_host provides address for murano-engine which communicates with this
|
||||
# 'separate' rabbitmq directly (without oslo.messaging).
|
||||
# * murano_rabbit_ha_hosts / murano_rabbit_ha_queues are required for murano-api which
|
||||
# communicates with 'system' RabbitMQ and uses oslo.messaging.
|
||||
murano_rabbit_host => $public_vip,
|
||||
murano_rabbit_ha_hosts => $amqp_hosts,
|
||||
murano_rabbit_ha_queues => $rabbit_ha_queues,
|
||||
murano_os_rabbit_userid => $rabbit_hash['user'],
|
||||
murano_os_rabbit_passwd => $rabbit_hash['password'],
|
||||
murano_own_rabbit_userid => 'murano',
|
||||
murano_own_rabbit_passwd => $heat_hash['rabbit_password'],
|
||||
|
||||
|
||||
murano_db_host => $management_vip,
|
||||
murano_db_password => $murano_hash['db_password'],
|
||||
|
||||
murano_keystone_host => $management_vip,
|
||||
murano_keystone_user => 'murano',
|
||||
murano_keystone_password => $murano_hash['user_password'],
|
||||
murano_keystone_tenant => 'services',
|
||||
|
||||
use_neutron => $use_neutron,
|
||||
|
||||
use_syslog => $use_syslog,
|
||||
debug => $::debug,
|
||||
verbose => $::verbose,
|
||||
syslog_log_facility => $::syslog_log_facility_murano,
|
||||
|
||||
primary_controller => $primary_controller,
|
||||
neutron_settings => $neutron_config,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($::mellanox_mode == 'ethernet') {
|
||||
$ml2_eswitch = $neutron_mellanox['ml2_eswitch']
|
||||
class { 'mellanox_openstack::controller':
|
||||
|
Loading…
Reference in New Issue
Block a user