Skip to content

Commit

Permalink
Remove write uuid fallback and raise and error instead.
Browse files Browse the repository at this point in the history
Signed-off-by: Jared Quick <[email protected]>
  • Loading branch information
jquick committed Mar 26, 2018
1 parent e922c63 commit 1c2df9c
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 62 deletions.
19 changes: 2 additions & 17 deletions lib/train/platforms/detect/helpers/os_common.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def unix_uuid
uuid = unix_uuid_from_chef
uuid = unix_uuid_from_machine_file if uuid.nil?
uuid = uuid_from_command if uuid.nil?
uuid = unix_write_uuid if uuid.nil?
raise Train::TransportError, 'Cannot find a UUID for your node.' if uuid.nil?
uuid
end

Expand All @@ -111,30 +111,15 @@ def unix_uuid_from_machine_file
/etc/machine-id
/var/lib/dbus/machine-id
/var/db/dbus/machine-id
/etc/machine-uuid
#{ENV['HOME']}/.local/etc/machine-uuid
).each do |path|
file = @backend.file(path)
next unless file.exist? && !file.size.zero?
return file.content.chomp if path =~ /(uuid|guid)/
return file.content.chomp if path =~ /guid/
return uuid_from_string(file.content.chomp)
end
nil
end

def unix_write_uuid
uuid = SecureRandom.uuid
result = @backend.run_command("echo \"#{uuid}\" > /etc/machine-uuid")
unless result.exit_status.zero?
# fallback to user location
local_uuid_path = "#{ENV['HOME']}/.local/etc/machine-uuid"
warn "Cannot write uuid to `/etc/machine-uuid`, falling back to `#{local_uuid_path}` instead."
result = @backend.run_command("mkdir -p #{ENV['HOME']}/.local/etc; echo \"#{uuid}\" > #{local_uuid_path}")
raise "Cannot write uuid to `#{local_uuid_path}`." unless result.exit_status.zero?
end
uuid
end

# This takes a command from the platform detect block to run.
# We expect the command to return a unique identifier which
# we turn into a UUID.
Expand Down
17 changes: 1 addition & 16 deletions lib/train/platforms/detect/helpers/os_windows.rb
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,14 @@ def windows_uuid
uuid = windows_uuid_from_machine_file if uuid.nil?
uuid = windows_uuid_from_wmic if uuid.nil?
uuid = windows_uuid_from_registry if uuid.nil?
uuid = windows_write_uuid if uuid.nil?
raise Train::TransportError, 'Cannot find a UUID for your node.' if uuid.nil?
uuid
end

def windows_uuid_from_machine_file
%W(
#{ENV['SYSTEMDRIVE']}\\chef\\chef_guid
#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}\\.chef\\chef_guid
#{ENV['SYSTEMROOT']}\\machine-uuid
#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}\\.system\\machine-uuid
).each do |path|
file = @backend.file(path)
return file.content.chomp if file.exist? && !file.size.zero?
Expand All @@ -118,18 +116,5 @@ def windows_uuid_from_registry
return unless result.exit_status.zero?
result.stdout.chomp
end

def windows_write_uuid
uuid = SecureRandom.uuid
result = @backend.run_command("'#{uuid}' | Out-File -encoding ASCII #{ENV['SYSTEMROOT']}\\machine-uuid")
unless result.exit_status.zero?
# fallback to user location
local_uuid_path = "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}\\.system\\machine-uuid"
warn "Cannot write uuid to `#{ENV['SYSTEMROOT']}\\machine-uuid`, falling back to `#{local_uuid_path}` instead."
result = @backend.run_command("new-item -force -path #{local_uuid_path} -value '#{uuid}' -type file")
raise "Cannot write uuid to `#{local_uuid_path}\\machine-uuid`." unless result.exit_status.zero?
end
uuid
end
end
end
29 changes: 0 additions & 29 deletions test/unit/platforms/detect/uuid_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,19 +80,6 @@ def mock_platform(name, commands = {}, files = {}, plat_options = {})
plat.uuid.must_equal '5e430326-b5aa-56f8-975f-c3ca1c21df91'
end

it 'finds a linux uuid from /etc/machine-uuid' do
files = { '/etc/machine-uuid' => 'd400073f-0920-41aa-8dd3-2ea59b18f5ce' }
plat = mock_platform('linux', {}, files)
plat.uuid.must_equal 'd400073f-0920-41aa-8dd3-2ea59b18f5ce'
end

it 'finds a linux uuid from uuid_command' do
plat_options = { uuid_command: "system_profiler SPHardwareDataType | awk '/UUID/ { print $3; }'"}
commands = { "system_profiler SPHardwareDataType | awk '/UUID/ { print $3; }'" => 'd400073f-0920-41aa-8dd3-2ea59b18f5ce' }
plat = mock_platform('mac_os_x', commands, {}, plat_options)
plat.uuid.must_equal '2ee3c95b-4023-570d-8177-f939901a3c51'
end

it 'finds a linux uuid from /etc/machine-id' do
files = { '/etc/machine-id' => '123141dsfadf' }
plat = mock_platform('linux', {}, files)
Expand Down Expand Up @@ -126,22 +113,6 @@ def mock_platform(name, commands = {}, files = {}, plat_options = {})
plat.uuid.must_equal '5e430326-b5aa-56f8-975f-c3ca1c21df91'
end


it 'finds a windows uuid from C:\windows\machine-uuid' do
ENV['SYSTEMROOT'] = 'C:\windows'
files = { 'C:\windows\machine-uuid' => '5e430326-b5aa-56f8-975f-c3ca1c21df91' }
plat = mock_platform('windows', {}, files)
plat.uuid.must_equal '5e430326-b5aa-56f8-975f-c3ca1c21df91'
end

it 'finds a windows uuid from C:\Users\test\.system\machine-uuid' do
ENV['HOMEDRIVE'] = 'C:\\'
ENV['HOMEPATH'] = 'Users\test'
files = { 'C:\Users\test\.system\machine-uuid' => '5e430326-b5aa-56f8-975f-c3ca1c21df91' }
plat = mock_platform('windows', {}, files)
plat.uuid.must_equal '5e430326-b5aa-56f8-975f-c3ca1c21df91'
end

it 'generates a uuid from a string' do
plat = mock_platform('linux')
uuid = Train::Platforms::Detect::UUID.new(plat)
Expand Down

0 comments on commit 1c2df9c

Please sign in to comment.