Support installing hyperv mech_driver in Neutron cookbook
Hyperv mech_driver has been moved out of neutron core code, and it became a stand alone package. Current network cookbook did not install the hyperv mech_driver, so add the logic in hyperv recipe to intall the hyperv mech_driver when the hyperv is configured in mechanism_drivers of environment. Currently there is no package for hyperv mech_driver in all linux distribution, as the hyperv mech_driver code has been moved out of neutron code. So here names the package networking-hyperv by default, overwrite the package name when other users generate the packages themselves. Change-Id: I0d27f41e2dc068fc0dd2a67fef5999a006f685dd Closes-Bug: 1475151
This commit is contained in:
parent
b49df0cb25
commit
08bd03d011
|
@ -59,6 +59,13 @@ Identity-registration
|
|||
|
||||
- Registers the OpenStack Network API endpoint and service user with Keystone
|
||||
|
||||
hyperv
|
||||
------
|
||||
|
||||
- Install the drivers for hyperv needed by OpenStack network.
|
||||
- The networking-hyperv has not been included by linux distributions, it needs been created by users.
|
||||
- The source code of networking-hyperv maintains in https://github.com/stackforge/networking-hyperv.
|
||||
|
||||
Attributes
|
||||
==========
|
||||
|
||||
|
|
|
@ -1110,6 +1110,8 @@ when 'fedora', 'rhel' # :pragma-foodcritic: ~FC024 - won't fix this
|
|||
'neutron_openvswitch_agent_service' => 'neutron-openvswitch-agent',
|
||||
'neutron_linuxbridge_agent_service' => 'neutron-linuxbridge-agent',
|
||||
'neutron_server_service' => 'neutron-server',
|
||||
# TODO: networking-hperv has not been included in Fedora or RHEL distribution, need be created by users.
|
||||
'neutron_hyperv_packages' => ['networking-hyperv'],
|
||||
'package_overrides' => ''
|
||||
}
|
||||
when 'suse'
|
||||
|
@ -1143,6 +1145,8 @@ when 'suse'
|
|||
'neutron_openvswitch_agent_service' => 'openstack-neutron-openvswitch-agent',
|
||||
'neutron_linuxbridge_agent_service' => 'openstack-neutron-linuxbridge-agent',
|
||||
'neutron_server_service' => 'openstack-neutron',
|
||||
# TODO: networking-hperv has not been included in SUSE distribution, need be created by users.
|
||||
'neutron_hyperv_packages' => ['networking-hyperv'],
|
||||
'package_overrides' => ''
|
||||
}
|
||||
when 'debian'
|
||||
|
@ -1175,6 +1179,8 @@ when 'debian'
|
|||
'neutron_openvswitch_agent_service' => 'neutron-plugin-openvswitch-agent',
|
||||
'neutron_linuxbridge_agent_service' => 'neutron-plugin-linuxbridge-agent',
|
||||
'neutron_server_service' => 'neutron-server',
|
||||
# TODO: networking-hperv has not been included in DEBIAN distribution, need be created by users.
|
||||
'neutron_hyperv_packages' => ['networking-hyperv'],
|
||||
'package_overrides' => "-o Dpkg::Options::='--force-confold' -o Dpkg::Options::='--force-confdef'"
|
||||
}
|
||||
end
|
||||
|
|
|
@ -12,6 +12,7 @@ recipe 'openstack-network::openvswitch', 'Installs packages required for OVS'
|
|||
recipe 'openstack-network::metadata_agent', 'Installs packages required for a OpenStack Network Metadata Agent'
|
||||
recipe 'openstack-network::identity_registration', 'Registers OpenStack Network endpoints and service user with Keystone'
|
||||
recipe 'openstack-network::vpn_agent', 'Installs packages required for Network VPN Agent'
|
||||
recipe 'openstack-network::hyperv', 'Installs packages required for OpenStack Network Hyperv drivers'
|
||||
|
||||
%w(ubuntu fedora redhat centos suse).each do |os|
|
||||
supports os
|
||||
|
|
|
@ -19,5 +19,15 @@
|
|||
#
|
||||
|
||||
['quantum', 'neutron'].include?(node['openstack']['compute']['network']['service_type']) || return
|
||||
node['openstack']['network']['ml2']['mechanism_drivers'].downcase.include?('hyperv') || return
|
||||
|
||||
platform_options = node['openstack']['network']['platform']
|
||||
|
||||
platform_options['neutron_hyperv_packages'].each do |pkg|
|
||||
package pkg do
|
||||
options platform_options['package_overrides']
|
||||
action :upgrade
|
||||
end
|
||||
end
|
||||
|
||||
include_recipe 'openstack-network'
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Encoding: utf-8
|
||||
require_relative 'spec_helper'
|
||||
|
||||
describe 'openstack-network::hyperv' do
|
||||
describe 'redhat' do
|
||||
let(:runner) { ChefSpec::SoloRunner.new(REDHAT_OPTS) }
|
||||
let(:node) { runner.node }
|
||||
let(:chef_run) do
|
||||
node.set['openstack']['compute']['network']['service_type'] = 'neutron'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
|
||||
include_context 'neutron-stubs'
|
||||
|
||||
it 'does not install neutron hyperv package when hyperv mech_driver is not included' do
|
||||
expect(chef_run).not_to upgrade_package('networking-hyperv')
|
||||
end
|
||||
|
||||
it 'install neutron hyperv package when hyperv mech_driver is included' do
|
||||
node.set['openstack']['network']['ml2']['mechanism_drivers'] = 'hyperv'
|
||||
expect(chef_run).to upgrade_package('networking-hyperv')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
# Encoding: utf-8
|
||||
require_relative 'spec_helper'
|
||||
|
||||
describe 'openstack-network::hyperv' do
|
||||
describe 'suse' do
|
||||
let(:runner) { ChefSpec::SoloRunner.new(SUSE_OPTS) }
|
||||
let(:node) { runner.node }
|
||||
let(:chef_run) do
|
||||
node.set['openstack']['compute']['network']['service_type'] = 'neutron'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
|
||||
include_context 'neutron-stubs'
|
||||
|
||||
it 'does not install neutron hyperv package when hyperv mech_driver is not included' do
|
||||
expect(chef_run).not_to upgrade_package('networking-hyperv')
|
||||
end
|
||||
|
||||
it 'install neutron hyperv package when hyperv mech_driver is included' do
|
||||
node.set['openstack']['network']['ml2']['mechanism_drivers'] = 'hyperv'
|
||||
expect(chef_run).to upgrade_package('networking-hyperv')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
# Encoding: utf-8
|
||||
require_relative 'spec_helper'
|
||||
|
||||
describe 'openstack-network::hyperv' do
|
||||
describe 'ubuntu' do
|
||||
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) }
|
||||
let(:node) { runner.node }
|
||||
let(:chef_run) do
|
||||
node.set['openstack']['compute']['network']['service_type'] = 'neutron'
|
||||
runner.converge(described_recipe)
|
||||
end
|
||||
|
||||
include_context 'neutron-stubs'
|
||||
|
||||
it 'does not install neutron hyperv package when hyperv mech_driver is not included' do
|
||||
expect(chef_run).not_to upgrade_package('networking-hyperv')
|
||||
end
|
||||
|
||||
it 'install neutron hyperv package when hyperv mech_driver is included' do
|
||||
node.set['openstack']['network']['ml2']['mechanism_drivers'] = 'hyperv'
|
||||
expect(chef_run).to upgrade_package('networking-hyperv')
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue