sdbport 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -1
- data/README.md +39 -10
- data/lib/sdbport/cli.rb +5 -11
- data/lib/sdbport/cli/destroy.rb +11 -7
- data/lib/sdbport/cli/export.rb +11 -7
- data/lib/sdbport/cli/import.rb +11 -7
- data/lib/sdbport/cli/purge.rb +11 -7
- data/lib/sdbport/config.rb +19 -5
- data/lib/sdbport/version.rb +1 -1
- data/spec/cli_spec.rb +4 -14
- data/spec/config_spec.rb +11 -7
- metadata +10 -10
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -8,34 +8,63 @@ Sdbport exports & imports data from AWS SimpleDB domains. It can be used as a cl
|
|
8
8
|
|
9
9
|
gem install sdbport
|
10
10
|
|
11
|
-
##
|
11
|
+
## Getting Started
|
12
12
|
|
13
13
|
Set your AWS credentials:
|
14
14
|
|
15
15
|
```
|
16
|
-
export AWS_ACCESS_KEY_ID=
|
17
|
-
export AWS_SECRET_ACCESS_KEY=
|
16
|
+
export AWS_ACCESS_KEY_ID=your_aws_key
|
17
|
+
export AWS_SECRET_ACCESS_KEY=your_aws_secret
|
18
18
|
```
|
19
19
|
|
20
|
-
|
20
|
+
Export SimpleDB domain from us-west-1:
|
21
|
+
|
22
|
+
```
|
23
|
+
sdbport export -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY -r us-west-1 -n data -o /tmp/test-domain-dump
|
24
|
+
```
|
25
|
+
|
26
|
+
Import into domain in us-east-1
|
27
|
+
|
28
|
+
```
|
29
|
+
sdbport import -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY -r us-west-1 -n data -i /tmp/test-domain-dump
|
30
|
+
|
31
|
+
## Exporting and importing from multiple accounts.
|
32
|
+
|
33
|
+
You can specify your credentials on the command line, however it is best to add them to a configuration file.
|
34
|
+
|
35
|
+
By default, sdbport look for .sdbport.yml in your home directory. To get started, add you AWS keys.
|
36
|
+
|
37
|
+
```
|
38
|
+
cat > ~/.sdbport.yml << EOF
|
39
|
+
default:
|
40
|
+
access_key: your_aws_key
|
41
|
+
secret_key: your_aws_secert
|
42
|
+
EOF
|
43
|
+
```
|
44
|
+
|
45
|
+
You can add multiple account credentials and specify the account with --account (-a).
|
21
46
|
|
22
47
|
```
|
23
48
|
cat > ~/.sdbport.yml << EOF
|
24
|
-
|
25
|
-
|
49
|
+
prod:
|
50
|
+
access_key: your_aws_key
|
51
|
+
secret_key: your_aws_secert
|
52
|
+
preprod:
|
53
|
+
access_key: your_aws_key
|
54
|
+
secret_key: your_aws_secert
|
26
55
|
EOF
|
27
56
|
```
|
28
57
|
|
29
|
-
Export SimpleDB domain:
|
58
|
+
Export SimpleDB domain data from prod account in us-west-1:
|
30
59
|
|
31
60
|
```
|
32
|
-
sdbport export -a
|
61
|
+
sdbport export -a prod -r us-west-1 -n data -o /tmp/data-domain-dump
|
33
62
|
```
|
34
63
|
|
35
|
-
Import into
|
64
|
+
Import into preprod account in us-east-1:
|
36
65
|
|
37
66
|
```
|
38
|
-
sdbport import -a
|
67
|
+
sdbport import -a preprod -r us-east-1 -n data -i /tmp/data-domain-dump
|
39
68
|
```
|
40
69
|
|
41
70
|
To list CLI subcommands:
|
data/lib/sdbport/cli.rb
CHANGED
@@ -7,25 +7,19 @@ require 'sdbport/cli/purge'
|
|
7
7
|
module Sdbport
|
8
8
|
class CLI
|
9
9
|
|
10
|
-
def initialize
|
11
|
-
@config = Config.new
|
12
|
-
@aws_default_creds = { :access_key => @config.access_key,
|
13
|
-
:secret_key => @config.secret_key }
|
14
|
-
end
|
15
|
-
|
16
10
|
def start
|
17
11
|
|
18
12
|
cmd = ARGV.shift
|
19
13
|
|
20
14
|
case cmd
|
21
|
-
when 'destroy'
|
22
|
-
CLI::Destroy.new
|
15
|
+
when 'destroy', 'delete'
|
16
|
+
CLI::Destroy.new.destroy
|
23
17
|
when 'export'
|
24
|
-
CLI::Export.new
|
18
|
+
CLI::Export.new.export
|
25
19
|
when 'import'
|
26
|
-
CLI::Import.new
|
20
|
+
CLI::Import.new.import
|
27
21
|
when 'purge'
|
28
|
-
CLI::Purge.new
|
22
|
+
CLI::Purge.new.purge
|
29
23
|
when '-v'
|
30
24
|
puts Sdbport::VERSION
|
31
25
|
else
|
data/lib/sdbport/cli/destroy.rb
CHANGED
@@ -2,15 +2,16 @@ module Sdbport
|
|
2
2
|
class CLI
|
3
3
|
class Destroy
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
7
|
-
@default_secret_key = args[:secret_key]
|
5
|
+
def initialize
|
6
|
+
@config = Config.new
|
8
7
|
end
|
9
8
|
|
10
9
|
def destroy
|
11
10
|
opts = read_options
|
12
|
-
access_key = opts[:
|
13
|
-
secret_key = opts[:
|
11
|
+
access_key = @config.access_key opts[:account]
|
12
|
+
secret_key = @config.secret_key opts[:account]
|
13
|
+
access_key = opts[:access_key] if opts[:access_key]
|
14
|
+
secret_key = opts[:secret_key] if opts[:secret_key]
|
14
15
|
|
15
16
|
logger = SdbportLogger.new :log_level => opts[:level]
|
16
17
|
domain = Domain.new :name => opts[:name],
|
@@ -34,10 +35,13 @@ sdbport destroy -a xxx -k yyy -r us-west-1 -n domain
|
|
34
35
|
|
35
36
|
EOS
|
36
37
|
opt :help, "Display Help"
|
38
|
+
opt :account, "Account Credentials", :type => :string,
|
39
|
+
:default => 'default'
|
37
40
|
opt :level, "Log Level", :type => :string, :default => 'info'
|
38
41
|
opt :name, "Simple DB Domain Name", :type => :string
|
39
|
-
opt :region, "AWS
|
40
|
-
opt :access_key, "AWS Access Key ID", :type
|
42
|
+
opt :region, "AWS Region", :type => :string
|
43
|
+
opt :access_key, "AWS Access Key ID", :type => :string,
|
44
|
+
:short => 'k'
|
41
45
|
opt :secret_key, "AWS Secret Access Key", :type => :string
|
42
46
|
end
|
43
47
|
end
|
data/lib/sdbport/cli/export.rb
CHANGED
@@ -2,15 +2,16 @@ module Sdbport
|
|
2
2
|
class CLI
|
3
3
|
class Export
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
7
|
-
@default_secret_key = args[:secret_key]
|
5
|
+
def initialize
|
6
|
+
@config = Config.new
|
8
7
|
end
|
9
8
|
|
10
9
|
def export
|
11
10
|
opts = read_options
|
12
|
-
access_key = opts[:
|
13
|
-
secret_key = opts[:
|
11
|
+
access_key = @config.access_key opts[:account]
|
12
|
+
secret_key = @config.secret_key opts[:account]
|
13
|
+
access_key = opts[:access_key] if opts[:access_key]
|
14
|
+
secret_key = opts[:secret_key] if opts[:secret_key]
|
14
15
|
|
15
16
|
logger = SdbportLogger.new :log_level => opts[:level]
|
16
17
|
domain = Domain.new :name => opts[:name],
|
@@ -34,11 +35,14 @@ sdbport export -a xxx -k yyy -r us-west-1 -o /tmp/file -n domain
|
|
34
35
|
|
35
36
|
EOS
|
36
37
|
opt :help, "Display Help"
|
38
|
+
opt :account, "Account Credentials", :type => :string,
|
39
|
+
:default => 'default'
|
37
40
|
opt :level, "Log Level", :type => :string, :default => 'info'
|
38
41
|
opt :name, "Simple DB Domain Name", :type => :string
|
39
42
|
opt :output, "Output File", :type => :string
|
40
|
-
opt :region, "AWS
|
41
|
-
opt :access_key, "AWS Access Key ID", :type
|
43
|
+
opt :region, "AWS Region", :type => :string
|
44
|
+
opt :access_key, "AWS Access Key ID", :type => :string,
|
45
|
+
:short => 'k'
|
42
46
|
opt :secret_key, "AWS Secret Access Key", :type => :string
|
43
47
|
end
|
44
48
|
end
|
data/lib/sdbport/cli/import.rb
CHANGED
@@ -2,15 +2,16 @@ module Sdbport
|
|
2
2
|
class CLI
|
3
3
|
class Import
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
7
|
-
@default_secret_key = args[:secret_key]
|
5
|
+
def initialize
|
6
|
+
@config = Config.new
|
8
7
|
end
|
9
8
|
|
10
9
|
def import
|
11
10
|
opts = read_options
|
12
|
-
access_key = opts[:
|
13
|
-
secret_key = opts[:
|
11
|
+
access_key = @config.access_key opts[:account]
|
12
|
+
secret_key = @config.secret_key opts[:account]
|
13
|
+
access_key = opts[:access_key] if opts[:access_key]
|
14
|
+
secret_key = opts[:secret_key] if opts[:secret_key]
|
14
15
|
|
15
16
|
logger = SdbportLogger.new :log_level => opts[:level]
|
16
17
|
domain = Domain.new :name => opts[:name],
|
@@ -34,11 +35,14 @@ sdbport import -a xxx -k yyy -r us-west-1 -i /tmp/file -n domain
|
|
34
35
|
|
35
36
|
EOS
|
36
37
|
opt :help, "Display Help"
|
38
|
+
opt :account, "Account Credentials", :type => :string,
|
39
|
+
:default => 'default'
|
37
40
|
opt :level, "Log Level", :type => :string, :default => 'info'
|
38
41
|
opt :name, "Simple DB Domain Name", :type => :string
|
39
42
|
opt :input, "Input File", :type => :string
|
40
|
-
opt :region, "AWS
|
41
|
-
opt :access_key, "AWS Access Key ID", :type => :string
|
43
|
+
opt :region, "AWS Region", :type => :string
|
44
|
+
opt :access_key, "AWS Access Key ID", :type => :string,
|
45
|
+
:short => 'k'
|
42
46
|
opt :secret_key, "AWS Secret Access Key", :type => :string
|
43
47
|
end
|
44
48
|
end
|
data/lib/sdbport/cli/purge.rb
CHANGED
@@ -2,15 +2,16 @@ module Sdbport
|
|
2
2
|
class CLI
|
3
3
|
class Purge
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
@
|
7
|
-
@default_secret_key = args[:secret_key]
|
5
|
+
def initialize
|
6
|
+
@config = Config.new
|
8
7
|
end
|
9
8
|
|
10
9
|
def purge
|
11
10
|
opts = read_options
|
12
|
-
access_key = opts[:
|
13
|
-
secret_key = opts[:
|
11
|
+
access_key = @config.access_key opts[:account]
|
12
|
+
secret_key = @config.secret_key opts[:account]
|
13
|
+
access_key = opts[:access_key] if opts[:access_key]
|
14
|
+
secret_key = opts[:secret_key] if opts[:secret_key]
|
14
15
|
|
15
16
|
logger = SdbportLogger.new :log_level => opts[:level]
|
16
17
|
domain = Domain.new :name => opts[:name],
|
@@ -34,10 +35,13 @@ sdbport purge -a xxx -k yyy -r us-west-1 -n domain
|
|
34
35
|
|
35
36
|
EOS
|
36
37
|
opt :help, "Display Help"
|
38
|
+
opt :account, "Account Credentials", :type => :string,
|
39
|
+
:default => 'default'
|
37
40
|
opt :level, "Log Level", :type => :string, :default => 'info'
|
38
41
|
opt :name, "Simple DB Domain Name", :type => :string
|
39
|
-
opt :region, "AWS
|
40
|
-
opt :access_key, "AWS Access Key ID", :type => :string
|
42
|
+
opt :region, "AWS Region", :type => :string
|
43
|
+
opt :access_key, "AWS Access Key ID", :type => :string,
|
44
|
+
:short => 'k'
|
41
45
|
opt :secret_key, "AWS Secret Access Key", :type => :string
|
42
46
|
end
|
43
47
|
end
|
data/lib/sdbport/config.rb
CHANGED
@@ -1,19 +1,33 @@
|
|
1
1
|
module Sdbport
|
2
2
|
class Config
|
3
3
|
|
4
|
-
attr_reader :access_key, :secret_key
|
5
|
-
|
6
4
|
def initialize
|
7
5
|
@config = load_config_file
|
8
|
-
@access_key = @config.fetch 'access_key', nil
|
9
|
-
@secret_key = @config.fetch 'secret_key', nil
|
10
6
|
end
|
11
7
|
|
8
|
+
def access_key(account)
|
9
|
+
if @config.has_key? account
|
10
|
+
@config[account].fetch 'access_key', nil
|
11
|
+
else
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def secret_key(account)
|
17
|
+
if @config.has_key? account
|
18
|
+
@config[account].fetch 'secret_key', nil
|
19
|
+
else
|
20
|
+
nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
12
26
|
def load_config_file
|
13
27
|
config_file = "#{ENV['HOME']}/.sdbport.yml"
|
14
28
|
|
15
29
|
if File.exists? config_file
|
16
|
-
YAML::load
|
30
|
+
YAML::load(File.open(config_file))
|
17
31
|
else
|
18
32
|
Hash.new
|
19
33
|
end
|
data/lib/sdbport/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -4,8 +4,6 @@ require 'sdbport/cli'
|
|
4
4
|
describe Sdbport do
|
5
5
|
before do
|
6
6
|
@cli_mock = mock 'cli'
|
7
|
-
@default_creds = { :access_key => 'the-key',
|
8
|
-
:secret_key => 'the-secret' }
|
9
7
|
@config_stub = stub 'config', :access_key => 'the-key',
|
10
8
|
:secret_key => 'the-secret'
|
11
9
|
Sdbport::Config.stub :new => @config_stub
|
@@ -13,36 +11,28 @@ describe Sdbport do
|
|
13
11
|
end
|
14
12
|
|
15
13
|
it "should call destroy" do
|
16
|
-
Sdbport::CLI::Destroy.
|
17
|
-
with(@default_creds).
|
18
|
-
and_return @cli_mock
|
14
|
+
Sdbport::CLI::Destroy.stub :new => @cli_mock
|
19
15
|
ARGV.stub :shift => 'destroy'
|
20
16
|
@cli_mock.should_receive :destroy
|
21
17
|
@cli.start
|
22
18
|
end
|
23
19
|
|
24
20
|
it "should call export" do
|
25
|
-
Sdbport::CLI::Export.
|
26
|
-
with(@default_creds).
|
27
|
-
and_return @cli_mock
|
21
|
+
Sdbport::CLI::Export.stub :new => @cli_mock
|
28
22
|
ARGV.stub :shift => 'export'
|
29
23
|
@cli_mock.should_receive :export
|
30
24
|
@cli.start
|
31
25
|
end
|
32
26
|
|
33
27
|
it "should call import" do
|
34
|
-
Sdbport::CLI::Import.
|
35
|
-
with(@default_creds).
|
36
|
-
and_return @cli_mock
|
28
|
+
Sdbport::CLI::Import.stub :new => @cli_mock
|
37
29
|
ARGV.stub :shift => 'import'
|
38
30
|
@cli_mock.should_receive :import
|
39
31
|
@cli.start
|
40
32
|
end
|
41
33
|
|
42
34
|
it "should call purge" do
|
43
|
-
Sdbport::CLI::Purge.
|
44
|
-
with(@default_creds).
|
45
|
-
and_return @cli_mock
|
35
|
+
Sdbport::CLI::Purge.stub :new => @cli_mock
|
46
36
|
ARGV.stub :shift => 'purge'
|
47
37
|
@cli_mock.should_receive :purge
|
48
38
|
@cli.start
|
data/spec/config_spec.rb
CHANGED
@@ -3,8 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe Sdbport do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@config = {
|
7
|
-
'
|
6
|
+
@config = {
|
7
|
+
'test123' => {
|
8
|
+
'access_key' => 'key',
|
9
|
+
'secret_key' => 'secret'
|
10
|
+
}
|
11
|
+
}
|
8
12
|
end
|
9
13
|
|
10
14
|
it "should create a new config object and read from ~/.sdbport.yml" do
|
@@ -13,15 +17,15 @@ describe Sdbport do
|
|
13
17
|
with("#{ENV['HOME']}/.sdbport.yml").
|
14
18
|
and_return @config.to_yaml
|
15
19
|
config = Sdbport::Config.new
|
16
|
-
config.access_key.should ==
|
17
|
-
config.secret_key.should ==
|
20
|
+
config.access_key('test123').should == 'key'
|
21
|
+
config.secret_key('test123').should == 'secret'
|
18
22
|
end
|
19
23
|
|
20
|
-
it "should
|
24
|
+
it "should return nil if .sdbport.yml does not exist" do
|
21
25
|
File.stub :exists? => false
|
22
26
|
config = Sdbport::Config.new
|
23
|
-
config.access_key.should be_nil
|
24
|
-
config.secret_key.should be_nil
|
27
|
+
config.access_key('test123').should be_nil
|
28
|
+
config.secret_key('test123').should be_nil
|
25
29
|
end
|
26
30
|
|
27
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sdbport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
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-10-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70269257047280 !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: *70269257047280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fog
|
27
|
-
requirement: &
|
27
|
+
requirement: &70269257046800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70269257046800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: trollop
|
38
|
-
requirement: &
|
38
|
+
requirement: &70269257046300 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70269257046300
|
47
47
|
description: Import and export AWS SimpleDB domains.
|
48
48
|
email:
|
49
49
|
- brett@weav.net
|
@@ -102,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
102
102
|
version: '0'
|
103
103
|
segments:
|
104
104
|
- 0
|
105
|
-
hash:
|
105
|
+
hash: 3777096327641096662
|
106
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
version: '0'
|
112
112
|
segments:
|
113
113
|
- 0
|
114
|
-
hash:
|
114
|
+
hash: 3777096327641096662
|
115
115
|
requirements: []
|
116
116
|
rubyforge_project:
|
117
117
|
rubygems_version: 1.8.16
|