diff --git a/lib/puppet/provider/nova_config/parsed.rb b/lib/puppet/provider/nova_config/parsed.rb index b72d857e3..fe1a58f31 100644 --- a/lib/puppet/provider/nova_config/parsed.rb +++ b/lib/puppet/provider/nova_config/parsed.rb @@ -23,9 +23,12 @@ Puppet::Type.type(:nova_config).provide( if hash[:line] =~ /^\s*(\S+?)\s*=\s*([\S ]+)\s*$/ hash[:name]=$1 hash[:value]=$2 - elsif hash[:line] =~ /^\s*(\S+)\s*$/ + elsif hash[:line] =~ /^\s*no(\S+)\s*$/ hash[:name]=$1 hash[:value]=false + elsif hash[:line] =~ /^\s*(\S+)\s*$/ + hash[:name]=$1 + hash[:value]=true else raise Puppet::Error, "Invalid line: #{hash[:line]}" end diff --git a/spec/unit/provider/nova_config/parsed_spec.rb b/spec/unit/provider/nova_config/parsed_spec.rb index 90715eab7..5dbd7d997 100644 --- a/spec/unit/provider/nova_config/parsed_spec.rb +++ b/spec/unit/provider/nova_config/parsed_spec.rb @@ -19,6 +19,18 @@ describe provider_class do record[:value].should == 'bar' record[:record_type].should == :parsed end + it 'should be able to parse settings without values' do + record = @provider.class.parse('--foo').first + record[:name].should == 'foo' + record[:value].should == true + record[:record_type].should == :parsed + end + it 'should be able to parse negated settings without values' do + record = @provider.class.parse('--nofoo').first + record[:name].should == 'foo' + record[:value].should == false + record[:record_type].should == :parsed + end it 'should be able to parse values that have spaces' do record = @provider.class.parse('--foo = bar or baz').first record[:name].should == 'foo'