From 4a57eb3af5da983377587783262e4c8914dd657a Mon Sep 17 00:00:00 2001 From: Carmela Rubinos Date: Wed, 13 Jan 2016 12:16:45 +0100 Subject: [PATCH] Adapt metadata and params to Fuel 7.0 Added python-neutron-plugin-midonet to Ubuntu repository Also deleted the same package for CentOS, since it's not supported for Fuel 7.0 Install Kilo instead of Juno Edited several manifest to adapt it to Fuel 7.0 Added new tasks and roles files for Fuel 7.0 These files were not available for previous Fuel versions Minor changes in environment_config and tasks files Change-Id: Ib99c4b955fb709c1e05d395a6085d8435f8a36da --- deployment_scripts/puppet/files/startup.conf | 2 +- .../manifests/midonet-define-repositories.pp | 13 +-- .../manifests/midonet-delete-datapaths.pp | 1 + .../manifests/midonet-disable-services.pp | 5 +- .../puppet/manifests/midonet-gateway-bgp.pp | 25 +++--- .../puppet/manifests/midonet-host-registry.pp | 15 ++-- .../puppet/manifests/midonet-install-agent.pp | 39 ++++++--- .../puppet/manifests/midonet-install-api.pp | 37 +++++---- .../puppet/manifests/midonet-nsdb.pp | 15 ++-- .../manifests/midonet-reconfigure-neutron.pp | 77 +++++------------- .../manifests/midonet-restart-neutron.pp | 30 +++---- .../functions/generate_api_zookeeper_ips.rb | 2 +- .../functions/generate_zookeeper_hash.rb | 10 +-- deployment_tasks.yaml | 17 ++++ environment_config.yaml | 2 +- metadata.yaml | 12 +-- node_roles.yaml | 19 +++++ ...ugin-midonet-2014.2.2.1.0-2.el6.noarch.rpm | Bin 69008 -> 0 bytes ...on-neutron-plugin-midonet_2015.1.1_all.deb | Bin 0 -> 24392 bytes tasks.yaml | 2 +- 20 files changed, 173 insertions(+), 150 deletions(-) create mode 100644 deployment_tasks.yaml create mode 100644 node_roles.yaml delete mode 100644 repositories/centos/python-neutron-plugin-midonet-2014.2.2.1.0-2.el6.noarch.rpm create mode 100644 repositories/ubuntu/python-neutron-plugin-midonet_2015.1.1_all.deb diff --git a/deployment_scripts/puppet/files/startup.conf b/deployment_scripts/puppet/files/startup.conf index fec590f..be3b9ef 100644 --- a/deployment_scripts/puppet/files/startup.conf +++ b/deployment_scripts/puppet/files/startup.conf @@ -2,6 +2,6 @@ start on runlevel [123456] stop on shutdown script - puppet apply --modulepath=/etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/modules:/etc/puppet/modules /etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/manifests/midonet-gateway-bgp.pp + puppet apply --modulepath=/etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/modules:/etc/puppet/modules /etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/manifests/midonet-gateway-bgp.pp end script diff --git a/deployment_scripts/puppet/manifests/midonet-define-repositories.pp b/deployment_scripts/puppet/manifests/midonet-define-repositories.pp index 0917efe..0167202 100644 --- a/deployment_scripts/puppet/manifests/midonet-define-repositories.pp +++ b/deployment_scripts/puppet/manifests/midonet-define-repositories.pp @@ -34,9 +34,9 @@ if $mem { midonet_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/${mem_version}/stable/RHEL", manage_distro_repo => false, midonet_key_url => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/RPM-GPG-KEY-midokura", - midonet_openstack_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/openstack-juno/stable/RHEL", + midonet_openstack_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/openstack-kilo/stable/RHEL", midonet_stage => '', - openstack_release => 'juno' + openstack_release => 'kilo' } } 'Ubuntu': { @@ -47,9 +47,9 @@ if $mem { class { '::midonet::repository': midonet_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/midonet/${mem_version}/stable", manage_distro_repo => false, - midonet_openstack_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/openstack/juno/stable", + midonet_openstack_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/openstack/kilo/stable", midonet_stage => 'trusty', - openstack_release => 'juno' + openstack_release => 'kilo' } } } @@ -59,15 +59,16 @@ if $mem { class { '::midonet::repository': midonet_repo => "http://repo.midonet.org/midonet/${oss_version}/RHEL", manage_distro_repo => false, - openstack_release => 'juno' + openstack_release => 'kilo' } } 'Ubuntu': { class { '::midonet::repository': midonet_repo => "http://repo.midonet.org/midonet/${oss_version}", manage_distro_repo => false, - openstack_release => 'juno' + openstack_release => 'kilo' } } } } + diff --git a/deployment_scripts/puppet/manifests/midonet-delete-datapaths.pp b/deployment_scripts/puppet/manifests/midonet-delete-datapaths.pp index 368da77..c2e434a 100644 --- a/deployment_scripts/puppet/manifests/midonet-delete-datapaths.pp +++ b/deployment_scripts/puppet/manifests/midonet-delete-datapaths.pp @@ -25,3 +25,4 @@ exec {'sleep 3': exec {'service midolman start': path => $service_path } + diff --git a/deployment_scripts/puppet/manifests/midonet-disable-services.pp b/deployment_scripts/puppet/manifests/midonet-disable-services.pp index 2344f43..188d5f6 100644 --- a/deployment_scripts/puppet/manifests/midonet-disable-services.pp +++ b/deployment_scripts/puppet/manifests/midonet-disable-services.pp @@ -1,5 +1,6 @@ -$nodes_hash = hiera('nodes', {}) -$roles = node_roles($nodes_hash, hiera('uid')) +# Extract hiera data +$network_metadata = hiera_hash('network_metadata') +$roles = $network_metadata['nodes']["$::hostname"]['node_roles'] $ovs_agent_name = $operatingsystem ? { 'CentOS' => 'neutron-openvswitch-agent', diff --git a/deployment_scripts/puppet/manifests/midonet-gateway-bgp.pp b/deployment_scripts/puppet/manifests/midonet-gateway-bgp.pp index ebf6ca8..dc72476 100644 --- a/deployment_scripts/puppet/manifests/midonet-gateway-bgp.pp +++ b/deployment_scripts/puppet/manifests/midonet-gateway-bgp.pp @@ -1,18 +1,19 @@ -$fuel_settings = parseyaml($astute_settings_yaml) $management_address = hiera('management_vip') -$username = $fuel_settings['access']['user'] -$password = $fuel_settings['access']['password'] -$tenant_name = $fuel_settings['access']['tenant'] -$midonet_settings = $fuel_settings['midonet-fuel-plugin'] -$gateway_nodes = filter_nodes($fuel_settings['nodes'], 'role', 'midonet-gw') -$gateways_hash_ips = nodes_to_hash($gateway_nodes, 'name', 'public_address') -$gw_ip = $gateways_hash_ips[$::hostname] -$gateways_hash_mask = nodes_to_hash($gateway_nodes, 'name', 'public_netmask') -$gw_mask = $gateways_hash_mask[$::hostname] -$net_hash = public_network_hash($gw_ip, $gw_mask) +$access_data = hiera_hash('access') +$username = $access_data['user'] +$password = $access_data['password'] +$tenant_name = $access_data['tenant'] + +$midonet_settings = hiera_hash('midonet-fuel-plugin') $f_net_cidr = split($midonet_settings['floating_cidr'], '/') $remote_peers = generate_remote_peers($midonet_settings) +$nodes_hash = hiera('nodes') +$node = filter_nodes($nodes_hash, 'fqdn', $::fqdn) +$gw_ip = $node[0]['public_address'] +$gw_mask = $node[0]['public_netmask'] +$net_hash = public_network_hash($gw_ip, $gw_mask) + notify {"peers": message => "floating neeet si $remote_peers" } @@ -61,7 +62,7 @@ exec {"set up external bridge": file {"/etc/init/midonet-network.conf": ensure => present, - source => "/etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/files/startup.conf" + source => "/etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/files/startup.conf" } -> midonet_gateway { $::fqdn: diff --git a/deployment_scripts/puppet/manifests/midonet-host-registry.pp b/deployment_scripts/puppet/manifests/midonet-host-registry.pp index b02e855..ecbac7e 100644 --- a/deployment_scripts/puppet/manifests/midonet-host-registry.pp +++ b/deployment_scripts/puppet/manifests/midonet-host-registry.pp @@ -1,10 +1,13 @@ -$fuel_settings = parseyaml($astute_settings_yaml) -$api_ip = $::fuel_settings['management_vip'] +# Extract data from hiera +$api_ip = hiera('management_vip') +$access_data = hiera_hash('access') +$username = $access_data['user'] +$password = $access_data['password'] +$tenant_name = $access_data['tenant'] -$tz_type = $::fuel_settings['midonet-fuel-plugin']['tunnel_type'] -$username = $fuel_settings['access']['user'] -$password = $fuel_settings['access']['password'] -$tenant_name = $fuel_settings['access']['tenant'] +# Plugin settings data +$midonet_settings = hiera_hash('midonet-fuel-plugin') +$tz_type = $midonet_settings['tunnel_type'] $service_path = $operatingsystem ? { 'CentOS' => '/sbin', diff --git a/deployment_scripts/puppet/manifests/midonet-install-agent.pp b/deployment_scripts/puppet/manifests/midonet-install-agent.pp index fbbcee8..c985b3e 100644 --- a/deployment_scripts/puppet/manifests/midonet-install-agent.pp +++ b/deployment_scripts/puppet/manifests/midonet-install-agent.pp @@ -1,13 +1,16 @@ -$fuel_settings = parseyaml($astute_settings_yaml) -$all_nodes = $fuel_settings['nodes'] -$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb') -$zoo_ips = generate_api_zookeeper_ips($nsdb_nodes) -$cass_hash = nodes_to_hash($nsdb_nodes, 'name', 'internal_address') -$api_ip = $::fuel_settings['management_vip'] - -$username = $fuel_settings['access']['user'] -$password = $fuel_settings['access']['password'] -$tenant_name = $fuel_settings['access']['tenant'] +# Extract data from hiera +$network_metadata = hiera_hash('network_metadata') +$neutron_config = hiera_hash('neutron_config') +$segmentation_type = $neutron_config['L2']['segmentation_type'] +$nsdb_hash = get_nodes_hash_by_roles($network_metadata, ['nsdb']) +$nsdb_mgmt_ips = get_node_to_ipaddr_map_by_network_role($nsdb_hash, 'management') +$zoo_ips_hash = generate_api_zookeeper_ips(values($nsdb_mgmt_ips)) +$cass_ips = values($nsdb_mgmt_ips) +$api_ip = hiera('management_vip') +$access_data = hiera_hash('access') +$username = $access_data['user'] +$password = $access_data['password'] +$tenant_name = $access_data['tenant'] $ovsdb_service_name = $operatingsystem ? { 'CentOS' => 'openvswitch', @@ -38,8 +41,8 @@ package {$openvswitch_package: } -> class {'::midonet::midonet_agent': - zk_servers => $zoo_ips, - cassandra_seeds => values($cass_hash), + zk_servers => $zoo_ips_hash, + cassandra_seeds => $cass_ips } -> class {'::midonet::midonet_cli': @@ -48,3 +51,15 @@ class {'::midonet::midonet_cli': password => $password, tenant_name => $tenant_name, } + +# Firewall rule to allow the udp port used for vxlan tunnelling of overlay +# traffic from midolman hosts to other midolman hosts. + +if $segmentation_type =='tun' { + firewall {'6677 vxlan port': + port => '6677', + proto => 'udp', + action => 'accept', + } +} + diff --git a/deployment_scripts/puppet/manifests/midonet-install-api.pp b/deployment_scripts/puppet/manifests/midonet-install-api.pp index 8aee827..6bb3f22 100644 --- a/deployment_scripts/puppet/manifests/midonet-install-api.pp +++ b/deployment_scripts/puppet/manifests/midonet-install-api.pp @@ -1,19 +1,24 @@ -$fuel_settings = parseyaml($astute_settings_yaml) -$all_nodes = $fuel_settings['nodes'] -$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb') -$zoo_ips = generate_api_zookeeper_ips($nsdb_nodes) -$primary_controller_nodes = filter_nodes($all_nodes, 'role', 'primary-controller') -$controllers = concat($primary_controller_nodes, filter_nodes($all_nodes, 'role', 'controller')) - +# Extract data from hiera +$network_metadata = hiera_hash('network_metadata') +$controllers_map = get_nodes_hash_by_roles($network_metadata, ['controller', 'primary-controller']) +$controllers_mgmt_ips = get_node_to_ipaddr_map_by_network_role($controllers_map, 'management') +$nsdb_hash = get_nodes_hash_by_roles($network_metadata, ['nsdb']) +$nsdb_mgmt_ips = get_node_to_ipaddr_map_by_network_role($nsdb_hash, 'management') +$zoo_ips_hash = generate_api_zookeeper_ips(values($nsdb_mgmt_ips)) +$management_vip = hiera('management_vip') +$public_vip = hiera('public_vip') +$keystone_data = hiera_hash('keystone') +$access_data = hiera_hash('access') +$public_ssl_hash = hiera('public_ssl') class {'::midonet::midonet_api': - zk_servers => $zoo_ips, + zk_servers => $zoo_ips_hash, keystone_auth => true, - keystone_host => $::fuel_settings['management_vip'], - keystone_admin_token => $::fuel_settings['keystone']['admin_token'], - keystone_tenant_name => $::fuel_settings['access']['tenant'], + keystone_host => $management_vip, + keystone_admin_token => $keystone_data['admin_token'], + keystone_tenant_name => $access_data['tenant'], bind_address => $::ipaddress_br_mgmt, - api_ip => $::fuel_settings['public_vip'], + api_ip => $public_vip, api_port => '8081', } @@ -22,10 +27,10 @@ Haproxy::Service { use_include => true } Haproxy::Balancermember { use_include => true } Openstack::Ha::Haproxy_service { - server_names => filter_hash($controllers, 'name'), - ipaddresses => filter_hash($controllers, 'internal_address'), - public_virtual_ip => $::fuel_settings['public_vip'], - internal_virtual_ip => $::fuel_settings['management_vip'], + server_names => keys($controllers_mgmt_ips), + ipaddresses => values($controllers_mgmt_ips), + public_virtual_ip => $public_vip, + internal_virtual_ip => $management_vip } openstack::ha::haproxy_service { 'midonetapi': diff --git a/deployment_scripts/puppet/manifests/midonet-nsdb.pp b/deployment_scripts/puppet/manifests/midonet-nsdb.pp index 1b1653d..9182b57 100644 --- a/deployment_scripts/puppet/manifests/midonet-nsdb.pp +++ b/deployment_scripts/puppet/manifests/midonet-nsdb.pp @@ -12,11 +12,12 @@ # License for the specific language governing permissions and limitations # under the License. -$fuel_settings = parseyaml($astute_settings_yaml) -$all_nodes = $fuel_settings['nodes'] -$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb') -$zoo_hash = generate_zookeeper_hash($nsdb_nodes) -$cass_hash = nodes_to_hash($nsdb_nodes, 'name', 'internal_address') +# Extract data from hiera +$fuel_settings = parseyaml($astute_settings_yaml) +$network_metadata = hiera_hash('network_metadata') +$nsdb_map = get_nodes_hash_by_roles($network_metadata, ['nsdb']) +$zoo_hash = generate_zookeeper_hash($nsdb_map) +$nsdb_mgmt_map = get_node_to_ipaddr_map_by_network_role($nsdb_map, 'management') class {'::zookeeper': servers => values($zoo_hash), @@ -25,8 +26,8 @@ class {'::zookeeper': } class {'::cassandra': - seeds => values($cass_hash), - seed_address => $cass_hash["${::hostname}"], + seeds => values($nsdb_mgmt_map), + seed_address => $nsdb_mgmt_map["${::hostname}"] } firewall {'500 zookeeper ports': diff --git a/deployment_scripts/puppet/manifests/midonet-reconfigure-neutron.pp b/deployment_scripts/puppet/manifests/midonet-reconfigure-neutron.pp index ffbe714..54c4872 100644 --- a/deployment_scripts/puppet/manifests/midonet-reconfigure-neutron.pp +++ b/deployment_scripts/puppet/manifests/midonet-reconfigure-neutron.pp @@ -1,63 +1,16 @@ -$fuel_settings = parseyaml($astute_settings_yaml) -$address = hiera('management_vip') -# amqp settings -$controllers = hiera('controllers') -$controller_internal_addresses = nodes_to_hash($controllers,'name','internal_address') -$controller_nodes = ipsort(values($controller_internal_addresses)) -$internal_address = hiera('internal_address') -if $internal_address in $controller_nodes { - # prefer local MQ broker if it exists on this node - $amqp_nodes = concat(['127.0.0.1'], fqdn_rotate(delete($controller_nodes, $internal_address))) -} else { - $amqp_nodes = fqdn_rotate($controller_nodes) -} - -$amqp_port = '5673' -$amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>") -$rabbit_hash = hiera('rabbit_hash', {}) -$service_endpoint = hiera('management_vip') +# Neutron data +$amqp_port = '5673' +$rabbit_hash = hiera('rabbit_hash', {}) +$service_endpoint = hiera('management_vip') $neutron_config = hiera('quantum_settings') $neutron_db_password = $neutron_config['database']['passwd'] $neutron_user_password = $neutron_config['keystone']['admin_password'] -ensure_resource('file', '/etc/neutron/plugins/midonet', { - ensure => directory, - owner => 'root', - group => 'neutron', - mode => '0640'} -) - -neutron_plugin_midonet { - 'MIDONET/midonet_uri': value => "http://${address}:8081/midonet-api"; - 'MIDONET/username': value => $fuel_settings['access']['user']; - 'MIDONET/password': value => $fuel_settings['access']['password']; - 'MIDONET/project_id': value => $fuel_settings['access']['tenant']; -} -> - -package {'python-neutron-plugin-midonet': - ensure => present -} - -if $::osfamily == 'Debian' { - file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG': - path => '/etc/default/neutron-server', - match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', - line => "NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/midonet/midonet.ini", - notify => Service['neutron-server'], - } -} - -# In RH, this link is used to start Neutron process but in Debian, it's used only -# to manage database synchronization. -if defined(File['/etc/neutron/plugin.ini']) { - File <| path == '/etc/neutron/plugin.ini' |> { target => '/etc/neutron/plugins/midonet/midonet.ini' } -} -else { - file {'/etc/neutron/plugin.ini': - ensure => link, - target => '/etc/neutron/plugins/midonet/midonet.ini' - } -} +# Neutron plugin data +$access_data = hiera_hash('access') +$username = $access_data['user'] +$password = $access_data['password'] +$tenant_name = $access_data['tenant'] class {'::neutron': verbose => false, @@ -65,7 +18,7 @@ class {'::neutron': use_syslog => false, log_facility => 'LOG_USER', base_mac => 'fa:16:3e:00:00:00', - core_plugin => 'midonet.neutron.plugin.MidonetPluginV2', + core_plugin => 'neutron.plugins.midonet.plugin.MidonetPluginV2', service_plugins => [], allow_overlapping_ips => true, mac_generation_retries => 32, @@ -74,13 +27,21 @@ class {'::neutron': report_interval => 5, rabbit_user => $rabbit_hash['user'], rabbit_host => ['localhost'], - rabbit_hosts => [$amqp_hosts], + rabbit_hosts => split(hiera('amqp_hosts', ''), ','), rabbit_port => '5672', rabbit_password => $rabbit_hash['password'], kombu_reconnect_delay => '5.0', network_device_mtu => undef, } +class {'::neutron::plugins::midonet': + midonet_api_ip => $service_endpoint, + midonet_api_port => '8081', + keystone_username => $username, + keystone_password => $password, + keystone_tenant => $tenant_name +} + class { '::neutron::server': sync_db => $primary_controller ? {true => 'primary', default => 'slave'}, auth_host => $service_endpoint, diff --git a/deployment_scripts/puppet/manifests/midonet-restart-neutron.pp b/deployment_scripts/puppet/manifests/midonet-restart-neutron.pp index 76f6862..0ab4fa1 100644 --- a/deployment_scripts/puppet/manifests/midonet-restart-neutron.pp +++ b/deployment_scripts/puppet/manifests/midonet-restart-neutron.pp @@ -1,17 +1,19 @@ -$fuel_settings = parseyaml($astute_settings_yaml) -$access_hash = hiera('access', {}) -$keystone_admin_tenant = $access_hash[tenant] -$neutron_settings = hiera('quantum_settings') -$nets = $neutron_settings['predefined_networks'] +# Extract data from hiera +$access_data = hiera_hash('access') +$keystone_admin_tenant = $access_data['tenant'] +$network_metadata = hiera_hash('network_metadata') +$node_roles = $network_metadata['nodes'][$::hostname]['node_roles'] +$neutron_settings = hiera('quantum_settings') +$nets = $neutron_settings['predefined_networks'] +$segment_id = $nets['net04']['L2']['segment_id'] +$vm_net_l3 = $nets['net04']['L3'] -$nodes_hash = hiera('nodes', {}) -$roles = node_roles($nodes_hash, hiera('uid')) +# Plugin settings data +$midonet_settings = hiera_hash('midonet-fuel-plugin') +$tz_type = $midonet_settings['tunnel_type'] +$range_start = $midonet_settings['floating_ip_range_start'] +$range_end = $midonet_settings['floating_ip_range_end'] -$segment_id = $nets['net04']['L2']['segment_id'] -$vm_net_l3 = $nets['net04']['L3'] - -$midonet_settings = $::fuel_settings['midonet-fuel-plugin'] -$tz_type = $midonet_settings['tunnel_type'] $vm_net = { shared => false, "L2" => { network_type => $tz_type, router_ext => false, @@ -22,15 +24,13 @@ $vm_net = { shared => false, tenant => 'admin' } -$range_start = $midonet_settings['floating_ip_range_start'] -$range_end = $midonet_settings['floating_ip_range_end'] $allocation_pools = "start=$range_start,end=$range_end" service { 'neutron-server': ensure => running, } -if member($roles, 'primary-controller') { +if member($node_roles, 'primary-controller') { exec {'refresh-dhcp-agent': command => 'crm resource start p_neutron-dhcp-agent', path => '/usr/bin:/usr/sbin', diff --git a/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_api_zookeeper_ips.rb b/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_api_zookeeper_ips.rb index 2774a0f..31e3906 100644 --- a/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_api_zookeeper_ips.rb +++ b/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_api_zookeeper_ips.rb @@ -20,7 +20,7 @@ module Puppet::Parser::Functions result = [] nodes_hash = argv[0] nodes_hash.each do |zk_ip| - result.push({'ip' => zk_ip['internal_address']}) + result.push({'ip' => zk_ip}) end return result end diff --git a/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_zookeeper_hash.rb b/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_zookeeper_hash.rb index e4c8a17..e4e0c8f 100644 --- a/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_zookeeper_hash.rb +++ b/deployment_scripts/puppet/modules/plugin_midonet/lib/puppet/parser/functions/generate_zookeeper_hash.rb @@ -19,12 +19,10 @@ module Puppet::Parser::Functions ) do |argv| nodes_hash = argv[0] result = {} - sorted_ctrls = nodes_hash - sorted_ctrls.sort! {|a,b| a['uid'].to_i <=> b['uid'].to_i} - sorted_ctrls.each do |ctrl| - result[ctrl['fqdn']] = { 'host' => ctrl['internal_address'], - 'id' => (sorted_ctrls.index(ctrl)+1).to_s - } + nodes_hash.each do |ctrl| + result[ctrl[1]['fqdn']] = { 'host' => ctrl[1]['network_roles']['management'], + 'id' => (nodes_hash.keys().index(ctrl).to_i + 1).to_s + } end return result end diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml new file mode 100644 index 0000000..d6f86a3 --- /dev/null +++ b/deployment_tasks.yaml @@ -0,0 +1,17 @@ +- id: mido-nsdb + type: group + role: [nsdb] + requires: [] + required_for: [pre_deployment_end] + parameters: + strategy: + type: parallel + +- id: midonet-gw + type: group + role: [midonet-gw] + requires: [deploy_start] + required_for: [deploy_end] + parameters: + strategy: + type: parallel diff --git a/environment_config.yaml b/environment_config.yaml index be627bf..2e72b71 100644 --- a/environment_config.yaml +++ b/environment_config.yaml @@ -1,7 +1,7 @@ attributes: metadata: restrictions: - - condition: cluster:net_provider != 'neutron' or networking_parameters:segmentation_type != 'gre' + - condition: cluster:net_provider != 'neutron' action: hide mem: value: false diff --git a/metadata.yaml b/metadata.yaml index ac31927..69c8aea 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,23 +1,23 @@ name: midonet-fuel-plugin title: Neutron Midonet plugin -version: 2.2.0 +version: 3.0.0 description: Enable to use plugin Midonet for Neutron -fuel_version: ['6.1'] +fuel_version: ['7.0'] releases: - os: ubuntu - version: 2014.2.2-6.1 + version: 2015.1.0-7.0 mode: ['ha', 'multinode'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/ubuntu - os: centos - version: 2014.2.2-6.1 + version: 2015.1.0-7.0 mode: ['ha', 'multinode'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/centos -package_version: '2.0.0' +package_version: '3.0.0' licenses: ['Apache 2.0'] authors: ['Lucas Eznarriaga , Midokura', 'Jaume Devesa , Midokura', 'Carmela Rubinos , Midokura'] -homepage: https://github.com/stackforge/fuel-plugin-midonet +homepage: 'https://github.com/stackforge/fuel-plugin-midonet' groups: ['network'] diff --git a/node_roles.yaml b/node_roles.yaml new file mode 100644 index 0000000..6c3c5e3 --- /dev/null +++ b/node_roles.yaml @@ -0,0 +1,19 @@ +mido-nsdb: + name: 'mido-nsdb' + description: "Network State Database for MidoNet" + has_primary: false + public_ip_required: false + weight: 100 + volumes_roles_mapping: + - allocate_size: min + id: os + +midonet-gw: + name: 'midonet-gw' + description: "MidoNet HA Gateway" + has_primary: true + public_ip_required: true + weight: 101 + volumes_roles_mapping: + - allocate_size: min + id: os diff --git a/repositories/centos/python-neutron-plugin-midonet-2014.2.2.1.0-2.el6.noarch.rpm b/repositories/centos/python-neutron-plugin-midonet-2014.2.2.1.0-2.el6.noarch.rpm deleted file mode 100644 index c3fb0300f30dd65a2e984bb4ed748d70eebeea9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69008 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

u;Jx!*UWJYgonmP})EQdPTR=MXR4Cc;IZ2 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 diff --git a/repositories/ubuntu/python-neutron-plugin-midonet_2015.1.1_all.deb b/repositories/ubuntu/python-neutron-plugin-midonet_2015.1.1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..f851379b53db8105a67b49533ffadd03febca8a9 GIT binary patch literal 24392 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�!yTPpVejGVcB#8y;iqoU)*$B8-NtB@4Gj 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 ETDj6M$p8QV literal 0 HcmV?d00001 diff --git a/tasks.yaml b/tasks.yaml index feefe15..2261d48 100644 --- a/tasks.yaml +++ b/tasks.yaml @@ -152,7 +152,7 @@ timeout: 720 # Clean and run Neutron database. That may help if someday we need a MidoNet -# specific database table (like in v2.0 we will need, the `tasks` one) +# specific database table - id: midonet_recreate_neutron_db role: [primary-controller] stage: post_deployment/6435