rhc 0.97.17 → 0.98.16

Sign up to get free protection for your applications and to get access to all the features.
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