Fix the bug with custom hostname

There is the task openstack-network-plugins-l2 that works unwell with
environments with custom hostnames. The root of problem is incorrect
detection of neutron nodes. Unfortuantely it happens in core task and
for fixing that task should be replaced.

Change-Id: I663960befa4cfa82348b231728722d774482fb4e
Closes-bug: #1590403
This commit is contained in:
Igor Gajsin 2016-06-20 18:33:15 +03:00
parent e0f03b5262
commit 8e25a8579d
4 changed files with 231 additions and 48 deletions

View File

@ -0,0 +1,6 @@
notice('MODULAR: fuel-plugin-vmware-dvs/plugins/ml2.pp')
class neutron {}
class { 'neutron' :}
class {'::vmware_dvs::l2': }

View File

@ -0,0 +1,183 @@
class vmware_dvs::l2 {
$use_neutron = hiera('use_neutron', false)
if $use_neutron {
# override neutron options
$override_configuration = hiera_hash('configuration', {})
override_resources { 'neutron_agent_ovs':
data => $override_configuration['neutron_agent_ovs']
} ~> Service['neutron-ovs-agent-service']
}
if $use_neutron {
include ::neutron::params
$node_name = hiera('node_name')
$neutron_primary_controller_roles = hiera('neutron_primary_controller_roles', ['primary-controller'])
$neutron_compute_roles = hiera('neutron_compute_nodes', ['compute'])
$primary_controller = roles_include($neutron_primary_controller_roles)
$compute = roles_include($neutron_compute_roles)
$neutron_config = hiera_hash('neutron_config')
$neutron_server_enable = pick($neutron_config['neutron_server_enable'], true)
$neutron_nodes = hiera_hash('neutron_nodes')
$dpdk_config = hiera_hash('dpdk', {})
$enable_dpdk = pick($dpdk_config['enabled'], false)
$management_vip = hiera('management_vip')
$service_endpoint = hiera('service_endpoint', $management_vip)
$ssl_hash = hiera_hash('use_ssl', {})
$internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http')
$internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint])
$auth_api_version = 'v2.0'
$identity_uri = "${internal_auth_protocol}://${internal_auth_address}:5000"
$auth_url = "${identity_uri}/${auth_api_version}"
$auth_password = $neutron_config['keystone']['admin_password']
$auth_user = pick($neutron_config['keystone']['admin_user'], 'neutron')
$auth_tenant = pick($neutron_config['keystone']['admin_tenant'], 'services')
$auth_region = hiera('region', 'RegionOne')
$auth_endpoint_type = 'internalURL'
$network_scheme = hiera_hash('network_scheme', {})
prepare_network_config($network_scheme)
$neutron_advanced_config = hiera_hash('neutron_advanced_configuration', { })
$l2_population = try_get_value($neutron_advanced_config, 'neutron_l2_pop', false)
$dvr = try_get_value($neutron_advanced_config, 'neutron_dvr', false)
$enable_qos = pick($neutron_advanced_config['neutron_qos'], false)
$segmentation_type = try_get_value($neutron_config, 'L2/segmentation_type')
if $compute and ! $dvr {
$do_floating = false
} else {
$do_floating = true
}
if $enable_qos {
$extensions = ['qos']
} else {
$extensions = undef
}
$bridge_mappings = generate_bridge_mappings($neutron_config, $network_scheme, {
'do_floating' => $do_floating,
'do_tenant' => true,
'do_provider' => false
})
if $segmentation_type == 'vlan' {
$net_role_property = 'neutron/private'
$iface = get_network_role_property($net_role_property, 'phys_dev')
$enable_tunneling = false
$network_type = 'vlan'
$tunnel_types = []
} else {
$net_role_property = 'neutron/mesh'
$tunneling_ip = get_network_role_property($net_role_property, 'ipaddr')
$iface = get_network_role_property($net_role_property, 'phys_dev')
$physical_net_mtu = pick(get_transformation_property('mtu', $iface[0]), '1500')
if $segmentation_type == 'gre' {
$mtu_offset = '42'
$network_type = 'gre'
} else {
# vxlan is the default segmentation type for non-vlan cases
$mtu_offset = '50'
$network_type = 'vxlan'
}
$tunnel_types = [$network_type]
$enable_tunneling = true
}
if $enable_dpdk and $compute {
neutron_agent_ovs {
'securitygroup/enable_security_group': value => false;
}
$firewall_driver = 'neutron.agent.firewall.NoopFirewallDriver'
$ovs_datapath_type = 'netdev'
$ovs_vhostuser_socket_dir = '/var/run/openvswitch'
} else {
neutron_agent_ovs {
'securitygroup/enable_security_group': value => true;
}
$firewall_driver = 'neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver'
# Leave default values when passed to the class
$ovs_datapath_type = undef
$ovs_vhostuser_socket_dir = undef
}
Neutron_agent_ovs<||> ~> Service['neutron-ovs-agent-service']
class { '::neutron::agents::ml2::ovs':
bridge_mappings => $bridge_mappings,
enable_tunneling => $enable_tunneling,
local_ip => $tunneling_ip,
tunnel_types => $tunnel_types,
enable_distributed_routing => $dvr,
l2_population => $l2_population,
arp_responder => $l2_population,
firewall_driver => $firewall_driver,
datapath_type => $ovs_datapath_type,
vhostuser_socket_dir => $ovs_vhostuser_socket_dir,
extensions => $extensions,
manage_vswitch => false,
manage_service => true,
enabled => true,
}
if str2bool(inline_template('<%= @neutron_nodes.values.keep_if {|h| h["name"] == @node_name}.length > 0%>')) {
if $neutron_server_enable {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
service { 'neutron-server':
name => $::neutron::params::server_service,
enable => $neutron_server_enable,
ensure => $service_ensure,
hasstatus => true,
hasrestart => true,
tag => 'neutron-service',
}
exec { 'waiting-for-neutron-api':
environment => [
"OS_TENANT_NAME=${auth_tenant}",
"OS_USERNAME=${auth_user}",
"OS_PASSWORD=${auth_password}",
"OS_AUTH_URL=${auth_url}",
"OS_REGION_NAME=${auth_region}",
"OS_ENDPOINT_TYPE=${auth_endpoint_type}",
],
path => '/usr/sbin:/usr/bin:/sbin:/bin',
tries => '30',
try_sleep => '4',
command => 'neutron net-list --http-timeout=4 2>&1 > /dev/null',
provider => 'shell',
subscribe => Service['neutron-server'],
refreshonly => true,
}
$ha_agent = try_get_value($neutron_advanced_config, 'l2_agent_ha', true)
if $ha_agent {
#Exec<| title == 'waiting-for-neutron-api' |> ->
class { '::cluster::neutron::ovs' :
primary => $primary_controller,
}
}
}
# Stub for upstream neutron manifests
package { 'neutron':
name => 'binutils',
ensure => 'installed',
}
}
}

