Skip to content

Commit c93a234

Browse files
Merge pull request #134 from smcavallo/support_multiple_profiles
Support multiple profiles
2 parents 7889052 + 06e2a3a commit c93a234

2 files changed

Lines changed: 40 additions & 1 deletion

File tree

lib/softlayer/Config.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ def Config.file_settings(*additional_files)
121121
search_path.each do |file_path|
122122
if File.readable? file_path
123123
config = ConfigParser.new file_path
124-
softlayer_section = config['softlayer']
124+
profile_name = ENV['SL_PROFILE'] || 'softlayer'
125+
softlayer_section = config[profile_name]
125126

126127
if softlayer_section
127128
result[:api_key] = softlayer_section['api_key'] if softlayer_section['api_key']

spec/Config_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
require 'tempfile'
1414

1515
describe SoftLayer::Config do
16+
17+
before :each do
18+
ENV.delete("SL_USERNAME")
19+
ENV.delete("SL_API_KEY")
20+
ENV.delete("SL_API_USER_AGENT")
21+
ENV.delete("SL_PROFILE")
22+
end
23+
1624
it "retrieves config information from environment variables" do
1725
ENV.store("SL_USERNAME", "PoohBear")
1826
ENV.store("SL_API_KEY", "DEADBEEFBADF00D")
@@ -41,6 +49,36 @@
4149
expect(settings[:timeout]).to eq(40)
4250
end
4351

52+
it "retrieves the properties from a custom file using a custom profile" do
53+
ENV.store("SL_PROFILE", "softlayer_qa")
54+
file = Tempfile.new('properties_from_file')
55+
begin
56+
file.puts("[softlayer_dev]")
57+
file.puts("username = PoohBear")
58+
file.puts("api_key = DEADBEEFBADF00D")
59+
file.puts("timeout = 40")
60+
file.puts("\n")
61+
file.puts("[softlayer_qa]")
62+
file.puts("username = Piglet")
63+
file.puts("api_key = MOOOOOOOO")
64+
file.puts("timeout = 60")
65+
file.puts("\n")
66+
file.puts("[softlayer_prod]")
67+
file.puts("username = Eeyore")
68+
file.puts("api_key = VEG_ALL_THE_WAY")
69+
file.puts("timeout = 80")
70+
file.close
71+
72+
settings = SoftLayer::Config.file_settings(file.path)
73+
ensure
74+
file.close
75+
file.unlink
76+
end
77+
78+
expect(settings[:username]).to eq("Piglet")
79+
expect(settings[:api_key]).to eq("MOOOOOOOO")
80+
expect(settings[:timeout]).to eq(60)
81+
end
4482

4583
it "retrieves the timeout field as an integer when presented as a string" do
4684
file = Tempfile.new('config_test')

0 commit comments

Comments
 (0)