rhc 0.97.17 → 0.98.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. data/bin/rhc +9 -9
  2. data/bin/rhc-port-forward +3 -0
  3. data/bin/rhc-sshkey +3 -0
  4. data/features/README.md +163 -35
  5. data/features/application.feature +24 -0
  6. data/features/cartridge.feature +24 -0
  7. data/features/client.feature +11 -0
  8. data/features/domain.feature +29 -0
  9. data/features/lib/rhc_helper.rb +14 -0
  10. data/features/lib/rhc_helper/app.rb +2 -8
  11. data/features/lib/rhc_helper/cartridge.rb +1 -7
  12. data/features/lib/rhc_helper/commandify.rb +37 -6
  13. data/features/lib/rhc_helper/domain.rb +5 -1
  14. data/features/lib/rhc_helper/httpify.rb +124 -60
  15. data/features/lib/rhc_helper/loggable.rb +0 -2
  16. data/features/lib/rhc_helper/persistable.rb +12 -2
  17. data/features/lib/rhc_helper/sshkey.rb +29 -0
  18. data/features/multiple_cartridge.feature +17 -0
  19. data/features/sshkey.feature +58 -0
  20. data/features/step_definitions/application_steps.rb +60 -52
  21. data/features/step_definitions/cartridge_steps.rb +22 -24
  22. data/features/step_definitions/client_steps.rb +9 -2
  23. data/features/step_definitions/domain_steps.rb +4 -0
  24. data/features/step_definitions/sshkey_steps.rb +56 -0
  25. data/features/support/assumptions.rb +37 -0
  26. data/features/support/before_hooks.rb +25 -0
  27. data/features/support/env.rb +84 -39
  28. data/features/support/key1 +27 -0
  29. data/features/support/key1.pub +1 -0
  30. data/features/support/key2 +27 -0
  31. data/features/support/key2.pub +1 -0
  32. data/features/support/key3.pub +1 -0
  33. data/features/support/ssh.sh +2 -0
  34. data/features/verify.feature +18 -159
  35. data/lib/rhc-common.rb +8 -21
  36. data/lib/rhc.rb +9 -5
  37. data/lib/rhc/autocomplete.rb +68 -0
  38. data/lib/rhc/autocomplete_templates/rhc.erb +33 -0
  39. data/lib/rhc/cli.rb +9 -6
  40. data/lib/rhc/command_runner.rb +108 -0
  41. data/lib/rhc/commands.rb +66 -132
  42. data/lib/rhc/commands/base.rb +95 -24
  43. data/lib/rhc/commands/domain.rb +33 -50
  44. data/lib/rhc/commands/port-forward.rb +81 -0
  45. data/lib/rhc/commands/setup.rb +1 -1
  46. data/lib/rhc/commands/sshkey.rb +95 -0
  47. data/lib/rhc/config.rb +108 -103
  48. data/lib/rhc/context_helper.rb +19 -0
  49. data/lib/rhc/coverage_helper.rb +1 -1
  50. data/lib/rhc/exceptions.rb +55 -4
  51. data/lib/rhc/help_formatter.rb +2 -3
  52. data/lib/rhc/helpers.rb +31 -23
  53. data/lib/{rhc-rest.rb → rhc/rest.rb} +95 -23
  54. data/lib/{rhc-rest → rhc/rest}/application.rb +1 -1
  55. data/lib/{rhc-rest → rhc/rest}/cartridge.rb +1 -1
  56. data/lib/{rhc-rest → rhc/rest}/client.rb +40 -9
  57. data/lib/{rhc-rest → rhc/rest}/domain.rb +1 -1
  58. data/lib/{rhc-rest → rhc/rest}/key.rb +11 -1
  59. data/lib/{rhc-rest → rhc/rest}/user.rb +1 -1
  60. data/lib/rhc/ssh_key_helpers.rb +10 -1
  61. data/lib/rhc/targz.rb +7 -8
  62. data/lib/rhc/usage_templates/command_help.erb +7 -6
  63. data/lib/rhc/usage_templates/help.erb +6 -9
  64. data/lib/rhc/usage_templates/missing_help.erb +1 -0
  65. data/lib/rhc/version.rb +2 -2
  66. data/lib/rhc/wizard.rb +4 -9
  67. data/spec/coverage_helper.rb +2 -2
  68. data/spec/rest_spec_helper.rb +66 -16
  69. data/spec/rhc/cli_spec.rb +16 -5
  70. data/spec/rhc/command_spec.rb +61 -6
  71. data/spec/rhc/commands/domain_spec.rb +50 -27
  72. data/spec/rhc/commands/port-forward_spec.rb +133 -0
  73. data/spec/rhc/commands/setup_spec.rb +2 -2
  74. data/spec/rhc/commands/sshkey_spec.rb +141 -0
  75. data/spec/rhc/common_spec.rb +1 -1
  76. data/spec/rhc/config_spec.rb +6 -4
  77. data/spec/rhc/helpers_spec.rb +0 -21
  78. data/spec/rhc/rest_application_spec.rb +7 -7
  79. data/spec/rhc/rest_client_spec.rb +87 -24
  80. data/spec/rhc/rest_spec.rb +36 -36
  81. data/spec/rhc/wizard_spec.rb +3 -3
  82. data/spec/spec.opts +1 -0
  83. data/spec/spec_helper.rb +3 -3
  84. metadata +61 -31
  85. data/lib/rhc-rest/exceptions/exceptions.rb +0 -75
  86. data/test/functional/application_test.rb +0 -71
  87. data/test/functional/domain_test.rb +0 -123
  88. data/test/functional/test_credentials.rb +0 -5
  89. data/test/sample-usage.rb +0 -122
  90. data/test/support/server.rb +0 -14
  91. data/test/support/testcase.rb +0 -3
  92. data/test/test_helper.rb +0 -4
  93. data/test/unit/command_test.rb +0 -19
