diff --git a/manifests/provision.pp b/manifests/provision.pp index 2414071..bfadca9 100644 --- a/manifests/provision.pp +++ b/manifests/provision.pp @@ -118,53 +118,67 @@ source => $image_source, } - ## Networks + ## Neutron - neutron_network { $public_network_name: - ensure => present, - router_external => true, - tenant_name => $admin_tenant_name, - } - neutron_subnet { $public_subnet_name: - ensure => 'present', - cidr => $floating_range, - enable_dhcp => false, - network_name => $public_network_name, - tenant_name => $admin_tenant_name, - } - neutron_network { $private_network_name: - ensure => present, - tenant_name => $tenant_name, - } - neutron_subnet { $private_subnet_name: - ensure => present, - cidr => $fixed_range, - network_name => $private_network_name, - tenant_name => $tenant_name, - } - # Tenant-owned router - assumes network namespace isolation - neutron_router { $router_name: - ensure => present, - tenant_name => $tenant_name, - gateway_network_name => $public_network_name, - # A neutron_router resource must explicitly declare a dependency on - # the first subnet of the gateway network. - require => Neutron_subnet[$public_subnet_name], - } - neutron_router_interface { "${router_name}:${private_subnet_name}": - ensure => present, - } + if $neutron_available { + $neutron_deps = [Neutron_network[$public_network_name]] - if $setup_ovs_bridge { - neutron_l3_ovs_bridge { $public_bridge_name: + neutron_network { $public_network_name: + ensure => present, + router_external => true, + tenant_name => $admin_tenant_name, + } + neutron_subnet { $public_subnet_name: + ensure => 'present', + cidr => $floating_range, + enable_dhcp => false, + network_name => $public_network_name, + tenant_name => $admin_tenant_name, + } + neutron_network { $private_network_name: ensure => present, - subnet_name => $public_subnet_name, + tenant_name => $tenant_name, + } + neutron_subnet { $private_subnet_name: + ensure => present, + cidr => $fixed_range, + network_name => $private_network_name, + tenant_name => $tenant_name, + } + # Tenant-owned router - assumes network namespace isolation + neutron_router { $router_name: + ensure => present, + tenant_name => $tenant_name, + gateway_network_name => $public_network_name, + # A neutron_router resource must explicitly declare a dependency on + # the first subnet of the gateway network. + require => Neutron_subnet[$public_subnet_name], + } + neutron_router_interface { "${router_name}:${private_subnet_name}": + ensure => present, + } + + if $setup_ovs_bridge { + neutron_l3_ovs_bridge { $public_bridge_name: + ensure => present, + subnet_name => $public_subnet_name, + } } } + else { + $neutron_deps = [] + #TODO(marun): Provision for nova network + } ## Tempest if $configure_tempest { + $tempest_requires = concat([ + Keystone_user[$username], + Keystone_user[$alt_username], + Glance_image[$image_name], + ], $neutron_deps) + class { 'tempest': tempest_repo_uri => $tempest_repo_uri, tempest_clone_path => $tempest_clone_path, @@ -195,12 +209,7 @@ neutron_available => $neutron_available, nova_available => $nova_available, swift_available => $swift_available, - require => [ - Keystone_user[$username], - Keystone_user[$alt_username], - Glance_image[$image_name], - Neutron_network[$public_network_name], - ], + require => $tempest_requires, } } diff --git a/spec/classes/openstack_provision_spec.rb b/spec/classes/openstack_provision_spec.rb index 2782439..4a78a59 100644 --- a/spec/classes/openstack_provision_spec.rb +++ b/spec/classes/openstack_provision_spec.rb @@ -38,4 +38,18 @@ end + describe 'should be possible to provision with neutron disabled' do + let :params do + { + :configure_tempest => true, + :neutron_available => false, + :tempest_repo_revision => 'stable/grizzly' + } + end + + it { should contain_class('tempest').with( + :tempest_repo_revision => 'stable/grizzly' + ) } + end + end