puppet-neutron/lib/puppet/type/neutron_router_interface.rb

60 lines
1.4 KiB
Ruby

Puppet::Type.newtype(:neutron_router_interface) do
desc <<-EOT
This is currently used to model the creation of
neutron router interfaces.
Router interfaces are an association between a router and a
subnet.
EOT
ensurable
newparam(:name, :namevar => true) do
desc <<-EOT
The name is used to derive the names of the subnet and router,
using the format RouterName:SubnetName, for example to attach
Subnet1 to Router1 you should name this resource Router1:Subnet1
EOT
newvalues(/^\S+:\S+$/)
end
newproperty(:id) do
desc 'interface id. Read Only.'
validate do |v|
raise(Puppet::Error, 'This is a read only property')
end
end
newproperty(:router_name) do
desc 'router to which to attach this interface. Read Only. set with the name'
validate do |v|
raise(Puppet::Error, 'This is a read only property')
end
end
newproperty(:subnet_name) do
desc 'subnet to which to attach this interface. Read Only. set with the name'
validate do |v|
raise(Puppet::Error, 'This is a read only property')
end
end
newproperty(:port) do
desc 'An existing neutron port to which a router interface should be assigned'
end
autorequire(:anchor) do
['neutron::service::end']
end
autorequire(:neutron_router) do
self[:name].split(':', 2).first
end
autorequire(:neutron_subnet) do
self[:name].split(':', 2).last
end
end