4661d17814
... so that correct packages and services are required without re-defining them in resource implementations. Change-Id: I031ea1bf8722593f9d2e326bce16801910971f97
60 lines
1.4 KiB
Ruby
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
|