Make sure DHCP and Metadata agents are dead

Change-Id: I37968533075dc8c4045f7a2e61279a89b8e54a50
This commit is contained in:
Alex Ruiz Estradera 2016-12-05 10:17:22 +01:00
parent 5c17cbe4f2
commit e3574ed3ff
4 changed files with 154 additions and 5 deletions

View File

@ -0,0 +1,116 @@
# Copyright 2016 Midokura, SARL.
#
# 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: midonet-disable-services.pp')
include ::stdlib
# Extract hiera data
$net_metadata = hiera_hash('network_metadata')
$node = get_node_by_fqdn($net_metadata, $::fqdn)
$roles = $node['node_roles']
$ovs_agent_name = $operatingsystem ? {
'CentOS' => 'neutron-openvswitch-agent',
'Ubuntu' => 'neutron-plugin-openvswitch-agent',
}
$l3_agent_name = $operatingsystem ? {
'CentOS' => 'neutron-l3-agent',
'Ubuntu' => 'neutron-l3-agent'
}
$dhcp_agent_name = $operatingsystem ? {
'CentOS' => 'neutron-dhcp-agent',
'Ubuntu' => 'neutron-dhcp-agent'
}
$metadata_agent_name = $operatingsystem ? {
'CentOS' => 'neutron-metadata-agent',
'Ubuntu' => 'neutron-metadata-agent'
}
if member($roles, 'primary-controller') {
exec {'stop-dhcp-agent':
command => 'crm resource stop clone_neutron-dhcp-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status clone_neutron-dhcp-agent'
} ->
exec {'stop-metadata-agent':
command => 'crm resource stop clone_neutron-metadata-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status clone_neutron-metadata-agent'
} ->
exec {'delete-metadata-agent':
command => 'crm configure delete clone_neutron-metadata-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status clone_neutron-metadata-agent'
}->
exec {'delete-dhcp-agent':
command => 'crm configure delete clone_neutron-dhcp-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status clone_neutron-dhcp-agent'
}->
exec {'stop-dhcp-agent-N':
command => 'crm resource stop neutron-dhcp-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status neutron-dhcp-agent'
} ->
exec {'stop-metadata-agent-N':
command => 'crm resource stop neutron-metadata-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status neutron-metadata-agent'
} ->
exec {'delete-metadata-agent-N':
command => 'crm configure delete neutron-metadata-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status neutron-metadata-agent'
}->
exec {'delete-dhcp-agent-N':
command => 'crm configure delete neutron-dhcp-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status neutron-dhcp-agent'
}->
exec {'stop-l3-agent':
command => 'crm resource stop p_neutron-l3-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status p_neutron-l3-agent'
} ->
exec {'delete-l3-agent':
command => 'crm configure delete p_neutron-l3-agent',
path => '/usr/bin:/usr/sbin',
onlyif => 'crm resource status p_neutron-l3-agent'
}->
service {$dhcp_agent_name:
ensure => stopped,
enable => false
}->
service {$metadata_agent_name:
ensure => stopped,
enable => false
}
} else {
service {$dhcp_agent_name:
ensure => stopped,
enable => false
}
service {$metadata_agent_name:
ensure => stopped,
enable => false
}
}

View File

@ -61,8 +61,7 @@ class {'::neutron':
base_mac => 'fa:16:3e:00:00:00',
allow_overlapping_ips => true,
mac_generation_retries => '32',
dhcp_lease_duration => '600',
dhcp_agents_per_network => '2',
dhcp_agent_notification => false,
report_interval => '10',
rabbit_user => $rabbit_hash['user'],
rabbit_host => ['localhost'],

View File

@ -0,0 +1,19 @@
module Puppet::Parser::Functions
newfunction(:get_node_by_fqdn, :type => :rvalue, :doc => <<-EOS
Return a node (node names are keys) that match the fqdn.
example:
get_node_by_fqdn($network_metadata_hash, 'test.function.com')
EOS
) do |args|
errmsg = "get_node_by_fqdn($network_metadata_hash, $fqdn)"
n_metadata, fqdn = args
raise(Puppet::ParseError, "#{errmsg}: 1st argument should be a hash") if !n_metadata.is_a?(Hash)
raise(Puppet::ParseError, "#{errmsg}: 1st argument should be a valid network_metadata hash") if !n_metadata.has_key?('nodes')
raise(Puppet::ParseError, "#{errmsg}: 2nd argument should be an string") if !fqdn.is_a?(String)
nodes = n_metadata['nodes']
# Using unrequired node_property bellow -- is a workaround for ruby 1.8
mynode = nodes.reject {|node_name, node_property| fqdn != node_property['fqdn']}
raise(Puppet::ArgumentError, "#{errmsg}: No matching node found") if mynode.empty?
return mynode.values[0]
end
end

View File

@ -533,7 +533,6 @@
- id: enable_nova_compute_service
type: skipped
# POST-DEPLOYMENT TASKS
# The task configure_default_route reinstalls openvswitch-switch
@ -651,8 +650,6 @@
- tunnel-zones-midonet
reexecute_on:
- deploy_changes
required_for:
- openstack-network-end
version: 2.0.0
type: puppet
parameters:
@ -894,6 +891,24 @@
condition:
yaql_exp: "$.midonet.mem = true and $.midonet.mem_insights = true"
# Kill the unneccessary agents the hard way
- id: openstack-network-disable-services
role:
- primary-controller
- controller
requires:
- post_deployment_start
reexecute_on:
- deploy_changes
required_for:
- post_deployment_end
version: 2.0.0
type: puppet
parameters:
puppet_manifest: puppet/manifests/midonet-disable-services.pp
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
timeout: 1440
# In the end..
# Grab the Old Astute.yaml and save it somewhere so we can parse it