diff --git a/README.md b/README.md index 5fbac5e7..ec8173aa 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,8 @@ onevnet { '': gateway => '10.0.2.1', # add vlanid vlanid => '1550', + netmask => '255.255.0.0', + network_address => '10.0.2.0', } ``` diff --git a/lib/puppet/provider/onevnet/cli.rb b/lib/puppet/provider/onevnet/cli.rb index 03e34863..97962aa2 100644 --- a/lib/puppet/provider/onevnet/cli.rb +++ b/lib/puppet/provider/onevnet/cli.rb @@ -48,6 +48,16 @@ def create resource[:gateway] end end if resource[:gateway] + xml.TEMPLATE do + xml.NETWORK_MASK do + resource[:netmask] + end + end if resource[:netmask] + xml.TEMPLATE do + xml.NETWORK_ADDRESS do + resource[:network_address] + end + end if resource[:network_address] xml.CONTEXT do resource[:context].each do |k,v| xml.send(k.upcase, v) @@ -89,6 +99,8 @@ def self.instances :context => nil, :dnsservers => (vnet.xpath('./TEMPLATE/DNS').text.to_a unless vnet.xpath('./TEMPLATE/DNS').nil?), :gateway => (vnet.xpath('./TEMPLATE/GATEWAY').text unless vnet.xpath('./TEMPLATE/GATEWAY').nil?), + :netmask => (vnet.xpath('./TEMPLATE/NETWORK_MASK').text unless vnet.xpath('./TEMPLATE/NETWORK_MASK').nil?), + :network_address => (vnet.xpath('./TEMPLATE/NETWORK_ADDRESS').text unless vnet.xpath('./TEMPLATE/NETWORK_ADDRESS').nil?), :model => (vnet.xpath('./TEMPLATE/MODEL').text unless vnet.xpath('./TEMPLATE/MODEL').nil?), :phydev => vnet.xpath('./PHYDEV').text, :vlanid => vnet.xpath('./VLAN_ID').text diff --git a/lib/puppet/type/onevnet.rb b/lib/puppet/type/onevnet.rb index 9f3d7fae..83482f19 100644 --- a/lib/puppet/type/onevnet.rb +++ b/lib/puppet/type/onevnet.rb @@ -45,6 +45,14 @@ desc "Array of DNS servers to use" end + newproperty(:netmask) do + desc "Netmask for the network" + end + + newproperty(:network_address) do + desc "Network address for the network" + end + newproperty(:gateway) do desc "Gateway for network" end diff --git a/spec/type/onevnet_spec.rb b/spec/type/onevnet_spec.rb index 139190c8..c9c50d98 100644 --- a/spec/type/onevnet_spec.rb +++ b/spec/type/onevnet_spec.rb @@ -38,7 +38,7 @@ end end - properties = [:dnsservers, :gateway, :model, :bridge, :vlanid, :context, :phydev] + properties = [:dnsservers, :gateway, :model, :bridge, :vlanid, :context, :phydev, :netmask, :network_address] properties.each do |property| it "should have a #{property} property" do @@ -80,6 +80,16 @@ @vnet[:phydev].should == 'eth0' end + it 'should have property :netmask' do + @vnet[:netmask] = '255.255.0.0' + @vnet[:netmask].should == '255.255.0.0' + end + + it 'should have property network_address' do + @vnet[:network_address] = '10.0.2.0' + @vnet[:network_address].should == '10.0.2.0' + end + parameter_tests = { :name => { :valid => ["test", "foo"],