@@ -7,36 +7,34 @@ When /^the (.+) cartridge is added$/ do |name|
7
7
  @app.add_cartridge name
8
8
  end
9
9
 
10
- When /^the (.+) cartridge is stopped$/ do |name|
11
- @app.cartridge(name).stop
12
- end
13
-
14
- When /^the (.+) cartridge is restarted$/ do |name|
15
- @app.cartridge(name).restart
16
- end
17
-
18
- When /^the (.+) cartridge is started$/ do |name|
19
- @app.cartridge(name).start
20
- end
21
-
22
10
  When /^the (.+) cartridge is removed$/ do |name|
23
11
  @app.remove_cartridge name
24
12
  end
25
13
 
26
- Then /^the (.+) cartridge should be running$/ do |name|
27
- @app.cartridge(name).status.should match("RESULT:\n(.+) is running|RESULT:\n(\n|.)+Uptime:")
14
+ When /^the (.+) cartridge is (stopped|(?:re)?started)$/ do |name,command|
15
+ cmd = case command.to_sym
16
+ when :stopped
17
+ 'stop'
18
+ when :started
19
+ 'start'
20
+ when :restarted
21
+ 'restart'
22
+ end
23
+ @app.cartridge(name).send(cmd)
24
+ end
25
+
26
+ Then /^the (.+) cartridge should be (.*)$/ do |name,status|
27
+ expected = case status.to_sym
28
+ when :running
29
+ "RESULT:\n(.+) is running|RESULT:\n(\n|.)+Uptime:"
30
+ when :stopped
31
+ "RESULT:\n(.+) stopped"
32
+ when :removed
33
+ "Response code was 400"
34
+ end
35
+ @app.cartridge(name).status.should match(expected)
28
36
  end
29
37
 
30
- Then /^the (.+) cartridge should be stopped$/ do |name|
31
- @app.cartridge(name).status.should match("RESULT:\n(.+) stopped")
32
- end
33
-
34
- Then /^the (.+) cartridge should be removed$/ do |name|
35
- # look for response code 400
36
- @app.cartridge(name).status.should match("Response code was 400")
37
- end
38
-
39
-
40
38
  Then /^adding the (.+) cartridge should fail$/ do |name|
41
39
  @app.add_cartridge(name).should == 154
42
40
  end
@@ -28,7 +28,14 @@ When /^the setup wizard is run$/ do
28
28
  RHC::Config.initialize
29
29
  end
30
30
 
31
- Then /^the client tools should be setup$/ do
32
- RHC::Wizard.new(RHC::Config).needs_configuration?.should be_false, "Wizard still thinks it needs to be run"
31
+ Then /^the client tools should be setup( if needed)?$/ do |setup|
32
+ configured = (RHC::Config.has_local_config? or RHC::Config.has_opts_config?)
33
+
34
+ if !configured && setup
35
+ Then 'the setup wizard is run'
36
+ configured = (RHC::Config.has_local_config? or RHC::Config.has_opts_config?)
37
+ end
38
+
39
+ configured.should be_true, "Wizard still thinks it needs to be run"
33
40
  end
34
41
 
@@ -62,3 +62,7 @@ end
62
62
  Then /^domains should be empty$/ do
63
63
  $namespace.should be_nil
64
64
  end
65
+
66
+ When /^rhc domain create is called$/ do
67
+ Domain.create
68
+ end
@@ -0,0 +1,56 @@
1
+ include RHCHelper
2
+
3
+ Before do
4
+ Sshkey.remove "key1"
5
+ Sshkey.remove "key2"
6
+ end
7
+
8
+ When /^'rhc sshkey (\S+)( .*?)?'(?: command)? is run$/ do |subcommand, rest|
9
+ if subcommand =~ /^(list|show|add|remove|delete|update)$/
10
+ Sshkey.send subcommand.to_sym, rest
11
+ @sshkey_output = Sshkey.sshkey_output
12
+ @exitcode = Sshkey.exitcode
13
+ end
14
+ end
15
+
16
+ Given /^the SSH key "(.*?)" does not exist$/ do |key|
17
+ Sshkey.remove "key"
18
+ end
19
+
20
+ Given /^the SSH key "(.*?)" already exists$/ do |key|
21
+ keyfile = File.join(File.dirname(__FILE__), '..', 'support', key + '.pub')
22
+ step "'rhc sshkey add #{key} #{keyfile}' is run"
23
+ end
24
+
25
+ Given /^an SSH key "(.*?)" with the same content as "(.*?)" exists$/ do |existing_key, new_key|
26
+ keyfile = File.join(File.dirname(__FILE__), '..', 'support', new_key + '.pub')
27
+ step "a new SSH key \"#{keyfile}\" is added as \"#{existing_key}\""
28
+ end
29
+
30
+ When /^a new SSH key "(.*?)" is added as "(.*)"$/ do |keyfile, name|
31
+ step "'rhc sshkey add #{name} #{keyfile}' is run"
32
+ end
33
+
34
+ Then /^the output includes the key information for "(.*?)"$/ do |key|
35
+ @sshkey_output.should match /Name: #{key}/
36
+ end
37
+
38
+ Then /^the key "(.*?)" should exist$/ do |key|
39
+ Sshkey.show "#{key}"
40
+ Sshkey.sshkey_output.should =~ /Name: #{key}/
41
+ end
42
+
43
+ Then /^the SSH key "(.*?)" is deleted$/ do |key|
44
+ Sshkey.show "#{key}"
45
+ Sshkey.sshkey_output.should_not =~ /Name: #{key}/
46
+ end
47
+
48
+ Then /^the output includes the key information$/ do
49
+ @sshkey_output.should match /Name:.*Type:.*Fingerprint:/m
50
+ end
51
+
52
+ Then /^the command exits with status code (\d+)$/ do |arg1|
53
+ code = arg1.to_i
54
+ @exitcode.should == code
55
+ end
56
+
@@ -0,0 +1,37 @@
1
+ Given 'we have the client tools setup' do
2
+ step 'the libra client tools'
3
+ step 'the client tools should be setup if needed'
4
+ end
5
+
6
+ Given 'we have an existing domain' do
7
+ step 'we have the client tools setup'
8
+ step 'a new domain is needed and created'
9
+ end
10
+
11
+ Given /^we have a (.*) (.*) cartridge$/ do |status,type|
12
+ cmd = case status
13
+ when "running"
14
+ "started"
15
+ else
16
+ status
17
+ end
18
+
19
+ # Ensure the cartridge is in the right state for the tests
20
+ # only try once
21
+ retried = false
22
+ begin
23
+ step "the #{type} cartridge should be #{status}"
24
+ rescue Spec::Expectations::ExpectationNotMetError
25
+ step "the #{type} cartridge is #{cmd}"
26
+ (retried = true && retry) unless retried
27
+ end
28
+ end
29
+
30
+ Given /^we have a (stopped|running) application$/ do |state|
31
+ begin
32
+ step "the application should not be accessible"
33
+ step "the application is started" if state == "running"
34
+ rescue Spec::Expectations::ExpectationNotMetError
35
+ step "the application is stopped" if state == "stopped"
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ # Defined the required hooks first so we make sure we have everything we need
2
+ Before('@domain_required') do
3
+ step 'we have an existing domain'
4
+ end
5
+
6
+ Before('@client_tools_required') do
7
+ step 'we have the client tools setup'
8
+ end
9
+
10
+ Before('@single_cartridge','@init') do
11
+ step 'an existing or new php-5.3 application without an embedded cartridge'
12
+ end
13
+
14
+ # These assumptions help to ensure any steps that are run independently have the same state as after the @init step
15
+ {
16
+ :application => 'an existing or new php-5.3 application without an embedded cartridge',
17
+ :domain => 'we have an existing domain',
18
+ :client => 'we have the client tools setup',
19
+ :single_cartridge => 'an existing or new php-5.3 application with an embedded mysql-5.1 cartridge',
20
+ :multiple_cartridge => 'an existing or new php-5.3 application with embedded mysql-5.1 and phpmyadmin-3.4 cartridges',
21
+ }.each do |tag,assumption|
22
+ Before("@#{tag}",'~@init') do
23
+ step assumption
24
+ end
25
+ end
@@ -4,72 +4,116 @@ require 'rhc/coverage_helper'
4
4
  SimpleCov.at_exit{ SimpleCov.result.format! } if defined? SimpleCov
