heirloom 0.5.0rc4 → 0.6.0rc1
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.
- data/CHANGELOG +7 -0
- data/README.md +11 -0
- data/lib/heirloom/archive/setuper.rb +7 -1
- data/lib/heirloom/archive/updater.rb +1 -1
- data/lib/heirloom/archive/verifier.rb +10 -3
- data/lib/heirloom/aws/simpledb.rb +1 -1
- data/lib/heirloom/cli/authorize.rb +8 -3
- data/lib/heirloom/cli/destroy.rb +6 -1
- data/lib/heirloom/cli/download.rb +6 -6
- data/lib/heirloom/cli/list.rb +4 -1
- data/lib/heirloom/cli/setup.rb +69 -0
- data/lib/heirloom/cli/shared.rb +70 -4
- data/lib/heirloom/cli/show.rb +7 -3
- data/lib/heirloom/cli/tag.rb +6 -1
- data/lib/heirloom/cli/upload.rb +21 -6
- data/lib/heirloom/cli.rb +4 -1
- data/lib/heirloom/config.rb +2 -2
- data/lib/heirloom/version.rb +1 -1
- data/script/ci_setup +1 -1
- data/spec/archive/setup_spec.rb +1 -1
- data/spec/archive/verifier_spec.rb +1 -1
- data/spec/aws/simpledb_spec.rb +1 -1
- data/spec/cli/authorize_spec.rb +10 -7
- data/spec/cli/destroy_spec.rb +9 -6
- data/spec/cli/download_spec.rb +10 -8
- data/spec/cli/list_spec.rb +8 -6
- data/spec/cli/setup_spec.rb +45 -0
- data/spec/cli/shared_spec.rb +85 -10
- data/spec/cli/show_spec.rb +10 -7
- data/spec/cli/tag_spec.rb +11 -8
- data/spec/cli/upload_spec.rb +35 -19
- data/spec/config_spec.rb +8 -8
- metadata +14 -11
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## v0.6.0:
|
2
|
+
|
3
|
+
* Allowing engineer to specify region for metadata
|
4
|
+
* Ensuring metadata is in an upload region
|
5
|
+
* Split setup into seperate subcommand
|
6
|
+
* Perform additional validation on CLI options
|
7
|
+
|
1
8
|
## v0.5.0:
|
2
9
|
|
3
10
|
* Verify domain exists for all cmds except build & download
|
data/README.md
CHANGED
@@ -24,11 +24,22 @@ aws:
|
|
24
24
|
|
25
25
|
* **access_key / secret_key**: AWS account credentials where you would like the archives stored.
|
26
26
|
|
27
|
+
Proxy Support
|
28
|
+
-------------
|
29
|
+
|
30
|
+
Heirloom uses the http_proxy & https_proxy variables.
|
31
|
+
|
32
|
+
```
|
33
|
+
export http_proxy=http://1.2.3.4:80
|
34
|
+
export http_proxys=http://1.2.3.4:80
|
35
|
+
```
|
36
|
+
|
27
37
|
Platforms
|
28
38
|
---------
|
29
39
|
|
30
40
|
Currently I support AWS S3 for object storage and AWS SimpleDB for metadata management. One day I'd like to expand to other providers.
|
31
41
|
|
42
|
+
|
32
43
|
Documentation
|
33
44
|
-------------
|
34
45
|
|
@@ -14,6 +14,7 @@ module Heirloom
|
|
14
14
|
@bucket_prefix = args[:bucket_prefix]
|
15
15
|
create_buckets
|
16
16
|
create_domain
|
17
|
+
@logger.info "Setup complete."
|
17
18
|
end
|
18
19
|
|
19
20
|
private
|
@@ -33,7 +34,12 @@ module Heirloom
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def create_domain
|
36
|
-
|
37
|
+
region = @config.metadata_region
|
38
|
+
|
39
|
+
unless verifier.domain_exists?
|
40
|
+
@logger.info "Creating domain #{@name} in #{region}."
|
41
|
+
sdb.create_domain @domain
|
42
|
+
end
|
37
43
|
end
|
38
44
|
|
39
45
|
def verifier
|
@@ -16,7 +16,7 @@ module Heirloom
|
|
16
16
|
value = args[:value]
|
17
17
|
|
18
18
|
sdb.put_attributes @domain, @id, { attribute => value }, { :replace => attribute }
|
19
|
-
@logger.info "
|
19
|
+
@logger.info "Tagged #{@name} (#{@id}): #{attribute} = #{value}."
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
@@ -33,17 +33,24 @@ module Heirloom
|
|
33
33
|
:region => region
|
34
34
|
|
35
35
|
if s3.get_bucket bucket
|
36
|
-
@logger.debug "Bucket #{bucket} exists in #{region}"
|
36
|
+
@logger.debug "Bucket '#{bucket}' exists in '#{region}'."
|
37
37
|
true
|
38
38
|
else
|
39
|
-
@logger.
|
39
|
+
@logger.info "Bucket '#{bucket}' does not exist in '#{region}'."
|
40
40
|
false
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
def domain_exists?
|
45
45
|
domain = "heirloom_#{@name}"
|
46
|
-
|
46
|
+
region = @config.metadata_region
|
47
|
+
if sdb.domain_exists? domain
|
48
|
+
@logger.debug "Domain '#{@name}' exists in '#{region}'."
|
49
|
+
true
|
50
|
+
else
|
51
|
+
@logger.info "Domain '#{@name}' does not exist in '#{region}'."
|
52
|
+
false
|
53
|
+
end
|
47
54
|
end
|
48
55
|
|
49
56
|
private
|
@@ -8,7 +8,7 @@ module Heirloom
|
|
8
8
|
@config = args[:config]
|
9
9
|
@sdb = Fog::AWS::SimpleDB.new :aws_access_key_id => @config.access_key,
|
10
10
|
:aws_secret_access_key => @config.secret_key,
|
11
|
-
:region => @config.
|
11
|
+
:region => @config.metadata_region
|
12
12
|
end
|
13
13
|
|
14
14
|
def domains
|
@@ -13,12 +13,15 @@ module Heirloom
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
14
|
:required => [:accounts, :name, :id],
|
15
15
|
:config => @config
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
17
|
+
:config => @config
|
18
|
+
ensure_domain_exists :name => @opts[:name],
|
19
|
+
:config => @config
|
19
20
|
@archive = Archive.new :name => @opts[:name],
|
20
21
|
:id => @opts[:id],
|
21
22
|
:config => @config
|
23
|
+
ensure_archive_exists :archive => @archive,
|
24
|
+
:config => @config
|
22
25
|
end
|
23
26
|
|
24
27
|
def authorize
|
@@ -49,6 +52,8 @@ EOS
|
|
49
52
|
opt :id, "ID of the archive to authorize.", :type => :string
|
50
53
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
51
54
|
:default => 'info'
|
55
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
56
|
+
:default => 'us-west-1'
|
52
57
|
opt :name, "Name of archive.", :type => :string
|
53
58
|
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
54
59
|
:short => :none
|
data/lib/heirloom/cli/destroy.rb
CHANGED
@@ -13,7 +13,8 @@ module Heirloom
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
14
|
:required => [:name, :id],
|
15
15
|
:config => @config
|
16
|
-
|
16
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
17
|
+
:config => @config
|
17
18
|
ensure_domain_exists :name => @opts[:name], :config => @config
|
18
19
|
|
19
20
|
@name = @opts[:name]
|
@@ -21,6 +22,8 @@ module Heirloom
|
|
21
22
|
@archive = Archive.new :name => @name,
|
22
23
|
:id => @id,
|
23
24
|
:config => @config
|
25
|
+
ensure_archive_exists :archive => @archive,
|
26
|
+
:config => @config
|
24
27
|
end
|
25
28
|
|
26
29
|
def destroy
|
@@ -45,6 +48,8 @@ EOS
|
|
45
48
|
opt :id, "ID of the archive to display.", :type => :string
|
46
49
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
47
50
|
:default => 'info'
|
51
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
52
|
+
:default => 'us-west-1'
|
48
53
|
opt :name, "Name of archive.", :type => :string
|
49
54
|
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
50
55
|
:short => :none
|
@@ -11,7 +11,7 @@ module Heirloom
|
|
11
11
|
:opts => @opts
|
12
12
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
|
-
:required => [:
|
14
|
+
:required => [:base, :name, :id, :output],
|
15
15
|
:config => @config
|
16
16
|
|
17
17
|
@archive = Archive.new :name => @opts[:name],
|
@@ -25,7 +25,7 @@ module Heirloom
|
|
25
25
|
archive = @archive.download :output => @opts[:output],
|
26
26
|
:region => @opts[:region],
|
27
27
|
:extract => @opts[:extract],
|
28
|
-
:base_prefix => @opts[:
|
28
|
+
:base_prefix => @opts[:base],
|
29
29
|
:secret => @opts[:secret]
|
30
30
|
exit 1 unless archive
|
31
31
|
end
|
@@ -44,14 +44,14 @@ Usage:
|
|
44
44
|
heirloom download -n NAME -i ID -r REGION -o OUTPUT_DIRECTORY
|
45
45
|
|
46
46
|
EOS
|
47
|
-
opt :
|
47
|
+
opt :base, "Base of the archive to download.", :type => :string
|
48
|
+
opt :extract, "Extract the archive in the given output path.", :short => "-x"
|
48
49
|
opt :help, "Display Help"
|
49
50
|
opt :id, "ID of the archive to download.", :type => :string
|
50
|
-
opt :name, "Name of archive.", :type => :string
|
51
51
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
52
52
|
:default => 'info'
|
53
|
-
opt :
|
54
|
-
opt :
|
53
|
+
opt :name, "Name of archive.", :type => :string
|
54
|
+
opt :output, "Path to output downloaded archive. Must be existing directory.", :type => :string
|
55
55
|
opt :region, "Region to download archive.", :type => :string,
|
56
56
|
:default => 'us-west-1'
|
57
57
|
opt :secret, "Secret for ecrypted archive.", :type => :string
|
data/lib/heirloom/cli/list.rb
CHANGED
@@ -13,7 +13,8 @@ module Heirloom
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
14
|
:required => [:name],
|
15
15
|
:config => @config
|
16
|
-
|
16
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
17
|
+
:config => @config
|
17
18
|
ensure_domain_exists :name => @opts[:name], :config => @config
|
18
19
|
|
19
20
|
@archive = Archive.new :name => @opts[:name],
|
@@ -44,6 +45,8 @@ EOS
|
|
44
45
|
opt :help, "Display Help"
|
45
46
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
46
47
|
:default => 'info'
|
48
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
49
|
+
:default => 'us-west-1'
|
47
50
|
opt :name, "Name of archive.", :type => :string
|
48
51
|
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
49
52
|
:short => :none
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Heirloom
|
2
|
+
module CLI
|
3
|
+
class Setup
|
4
|
+
|
5
|
+
include Heirloom::CLI::Shared
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@opts = read_options
|
9
|
+
@logger = HeirloomLogger.new :log_level => @opts[:level]
|
10
|
+
@config = load_config :logger => @logger,
|
11
|
+
:opts => @opts
|
12
|
+
|
13
|
+
ensure_valid_options :provided => @opts,
|
14
|
+
:required => [:metadata_region, :region,
|
15
|
+
:name, :base],
|
16
|
+
:config => @config
|
17
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
18
|
+
:config => @config
|
19
|
+
ensure_valid_regions :regions => @opts[:region],
|
20
|
+
:config => @config
|
21
|
+
|
22
|
+
@archive = Archive.new :name => @opts[:name],
|
23
|
+
:config => @config
|
24
|
+
end
|
25
|
+
|
26
|
+
def setup
|
27
|
+
ensure_metadata_in_upload_region :config => @config,
|
28
|
+
:regions => @opts[:region]
|
29
|
+
@archive.setup :regions => @opts[:region],
|
30
|
+
:bucket_prefix => @opts[:base]
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def read_options
|
36
|
+
Trollop::options do
|
37
|
+
version Heirloom::VERSION
|
38
|
+
banner <<-EOS
|
39
|
+
|
40
|
+
Setup S3 and SimpleDB in the given regions.
|
41
|
+
|
42
|
+
Usage:
|
43
|
+
|
44
|
+
heirloom setup -b BASE -n NAME -m REGION1 -r REGION1 -r REGION2
|
45
|
+
|
46
|
+
EOS
|
47
|
+
opt :base, "Base prefix which will be combined with given regions \
|
48
|
+
region. For example: '-b test -r us-west-1 -r us-east-1' will create bucket test-us-west-1 \
|
49
|
+
in us-west-1 and test-us-east-1 in us-east-1.", :type => :string
|
50
|
+
opt :help, "Display Help"
|
51
|
+
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
52
|
+
:default => 'info'
|
53
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
54
|
+
:default => 'us-west-1'
|
55
|
+
opt :name, "Name of archive.", :type => :string
|
56
|
+
opt :region, "AWS Region(s) to upload archive. \
|
57
|
+
Can be specified multiple times.", :type => :string,
|
58
|
+
:multi => true,
|
59
|
+
:default => 'us-west-1'
|
60
|
+
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
61
|
+
:short => :none
|
62
|
+
opt :aws_secret_key, "AWS Secret Access Key", :type => :string,
|
63
|
+
:short => :none
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/heirloom/cli/shared.rb
CHANGED
@@ -6,8 +6,9 @@ module Heirloom
|
|
6
6
|
opts = args[:opts]
|
7
7
|
logger = args[:logger]
|
8
8
|
config = Config.new :logger => logger
|
9
|
-
config.access_key = opts[:aws_access_key] if opts[:
|
10
|
-
config.secret_key = opts[:aws_secret_key] if opts[:
|
9
|
+
config.access_key = opts[:aws_access_key] if opts[:aws_access_key]
|
10
|
+
config.secret_key = opts[:aws_secret_key] if opts[:aws_secret_key]
|
11
|
+
config.metadata_region = opts[:metadata_region] if opts[:metadata_region]
|
11
12
|
config
|
12
13
|
end
|
13
14
|
|
@@ -45,6 +46,41 @@ module Heirloom
|
|
45
46
|
exit 1 unless missing_opts.empty?
|
46
47
|
end
|
47
48
|
|
49
|
+
def ensure_valid_regions(args)
|
50
|
+
regions = args[:regions]
|
51
|
+
config = args[:config]
|
52
|
+
regions.each do |region|
|
53
|
+
ensure_valid_region :region => region,
|
54
|
+
:config => config
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def ensure_valid_region(args)
|
59
|
+
config = args[:config]
|
60
|
+
region = args[:region]
|
61
|
+
logger = config.logger
|
62
|
+
valid_regions = ['us-east-1', 'us-west-1', 'us-west-2']
|
63
|
+
|
64
|
+
unless valid_regions.include? region
|
65
|
+
logger.error "'#{region}' is not a valid region."
|
66
|
+
logger.error "Valid regions: #{valid_regions.join(', ')}"
|
67
|
+
exit 1
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def ensure_metadata_in_upload_region(args)
|
72
|
+
config = args[:config]
|
73
|
+
regions = args[:regions]
|
74
|
+
logger = config.logger
|
75
|
+
|
76
|
+
unless regions.include? config.metadata_region
|
77
|
+
logger.error "Upload Regions: '#{regions.join(', ')}'."
|
78
|
+
logger.error "Metadata Region: '#{config.metadata_region}'."
|
79
|
+
logger.error "Upload regions must include metadata region."
|
80
|
+
exit 1
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
48
84
|
def ensure_directory(args)
|
49
85
|
config = args[:config]
|
50
86
|
path = args[:path]
|
@@ -56,16 +92,46 @@ module Heirloom
|
|
56
92
|
end
|
57
93
|
end
|
58
94
|
|
95
|
+
def ensure_buckets_exist(args)
|
96
|
+
config = args[:config]
|
97
|
+
base = args[:base]
|
98
|
+
name = args[:name]
|
99
|
+
regions = args[:regions]
|
100
|
+
logger = config.logger
|
101
|
+
|
102
|
+
archive = Archive.new :name => name,
|
103
|
+
:config => config
|
104
|
+
|
105
|
+
unless archive.buckets_exist? :regions => regions,
|
106
|
+
:bucket_prefix => base
|
107
|
+
logger.error "Required buckets for '#{base}' do not exist."
|
108
|
+
logger.error "Run 'heirloom setup -h' for help setting up new region."
|
109
|
+
exit 1
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
59
113
|
def ensure_domain_exists(args)
|
60
114
|
config = args[:config]
|
61
|
-
name
|
115
|
+
name = args[:name]
|
62
116
|
logger = config.logger
|
63
117
|
|
64
118
|
archive = Archive.new :name => name,
|
65
119
|
:config => config
|
66
120
|
|
67
121
|
unless archive.domain_exists?
|
68
|
-
logger.error "
|
122
|
+
logger.error "Metadata domain '#{name}' does not exist in '#{config.metadata_region}'."
|
123
|
+
logger.error "Run 'heirloom setup -h' for help setting up new region."
|
124
|
+
exit 1
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def ensure_archive_exists(args)
|
129
|
+
config = args[:config]
|
130
|
+
archive = args[:archive]
|
131
|
+
logger = config.logger
|
132
|
+
|
133
|
+
unless archive.exists?
|
134
|
+
logger.error "Archive does not exist."
|
69
135
|
exit 1
|
70
136
|
end
|
71
137
|
end
|
data/lib/heirloom/cli/show.rb
CHANGED
@@ -13,13 +13,15 @@ module Heirloom
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
14
|
:required => [:name],
|
15
15
|
:config => @config
|
16
|
-
|
16
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
17
|
+
:config => @config
|
17
18
|
ensure_domain_exists :name => @opts[:name], :config => @config
|
18
|
-
|
19
19
|
id = @opts[:id] ? @opts[:id] : latest_id
|
20
20
|
@archive = Archive.new :name => @opts[:name],
|
21
21
|
:config => @config,
|
22
22
|
:id => id
|
23
|
+
ensure_archive_exists :archive => @archive,
|
24
|
+
:config => @config
|
23
25
|
end
|
24
26
|
|
25
27
|
def show
|
@@ -49,10 +51,12 @@ If -i is ommited, latest ID is displayed.
|
|
49
51
|
|
50
52
|
EOS
|
51
53
|
opt :help, "Display Help"
|
54
|
+
opt :id, "ID of the archive to display.", :type => :string
|
52
55
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
53
56
|
:default => 'info'
|
57
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
58
|
+
:default => 'us-west-1'
|
54
59
|
opt :name, "Name of archive.", :type => :string
|
55
|
-
opt :id, "ID of the archive to display.", :type => :string
|
56
60
|
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
57
61
|
:short => :none
|
58
62
|
opt :aws_secret_key, "AWS Secret Access Key", :type => :string,
|
data/lib/heirloom/cli/tag.rb
CHANGED
@@ -13,12 +13,15 @@ module Heirloom
|
|
13
13
|
ensure_valid_options :provided => @opts,
|
14
14
|
:required => [:name, :id, :attribute, :value],
|
15
15
|
:config => @config
|
16
|
-
|
16
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
17
|
+
:config => @config
|
17
18
|
ensure_domain_exists :name => @opts[:name], :config => @config
|
18
19
|
|
19
20
|
@archive = Archive.new :name => @opts[:name],
|
20
21
|
:id => @opts[:id],
|
21
22
|
:config => @config
|
23
|
+
ensure_archive_exists :archive => @archive,
|
24
|
+
:config => @config
|
22
25
|
end
|
23
26
|
|
24
27
|
def tag
|
@@ -49,6 +52,8 @@ EOS
|
|
49
52
|
opt :id, "ID of the archive to display.", :type => :string
|
50
53
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
51
54
|
:default => 'info'
|
55
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
56
|
+
:default => 'us-west-1'
|
52
57
|
opt :name, "Name of archive.", :type => :string
|
53
58
|
opt :value, "Value of attribute.", :type => :string,
|
54
59
|
:short => 'u'
|
data/lib/heirloom/cli/upload.rb
CHANGED
@@ -21,11 +21,22 @@ module Heirloom
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def upload
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
ensure_valid_region :region => @opts[:metadata_region],
|
25
|
+
:config => @config
|
26
|
+
ensure_valid_regions :regions => @opts[:region],
|
27
|
+
:config => @config
|
28
|
+
ensure_domain_exists :name => @opts[:name],
|
29
|
+
:config => @config
|
30
|
+
ensure_buckets_exist :base => @opts[:base],
|
31
|
+
:name => @opts[:name],
|
32
|
+
:regions => @opts[:region],
|
33
|
+
:config => @config
|
34
|
+
ensure_directory :path => @opts[:directory],
|
35
|
+
:config => @config
|
36
|
+
ensure_valid_secret :secret => @opts[:secret],
|
37
|
+
:config => @config
|
38
|
+
ensure_metadata_in_upload_region :config => @config,
|
39
|
+
:regions => @opts[:region]
|
29
40
|
|
30
41
|
@archive.destroy :keep_domain => true if @archive.exists?
|
31
42
|
|
@@ -71,10 +82,14 @@ Can be specified multiple times.", :type => :string, :multi => true
|
|
71
82
|
opt :id, "ID for archive (when -g specified, assumed to be GIT sha).", :type => :string
|
72
83
|
opt :level, "Log level [debug|info|warn|error].", :type => :string,
|
73
84
|
:default => 'info'
|
85
|
+
opt :metadata_region, "AWS region to store Heirloom metadata.", :type => :string,
|
86
|
+
:default => 'us-west-1'
|
74
87
|
opt :name, "Name of archive.", :type => :string
|
75
88
|
opt :public, "Set this archive as public readable?"
|
76
89
|
opt :region, "Region(s) to upload archive. \
|
77
|
-
Can be specified multiple times.", :type => :string,
|
90
|
+
Can be specified multiple times.", :type => :string,
|
91
|
+
:multi => true,
|
92
|
+
:default => 'us-west-1'
|
78
93
|
opt :secret, "Encrypt the archive with given secret.", :type => :string
|
79
94
|
opt :aws_access_key, "AWS Access Key ID", :type => :string,
|
80
95
|
:short => :none
|
data/lib/heirloom/cli.rb
CHANGED
@@ -4,6 +4,7 @@ require 'trollop'
|
|
4
4
|
require 'heirloom/cli/shared'
|
5
5
|
require 'heirloom/cli/authorize'
|
6
6
|
require 'heirloom/cli/upload'
|
7
|
+
require 'heirloom/cli/setup'
|
7
8
|
require 'heirloom/cli/list'
|
8
9
|
require 'heirloom/cli/show'
|
9
10
|
require 'heirloom/cli/tag'
|
@@ -24,6 +25,8 @@ module Heirloom
|
|
24
25
|
CLI::Download.new.download
|
25
26
|
when 'list'
|
26
27
|
CLI::List.new.list
|
28
|
+
when 'setup'
|
29
|
+
CLI::Setup.new.setup
|
27
30
|
when 'show'
|
28
31
|
CLI::Show.new.show
|
29
32
|
when 'update', 'tag'
|
@@ -34,7 +37,7 @@ module Heirloom
|
|
34
37
|
puts Heirloom::VERSION
|
35
38
|
else
|
36
39
|
puts "Unkown command: '#{cmd}'." unless cmd == '-h'
|
37
|
-
puts "heirloom [list|show|
|
40
|
+
puts "heirloom [authorize|destroy|download|list|setup|show|tag|upload] OPTIONS"
|
38
41
|
puts "Append -h for help on specific command."
|
39
42
|
end
|
40
43
|
end
|
data/lib/heirloom/config.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Heirloom
|
2
2
|
class Config
|
3
3
|
|
4
|
-
attr_accessor :access_key, :secret_key, :
|
4
|
+
attr_accessor :access_key, :secret_key, :metadata_region, :logger
|
5
5
|
|
6
6
|
def initialize(args = {})
|
7
7
|
@config = args.fetch :config, load_config_file
|
@@ -13,7 +13,7 @@ module Heirloom
|
|
13
13
|
aws = @config['aws']
|
14
14
|
self.access_key = aws['access_key']
|
15
15
|
self.secret_key = aws['secret_key']
|
16
|
-
self.
|
16
|
+
self.metadata_region = aws['metadata_region']
|
17
17
|
end
|
18
18
|
|
19
19
|
def load_config_file
|
data/lib/heirloom/version.rb
CHANGED
data/script/ci_setup
CHANGED
data/spec/archive/setup_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe Heirloom do
|
|
5
5
|
before do
|
6
6
|
@logger_stub = stub 'logger', :debug => true, :info => true
|
7
7
|
@config_mock = mock 'config'
|
8
|
-
@config_mock.stub :logger => @logger_stub
|
8
|
+
@config_mock.stub :logger => @logger_stub, :metadata_region => 'us-west-1'
|
9
9
|
@verifier_mock = mock 'verifier'
|
10
10
|
Heirloom::Verifier.should_receive(:new).
|
11
11
|
with(:config => @config_mock,
|
@@ -4,7 +4,7 @@ describe Heirloom do
|
|
4
4
|
|
5
5
|
before do
|
6
6
|
@config_mock = double 'config'
|
7
|
-
@logger_stub = stub 'logger', :debug => true
|
7
|
+
@logger_stub = stub 'logger', :debug => true, :info => true
|
8
8
|
@s3_mock = double 's3_mock'
|
9
9
|
@config_mock.stub :logger => @logger_stub
|
10
10
|
@verifier = Heirloom::Verifier.new :config => @config_mock,
|
data/spec/aws/simpledb_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe Heirloom do
|
|
5
5
|
@config_mock = mock 'config'
|
6
6
|
@config_mock.should_receive(:access_key).and_return 'the-key'
|
7
7
|
@config_mock.should_receive(:secret_key).and_return 'the-secret'
|
8
|
-
@config_mock.should_receive(:
|
8
|
+
@config_mock.should_receive(:metadata_region).and_return 'us-west-1'
|
9
9
|
@fog_mock = mock 'fog'
|
10
10
|
Fog::AWS::SimpleDB.should_receive(:new).
|
11
11
|
with(:aws_access_key_id => 'the-key',
|
data/spec/cli/authorize_spec.rb
CHANGED
@@ -4,16 +4,18 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :level
|
8
|
-
:accounts
|
9
|
-
:name
|
10
|
-
:id
|
7
|
+
options = { :level => 'info',
|
8
|
+
:accounts => ['test@test.com'],
|
9
|
+
:name => 'archive_name',
|
10
|
+
:id => '1.0.0',
|
11
|
+
:metadata_region => 'us-west-1' }
|
11
12
|
@logger_stub = stub 'logger', :error => true
|
12
13
|
@config_mock = mock 'config'
|
13
14
|
@archive_mock = mock 'archive'
|
14
|
-
@config_mock.stub :logger
|
15
|
-
:access_key
|
16
|
-
:secret_key
|
15
|
+
@config_mock.stub :logger => @logger_stub,
|
16
|
+
:access_key => 'key',
|
17
|
+
:secret_key => 'secret',
|
18
|
+
:metadata_region => 'us-west-1'
|
17
19
|
Trollop.stub(:options).and_return options
|
18
20
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
19
21
|
and_return @logger_stub
|
@@ -30,6 +32,7 @@ describe Heirloom do
|
|
30
32
|
:name => 'archive_name',
|
31
33
|
:config => @config_mock).
|
32
34
|
and_return @archive_mock
|
35
|
+
@archive_mock.stub :exists? => true
|
33
36
|
@archive_mock.should_receive(:domain_exists?).and_return true
|
34
37
|
@cli_authorize = Heirloom::CLI::Authorize.new
|
35
38
|
end
|
data/spec/cli/destroy_spec.rb
CHANGED
@@ -4,15 +4,17 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :name
|
8
|
-
:id
|
9
|
-
:level
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info',
|
10
|
+
:metadata_region => 'us-west-1' }
|
10
11
|
@logger_stub = stub 'logger'
|
11
12
|
@config_mock = mock 'config'
|
12
13
|
@archive_mock = mock 'archive'
|
13
|
-
@config_mock.stub :logger
|
14
|
-
:access_key
|
15
|
-
:secret_key
|
14
|
+
@config_mock.stub :logger => @logger_stub,
|
15
|
+
:access_key => 'key',
|
16
|
+
:secret_key => 'secret',
|
17
|
+
:metadata_region => 'us-west-1'
|
16
18
|
Trollop.stub(:options).and_return options
|
17
19
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
18
20
|
and_return @logger_stub
|
@@ -29,6 +31,7 @@ describe Heirloom do
|
|
29
31
|
:name => 'archive_name',
|
30
32
|
:config => @config_mock).
|
31
33
|
and_return @archive_mock
|
34
|
+
@archive_mock.stub :exists? => true
|
32
35
|
@archive_mock.should_receive(:domain_exists?).and_return true
|
33
36
|
@cli_destroy = Heirloom::CLI::Destroy.new
|
34
37
|
end
|
data/spec/cli/download_spec.rb
CHANGED
@@ -4,19 +4,21 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :name
|
8
|
-
:id
|
9
|
-
:level
|
10
|
-
:output
|
11
|
-
:region
|
12
|
-
:extract
|
13
|
-
:
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info',
|
10
|
+
:output => '/tmp/test123',
|
11
|
+
:region => 'us-east-1',
|
12
|
+
:extract => false,
|
13
|
+
:metadata_region => 'us-west-1',
|
14
|
+
:base => 'base' }
|
14
15
|
@logger_stub = stub 'logger'
|
15
16
|
@config_mock = mock 'config'
|
16
17
|
@archive_mock = mock 'archive'
|
17
18
|
@config_mock.stub :logger => @logger_stub,
|
18
19
|
:access_key => 'key',
|
19
|
-
:secret_key => 'secret'
|
20
|
+
:secret_key => 'secret',
|
21
|
+
:metadata_region => 'us-west-1'
|
20
22
|
Trollop.stub(:options).and_return options
|
21
23
|
Heirloom::HeirloomLogger.should_receive(:new).
|
22
24
|
with(:log_level => 'info').
|
data/spec/cli/list_spec.rb
CHANGED
@@ -4,15 +4,17 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :name
|
8
|
-
:level
|
9
|
-
:
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:level => 'info',
|
9
|
+
:metadata_region => 'us-west-1',
|
10
|
+
:count => 100 }
|
10
11
|
@logger_stub = stub :debug => true
|
11
12
|
@config_mock = mock 'config'
|
12
13
|
@archive_mock = mock 'archive'
|
13
|
-
@config_mock.stub :logger
|
14
|
-
:access_key
|
15
|
-
:secret_key
|
14
|
+
@config_mock.stub :logger => @logger_mock,
|
15
|
+
:access_key => 'key',
|
16
|
+
:secret_key => 'secret',
|
17
|
+
:metadata_region => 'us-west-1'
|
16
18
|
Trollop.stub(:options).and_return options
|
17
19
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
18
20
|
and_return @logger_stub
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@regions = ['us-west-1', 'us-west-2']
|
8
|
+
options = { :level => 'info',
|
9
|
+
:base => 'base',
|
10
|
+
:region => @regions,
|
11
|
+
:name => 'archive_name',
|
12
|
+
:metadata_region => 'us-west-1' }
|
13
|
+
|
14
|
+
@logger_stub = stub 'logger', :error => true, :info => true
|
15
|
+
@config_mock = mock 'config'
|
16
|
+
@config_mock.stub :logger => @logger_stub,
|
17
|
+
:access_key => 'key',
|
18
|
+
:secret_key => 'secret',
|
19
|
+
:metadata_region => 'us-west-1'
|
20
|
+
@archive_mock = mock 'archive'
|
21
|
+
Trollop.stub(:options).and_return options
|
22
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
23
|
+
and_return @logger_stub
|
24
|
+
Heirloom::CLI::Setup.any_instance.should_receive(:load_config).
|
25
|
+
with(:logger => @logger_stub,
|
26
|
+
:opts => options).
|
27
|
+
and_return @config_mock
|
28
|
+
Heirloom::Archive.should_receive(:new).
|
29
|
+
with(:name => 'archive_name',
|
30
|
+
:config => @config_mock).
|
31
|
+
and_return @archive_mock
|
32
|
+
@setup = Heirloom::CLI::Setup.new
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should setup s3 buckets and simpledb domain" do
|
36
|
+
@setup.should_receive(:ensure_metadata_in_upload_region).
|
37
|
+
with(:config => @config_mock,
|
38
|
+
:regions => @regions)
|
39
|
+
@archive_mock.should_receive(:setup).
|
40
|
+
with(:regions => @regions,
|
41
|
+
:bucket_prefix => 'base')
|
42
|
+
@setup.setup
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/spec/cli/shared_spec.rb
CHANGED
@@ -9,9 +9,10 @@ describe Heirloom do
|
|
9
9
|
before do
|
10
10
|
@config_mock = mock 'config'
|
11
11
|
@logger_mock = mock 'logger'
|
12
|
-
@config_mock.stub :logger
|
13
|
-
:access_key
|
14
|
-
:secret_key
|
12
|
+
@config_mock.stub :logger => @logger_mock,
|
13
|
+
:access_key => 'key',
|
14
|
+
:secret_key => 'secret',
|
15
|
+
:metadata_region => 'us-west-1'
|
15
16
|
@object = Object.new
|
16
17
|
@object.extend Heirloom::CLI::Shared
|
17
18
|
end
|
@@ -82,16 +83,20 @@ describe Heirloom do
|
|
82
83
|
:opts => {}).should == @config_mock
|
83
84
|
end
|
84
85
|
|
86
|
+
it "should set the metadata region if specified" do
|
87
|
+
opts = { :metadata_region => 'us-west-1' }
|
88
|
+
@config_mock.should_receive(:metadata_region=).with 'us-west-1'
|
89
|
+
@object.load_config :logger => @logger_mock, :opts => opts
|
90
|
+
end
|
91
|
+
|
85
92
|
it "should set the access key if specified" do
|
86
|
-
opts = { :aws_access_key
|
87
|
-
:aws_access_key_given => true }
|
93
|
+
opts = { :aws_access_key => 'the_key' }
|
88
94
|
@config_mock.should_receive(:access_key=).with 'the_key'
|
89
95
|
@object.load_config :logger => @logger_mock, :opts => opts
|
90
96
|
end
|
91
97
|
|
92
98
|
it "should set the secret key if specified" do
|
93
|
-
opts = { :aws_secret_key
|
94
|
-
:aws_secret_key_given => true }
|
99
|
+
opts = { :aws_secret_key => 'the_secret' }
|
95
100
|
@config_mock.should_receive(:secret_key=).with 'the_secret'
|
96
101
|
@object.load_config :logger => @logger_mock, :opts => opts
|
97
102
|
end
|
@@ -127,7 +132,8 @@ describe Heirloom do
|
|
127
132
|
before do
|
128
133
|
@archive_mock = mock 'archive'
|
129
134
|
@logger_stub = stub 'logger', :error => true
|
130
|
-
@config_stub = stub 'config', :logger
|
135
|
+
@config_stub = stub 'config', :logger => @logger_stub,
|
136
|
+
:metadata_region => 'us-west-1'
|
131
137
|
@object = Object.new
|
132
138
|
@object.extend Heirloom::CLI::Shared
|
133
139
|
Heirloom::Archive.should_receive(:new).
|
@@ -136,17 +142,86 @@ describe Heirloom do
|
|
136
142
|
end
|
137
143
|
|
138
144
|
it "should ensure the domain for a given archive exists" do
|
139
|
-
@archive_mock.
|
145
|
+
@archive_mock.stub :domain_exists? => true
|
140
146
|
@object.ensure_domain_exists :config => @config_stub,
|
141
147
|
:name => 'test'
|
142
148
|
end
|
143
149
|
|
144
150
|
it "should exit if the domain does not exist" do
|
145
|
-
@archive_mock.
|
151
|
+
@archive_mock.stub :domain_exists? => false
|
146
152
|
lambda { @object.ensure_domain_exists :config => @config_stub,
|
147
153
|
:name => 'test'}.
|
148
154
|
should raise_error SystemExit
|
149
155
|
end
|
150
156
|
end
|
151
157
|
|
158
|
+
context "testing ensure metadata domain" do
|
159
|
+
before do
|
160
|
+
@archive_mock = mock 'archive'
|
161
|
+
@logger_stub = stub 'logger', :error => true
|
162
|
+
@config_stub = stub 'config', :logger => @logger_stub,
|
163
|
+
:metadata_region => 'us-west-1'
|
164
|
+
@object = Object.new
|
165
|
+
@object.extend Heirloom::CLI::Shared
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should ensure the metadata domain is included in the upload domains" do
|
169
|
+
options = { :config => @config_stub, :regions => ['us-west-1', 'us-east-1'] }
|
170
|
+
@object.ensure_metadata_in_upload_region options
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should exit if the metadata region is not in an upload region" do
|
174
|
+
options = { :config => @config_stub, :regions => ['us-west-2', 'us-east-1'] }
|
175
|
+
lambda { @object.ensure_metadata_in_upload_region options }.
|
176
|
+
should raise_error SystemExit
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
context "testing ensure valid regions" do
|
181
|
+
before do
|
182
|
+
@logger_stub = stub 'logger', :error => true
|
183
|
+
@config_stub = stub 'config', :logger => @logger_stub,
|
184
|
+
:metadata_region => 'us-west-1'
|
185
|
+
@object = Object.new
|
186
|
+
@object.extend Heirloom::CLI::Shared
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should ensure the metadata domain is included in the upload domains" do
|
190
|
+
options = { :config => @config_stub, :regions => ['us-west-2', 'us-east-1'] }
|
191
|
+
@object.ensure_valid_regions options
|
192
|
+
end
|
193
|
+
|
194
|
+
it "should exit if the region is not valid" do
|
195
|
+
options = { :config => @config_stub, :regions => ['us-west-2', 'us-bad-1'] }
|
196
|
+
lambda { @object.ensure_valid_regions options }.
|
197
|
+
should raise_error SystemExit
|
198
|
+
end
|
199
|
+
|
200
|
+
end
|
201
|
+
|
202
|
+
context "testing ensure archive exists" do
|
203
|
+
before do
|
204
|
+
@archive_mock = mock 'archive'
|
205
|
+
@logger_stub = stub 'logger', :error => true
|
206
|
+
@config_stub = stub 'config', :logger => @logger_stub,
|
207
|
+
:metadata_region => 'us-west-1'
|
208
|
+
@object = Object.new
|
209
|
+
@object.extend Heirloom::CLI::Shared
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should ensure the archive exists" do
|
213
|
+
@archive_mock.should_receive(:exists?).and_return true
|
214
|
+
options = { :config => @config_stub, :archive => @archive_mock }
|
215
|
+
@object.ensure_archive_exists options
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should exit if the archive does not exist" do
|
219
|
+
@archive_mock.should_receive(:exists?).and_return false
|
220
|
+
options = { :config => @config_stub, :archive => @archive_mock }
|
221
|
+
lambda { @object.ensure_archive_exists options }.
|
222
|
+
should raise_error SystemExit
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
|
152
227
|
end
|
data/spec/cli/show_spec.rb
CHANGED
@@ -4,15 +4,17 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :name
|
8
|
-
:id
|
9
|
-
:level
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info',
|
10
|
+
:metadata_region => 'us-west-1' }
|
10
11
|
@logger_stub = stub :debug => true
|
11
12
|
@config_mock = mock 'config'
|
12
13
|
@archive_mock = mock 'archive'
|
13
|
-
@config_mock.stub :logger
|
14
|
-
:access_key
|
15
|
-
:secret_key
|
14
|
+
@config_mock.stub :logger => @logger_stub,
|
15
|
+
:access_key => 'key',
|
16
|
+
:secret_key => 'secret',
|
17
|
+
:metadata_region => 'us-west-1'
|
16
18
|
Trollop.stub(:options).and_return options
|
17
19
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
18
20
|
and_return @logger_stub
|
@@ -29,7 +31,8 @@ describe Heirloom do
|
|
29
31
|
:id => '1.0.0',
|
30
32
|
:config => @config_mock).
|
31
33
|
and_return @archive_mock
|
32
|
-
@archive_mock.
|
34
|
+
@archive_mock.stub :exists? => true
|
35
|
+
@archive_mock.stub :domain_exists? => true
|
33
36
|
@cli_show = Heirloom::CLI::Show.new
|
34
37
|
end
|
35
38
|
|
data/spec/cli/tag_spec.rb
CHANGED
@@ -4,17 +4,19 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
options = { :name
|
8
|
-
:id
|
9
|
-
:level
|
10
|
-
:attribute
|
11
|
-
:value
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info',
|
10
|
+
:attribute => 'att',
|
11
|
+
:value => 'val',
|
12
|
+
:metadata_region => 'us-west-1' }
|
12
13
|
@logger_stub = stub :debug => true, :error => true
|
13
14
|
@config_mock = mock 'config'
|
14
15
|
@archive_mock = mock 'archive'
|
15
|
-
@config_mock.stub :logger
|
16
|
-
:access_key
|
17
|
-
:secret_key
|
16
|
+
@config_mock.stub :logger => @logger_stub,
|
17
|
+
:access_key => 'key',
|
18
|
+
:secret_key => 'secret',
|
19
|
+
:metadata_region => 'us-west-1'
|
18
20
|
Trollop.stub(:options).and_return options
|
19
21
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
20
22
|
and_return @logger_stub
|
@@ -31,6 +33,7 @@ describe Heirloom do
|
|
31
33
|
:id => '1.0.0',
|
32
34
|
:config => @config_mock).
|
33
35
|
and_return @archive_mock
|
36
|
+
@archive_mock.stub :exists? => true
|
34
37
|
@archive_mock.should_receive(:domain_exists?).and_return true
|
35
38
|
@cli_tag = Heirloom::CLI::Tag.new
|
36
39
|
end
|
data/spec/cli/upload_spec.rb
CHANGED
@@ -4,21 +4,25 @@ require 'heirloom/cli'
|
|
4
4
|
describe Heirloom do
|
5
5
|
|
6
6
|
before do
|
7
|
-
|
8
|
-
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
7
|
+
@regions = ['us-west-1', 'us-west-2']
|
8
|
+
options = { :level => 'info',
|
9
|
+
:base => 'base',
|
10
|
+
:git => false,
|
11
|
+
:exclude => ['exclude1', 'exclude2'],
|
12
|
+
:region => @regions,
|
13
|
+
:directory => '/buildme',
|
14
|
+
:public => false,
|
15
|
+
:secret => 'secret12',
|
16
|
+
:name => 'archive_name',
|
17
|
+
:id => '1.0.0',
|
18
|
+
:metadata_region => 'us-west-1' }
|
16
19
|
|
17
20
|
@logger_stub = stub 'logger', :error => true, :info => true
|
18
21
|
@config_mock = mock 'config'
|
19
|
-
@config_mock.stub :logger
|
20
|
-
:access_key
|
21
|
-
:secret_key
|
22
|
+
@config_mock.stub :logger => @logger_stub,
|
23
|
+
:access_key => 'key',
|
24
|
+
:secret_key => 'secret',
|
25
|
+
:metadata_region => 'us-west-1'
|
22
26
|
@archive_mock = mock 'archive'
|
23
27
|
Trollop.stub(:options).and_return options
|
24
28
|
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
@@ -36,22 +40,34 @@ describe Heirloom do
|
|
36
40
|
end
|
37
41
|
|
38
42
|
it "should upload an archive" do
|
39
|
-
@upload.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
@upload.should_receive(:ensure_domain_exists).
|
44
|
+
with(:name => 'archive_name',
|
45
|
+
:config => @config_mock)
|
46
|
+
@upload.should_receive(:ensure_buckets_exist).
|
47
|
+
with(:base => 'base',
|
48
|
+
:name => 'archive_name',
|
49
|
+
:regions => @regions,
|
50
|
+
:config => @config_mock)
|
51
|
+
@upload.should_receive(:ensure_directory).
|
52
|
+
with(:path => '/buildme',
|
53
|
+
:config => @config_mock)
|
54
|
+
@upload.should_receive(:ensure_valid_secret).
|
55
|
+
with(:secret => 'secret12',
|
56
|
+
:config => @config_mock)
|
57
|
+
@upload.should_receive(:ensure_metadata_in_upload_region).
|
58
|
+
with(:config => @config_mock,
|
59
|
+
:regions => @regions)
|
44
60
|
@archive_mock.stub :exists? => false
|
45
61
|
@archive_mock.should_receive(:build).
|
46
62
|
with(:base => 'base',
|
47
63
|
:directory => '/buildme',
|
48
64
|
:exclude => ["exclude1", "exclude2"],
|
49
65
|
:git => false,
|
50
|
-
:secret =>
|
66
|
+
:secret => 'secret12').
|
51
67
|
and_return '/tmp/build123.tar.gz'
|
52
68
|
@archive_mock.should_receive(:upload).
|
53
69
|
with(:bucket_prefix => 'base',
|
54
|
-
:regions =>
|
70
|
+
:regions => @regions,
|
55
71
|
:public_readable => false,
|
56
72
|
:file => '/tmp/build123.tar.gz')
|
57
73
|
@upload.upload
|
data/spec/config_spec.rb
CHANGED
@@ -4,9 +4,9 @@ describe Heirloom do
|
|
4
4
|
|
5
5
|
before do
|
6
6
|
@config = { 'aws' =>
|
7
|
-
{ 'access_key' => 'key',
|
8
|
-
'secret_key' => 'secret',
|
9
|
-
'
|
7
|
+
{ 'access_key ' => 'key',
|
8
|
+
'secret_key ' => 'secret',
|
9
|
+
'metadata_region' => 'us-west-2'
|
10
10
|
}
|
11
11
|
}
|
12
12
|
end
|
@@ -16,7 +16,7 @@ describe Heirloom do
|
|
16
16
|
:logger => 'da-logger'
|
17
17
|
config.access_key.should == @config['aws']['access_key']
|
18
18
|
config.secret_key.should == @config['aws']['secret_key']
|
19
|
-
config.
|
19
|
+
config.metadata_region.should == @config['aws']['metadata_region']
|
20
20
|
config.logger.should == 'da-logger'
|
21
21
|
end
|
22
22
|
|
@@ -27,14 +27,14 @@ describe Heirloom do
|
|
27
27
|
config = Heirloom::Config.new
|
28
28
|
config.access_key.should == @config['aws']['access_key']
|
29
29
|
config.secret_key.should == @config['aws']['secret_key']
|
30
|
-
config.
|
30
|
+
config.metadata_region.should == @config['aws']['metadata_region']
|
31
31
|
end
|
32
32
|
|
33
|
-
it "should
|
33
|
+
it "should return nil if metadata_region not present in config" do
|
34
34
|
@config['aws'] = {}
|
35
35
|
config = Heirloom::Config.new :config => @config,
|
36
36
|
:logger => 'da-logger'
|
37
|
-
config.
|
37
|
+
config.metadata_region.should == nil
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should load a blank config if the file does not exist and no config passed" do
|
@@ -42,7 +42,7 @@ describe Heirloom do
|
|
42
42
|
config = Heirloom::Config.new
|
43
43
|
config.access_key.should be_nil
|
44
44
|
config.secret_key.should be_nil
|
45
|
-
config.
|
45
|
+
config.metadata_region.should be_nil
|
46
46
|
end
|
47
47
|
|
48
48
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: heirloom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0rc1
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70322913192860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70322913192860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fog
|
27
|
-
requirement: &
|
27
|
+
requirement: &70322913202760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.5.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70322913202760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: grit
|
38
|
-
requirement: &
|
38
|
+
requirement: &70322913214480 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.5.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70322913214480
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: trollop
|
49
|
-
requirement: &
|
49
|
+
requirement: &70322913212440 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - =
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '2.0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70322913212440
|
58
58
|
description: I help build and manage building tar.gz files and deploying them into
|
59
59
|
the cloud
|
60
60
|
email:
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- lib/heirloom/cli/destroy.rb
|
100
100
|
- lib/heirloom/cli/download.rb
|
101
101
|
- lib/heirloom/cli/list.rb
|
102
|
+
- lib/heirloom/cli/setup.rb
|
102
103
|
- lib/heirloom/cli/shared.rb
|
103
104
|
- lib/heirloom/cli/show.rb
|
104
105
|
- lib/heirloom/cli/tag.rb
|
@@ -137,6 +138,7 @@ files:
|
|
137
138
|
- spec/cli/destroy_spec.rb
|
138
139
|
- spec/cli/download_spec.rb
|
139
140
|
- spec/cli/list_spec.rb
|
141
|
+
- spec/cli/setup_spec.rb
|
140
142
|
- spec/cli/shared_spec.rb
|
141
143
|
- spec/cli/show_spec.rb
|
142
144
|
- spec/cli/tag_spec.rb
|
@@ -162,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
164
|
version: '0'
|
163
165
|
segments:
|
164
166
|
- 0
|
165
|
-
hash: -
|
167
|
+
hash: -4439372529062381791
|
166
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
169
|
none: false
|
168
170
|
requirements:
|
@@ -197,6 +199,7 @@ test_files:
|
|
197
199
|
- spec/cli/destroy_spec.rb
|
198
200
|
- spec/cli/download_spec.rb
|
199
201
|
- spec/cli/list_spec.rb
|
202
|
+
- spec/cli/setup_spec.rb
|
200
203
|
- spec/cli/shared_spec.rb
|
201
204
|
- spec/cli/show_spec.rb
|
202
205
|
- spec/cli/tag_spec.rb
|