]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/neutron/spec/classes/neutron_agents_n1kv_vem_spec.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / neutron / spec / classes / neutron_agents_n1kv_vem_spec.rb
diff --git a/3rdparty/modules/neutron/spec/classes/neutron_agents_n1kv_vem_spec.rb b/3rdparty/modules/neutron/spec/classes/neutron_agents_n1kv_vem_spec.rb
new file mode 100644 (file)
index 0000000..4eeee17
--- /dev/null
@@ -0,0 +1,215 @@
+require 'spec_helper'
+
+describe 'neutron::agents::n1kv_vem' do
+
+  let :facts do
+    { :osfamily => 'RedHat' }
+  end
+
+  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_package('libnl').with_before('Package[nexus1000v]')
+    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_domain_id => 900,
+      :host_mgmt_intf     => 'eth9',
+      :portdb             => 'ovs',
+      :fastpath_flood     => 'disable'
+    }
+    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(/^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 disable/)
+    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     => 'enable',
+    }
+    end
+    it do
+      should contain_file('/etc/n1kv/n1kv.conf') \
+        .with_content(/^fastpath-flood enable/)
+      should contain_file('/etc/n1kv/n1kv.conf') \
+        .without_content(/^fastpath-flood disable/)
+    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