5
5
 
6
6
  require 'rhc_helper'
7
- require 'rhc-rest'
7
+ require 'rhc/rest'
8
8
  require 'rhc/config'
9
9
 
10
- # Generate a random username in case one isn't set
11
- chars = ("1".."9").to_a
12
- random_username = "test" + Array.new(8, '').collect{chars[rand(chars.size)]}.join + "@example.com"
10
+ def set_path
11
+ ENV["PATH"] = "#{ENV['RHC_LOCAL_PATH']}:#{ENV['PATH']}" if ENV['RHC_LOCAL_PATH']
12
+ end
13
+
14
+ def set_creds
15
+ # Get the value from the file
16
+ def from_file(filename)
17
+ value = File.exists?(filename) ? File.read(filename) : ""
18
+ value.empty? ? nil : value
19
+ end
13
20
 
14
- ENV["PATH"] = "#{ENV['RHC_LOCAL_PATH']}:#{ENV['PATH']}" if ENV['RHC_LOCAL_PATH']
21
+ # If NO_CLEAN is specified, reuse the variables if specified
22
+ if ENV['NO_CLEAN']
23
+ ENV['RHC_USERNAME'] ||= from_file('/tmp/rhc/username')
24
+ ENV['RHC_NAMESPACE'] ||= from_file('/tmp/rhc/namespace')
25
+ end
15
26
 
16
- # Generate a random username if one isn't specified (for unauthenticated systems)
17
- $username = ENV['RHC_USERNAME'] || random_username
27
+ # Generate a random username in case one isn't set
28
+ chars = ("1".."9").to_a
29
+ random_username = "test" + Array.new(8, '').collect{chars[rand(chars.size)]}.join + "@example.com"
18
30
 
19
- # Use a generic password if one isn't specific (for unauthenticated systems)
20
- $password = ENV['RHC_PASSWORD'] || 'test'
31
+ # Generate a random username if one isn't specified (for unauthenticated systems)
32
+ $username = ENV['RHC_USERNAME'] || random_username
21
33
 
22
- # Default the domain to production unless a random username is used.
23
- # In that case, use dev.rhcloud.com for the development DNS namespace
24
- default_domain = ENV['RHC_USERNAME'] ? "rhcloud.com" : "dev.rhcloud.com"
25
- $domain = ENV['RHC_DOMAIN'] || default_domain
34
+ # Use a generic password if one isn't specific (for unauthenticated systems)
35
+ $password = ENV['RHC_PASSWORD'] || 'test'
26
36
 
