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
|
module Puppet::Parser::Functions
|
||||||
newfunction(:get_ext_net_name, :type => :rvalue) do |args|
|
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 = 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
|
||||||
end
|
end
|
||||||
|
|
|
@ -42,9 +42,8 @@ class murano::api (
|
||||||
$primary_controller = true,
|
$primary_controller = true,
|
||||||
|
|
||||||
$use_neutron = false,
|
$use_neutron = false,
|
||||||
$default_network = 'net04_ext',
|
|
||||||
$default_router = 'murano-default-router',
|
$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"
|
$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 {
|
if $use_neutron {
|
||||||
murano_config {
|
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/router_name' : value => $default_router;
|
||||||
'networking/create_router' : value => true;
|
'networking/create_router' : value => true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ class murano (
|
||||||
$admin_address = '127.0.0.1',
|
$admin_address = '127.0.0.1',
|
||||||
$public_address = '127.0.0.1',
|
$public_address = '127.0.0.1',
|
||||||
$internal_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']
|
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,
|
use_neutron => $use_neutron,
|
||||||
default_router => 'murano-default-router',
|
default_router => 'murano-default-router',
|
||||||
default_network => 'net04_ext',
|
external_network => $external_network,
|
||||||
neutron_settings => $neutron_settings,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class { 'murano::apps':
|
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'
|
Puppet::Parser::Functions.function('get_ext_net_name').should == 'function_get_ext_net_name'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return network specified in net04_ext' do
|
it 'should return the network name that has router_ext enabled' do
|
||||||
scope.function_get_ext_net_name(
|
expect(scope.function_get_ext_net_name(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"net04" =>
|
"net04" =>
|
||||||
|
@ -25,14 +25,13 @@ describe 'get_ext_net_name' do
|
||||||
"router_ext" => true,
|
"router_ext" => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
'net99_ext'
|
|
||||||
]
|
]
|
||||||
).should eql 'net04_ext'
|
)).to eq 'net04_ext'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return default_net' do
|
it 'should return nil if router_ext is not enabled' do
|
||||||
scope.function_get_ext_net_name(
|
expect(scope.function_get_ext_net_name(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"net04" =>
|
"net04" =>
|
||||||
|
@ -49,14 +48,13 @@ describe 'get_ext_net_name' do
|
||||||
"router_ext" => false,
|
"router_ext" => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
'net99_ext'
|
|
||||||
],
|
],
|
||||||
).should eql 'net99_ext'
|
)).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return default_net' do
|
it 'should return nil if there is no router_ext' do
|
||||||
scope.function_get_ext_net_name(
|
expect(scope.function_get_ext_net_name(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"net04" =>
|
"net04" =>
|
||||||
|
@ -71,19 +69,17 @@ describe 'get_ext_net_name' do
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
'net99_ext'
|
|
||||||
]
|
]
|
||||||
).should eql 'net99_ext'
|
)).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return default_net' do
|
it 'should return nil with empty network data' do
|
||||||
scope.function_get_ext_net_name(
|
expect(scope.function_get_ext_net_name(
|
||||||
[
|
[
|
||||||
{},
|
{}
|
||||||
'net99_ext'
|
|
||||||
]
|
]
|
||||||
).should eql 'net99_ext'
|
)).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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'
|
'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') {
|
if ($::mellanox_mode == 'ethernet') {
|
||||||
$ml2_eswitch = $neutron_mellanox['ml2_eswitch']
|
$ml2_eswitch = $neutron_mellanox['ml2_eswitch']
|
||||||
class { 'mellanox_openstack::controller':
|
class { 'mellanox_openstack::controller':
|
||||||
|
|
Loading…
Reference in New Issue