--- /dev/null
+#
+# This manifest is intended to demonstrate how to provision the
+# resources necessary to boot a vm with network connectivity provided
+# by neutron.
+#
+# Note that a neutron_router resource must declare a dependency on the
+# first subnet of the gateway network. Other dependencies for the
+# resources used in this example can be automatically determined.
+#
+
+keystone_tenant { 'admin':
+ ensure => present,
+}
+
+neutron_network { 'public':
+ ensure => present,
+ router_external => 'True',
+ tenant_name => 'admin',
+}
+
+neutron_subnet { 'public_subnet':
+ ensure => 'present',
+ cidr => '172.24.4.224/28',
+ network_name => 'public',
+ tenant_name => 'admin',
+}
+
+keystone_tenant { 'demo':
+ ensure => present,
+}
+
+neutron_network { 'private':
+ ensure => present,
+ tenant_name => 'demo',
+}
+
+neutron_subnet { 'private_subnet':
+ ensure => present,
+ cidr => '10.0.0.0/24',
+ network_name => 'private',
+ tenant_name => 'demo',
+}
+
+# Tenant-private router - assumes network namespace isolation
+neutron_router { 'demo_router':
+ ensure => present,
+ tenant_name => 'demo',
+ gateway_network_name => 'public',
+ require => Neutron_subnet['public_subnet'],
+}
+
+neutron_router_interface { 'demo_router:private_subnet':
+ ensure => present,
+}