24 lines
617 B
Ruby
24 lines
617 B
Ruby
Puppet::Type.type(:nova_floating).provide(:nova_manage) do
|
|
|
|
desc "Manage nova floating"
|
|
|
|
optional_commands :nova_manage => 'nova-manage'
|
|
|
|
def exists?
|
|
# Calculate num quads to grab for prefix
|
|
mask=resource[:network].sub(/.*\/([0-9][0-9]?)/, '\1').to_i
|
|
num_quads = 4 - mask / 8
|
|
prefix=resource[:network].sub(/(\.[0-9]{1,3}){#{num_quads}}(\/[0-9]{1,2})?$/, '') + "."
|
|
return nova_manage("floating", "list").match(/#{prefix}/)
|
|
end
|
|
|
|
def create
|
|
nova_manage("floating", "create", resource[:network])
|
|
end
|
|
|
|
def destroy
|
|
nova_manage("floating", "delete", resource[:network])
|
|
end
|
|
|
|
end
|