Skip to content

Commit 8e38ac9

Browse files
authored
Merge pull request #2564 from joshcooper/gce_sshKeys
(FACT-3136) Split GCE ssh keys on newlines
2 parents db39fd5 + f670cd0 commit 8e38ac9

File tree

9 files changed

+39
-28
lines changed

9 files changed

+39
-28
lines changed

.rubocop.yml

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ require:
1313

1414
Layout/LineLength:
1515
Max: 120
16+
Exclude:
17+
- spec/facter/resolvers/gce_spec.rb
1618

1719
Lint/RaiseException:
1820
Enabled: true
@@ -51,25 +53,7 @@ Naming/ClassAndModuleCamelCase:
5153
- 'spec/mocks/**/*'
5254

5355
Metrics/AbcSize:
54-
Max: 16
55-
Exclude:
56-
- 'spec/custom_facts/util/parser_spec.rb'
57-
- 'spec/custom_facts/core/logging_spec.rb'
58-
- 'lib/facter/custom_facts/util/values.rb'
59-
- 'lib/facter/custom_facts/util/loader.rb'
60-
- 'lib/facter/custom_facts/util/confine.rb'
61-
- 'lib/facter/custom_facts/util/confine.rb'
62-
- 'lib/facter/custom_facts/core/execution/windows.rb'
63-
- 'lib/facter/custom_facts/core/execution/base.rb'
64-
- 'lib/facter/custom_facts/core/resolvable.rb'
65-
- 'lib/facter/resolvers/bsd/ffi/ffi_helper.rb'
66-
- 'install.rb'
67-
- 'scripts/generate_changelog.rb'
68-
- 'lib/facter/resolvers/aix/ffi/ffi_helper.rb'
69-
- 'lib/facter/custom_facts/core/execution/popen3.rb'
70-
- 'lib/facter.rb'
71-
- 'lib/facter/framework/parsers/query_parser.rb'
72-
- 'lib/facter/framework/core/fact_manager.rb'
56+
Enabled: false
7357

7458
Metrics/PerceivedComplexity:
7559
Exclude:

lib/facter/resolvers/freebsd/swap_memory.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def post_resolve(fact_name, _options)
1313
@fact_list.fetch(fact_name) { read_swap_memory(fact_name) }
1414
end
1515

16-
def read_swap_memory(fact_name) # rubocop:disable Metrics/AbcSize
16+
def read_swap_memory(fact_name)
1717
output = Facter::Core::Execution.execute('swapinfo -k', logger: log)
1818
data = output.split("\n")[1..-1].map { |line| line.split(/\s+/) }
1919

lib/facter/resolvers/gce.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ def parse_instance(gce_data)
3939
instance_data = gce_data['instance']
4040
return if instance_data.nil? || instance_data.empty?
4141

42+
# See https://cloud.google.com/compute/docs/metadata for information about these values
43+
%w[sshKeys ssh-keys].each do |name|
44+
keys = gce_data.dig('project', 'attributes', name)
45+
gce_data['project']['attributes'][name] = keys.strip.split("\n") if keys
46+
47+
keys = instance_data.dig('attributes', name)
48+
instance_data['attributes'][name] = keys.strip.split("\n") if keys
49+
end
50+
4251
%w[image machineType zone].each do |key|
4352
instance_data[key] = instance_data[key].split('/').last if instance_data[key]
4453
end

lib/facter/resolvers/macosx/swap_memory.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def post_resolve(fact_name, _options)
1313
@fact_list.fetch(fact_name) { read_swap_memory(fact_name) }
1414
end
1515

16-
def read_swap_memory(fact_name) # rubocop:disable Metrics/AbcSize
16+
def read_swap_memory(fact_name)
1717
output = Facter::Core::Execution.execute('sysctl -n vm.swapusage', logger: log)
1818
data = output.match(/^total = ([\d.]+)M used = ([\d.]+)M free = ([\d.]+)M (\(encrypted\))$/)
1919

lib/facter/resolvers/solaris/mountpoints.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def exclude_auto_home_mounts!
2121
end
2222
end
2323

24-
def read_mounts(fact_name) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
24+
def read_mounts(fact_name) # rubocop:disable Metrics/MethodLength
2525
@mounts = []
2626
@auto_home_paths = []
2727

lib/facter/util/api_debugger.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
module Facter
44
module Util
55
module ApiDebugger
6-
def self.prepended(receiver) # rubocop:disable Metrics/AbcSize
6+
def self.prepended(receiver)
77
exclude, print_caller = parse_options(ENV['API_DEBUG'])
88

99
receiver_methods = receiver.instance_methods - Object.methods

lib/facter/util/resolvers/ffi/hostname.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def self.getffihostname
3636
raw_hostname.read_string
3737
end
3838

39-
def self.getffiaddrinfo(hostname) # rubocop:disable Metrics/AbcSize
39+
def self.getffiaddrinfo(hostname)
4040
ret = FFI::MemoryPointer.new(:pointer)
4141

4242
hints = Facter::Util::Resolvers::Ffi::AddrInfo.new

spec/facter/resolvers/gce_spec.rb

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@
2020
{
2121
'instance' => {
2222
'attributes' => {
23+
# resolver transforms key1\nkey2 into array of keys
24+
'ssh-keys' => [
25+
'john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}',
26+
'jane_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}'
27+
],
28+
'sshKeys' => [
29+
'jill_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}',
30+
'jacob_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}'
31+
]
2332
},
2433
'cpuPlatform' => 'Intel Broadwell',
2534
'description' => '',
@@ -122,8 +131,13 @@
122131
},
123132
'project' => {
124133
'attributes' => {
125-
'ssh-keys' => 'john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B' \
126-
" google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\n"
134+
# resolver transforms key1\nkey2 into array of keys
135+
'ssh-keys' => ['john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}',
136+
'jane_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}'],
137+
'sshKeys' => [
138+
'jill_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}',
139+
'jacob_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {"userName":"[email protected]","expireOn":"2020-08-13T12:17:19+0000"}'
140+
]
127141
},
128142
'numericProjectId' => 728_618_928_092,
129143
'projectId' => 'facter-performance-history'

spec/fixtures/gce

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
{
22
"instance":
33
{
4-
"attributes":{},
4+
"attributes":{
5+
"ssh-keys":"john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\njane_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\n",
6+
"sshKeys":"jill_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\njacob_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}"
7+
},
58
"cpuPlatform":"Intel Broadwell",
69
"description":"",
710
"disks":[{"deviceName":"instance-3","index":0,"interface":"SCSI","mode":"READ_WRITE","type":"PERSISTENT"}],
@@ -63,7 +66,8 @@
6366
{
6467
"attributes":
6568
{
66-
"ssh-keys":"john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\n"
69+
"ssh-keys":"john_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\njane_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\n",
70+
"sshKeys":"jill_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}\njacob_doe:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9D8Op48TtEiDmb+Gtna3Bs9B google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2020-08-13T12:17:19+0000\"}"
6771
},
6872
"numericProjectId":728618928092,
6973
"projectId":"facter-performance-history"

0 commit comments

Comments
 (0)