1 Puppet::Type.type(:nova_network).provide(:nova_manage) do
3 desc "Manage nova network"
5 optional_commands :nova_manage => 'nova-manage'
7 # I need to setup caching and what-not to make this lookup performance not suck
10 network_list = nova_manage("network", "list")
12 if e.message =~ /No networks defined/
18 network_list.split("\n")[1..-1].collect do |net|
19 if net =~ /^(\S+)\s+(\S+)/
28 # this needs to be converted from a project name to an id
29 :project => '--project_id',
31 :gateway => '--gateway',
32 :bridge => '--bridge',
33 :vlan_start => '--vlan_start'
34 }.each do |param, opt|
36 optional_opts.push(opt).push(resource[param])
40 nova_manage('network', 'create',
43 resource[:num_networks],
44 resource[:network_size],
51 network_list = nova_manage("network", "list")
52 return network_list.split("\n")[1..-1].detect do |n|
53 # TODO - this does not take the CIDR into accont. Does it matter?
54 n =~ /^(\S+)\s+(#{resource[:network].split('/').first})/
63 nova_manage("network", "delete", resource[:network])