alephant-harness 0.1.3 → 0.2.0
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7c2f7020c1df1e241c8aeba1d979b6cfd18ea5e
|
4
|
+
data.tar.gz: 5a7a8a2302d20af4cef6be3eddf91fce8b0417cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 192d57c3bd1e1d02f9357462cb53fdd619cfb78a6b5f1195b5fd9042a4dc3113dd34607dced786d7b652f06b09a878bbef82498769b80459531ae23201d72387
|
7
|
+
data.tar.gz: 91d9bc269c4b79d232e8281e5c89df7d011087c7f9bbf8e60d2e56d0e6bdc957ccd9b50987298215b9f2b2864f09e36054b5990176cc3ff814bca4f9be73e9a1
|
@@ -10,21 +10,18 @@ module Alephant
|
|
10
10
|
@@client ||= ::AWS::DynamoDB::Client::V20120810.new
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.create(table_name,
|
14
|
-
schema
|
13
|
+
def self.create(table_name, schema)
|
14
|
+
schema.tap { |s| s[:table_name] = table_name }
|
15
15
|
client.create_table schema
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.remove(
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
rescue Exception => e
|
23
|
-
#If table doesn't exist fail silently
|
24
|
-
end
|
25
|
-
end
|
18
|
+
def self.remove(table_name)
|
19
|
+
client.delete_table({ :table_name => table_name })
|
20
|
+
rescue Exception => e
|
21
|
+
#If table doesn't exist fail silently
|
26
22
|
end
|
27
23
|
|
24
|
+
|
28
25
|
def self.load_schema(schema_name)
|
29
26
|
YAML::load_file(File.join([File.dirname(__FILE__), *(%w'..' * 4), 'schema', "#{schema_name}.yaml"]))
|
30
27
|
end
|
@@ -37,6 +37,18 @@ module Alephant
|
|
37
37
|
get_object(id, object_id).delete
|
38
38
|
end
|
39
39
|
|
40
|
+
def self.bucket_exists?(bucket_id)
|
41
|
+
begin
|
42
|
+
exists = client.buckets[bucket_id].exists?
|
43
|
+
rescue ::AWS::S3::Errors::NoSuchKey => e
|
44
|
+
exists = false
|
45
|
+
end
|
46
|
+
|
47
|
+
exists.tap do |e|
|
48
|
+
yeild if e && block_given?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
40
52
|
def self.exists?(id, object_id)
|
41
53
|
if get_object(id, object_id)
|
42
54
|
yield
|
@@ -2,51 +2,67 @@ require "alephant/harness/service/dynamo_db"
|
|
2
2
|
require "alephant/harness/service/s3"
|
3
3
|
require "alephant/harness/service/sqs"
|
4
4
|
require "alephant/harness/aws"
|
5
|
+
require "logger"
|
5
6
|
|
6
7
|
module Alephant
|
7
8
|
module Harness
|
8
9
|
module Setup
|
9
10
|
|
11
|
+
def self.logger
|
12
|
+
@@logger ||= ::Logger.new(STDOUT)
|
13
|
+
end
|
14
|
+
|
10
15
|
def self.configure(opts = {}, env = nil)
|
11
16
|
AWS.configure(env)
|
12
17
|
|
13
|
-
opts[:queues].
|
14
|
-
|
18
|
+
unless opts[:queues].nil?
|
19
|
+
logger.info "Adding #{opts[:queues].length} queue(s)"
|
20
|
+
opts[:queues].each do |queue_name|
|
21
|
+
recreate_sqs queue_name
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
unless opts[:buckets].nil?
|
26
|
+
logger.info "Adding #{opts[:buckets].length} bucket(s)"
|
27
|
+
opts[:buckets].each do |bucket|
|
28
|
+
recreate_s3 bucket
|
29
|
+
end
|
30
|
+
end
|
23
31
|
|
32
|
+
unless opts[:tables].nil?
|
33
|
+
logger.info "Adding #{opts[:tables].length} table(s)"
|
34
|
+
opts[:tables].each do |data|
|
35
|
+
recreate_dynamo_db(data[:name], data[:schema])
|
36
|
+
end
|
37
|
+
end
|
24
38
|
end
|
25
39
|
|
26
40
|
def self.recreate_sqs(queue_name)
|
27
41
|
Service::SQS.exists?(queue_name) do
|
42
|
+
logger.warn "SQS queue #{queue_name} exists, removing"
|
28
43
|
Service::SQS.delete(queue_name)
|
29
44
|
end
|
30
45
|
|
46
|
+
logger.info "Adding SQS queue #{queue_name}"
|
31
47
|
Service::SQS.create(queue_name)
|
32
48
|
end
|
33
49
|
|
34
50
|
def self.recreate_s3(bucket)
|
35
|
-
Service::S3.
|
51
|
+
Service::S3.bucket_exists?(bucket) do
|
52
|
+
logger.warn "S3 bucket #{bucket} exists, removing"
|
36
53
|
Service::S3.delete(bucket)
|
37
54
|
end
|
38
55
|
|
39
|
-
|
56
|
+
logger.info "Adding S3 bucket #{bucket}"
|
57
|
+
Service::S3.create(bucket)
|
40
58
|
end
|
41
59
|
|
42
|
-
def self.recreate_dynamo_db(
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
60
|
+
def self.recreate_dynamo_db(table_name, schema)
|
61
|
+
logger.info "Adding DynamoDB table #{table_name}"
|
62
|
+
Service::DynamoDB.remove(table_name)
|
63
|
+
schema = schema.is_a?(Hash) ? schema : Service::DynamoDB.load_schema(schema)
|
64
|
+
Service::DynamoDB.create(table_name, schema)
|
48
65
|
end
|
49
|
-
|
50
66
|
end
|
51
67
|
end
|
52
68
|
end
|
@@ -7,12 +7,13 @@ describe Alephant::Harness::Service::DynamoDB do
|
|
7
7
|
|
8
8
|
table_name = 'test_lookup'
|
9
9
|
schema_name = 'lookup'
|
10
|
+
schema = subject.load_schema(schema_name)
|
10
11
|
|
11
12
|
expected_schema = YAML::load_file(File.join(File.dirname(__FILE__), *[%w'..' * 2], 'schema', "#{schema_name}.yaml"))
|
12
13
|
expected_schema[:table_name] = table_name
|
13
14
|
|
14
15
|
expect_any_instance_of(AWS::DynamoDB::Client::V20120810).to receive(:create_table).with(expected_schema)
|
15
|
-
subject.create(table_name,
|
16
|
+
subject.create(table_name, schema)
|
16
17
|
|
17
18
|
end
|
18
19
|
end
|
@@ -23,14 +24,16 @@ describe Alephant::Harness::Service::DynamoDB do
|
|
23
24
|
context "When tables exist" do
|
24
25
|
it "removes specified tables" do
|
25
26
|
expect_any_instance_of(AWS::DynamoDB::Client::V20120810).to receive(:delete_table).twice
|
26
|
-
|
27
|
+
tables.each do |table|
|
28
|
+
subject.remove(table)
|
29
|
+
end
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
30
33
|
context "When tables don't exist" do
|
31
34
|
it "Fails silently" do
|
32
|
-
expect_any_instance_of(AWS::DynamoDB::Client::V20120810).to receive(:delete_table).
|
33
|
-
expect { subject.remove(
|
35
|
+
expect_any_instance_of(AWS::DynamoDB::Client::V20120810).to receive(:delete_table).and_raise(Exception)
|
36
|
+
expect { subject.remove('blah') }.to_not raise_error(Exception)
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alephant-harness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Jack
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|