diff --git a/manifests/agents/n1kv_vem.pp b/manifests/agents/n1kv_vem.pp index 9a0a8b25b..04e128816 100644 --- a/manifests/agents/n1kv_vem.pp +++ b/manifests/agents/n1kv_vem.pp @@ -1,5 +1,6 @@ # == Class: n1kv_vem # +# DEPRECATED ! # Deploy N1KV VEM on compute and network nodes. # Support exists and tested for RedHat. # (For Ubuntu/Debian platforms few changes and testing pending.) @@ -121,133 +122,5 @@ class neutron::agents::n1kv_vem ( $fastpath_flood = 'enable' ) { - include neutron::deps - include neutron::params - require vswitch::ovs - - Exec { path => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/' ] } - - if($::osfamily != 'Redhat') { - #current support exists for Redhat family. - #Support for Debian will be added soon. - fail("Unsupported osfamily ${::osfamily}") - } - - #Check source of n1kv-vem image:yum-repo (or) local file in 'files' directory - if $n1kv_source != '' { - if ($n1kv_source =~ /^http/) or ($n1kv_source =~ /^ftp/) { - $vemimage_uri = 'repo' - } else { - $vemimage_uri = 'file' - $vemtgtimg = "/var/n1kv/${n1kv_source}" - } - } else { - $vemimage_uri = 'unspec' - } - - - package { 'libnl': - ensure => $package_ensure, - name => $::neutron::params::libnl_package, - tag => ['neutron-support-package'], - } - - file { - '/etc/n1kv': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755'; - '/var/n1kv': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - } - - #specify template corresponding to 'n1kv.conf' - file {'/etc/n1kv/n1kv.conf': - ensure => present, - owner => 'root', - group => 'root', - mode => '0664', - content => template('neutron/n1kv.conf.erb'), - require => File['/etc/n1kv'], - } - - if $vemimage_uri == 'file' { - #specify location on target-host where image file will be downloaded to. - #Later vem package: 'nexus1000v' will be installed from this file. - file { $vemtgtimg: - owner => 'root', - group => 'root', - mode => '0664', - source => "puppet:///modules/neutron/${n1kv_source}", - require => File['/var/n1kv'], - } - package {'nexus1000v': - ensure => $n1kv_version, - provider => $::neutron::params::package_provider, - source => $vemtgtimg, - tag => ['neutron-support-package', 'openstack'], - require => File[$vemtgtimg] - } - } else { - if $vemimage_uri == 'repo' { - #vem package: 'nexus1000v' will be downloaded and installed - #from below repo. - yumrepo { 'cisco-vem-repo': - baseurl => $n1kv_source, - descr => 'Repo for VEM Image', - enabled => 1, - gpgcheck => 1, - gpgkey => "${n1kv_source}/RPM-GPG-KEY" - #proxy => '_none_', - } - warning('cisco-vem-repo repository management is deprecated, it will be dropped in a future release.') - } - package {'nexus1000v': - ensure => $package_ensure, - tag => ['neutron-support-package', 'openstack'], - } - } - warning('nexus1000v package management is deprecated, it will be dropped in a future release.') - - if $manage_service { - if $enable { - $service_ensure = 'running' - } else { - $service_ensure = 'stopped' - } - } - - service { 'nexus1000v': - ensure => $service_ensure, - } - warning('nexus1000v service management is deprecated, it will be dropped in a future release.') - - #Upon config change in 'n1kv.conf' execute below 'vemcmd reread config'. - #No need to restart service. - exec { 'vemcmd reread config': - subscribe => File['/etc/n1kv/n1kv.conf'], - refreshonly => true, - require => Service['nexus1000v'] - } - - if $vteps_in_same_subnet == true { - $my_sysctl_settings = { - 'net.ipv4.conf.default.rp_filter' => { value => 2 }, - 'net.ipv4.conf.all.rp_filter' => { value => 2 }, - 'net.ipv4.conf.default.arp_ignore' => { value => 1 }, - 'net.ipv4.conf.all.arp_ignore' => { value => 1 }, - 'net.ipv4.conf.all.arp_announce' => { value => 2 }, - 'net.ipv4.conf.default.arp_announce' => { value => 2 }, - } - create_resources(sysctl::value,$my_sysctl_settings) - } - - Package['libnl'] -> Package['nexus1000v'] - Service['openvswitch'] ~> Package['nexus1000v'] - File['/etc/n1kv/n1kv.conf'] -> Package['nexus1000v'] - Package['nexus1000v'] ~> Service['nexus1000v'] + warning('The support N1kv driver was deprecated and has no effect') } diff --git a/manifests/plugins/ml2/cisco/nexus1000v.pp b/manifests/plugins/ml2/cisco/nexus1000v.pp index 2fbab328d..b02e231df 100644 --- a/manifests/plugins/ml2/cisco/nexus1000v.pp +++ b/manifests/plugins/ml2/cisco/nexus1000v.pp @@ -1,4 +1,5 @@ # +# DEPRECATED!! # Configure the Mech Driver for cisco nexus 1000v neutron plugin # # === Parameters @@ -85,26 +86,8 @@ class neutron::plugins::ml2::cisco::nexus1000v ( $max_vsm_retries = '2', $restrict_policy_profiles = 'False', $enable_vif_type_n1kv = 'False', -) -{ +) { - include neutron::deps - include neutron::plugins::ml2::cisco - - neutron_plugin_ml2 { - 'ml2_cisco_n1kv/n1kv_vsm_ips' : value => $n1kv_vsm_ip; - 'ml2_cisco_n1kv/username' : value => $n1kv_vsm_username; - 'ml2_cisco_n1kv/password' : value => $n1kv_vsm_password, secret => true; - 'ml2_cisco_n1kv/default_policy_profile' : value => $default_policy_profile; - 'ml2_cisco_n1kv/default_vlan_network_profile' : value => $default_vlan_network_profile; - 'ml2_cisco_n1kv/default_vxlan_network_profile' : value => $default_vxlan_network_profile; - 'ml2_cisco_n1kv/poll_duration' : value => $poll_duration; - 'ml2_cisco_n1kv/http_pool_size' : value => $http_pool_size; - 'ml2_cisco_n1kv/http_timeout' : value => $http_timeout; - 'ml2_cisco_n1kv/sync_interval' : value => $sync_interval; - 'ml2_cisco_n1kv/max_vsm_retries' : value => $max_vsm_retries; - 'ml2_cisco_n1kv/restrict_policy_profiles' : value => $restrict_policy_profiles; - 'ml2_cisco_n1kv/enable_vif_type_n1kv' : value => $enable_vif_type_n1kv; - } + warning('The support N1kv driver was deprecated and has no effect') } diff --git a/releasenotes/notes/deprecate-n1kv-driver-b851f8fbfcef8a48.yaml b/releasenotes/notes/deprecate-n1kv-driver-b851f8fbfcef8a48.yaml new file mode 100644 index 000000000..94f30677f --- /dev/null +++ b/releasenotes/notes/deprecate-n1kv-driver-b851f8fbfcef8a48.yaml @@ -0,0 +1,4 @@ +--- +deprecations: + - | + Support for Nexus 1000v driver has been deprecated and has no effect now. diff --git a/spec/classes/neutron_agents_n1kv_vem_spec.rb b/spec/classes/neutron_agents_n1kv_vem_spec.rb deleted file mode 100644 index c1354f3a3..000000000 --- a/spec/classes/neutron_agents_n1kv_vem_spec.rb +++ /dev/null @@ -1,260 +0,0 @@ -require 'spec_helper' - -describe 'neutron::agents::n1kv_vem' do - shared_examples 'neutron::agents::n1kv_vem' do - it 'should have a n1kv-vem config file' do - should contain_file('/etc/n1kv/n1kv.conf').with( - :ensure => 'present', - :owner => 'root', - :group => 'root', - :mode => '0664' - ) - end - - it 'install n1kv-vem' do - should contain_service('openvswitch').with_notify(['Package[nexus1000v]']) - should contain_package('nexus1000v').with_notify(['Service[nexus1000v]']) - should contain_service('nexus1000v').with_ensure('running') - end - - context 'with local file vem rpm' do - let :params do - { - :n1kv_source => 'vem.rpm' - } - end - - it 'verify dependency' do - should contain_package('nexus1000v').with_source('/var/n1kv/vem.rpm') - should contain_file('/var/n1kv/vem.rpm').that_requires('File[/var/n1kv]') - should contain_file('/var/n1kv/vem.rpm').with( - :owner => 'root', - :group => 'root', - :mode => '0664' - ) - end - end - - context 'remote vem rpm' do - let :params do - { - :n1kv_source => 'http://www.cisco.com/repo' - } - end - - it 'verify dependency' do - should contain_package('nexus1000v').without_source - should contain_yumrepo('cisco-vem-repo').with( - :baseurl => 'http://www.cisco.com/repo', - :enabled => 1 - ) - end - end - - it 'execute reread config upon config change' do - should contain_exec('vemcmd reread config') \ - .that_subscribes_to('File[/etc/n1kv/n1kv.conf]') - end - - context 'verify n1kv.conf default' do - let :params do - { - :n1kv_vsm_ip => '9.0.0.1', - :n1kv_vsm_ipv6 => '::3', - :n1kv_vsm_domain_id => 900, - :host_mgmt_intf => 'eth9', - :portdb => 'ovs', - :fastpath_flood => 'enable' - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^l3control-ipaddr 9.0.0.1/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^l3control-ipv6addr ::3/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^switch-domain 900/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^host-mgmt-intf eth9/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^portdb ovs/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^phys/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^virt/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^node-type compute/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^fastpath-flood enable/) - end - end - - context 'verify n1kv.conf svs-mode with default IPv6 address' do - let :params do - { - :n1kv_vsm_ipv6 => '::1' - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^svs-mode V6/) - end - end - - context 'verify n1kv.conf svs-mode with non-default IPv6 address' do - let :params do - { - :n1kv_vsm_ipv6 => '::3' - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^svs-mode V6/) - end - end - - context 'verify node_type' do - let :params do - { - :node_type => 'network', - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^node-type network/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^node-type compute/) - end - end - - context 'verify portdb' do - let :params do - { - :portdb => 'vem', - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^portdb vem/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^portdb ovs/) - end - end - - context 'verify fastpath_flood' do - let :params do - { - :fastpath_flood => 'disable', - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^fastpath-flood disable/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .without_content(/^fastpath-flood enable/) - end - end - - context 'verify n1kv.conf with uplinks' do - let :params do - { - :uplink_profile => { 'eth1' => 'prof1', - 'eth2' => 'prof2' - } - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^phys eth1 profile prof1/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^phys eth2 profile prof2/) - end - end - - context 'verify n1kv.conf with vtep info' do - let :params do - { - :vtep_config => { 'vtep1' => { 'profile' => 'profint', - 'ipmode' => 'dhcp' - }, - 'vtep2' => { 'profile' => 'profint', - 'ipmode' => 'static', - 'ipaddress' => '192.168.1.1', - 'netmask' => '255.255.255.0' - } - } - } - end - - it do - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^virt vtep1 profile profint mode dhcp/) - should contain_file('/etc/n1kv/n1kv.conf') \ - .with_content(/^virt vtep2 profile profint mode static/) - end - end - - context 'with manage_service as false' do - let :params do - { - :manage_service => false - } - end - - it 'should not start/stop service' do - should contain_service('nexus1000v').without_ensure - end - end - - context 'with manage_service true and enable_service false' do - let :params do - { - :manage_service => true, - :enable => false - } - end - - it 'should stop service' do - should contain_service('nexus1000v').with_ensure('stopped') - end - end - - context 'verify sysctl setting with vteps_in_same_subnet true' do - let :params do - { - :vteps_in_same_subnet => true - } - end - - it do - should contain_sysctl__value('net.ipv4.conf.default.rp_filter').with_value('2') - should contain_sysctl__value('net.ipv4.conf.all.rp_filter').with_value('2') - should contain_sysctl__value('net.ipv4.conf.default.arp_ignore').with_value('1') - should contain_sysctl__value('net.ipv4.conf.all.arp_ignore').with_value('1') - should contain_sysctl__value('net.ipv4.conf.all.arp_announce').with_value('2') - should contain_sysctl__value('net.ipv4.conf.default.arp_announce').with_value('2') - end - end - end - - on_supported_os({ - :supported_os => OSDefaults.get_supported_os - }).each do |os,facts| - context "on #{os}" do - let (:facts) do - facts.merge!(OSDefaults.get_facts()) - end - - if facts[:osfamily] == 'RedHat' - it_behaves_like 'neutron::agents::n1kv_vem' - end - end - end -end diff --git a/spec/classes/neutron_plugins_ml2_cisco_nexus1000v_spec.rb b/spec/classes/neutron_plugins_ml2_cisco_nexus1000v_spec.rb deleted file mode 100644 index c9418b9a7..000000000 --- a/spec/classes/neutron_plugins_ml2_cisco_nexus1000v_spec.rb +++ /dev/null @@ -1,74 +0,0 @@ -require 'spec_helper' - -describe 'neutron::plugins::ml2::cisco::nexus1000v' do - let :pre_condition do - "class { 'neutron::keystone::authtoken': - password => 'passw0rd', - } - class { 'neutron::server': } - class { 'neutron': - core_plugin => 'ml2' - }" - end - - let :default_params do - { - :n1kv_vsm_ip => '10.10.10.10', - :n1kv_vsm_username => 'admin', - :n1kv_vsm_password => 'password', - :default_policy_profile => 'default-pp', - :default_vlan_network_profile => 'default-vlan-np', - :default_vxlan_network_profile => 'default-vxlan-np', - :poll_duration => '60', - :http_pool_size => '4', - :http_timeout => '15', - :sync_interval => '300', - :max_vsm_retries => '2', - :restrict_policy_profiles => 'False', - :enable_vif_type_n1kv => 'False', - } - end - - let :params do - {} - end - - shared_examples 'neutron cisco ml2 nexus1000v plugin' do - - before do - params.merge!(default_params) - end - - it { should contain_class('neutron::params') } - - it do - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/n1kv_vsm_ips').with_value(params[:n1kv_vsm_ip]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/username').with_value(params[:n1kv_vsm_username]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/password').with_value(params[:n1kv_vsm_password]).with_secret(true) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_policy_profile').with_value(params[:default_policy_profile]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vlan_network_profile').with_value(params[:default_vlan_network_profile]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vxlan_network_profile').with_value(params[:default_vxlan_network_profile]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/poll_duration').with_value(params[:poll_duration]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_pool_size').with_value(params[:http_pool_size]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_timeout').with_value(params[:http_timeout]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/sync_interval').with_value(params[:sync_interval]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/max_vsm_retries').with_value(params[:max_vsm_retries]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/restrict_policy_profiles').with_value(params[:restrict_policy_profiles]) - should contain_neutron_plugin_ml2('ml2_cisco_n1kv/enable_vif_type_n1kv').with_value(params[:enable_vif_type_n1kv]) - end - end - - on_supported_os({ - :supported_os => OSDefaults.get_supported_os - }).each do |os,facts| - context "on #{os}" do - let (:facts) do - facts.merge!(OSDefaults.get_facts()) - end - - if facts[:osfamily] == 'RedHat' - it_behaves_like 'neutron cisco ml2 nexus1000v plugin' - end - end - end -end diff --git a/templates/n1kv.conf.erb b/templates/n1kv.conf.erb deleted file mode 100644 index 174be184b..000000000 --- a/templates/n1kv.conf.erb +++ /dev/null @@ -1,184 +0,0 @@ -# This is the N1KV VEM configuration file. -# <n1kv.conf> file contains all the configuration parameters for VEM operation. -# Please find below a brief explanation of these parameters and their meaning. -# Optional Parameters and Default Values of parameters are explicitly stated. -# Note: -# a)Mandatory parameters are needed for proper VEM operation. -# N1KV DP/DPA should start even if these are not specified. -# But there will be functional impact. For eg: in VSM connectivity -# b)For any updates to parameters to take effect, you just need to execute -# 'vemcmd reread config'. Its the least-disruptive way for changes to -# take effect. However for certain params, n1kv service need to be restarted. -# These parameter are stated explicitly (restart_on_modify: YES). -# - -# -#<vsm-connection-params> -# -# TAG: switch-domain -# Description: -# Optional: No -# Default: 1000 -# restart_on_modify: No -switch-domain <%= @n1kv_vsm_domain_id %> - -# TAG: l3control-ipaddr -# Description: IP Address of VSM Mgmt I/F -# Optional: No -# Default: 127.0.0.1 -# restart_on_modify: No -l3control-ipaddr <%= @n1kv_vsm_ip %> - -# TAG: l3control-ipv6addr -# Description: IPv6 Address of VSM Mgmt I/F -# Optional: No -# Default: ::1 -# restart_on_modify: No -l3control-ipv6addr <%= @n1kv_vsm_ipv6 %> - -# Set svs-mode to V6 if IPv6 address for VSM -# is set to something other than default ::1. -# This tells VEM to communicate with VSM on -# IPv6 instead of the default IPv4 option -<% if @n1kv_vsm_ipv6 != '::1' -%> -svs-mode V6 -<% end -%> - -# TAG: host-mgmt-intf -# Description: Management interface of the Host -# Optional: No (on N1KV, we need this -# for Host Identification on VSM). -# Default: lo -# restart_on_modify: Yes -host-mgmt-intf <%= @host_mgmt_intf %> - -#<Port-Profile Mapping> -# Description: Port-Profile mapping for all VEM managed Interfaces. -# Optional: Yes -# restart_on_modify: No -# -# Note: Do not specify Host Management Interface here. -# We do yet support System Ports (Ports which need to be up all time: Post Reboot/VEM Upgrade). -# -# Format for physical ports: -# phys <port-name> profile <profile-name> -#phys eth1 profile sys-uplink -#phys eth2 profile uplink2 - -<% @uplink_profile.each do |port, profile| -%> -phys <%= port%> profile <%= profile%> -<% end -%> - -# Format for non-vm virt ports. For instance: VTEP ports. -# virt <port-name> profile <profile-name> [mode static|dhcp] [address <ipaddr>] -# [netmask <netmask ip>] [mac <macaddr>] -# [] -->indicates optional parameters. -#Eg: -#virt vtep3 profile profint mode dhcp -#virt vtep1 profile profint mode dhcp mac 00:11:22:33:44:55 -#virt vtep2 profile profint mode static address 192.168.2.91 netmask 255.255.255.0 -#virt vtep2 profile profint mode static address 192.168.2.91 netmask 255.255.255.0 mac 00:22:22:33:44:55 - -<% @vtep_config.each do |port, params| -%> -<% if params['ipmode'] == 'dhcp' -%> -virt <%= port%> profile <%= params['profile']%> mode dhcp -<% else-%> -virt <%= port%> profile <%= params['profile']%> mode static address <%= params['ipaddress']%> netmask <%= params['netmask']%> -<% end -%> -<% end -%> - -# TAG: uvem-ovs-brname -# Description: Default Open VSwitch Bridge Name -# Optional: YES. -# Default: n1kvdvs -# restart_on_modify: Yes -# Format: -# uvem-ovs-brname n1kvdvs -uvem-ovs-brname br-int - -# TAG: portdb -# Description: PortDB (ovs|vem) -# Optional: YES. -# Default: ovs -# restart_on_modify: Yes -# Format: -# portdb vem -portdb <%= @portdb %> - -# TAG: node-type -# Description: Type of Node: 'compute' (or) 'neutron' -# Optional: YES. -# Default: compute -# restart_on_modify: No -# Format: -# node-type compute -node-type <%= @node_type %> - -# The below parameters are not commonly modified. -# -# -#<system-port-profile-Info> -# Description: System Port Profiles. -# Optional: Yes (If there are no System Interfaces: Mgmt I/F etc) -# restart_on_modify: No -# -#Trunk Profile Format -#profile <name> trunk <vlan> -#profile <name> native-vlan <vlan> -#profile <name> mtu <mtu-size> -# -#Access Profile -#profile <name> access <vlan> -#profile <name> mtu <mtu-size> - -# TAG: dp-np-threads -# Description: Number of datapath threads to process normal priority packets -# Optional: YES -# Default: 4 -# restart_on_modify: Yes -# Format: dp-np-threads <1..32> - -# TAG: dp-lp-threads -# Description: Number of datapath threads to process low priority packets -# Optional: YES -# Default: 1 -# restart_on_modify: Yes -# Format: dp-lp-threads <1..32> - -# TAG: dp-hp-threads -# Description: Number of datapath threads to process high priority packets -# Optional: YES -# Default: 1 -# restart_on_modify: Yes -# Format: dp-hp-threads <1..32> - -# TAG: dp-thread-sockets -# Description: Number of packet sockets each datapath thread creates -# Optional: YES -# Default: 1 -# restart_on_modify: Yes -# Format: dp-thread-sockets <1..16> - -# TAG: dp-thread-socket-rbuflen -# Description: Receive buffer length of each packet socket -# Optional: YES -# Default: 8 MBytes -# restart_on_modify: Yes -# Format: dp-thread-socket-rbuflen <0..255> -# Note: 0 - use system default - -# TAG: dp-thread-socket-rrnglen -# Description: Rx-ring length of each packet socket -# Optional: YES -# Default: 4096 -# restart_on_modify: Yes -# Format: dp-thread-socket-rrnglen <0..16384> -# Note: 0 - disables memory map I/O - -# TAG: fastpath-flood -# Description: Enable flood of broadcast and unknown pkts in KLM -# Optional: YES -# Default: disable -# restart_on_modify: Yes -# Format: fastpath-flood <enable|disable> -fastpath-flood <%= @fastpath_flood %>