+++ /dev/null
-Puppet::Type.type(:nova_network).provide(:nova_manage) do
-
- desc "Manage nova network"
-
- optional_commands :nova_manage => 'nova-manage'
-
- # I need to setup caching and what-not to make this lookup performance not suck
- def self.instances
- begin
- network_list = nova_manage("network", "list")
- rescue Exception => e
- if e.message =~ /No networks defined/
- return []
- else
- raise(e)
- end
- end
- network_list.split("\n")[1..-1].collect do |net|
- if net =~ /^(\S+)\s+(\S+)/
- new(:name => $2 )
- end
- end.compact
- end
-
- def create
- optional_opts = []
- {
- # this needs to be converted from a project name to an id
- :project => '--project_id',
- :dns2 => '--dns2',
- :gateway => '--gateway',
- :bridge => '--bridge',
- :vlan_start => '--vlan_start'
- }.each do |param, opt|
- if resource[param]
- optional_opts.push(opt).push(resource[param])
- end
- end
-
- nova_manage('network', 'create',
- resource[:label],
- resource[:name],
- resource[:num_networks],
- resource[:network_size],
- optional_opts
- )
- end
-
- def exists?
- begin
- network_list = nova_manage("network", "list")
- return network_list.split("\n")[1..-1].detect do |n|
- # TODO - this does not take the CIDR into accont. Does it matter?
- n =~ /^(\S+)\s+(#{resource[:network].split('/').first})/
- end
- rescue
- return false
- end
- end
-
-
- def destroy
- nova_manage("network", "delete", resource[:network])
- end
-
-end