From 8ac0db49280b7c4451bff6a3e66c13d43a167b12 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 24 Nov 2022 02:11:01 +0900 Subject: [PATCH] Remove logic for old swift-ring-builder swift 2.10.0 was released in 2016. We no longer need to support even older versions. The output format depends on the version currently installed, thus the latest logic should work as long as the same release (or even a bit older release) is installed. This also updates the logic to skip the header lines. The new logic is considered to be more robust, because it works even when additional lines are added. Change-Id: I694ca4c046f490e4ffecf2101f3f147a69045162 --- lib/puppet/provider/swift_ring_builder.rb | 104 +-------- .../swift_ring_builder_spec.rb | 198 +---------------- .../swift_ring_builder_spec.rb | 197 +---------------- .../swift_ring_builder_spec.rb | 205 +----------------- 4 files changed, 34 insertions(+), 670 deletions(-) diff --git a/lib/puppet/provider/swift_ring_builder.rb b/lib/puppet/provider/swift_ring_builder.rb index 19be7488..d4daf044 100644 --- a/lib/puppet/provider/swift_ring_builder.rb +++ b/lib/puppet/provider/swift_ring_builder.rb @@ -20,55 +20,21 @@ class Puppet::Provider::SwiftRingBuilder < Puppet::Provider def lookup_ring object_hash = {} if File.exists?(builder_file_path(policy_index)) - # Swift < 2.2.2 Skip first 4 info lines from swift-ring-builder output - if rows = swift_ring_builder(builder_file_path(policy_index)).split("\n")[4..-1] - # Skip "Ring file ... is up-to-date" message, if printed. - if !rows[0].nil? and rows[0] =~ /Ring file\b.*\bis up-to-date/ - rows.shift - end - # Swift 2.2.2+ Skip additional line to account for Overload info - if !rows[0].nil? and rows[0].start_with?('Devices:') - rows.shift + if rows = swift_ring_builder(builder_file_path(policy_index)).split("\n") + while row = rows.shift do + if row.start_with?('Devices:') + break + end end rows.each do |row| - # Swift 1.7+ output example: - # /etc/swift/object.builder, build version 1 - # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion - # The minimum number of hours before a partition can be reassigned is 1 - # Devices: id region zone ip address port name weight partitions balance meta - # 0 1 2 127.0.0.1 6022 2 1.00 262144 0.00 - # 0 1 3 192.168.101.15 6002 1 1.00 262144 -100.00 - # - # Swift 1.8.0 output example: - # /etc/swift/object.builder, build version 1 - # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion - # The minimum number of hours before a partition can be reassigned is 1 - # Devices: id region zone ip address port name weight partitions balance meta - # 2 1 2 192.168.101.14 6002 1 1.00 262144 200.00 m2 - # 0 1 3 192.168.101.15 6002 1 1.00 262144-100.00 m2 - # - # Swift 1.8+ output example: - # /etc/swift/object.builder, build version 1 - # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion - # The minimum number of hours before a partition can be reassigned is 1 - # Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - # 0 1 2 127.0.0.1 6021 127.0.0.1 6021 2 1.00 262144 0.00 - # - # Swift 2.2.2+ output example: - # /etc/swift/object.builder, build version 1 - # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion - # The minimum number of hours before a partition can be reassigned is 1 - # The overload factor is 0.00% (0.000000) - # Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - # 0 1 2 127.0.0.1 6021 127.0.0.1 6021 2 1.00 262144 0.00 - # Swift 2.9.1+ output example: - # /etc/swift/object.builder, build version 1 - # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion - # The minimum number of hours before a partition can be reassigned is 1 - # The overload factor is 0.00% (0.000000) - # Devices: id region zone ip address:port replication ip:replication port name weight partitions balance meta - # 0 1 2 127.0.0.1:6021 127.0.0.1:6021 2 1.00 262144 0.00 # Swift 2.9.1+ output example: + # /etc/swift/object.builder, build version 1 + # 262144 partitions, 1.000000 replicas, 1 regions, 1 zones, 1 devices, 0.00 balance, 0.00 dispersion + # The minimum number of hours before a partition can be reassigned is 1 + # The overload factor is 0.00% (0.000000) + # Ring file /etc/swift/object.ring.gz is up-to-date + # Devices: id region zone ip address:port replication ip:replication port name weight partitions balance meta + # 0 1 2 127.0.0.1:6021 127.0.0.1:6021 2 1.00 262144 0.00 if row =~ /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\S+):(\d+)\s+\S+:\d+\s+(\S+)\s+(\d+\.\d+)\s+(\d+)\s*((-|\s-?)?\d+\.\d+)\s*(\S*)/ address = address_string("#{$4}") if !policy_index.nil? @@ -86,52 +52,6 @@ class Puppet::Provider::SwiftRingBuilder < Puppet::Provider :meta => $11, :policy_index => "#{policy_index}" } - - # Swift 1.8+ output example: - elsif row =~ /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+\S+\s+\d+\s+(\S+)\s+(\d+\.\d+)\s+(\d+)\s*((-|\s-?)?\d+\.\d+)\s*(\S*)/ - - address = address_string("#{$4}") - if !policy_index.nil? - policy = "#{policy_index}:" - else - policy = '' - end - object_hash["#{policy}#{address}:#{$5}/#{$6}"] = { - :id => $1, - :region => $2, - :zone => $3, - :weight => $7, - :partitions => $8, - :balance => $9, - :meta => $11 - } - - # Swift 1.8.0 output example: - elsif row =~ /^\s*(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+\.\d+)\s+(\d+)\s*((-|\s-?)?\d+\.\d+)\s*(\S*)/ - - address = address_string("#{$4}") - object_hash["#{address}:#{$5}/#{$6}"] = { - :id => $1, - :region => $2, - :zone => $3, - :weight => $7, - :partitions => $8, - :balance => $9, - :meta => $11 - } - # This regex is for older swift versions - elsif row =~ /^\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+\.\d+)\s+(\d+)\s+(-?\d+\.\d+)\s+(\S*)$/ - - address = address_string("#{$3}") - object_hash["#{address}:#{$4}/#{$5}"] = { - :id => $1, - :region => 'none', - :zone => $2, - :weight => $6, - :partitions => $7, - :balance => $8, - :meta => $9 - } else Puppet.warning("Unexpected line: #{row}") end diff --git a/spec/unit/puppet/provider/ring_account_device/swift_ring_builder_spec.rb b/spec/unit/puppet/provider/ring_account_device/swift_ring_builder_spec.rb index 91496288..d28af03d 100644 --- a/spec/unit/puppet/provider/ring_account_device/swift_ring_builder_spec.rb +++ b/spec/unit/puppet/provider/ring_account_device/swift_ring_builder_spec.rb @@ -30,11 +30,12 @@ describe provider_class do ) end - let :account_builder_output_2_9_1 do + let :account_builder_output do '/etc/swift/account.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 The overload factor is 0.00% (0.000000) +Ring file /etc/swift/account.ring.gz is up-to-date Devices: id region zone ip address:port replic_ip:replic_port name weight partitions balance meta 1 1 1 192.168.101.13:6002 192.168.101.13:6002 1 1.00 262144 0.00 2 1 2 192.168.101.14:6002 192.168.101.14:6002 1 1.00 262144 200.00 m2 @@ -43,7 +44,7 @@ Devices: id region zone ip address:port replic_ip:replic_port ' end - describe "with no storage policy_index set on swift 2.9.1+" do + describe "with no storage policy_index set" do it 'account builder file should be account.builder when object name has no policy_index' do policy_index = provider.policy_index @@ -51,7 +52,7 @@ Devices: id region zone ip address:port replic_ip:replic_port end it 'ring_account_device should exist when found in builder file' do - provider.class.stubs(:swift_ring_builder).returns account_builder_output_2_9_1 + provider.class.stubs(:swift_ring_builder).returns account_builder_output File.expects(:exists?).with(builder_file_path).returns(true) expect(provider.exists?).to eq({:id=>"1", :region=>"1", :zone=>"1", :weight=>"1.00", :partitions=>"262144", :balance=>"0.00", :meta=>"", :policy_index=>''}) end @@ -59,7 +60,7 @@ Devices: id region zone ip address:port replic_ip:replic_port it 'should be able to lookup the local ring' do File.expects(:exists?).with(builder_file_path).returns(true) provider.expects(:builder_file_path).twice.returns(builder_file_path) - provider.expects(:swift_ring_builder).returns account_builder_output_2_9_1 + provider.expects(:swift_ring_builder).returns account_builder_output resources = provider.lookup_ring expect(resources['192.168.101.13:6002/1']).to_not be_nil expect(resources['192.168.101.14:6002/1']).to_not be_nil @@ -86,198 +87,11 @@ Devices: id region zone ip address:port replic_ip:replic_port end end - describe "with a storage policy_index set on swift 2.9.1+" do + describe "with a storage policy_index set" do it 'ring_account_device should fail when object name has a policy_index' do expect { Puppet::Type.type(:ring_account_device).new(:name => "1:192.168.101.13:6002/1", :zone => '1', :weight => '1', :provider => :swift_ring_builder)}.to raise_error(Puppet::Error, /Policy_index is not supported on account device/) end end - - - it 'should be able to lookup the local ring and build an object 2.2.2+' do - # Swift 1.8 output - provider.expects(:swift_ring_builder).returns( -'/etc/swift/account.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -The overload factor is 0.00% (0.000000) -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8+' do - # Swift 1.8+ output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/account.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8.0' do - # Swift 1.8 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/account.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.7' do - # Swift 1.7 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/account.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 1 3 192.168.101.15 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end - - it 'should be able to lookup the local ring and build an object legacy' do - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/account.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id zone ip address port name weight partitions balance meta - 2 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 3 192.168.101.15 6002 1 1.00 262144 0.00 - 1 1 192.168.101.13 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end end diff --git a/spec/unit/puppet/provider/ring_container_device/swift_ring_builder_spec.rb b/spec/unit/puppet/provider/ring_container_device/swift_ring_builder_spec.rb index 1c565d1a..07f6ff7b 100644 --- a/spec/unit/puppet/provider/ring_container_device/swift_ring_builder_spec.rb +++ b/spec/unit/puppet/provider/ring_container_device/swift_ring_builder_spec.rb @@ -27,11 +27,12 @@ describe provider_class do end - let :container_builder_output_2_9_1 do + let :container_builder_output do '/etc/swift/container.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 The overload factor is 0.00% (0.000000) +Ring file /etc/swift/container.ring.gz is up-to-date Devices: id region zone ip address:port replic_ip:replic_port name weight partitions balance meta 1 1 1 192.168.101.13:6002 192.168.101.13:6002 1 1.00 262144 0.00 2 1 2 192.168.101.14:6002 192.168.101.14:6002 1 1.00 262144 200.00 m2 @@ -40,7 +41,7 @@ Devices: id region zone ip address:port replic_ip:replic_port ' end - describe "with no storage policy_index set on swift 2.9.1+" do + describe "with no storage policy_index set" do it 'container builder file should be container.builder when object name has no policy_index' do policy_index = provider.policy_index @@ -48,7 +49,7 @@ Devices: id region zone ip address:port replic_ip:replic_port end it 'ring_container_device should exist when found in builder file' do - provider.expects(:swift_ring_builder).returns container_builder_output_2_9_1 + provider.expects(:swift_ring_builder).returns container_builder_output File.expects(:exists?).with(builder_file_path).returns(true) expect(provider.exists?).to eq({:id=>"1", :region=>"1", :zone=>"1", :weight=>"1.00", :partitions=>"262144", :balance=>"0.00", :meta=>"", :policy_index=>''}) end @@ -56,7 +57,7 @@ Devices: id region zone ip address:port replic_ip:replic_port it 'should be able to lookup the local ring' do File.expects(:exists?).with(builder_file_path).returns(true) provider.expects(:builder_file_path).twice.returns(builder_file_path) - provider.expects(:swift_ring_builder).returns container_builder_output_2_9_1 + provider.expects(:swift_ring_builder).returns container_builder_output resources = provider.lookup_ring expect(resources['192.168.101.13:6002/1']).to_not be_nil expect(resources['192.168.101.14:6002/1']).to_not be_nil @@ -83,7 +84,7 @@ Devices: id region zone ip address:port replic_ip:replic_port end end - describe "with a storage policy_index set on swift 2.9.1+" do + describe "with a storage policy_index set" do it 'ring_container_device should fail when object name has a policy_index' do expect { @@ -95,190 +96,4 @@ Devices: id region zone ip address:port replic_ip:replic_port )}.to raise_error(Puppet::Error, /Policy_index is not supported on container device/) end end - - it 'should be able to lookup the local ring and build an object 2.2.2+' do - # Swift 1.8 output - provider.expects(:swift_ring_builder).returns( -'/etc/swift/container.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -The overload factor is 0.00% (0.000000) -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8+' do - # Swift 1.8+ output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/container.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8.0' do - # Swift 1.8 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/container.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.7' do - # Swift 1.7 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/container.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 1 3 192.168.101.15 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end - - it 'should be able to lookup the local ring and build an object legacy' do - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/container.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id zone ip address port name weight partitions balance meta - 2 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 3 192.168.101.15 6002 1 1.00 262144 0.00 - 1 1 192.168.101.13 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end end diff --git a/spec/unit/puppet/provider/ring_object_device/swift_ring_builder_spec.rb b/spec/unit/puppet/provider/ring_object_device/swift_ring_builder_spec.rb index 2a25643f..15abc814 100644 --- a/spec/unit/puppet/provider/ring_object_device/swift_ring_builder_spec.rb +++ b/spec/unit/puppet/provider/ring_object_device/swift_ring_builder_spec.rb @@ -26,11 +26,12 @@ describe provider_class do ) end - let :object_builder_output_2_9_1 do + let :object_builder_output do '/etc/swift/object.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 The overload factor is 0.00% (0.000000) +Ring file /etc/swift/object.ring.gz is up-to-date Devices: id region zone ip address:port replic_ip:replic_port name weight partitions balance meta 1 1 1 192.168.101.13:6002 192.168.101.13:6002 1 1.00 262144 0.00 2 1 2 192.168.101.14:6002 192.168.101.14:6002 1 1.00 262144 200.00 m2 @@ -39,7 +40,7 @@ Devices: id region zone ip address:port replic_ip:replic_port ' end - describe "with no storage policy_index set on swift 2.9.1+" do + describe "with no storage policy_index set" do it 'object builder file should be object.builder when object name has no policy_index' do policy_index = provider.policy_index @@ -60,7 +61,7 @@ Devices: id region zone ip address:port replic_ip:replic_port end it 'ring_object_device should exist when found in builder file' do - provider.expects(:swift_ring_builder).returns object_builder_output_2_9_1 + provider.expects(:swift_ring_builder).returns object_builder_output File.expects(:exists?).with(builder_file_path).returns(true) expect(provider.exists?).to eq({:id=>"1", :region=>"1", :zone=>"1", :weight=>"1.00", :partitions=>"262144", :balance=>"0.00", :meta=>"", :policy_index=>''}) end @@ -68,7 +69,7 @@ Devices: id region zone ip address:port replic_ip:replic_port it 'should be able to lookup the local ring' do File.expects(:exists?).with(builder_file_path).returns(true) provider.expects(:builder_file_path).twice.returns(builder_file_path) - provider.expects(:swift_ring_builder).returns object_builder_output_2_9_1 + provider.expects(:swift_ring_builder).returns object_builder_output resources = provider.lookup_ring expect(resources['192.168.101.13:6002/1']).to_not be_nil expect(resources['192.168.101.14:6002/1']).to_not be_nil @@ -110,11 +111,12 @@ Devices: id region zone ip address:port replic_ip:replic_port ) end - let :object_builder_policy1_output_2_9_1 do + let :object_builder_policy1_output do '/etc/swift/object-1.builder, build version 3 262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance The minimum number of hours before a partition can be reassigned is 1 The overload factor is 0.00% (0.000000) +Ring file /etc/swift/object-1.ring.gz is up-to-date Devices: id region zone ip address:port replic_ip:replic_port name weight partitions balance meta 1 1 1 192.168.101.13:6002 192.168.101.13:6002 1 1.00 262144 0.00 2 1 2 192.168.101.14:6002 192.168.101.14:6002 1 1.00 262144 200.00 m2 @@ -123,7 +125,7 @@ Devices: id region zone ip address:port replic_ip:replic_port ' end - describe "with a storage policy_index set on swift 2.9.1+" do + describe "with a storage policy_index set" do it 'object builder file should be object-1.builder when object name has policy_index 1' do policy_index = provider_policy1.policy_index @@ -136,7 +138,7 @@ Devices: id region zone ip address:port replic_ip:replic_port end it 'ring_object_device should exist when found in builder file with policy_index=1' do - provider_policy1.expects(:swift_ring_builder).returns object_builder_policy1_output_2_9_1 + provider_policy1.expects(:swift_ring_builder).returns object_builder_policy1_output File.expects(:exists?).with(builder_file_path_policy1).returns(true) expect(provider_policy1.exists?).to eq({:id=>"1", :region=>"1", :zone=>"1", :weight=>"1.00", :partitions=>"262144", :balance=>"0.00", :meta=>"", :policy_index=>"1"}) end @@ -144,7 +146,7 @@ Devices: id region zone ip address:port replic_ip:replic_port it 'lookup local ring and object resource names should start with policy_index if a policy is set' do File.expects(:exists?).with(builder_file_path_policy1).returns(true) provider_policy1.expects(:builder_file_path).twice.returns(builder_file_path_policy1) - provider_policy1.expects(:swift_ring_builder).returns object_builder_output_2_9_1 + provider_policy1.expects(:swift_ring_builder).returns object_builder_output resources = provider_policy1.lookup_ring expect(resources['1:192.168.101.13:6002/1']).to_not be_nil expect(resources['1:192.168.101.14:6002/1']).to_not be_nil @@ -170,191 +172,4 @@ Devices: id region zone ip address:port replic_ip:replic_port expect(resources['1:192.168.101.14:6002/1'][:policy_index]).to eql '1' end end - - - it 'should be able to lookup the local ring and build an object 2.2.2+' do - # Swift 1.8 output - provider.expects(:swift_ring_builder).returns( -'/etc/swift/object.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -The overload factor is 0.00% (0.000000) -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8+' do - # Swift 1.8+ output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/object.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port replication ip replication port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.8.0' do - # Swift 1.8 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/object.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 200.00 m2 - 0 1 3 192.168.101.15 6002 1 1.00 262144-100.00 m2 - 3 1 1 192.168.101.16 6002 1 1.00 262144-100.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.16:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '200.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql 'm2' - end - - it 'should be able to lookup the local ring and build an object 1.7' do - # Swift 1.7 output - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/object.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id region zone ip address port name weight partitions balance meta - 1 1 1 192.168.101.13 6002 1 1.00 262144 0.00 - 2 1 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 1 3 192.168.101.15 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - expect(resources['192.168.101.15:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql '1' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end - - it 'should be able to lookup the local ring and build an object legacy' do - provider_class.expects(:swift_ring_builder).returns( -'/etc/swift/object.builder, build version 3 -262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance -The minimum number of hours before a partition can be reassigned is 1 -Devices: id zone ip address port name weight partitions balance meta - 2 2 192.168.101.14 6002 1 1.00 262144 0.00 - 0 3 192.168.101.15 6002 1 1.00 262144 0.00 - 1 1 192.168.101.13 6002 1 1.00 262144 0.00 -' - ) - File.expects(:exists?).with(builder_file_path).returns(true) - provider.expects(:builder_file_path).twice.returns(builder_file_path) - resources = provider.lookup_ring - expect(resources['192.168.101.15:6002/1']).to_not be_nil - expect(resources['192.168.101.13:6002/1']).to_not be_nil - expect(resources['192.168.101.14:6002/1']).to_not be_nil - - expect(resources['192.168.101.13:6002/1'][:id]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.13:6002/1'][:zone]).to eql '1' - expect(resources['192.168.101.13:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.13:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.13:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.13:6002/1'][:meta]).to eql '' - - expect(resources['192.168.101.14:6002/1'][:id]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:region]).to eql 'none' - expect(resources['192.168.101.14:6002/1'][:zone]).to eql '2' - expect(resources['192.168.101.14:6002/1'][:weight]).to eql '1.00' - expect(resources['192.168.101.14:6002/1'][:partitions]).to eql '262144' - expect(resources['192.168.101.14:6002/1'][:balance]).to eql '0.00' - expect(resources['192.168.101.14:6002/1'][:meta]).to eql '' - end end