View File

@ -1,9 +1,5 @@
# PRE_DEPLOYMENT TASKS
# DEPLYMENT TASKS
- id: vmware-dvs-override-hiera - id: vmware-dvs-override-hiera
version: 2.0.0 version: 2.1.0
role: ['primary-controller','controller', 'compute-vmware'] role: ['primary-controller','controller', 'compute-vmware']
required_for: [openstack-network-server-config, vmware-dvs-network-common-config] required_for: [openstack-network-server-config, vmware-dvs-network-common-config]
requires: [deploy_start] requires: [deploy_start]
@ -14,9 +10,9 @@
timeout: 720 timeout: 720
- id: vmware-dvs-setup-neutron-plugin - id: vmware-dvs-setup-neutron-plugin
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller', 'compute-vmware'] groups: ['primary-controller','controller', 'compute-vmware']
required_for: [primary-openstack-network-plugins-l2,openstack-network-plugins-l2,vmware-dvs-network-plugins-l2] required_for: [primary-openstack-network-plugins-l2,openstack-network-plugins-l2]
requires: [openstack-network-common-config, vmware-dvs-network-common-config] requires: [openstack-network-common-config, vmware-dvs-network-common-config]
type: puppet type: puppet
parameters: parameters:
@ -25,7 +21,7 @@
timeout: 720 timeout: 720
- id: vmware-dvs-neutron-agent-install - id: vmware-dvs-neutron-agent-install
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
require_for: [openstack-network-networks] require_for: [openstack-network-networks]
requires: [vmware-dvs-network-common-config] requires: [vmware-dvs-network-common-config]
@ -36,7 +32,7 @@
timeout: 720 timeout: 720
- id: vmware-dvs-compute-vmware - id: vmware-dvs-compute-vmware
version: 2.0.0 version: 2.1.0
groups: ['compute-vmware'] groups: ['compute-vmware']
requires: [top-role-compute-vmware] requires: [top-role-compute-vmware]
type: puppet type: puppet
@ -46,7 +42,7 @@
timeout: 720 timeout: 720
- id: vmware-dvs-set-neutron-timeout - id: vmware-dvs-set-neutron-timeout
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller'] groups: ['primary-controller','controller']
required_for: [deploy_end] required_for: [deploy_end]
requires: [openstack-network-server-nova] requires: [openstack-network-server-nova]
@ -59,7 +55,7 @@
# Anchor (empty task) for another tasks, say 'tenant network FW setup starting' # Anchor (empty task) for another tasks, say 'tenant network FW setup starting'
- id: vmware-dvs-network-start - id: vmware-dvs-network-start
type: skipped type: skipped
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
requires: [neutron-keystone, neutron-db, netconfig, openstack-controller, top-role-compute] requires: [neutron-keystone, neutron-db, netconfig, openstack-controller, top-role-compute]
required_for: [openstack-network-common-config] required_for: [openstack-network-common-config]
@ -70,7 +66,7 @@
- id: vmware-dvs-network-common-config - id: vmware-dvs-network-common-config
type: puppet type: puppet
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
required_for: [vmware-dvs-network-end] required_for: [vmware-dvs-network-end]
requires: [vmware-dvs-network-start] requires: [vmware-dvs-network-start]
@ -79,26 +75,47 @@
puppet_modules: /etc/puppet/modules puppet_modules: /etc/puppet/modules
timeout: 1800 timeout: 1800
- id: vmware-dvs-network-plugins-l2 - id: primary-openstack-network-plugins-l2
type: puppet type: puppet
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: [primary-controller]
required_for: [vmware-dvs-network-end] required_for: [openstack-network-end]
requires: [vmware-dvs-network-common-config, openstack-network-server-config] requires: [openstack-network-start, openstack-network-common-config, openstack-network-server-config]
refresh_on: [neutron_plugin_ml2, neutron_agent_ovs, neutron_config, neutron_api_config] condition:
yaql_exp: &network_plugins_l2 >
changedAny($.quantum, $.configuration, $.fqdn,
$.get('neutron_primary_controller_roles'),
$.get('neutron_compute_nodes'), $.quantum_settings, $.public_ssl,
$.get('use_ssl'), $.get('region'), $.network_scheme,
$.neutron_advanced_configuration)
refresh_on: [neutron_agent_ovs]
parameters:
puppet_manifest: puppet/manifests/vmware-dvs-network-plugins-l2.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 1800
- id: openstack-network-plugins-l2
type: puppet
version: 2.1.0
groups: [controller,compute,compute-vmware]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-common-config, openstack-network-server-config]
condition:
yaql_exp: *network_plugins_l2
refresh_on: [neutron_agent_ovs]
cross-depends: cross-depends:
- name: primary-openstack-network-plugins-l2 - name: primary-openstack-network-plugins-l2
parameters: parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/openstack-network/plugins/ml2.pp puppet_manifest: puppet/manifests/vmware-dvs-network-plugins-l2.pp
puppet_modules: /etc/puppet/modules puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 1800 timeout: 1800
- id: vmware-dvs-network-agents-l3 - id: vmware-dvs-network-agents-l3
type: puppet type: puppet
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
required_for: [vmware-dvs-network-end] required_for: [vmware-dvs-network-end]
requires: [openstack-network-networks, openstack-network-routers, primary-openstack-network-plugins-l2, vmware-dvs-network-plugins-l2] requires: [openstack-network-networks, openstack-network-routers, primary-openstack-network-plugins-l2]
refresh_on: [neutron_l3_agent_config] refresh_on: [neutron_l3_agent_config]
cross-depends: cross-depends:
- name: /(primary-)?openstack-network-plugins-l2/ - name: /(primary-)?openstack-network-plugins-l2/
@ -110,7 +127,7 @@
- id: vmware-dvs-network-agents-metadata - id: vmware-dvs-network-agents-metadata
type: puppet type: puppet
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
required_for: [vmware-dvs-network-end] required_for: [vmware-dvs-network-end]
requires: [vmware-dvs-network-common-config, openstack-network-server-nova,vmware-dvs-network-agents-l3] requires: [vmware-dvs-network-common-config, openstack-network-server-nova,vmware-dvs-network-agents-l3]
@ -126,30 +143,7 @@
# Anchor (empty task) for another tasks, say 'tenant network FW setup done' # Anchor (empty task) for another tasks, say 'tenant network FW setup done'
- id: vmware-dvs-network-end - id: vmware-dvs-network-end
type: skipped type: skipped
version: 2.0.0 version: 2.1.0
groups: ['primary-controller','controller','compute-vmware'] groups: ['primary-controller','controller','compute-vmware']
required_for: [deploy_end] required_for: [deploy_end]
requires: [] requires: []
# POST_DEPLOYMENT TASKS
#- id: vmware-dvs-property-hypervisor_type
# version: 2.0.0
# role: ['primary-controller']
# required_for: [post_deployment_end]
# requires: [disable_keystone_service_token]
# type: shell
# parameters:
# cmd: bash add_hyperv_type.sh 2>&1 | tee -a /tmp/add_hyper_type.log
# timeout: 240
# explicit restart nova-compute #1557980
#- id: vmware-dvs-restart-nova-compute
# version: 2.0.0
# role: [primary-controller, controller, compute-vmware]
# requires: [post_deployment_start]
# required_for: [post_deployment_end]
# type: puppet
# parameters:
# puppet_manifest: puppet/manifests/restart-nova-compute.pp
# puppet_modules: puppet/modules:/etc/puppet/modules
# timeout: 720

View File

@ -3,7 +3,7 @@ name: fuel-plugin-vmware-dvs
# Human-readable name for your plugin # Human-readable name for your plugin
title: Neutron VMware DVS ML2 plugin title: Neutron VMware DVS ML2 plugin
# Plugin version # Plugin version
version: '3.0.0' version: '3.0.2'
# Description # Description
description: Enable to use plugin vmware_dvs for Neutron description: Enable to use plugin vmware_dvs for Neutron
# Required fuel version # Required fuel version