27
- # Default the endpoint to the production REST API's
28
- $end_point = ENV['RHC_ENDPOINT'] || "https://openshift.redhat.com/broker/rest/api"
37
+ # Default the domain to production unless a random username is used.
38
+ # In that case, use dev.rhcloud.com for the development DNS namespace
39
+ default_domain = ENV['RHC_USERNAME'] ? "rhcloud.com" : "dev.rhcloud.com"
40
+ $domain = ENV['RHC_DOMAIN'] || default_domain
29
41
 
30
- # Don't default the namespace to anything - the existance if checked to
31
- # determine how the setup wizard is run
32
- $namespace = ENV['RHC_NAMESPACE']
42
+ # Don't default the namespace to anything - the existance if checked to
43
+ # determine how the setup wizard is run
44
+ $namespace = ENV['RHC_NAMESPACE']
45
+ end
46
+
47
+ def set_endpoint
48
+ # Use either the ENV variable, our libra_server, or prod
49
+ ENV['RHC_SERVER'] ||= (ENV['RHC_DEV'] ? RHC::Config['libra_server'] : 'openshift.redhat.com')
50
+ # Format the endpoint properly
51
+ ENV['RHC_ENDPOINT'] ||= "https://%s/broker/rest/api" % ENV['RHC_SERVER']
52
+ $end_point = ENV['RHC_ENDPOINT']
53
+ end
54
+
55
+ # This env variable needs to be set so the git commands can bypass host key authenticity checking
56
+ def set_ssh
57
+ ENV['GIT_SSH'] ||= File.expand_path(File.join(File.dirname(__FILE__),'ssh.sh'))
58
+ end
59
+
60
+ ### Run initialization commands
61
+ # Set the PATH env variable
62
+ set_path
63
+ # Set the username,password,etc based on env variables or defaults
64
+ set_creds
65
+ # Set the endpoint to test against
66
+ set_endpoint
67
+ # Set the ssh env variable
68
+ set_ssh
33
69
 
34
70
  raise "Username not found in environment (RHC_USERNAME)" unless $username
35
71
  raise "Password not found in environment (RHC_PASSWORD)" unless $password
36
72
 
37
- puts "\n\n"
38
- puts "--------------------------------------------------------------------------------------------------"
39
- puts " Test Information"
40
- puts "--------------------------------------------------------------------------------------------------"
41
- puts " REST End Point: #{$end_point}"
42
- puts " Domain: #{$domain}"
43
- puts " Username: #{$username}"
44
- puts " Creating New Namespace: #{$namespace.nil?}"
45
- puts "--------------------------------------------------------------------------------------------------"
46
- puts "\n\n"
73
+ def _log(msg)
74
+ puts msg unless ENV['QUIET']
75
+ end
76
+
77
+ _log "\n\n"
78
+ _log "--------------------------------------------------------------------------------------------------"
79
+ _log " Test Information"
80
+ _log "--------------------------------------------------------------------------------------------------"
81
+ _log " REST End Point: #{$end_point}"
82
+ _log " Domain: #{$domain}"
83
+ _log " Username: #{$username}"
84
+ _log " Creating New Namespace: #{$namespace.nil?}"
85
+ _log "--------------------------------------------------------------------------------------------------"
86
+ _log "\n\n"
47
87
 
48
88
  unless ENV['NO_CLEAN']
49
- puts "--------------------------------------------------------------------------------------------------"
50
- puts " Resetting environment"
51
- puts "--------------------------------------------------------------------------------------------------"
89
+ _log "--------------------------------------------------------------------------------------------------"
90
+ _log " Resetting environment"
91
+ _log "--------------------------------------------------------------------------------------------------"
92
+ # Ensure the directory for local_config_path exists
93
+ config_dir = File.dirname(RHC::Config::local_config_path)
94
+ Dir::mkdir(config_dir) unless File.exists?(config_dir)
95
+
52
96
  # Start with a clean config
53
- puts " Replacing express.conf with the specified libra_server"
97
+ _log " Replacing express.conf with the specified libra_server"
54
98
  File.open(RHC::Config::local_config_path, 'w') {|f| f.write("libra_server=#{URI.parse($end_point).host}") }
55
99
 
56
- puts " Cleaning up test applications..."
100
+ _log " Cleaning up test applications..."
57
101
  FileUtils.rm_rf RHCHelper::TEMP_DIR
58
102
 
59
103
  # Cleanup all test applications
60
- client = Rhc::Rest::Client.new($end_point, $username, $password)
104
+ client = RHC::Rest::Client.new($end_point, $username, $password)
61
105
  client.domains.each do |domain|
62
106
  domain.applications.each do |app|
63
107
  if app.name.start_with?("test")
64
- puts " Deleting application #{app.name}"
108
+ _log " Deleting application #{app.name}"
65
109
  app.delete
66
110
  end
67
111
  end
68
112
  end
69
113
 
70
- puts " Application cleanup complete"
71
- puts "--------------------------------------------------------------------------------------------------"
72
- puts "\n\n"
114
+ _log " Application cleanup complete"
115
+ _log "--------------------------------------------------------------------------------------------------"
116
+ _log "\n\n"
73
117
  end
74
118
 
75
119
  AfterConfiguration do |config|
@@ -83,6 +127,7 @@ AfterConfiguration do |config|
83
127
  logger = Logger.new(File.join(RHCHelper::TEMP_DIR, "cucumber.log"))
84
128
  logger.level = Logger::DEBUG
85
129
  RHCHelper::Loggable.logger = logger
130
+ $logger = logger
86
131
 
87
132
  # Setup performance monitor logger
88
133
  perf_logger = Logger.new(File.join(RHCHelper::TEMP_DIR, "perfmon.log"))
@@ -90,7 +135,7 @@ AfterConfiguration do |config|
90
135
  RHCHelper::Loggable.perf_logger = perf_logger
91
136
  end
92
137
 
93
- After do |s|
138
+ After do |s|
94
139
  # Tell Cucumber to quit after this scenario is done - if it failed.
95
140
  Cucumber.wants_to_quit = true if s.failed?
96
141
  end
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEA35G7DJsH3ycfxThXsq/4mYxnjOZixpV0pMQYklQJPBBSfSP/
3
+ 6jAczpjQC2WP/mMTxxJO3KeAojWT7vd+6zqSWJVl7Jvjb9Vmnkq6HGqFYr4iex+g
4
+ aA87wF316b5ejNHmx7o1Ly6WH+KYOPMfJ0iEqqWd0MYUEvut+sKwra+dgF+alG5d
5
+ juRu0xJBjQedHPBmU96R2lyfTkdejhzsCiPOOzbO2XRXoFUdTGKaDsXdzCt1kwXU
6
+ 9rR/Pl43nKRvzBlqk/XTr8JzvpAvm8Z138QlezyAhi5gMSYmvvMacZeZqMrwbEbo
7
+ JdpIruoEa1dIVzJyPnU08k+OzHGIo2zlF4A+uQIDAQABAoIBACGBl8T13yIknPBT
8
+ 12DiWqG4lzRYuukEMS0Ybo5Ppeqoj5RNtucEOu0Dnfp3SDNZ6fbl2YfcWrz0xq0D
9
+ zrO2XYSFL3dcjaOPGggTLv1fQYpg8I3/WWz/C3dzHY3giA8Wzj2UvK/LjZhNv36Z
10
+ gUvD5I4msBY/+XY23gY883m0XiiE48Nb2sTVYDyq8ubBKLUGE2yTnbaCAzXPifSp
11
+ 8fczmNKCKS9kgHyGtfryVaaLAIKmNacIQlsmGoUy77KG43dG3rvlsQxcYjPg6ccO
12
+ 1XnTodLtFJwPKcdKWvRM2lM7vYNNMOOnwITLh01Oeyuam9xt8ReUSPGqoJxkJNfc
13
+ TV4bezkCgYEA+RWWDN71DHHLD1HqFnVTEE+TP34YAgE5hgorKI9net2TnypwsOTj
14
+ QjUeZ8EdyTKPDMrW/CmAB0hqMWAN3b7Lyu5Rct9qt4Sioj1PblQ0W0/PIgIpy0Z/
15
+ 8eGKpDdeqtv/GLfhTOqnq9k93Ra+SbAO7xe7oV2LPFl+kcPjXvcJtTMCgYEA5cbK
16
+ mitsGTD6DuVdCCK4YPJVyrhv8Kh3g9q9aSoAP2XmcHAn/NIW081J6j1gKy41cuoe
17
+ 3AyHQZwL+tWsJtITwurosXRMuLoU0D/0R2J0vpUrze91mWNFCKSyrPWe0se4tOnP
18
+ rpvKF/22W7d9btttmTa+kS87orML9Bw8f8GsJGMCgYEAr1UWjnDTJbNkMKCEmtJz
19
+ aePZzrO/yol6KHQ39REc0kvugfep45r6rbwebwJtKRdBwst1kYLU8Et1FNR8bj7D
20
+ zVD8XFQQFqZypKlrpEn5oN0I/PNw3/n8ThNpODcRmEvLwWaOXUpARKNi/KHpyIz5
21
+ tiuKlAf43r5QbeLpxgs29ikCgYBJKv03DJ62gt8NwUHXpl66GFDzZbnXk33DUfNA
22
+ uqwrhAJWSZCiNDAqr9NasMKf3W4Nsrmy7pZfcRZrgID6N6ktR2pjn5oStMaN7d+W
23
+ n6Z3Tb8OK7Nx7ad88h0ncGtryUdq7I1Cl79J1nOsTwi1NVB4GnOifbzquUMUL62g
24
+ LQbo6wKBgDaUSWYHiA4bA2/oKh0ioSvY2r1FmO2tifJBy/Up+GRaTPV8vnlrWZzk
25
+ 1HtYkv6l/LeNyvBy4SPaIhAIk9/uO41dR4WuchpPETzDTFHF4h7eu6XPrGJk9IUv
26
+ HtwXUAe0zk20MZApW+ZEYahV7g9XUfLG8iXr4ucYkIH+K+iboJU5
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfkbsMmwffJx/FOFeyr/iZjGeM5mLGlXSkxBiSVAk8EFJ9I//qMBzOmNALZY/+YxPHEk7cp4CiNZPu937rOpJYlWXsm+Nv1WaeSrocaoViviJ7H6BoDzvAXfXpvl6M0ebHujUvLpYf4pg48x8nSISqpZ3QxhQS+636wrCtr52AX5qUbl2O5G7TEkGNB50c8GZT3pHaXJ9OR16OHOwKI847Ns7ZdFegVR1MYpoOxd3MK3WTBdT2tH8+XjecpG/MGWqT9dOvwnO+kC+bxnXfxCV7PICGLmAxJia+8xpxl5moyvBsRugl2kiu6gRrV0hXMnI+dTTyT47McYijbOUXgD65 asari@strokkur.local
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEA3RxTJUAMgKZvL76RfhhW798dDjCYk5dCiV0Yb4Sex8uKhd/9
3
+ Wmm7MW2wQuEnREh4VhQp+m4Qoq1u0FSY6agANRTbelEYT7TRvLDPjxfQoJR90eN+
4
+ dUXGZ0sivGLKPytEYoCGJIcdY7o4qXAYXac3YIdpjgDgkRtVs3R8agSDjDGFdVcO
5
+ T+WI9aceAC5/ZbGjHkAtdMIFJCMxkmeG1jfft2yMId7fpmNKC8UQfykgJbspWioH
6
+ 7oWzdR+RbNXzYkiR/FZEka3ZoAMf72O5CwoSIXj76C+Xso+QeXpC3qqNHAmdtsjh
7
+ MLivuZUeyYA1zCfq+SgH/E9u+HYSatmsYXN9ZwIDAQABAoIBADSJimgLc+0NntWl
8
+ XkSr29xbEzhP67EF+9VPvYKh7GhkwKFWu4hEHyp7eaoqfX4ICi/J0r+ib2l39CCk
9
+ OUErngD+17eUlUY7HKrNCERj0DqXjd3VRDLxRVc9zx8cChpAWZteFoGPaThNAzGf
10
+ ZOq71Lim9Dm9k55m9FITl4xJTkh8+q9vksTQGdgq8nABTAdtt+ZNGFpTrKMTQBeJ
11
+ 4LgAiwTalMC99MMgXwQSoiTVmzWYiydMSfSJdlo/aSyErA5Uw0z0jUicFooo1lm0
12
+ kAo+vKvSvbG+Vj7s0DZNk+q+CewI/sD9RDp0NNcLtu568DjE/3uyQm1ltS93ZPjt
13
+ uQiQ50ECgYEA9U/bKrlkz6CqfW0gw4jl/FP6+tUlZmC6qTbdOgy+vADhASc88TcG
14
+ X9PQts4wRwuSsOUlzhQfT4WyQHBOJIzAGsmLF63z6GviLz0/AFfq7hqVgPBMEwpQ
15
+ qnKrlj3oNCPAk1uhMFK7HAvUqdZPgFdvOaQPuUJlJuCmmOH++aI+QZ8CgYEA5r6I
16
+ rQBku5A5BFkf0SgPl3fKxsnDTbP08SG0pQE3VK47r1rb+M6hEmPau9ADspSbAq9r
17
+ cnVFqR5ZmSATZ6yu6GhCGL+JS2Namj8mEt/9SuoHsEp7Sk7lBSUomKHHd0Atgd+X
18
+ 6+xidn52P4R8ro5Y8YB3n4y8iV9Yxb54KK5XfzkCgYEAj4h8ClGTpNCzMNRLWV2e
19
+ g7d3oJBaY76xORU6+B5A86vn+07EH7c8aZF8C5o1MTyaRhqtthicAWGO3JlZf5VD
20
+ SeknE2Ha1uFY5J8HX+IROeQgGeN//5wHetPBhhUO6oMIyK/Sbn3ZsR1S/1TAC64d
21
+ DDLsaE9q9AZ6M/X3xISjvK0CgYEAw9FUagTYd7hoOsFr1/M4cCGQK21UWh/rMaua
22
+ AyHqE+oc6q6f2SF53gJxwUtBqA6nEftOov7U1DXWcbWf4i7Q7Jh150y8tgamABqx
23
+ M/l0mlvLlJdQ0/nqL5ieQBGjFheXxwy6f9PGp6qgrTzBFt3kq2aLnhIweiA5VO9U
24
+ R6nUxTkCgYEA4wKf697PE0rgDJnFZDSfbITD/CAdoJvr1usnKL3FLZVPscU7hICT
25
+ d7htmwyJnAejgNBWYukTLpmuypkScooyb1/FSAJPIE8+KXdil8PiT78COHzS819Q
26
+ zfU9TFW9zgilH/6uYLMGPA43JKRKSTKs5R5NkPfpXZgbh4/QmFtcaQY=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdHFMlQAyApm8vvpF+GFbv3x0OMJiTl0KJXRhvhJ7Hy4qF3/1aabsxbbBC4SdESHhWFCn6bhCirW7QVJjpqAA1FNt6URhPtNG8sM+PF9CglH3R4351RcZnSyK8Yso/K0RigIYkhx1jujipcBhdpzdgh2mOAOCRG1WzdHxqBIOMMYV1Vw5P5Yj1px4ALn9lsaMeQC10wgUkIzGSZ4bWN9+3bIwh3t+mY0oLxRB/KSAluylaKgfuhbN1H5Fs1fNiSJH8VkSRrdmgAx/vY7kLChIhePvoL5eyj5B5ekLeqo0cCZ22yOEwuK+5lR7JgDXMJ+r5KAf8T274dhJq2axhc31n asari@strokkur.local
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAQDuwb0v02Eu8TDI1TzGV4dFK7qUgwegENLbR+amPS1tP38Ulv3p4CeqmFY+hAGacjFnZWK2LEF/iJBjIbFg1MeUmQHOaGhexNTtomkWzuDt5rINeGhmcCbIu822yCMBjF4usdZVMgwJiyc5HcawmVNUAP9mgjyJ0TSjU51CVU8jh+1EeGv5VINixzOj1wYQuqJ2n5Xu72MRqOOMchOagZHEFfBgvZHJhg9T5fmUqwjZpY93TZNOVCESTkMUuS9UCGPtO1jZmRKNggMymcx7P60dnzH80Y9ZeWaC7GwyizG9wuNJavHfiSzIx+qnI07FejrEbwln/WriD2VDMQTvmyRz asari@strokkur.local