en-aws-synchronizer 0.1.0 → 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 +4 -4
- data/README.md +64 -12
- data/lib/eaglenube/api_wrapper/aws/acm_certificate.rb +28 -0
- data/lib/eaglenube/api_wrapper/aws/db_snapshot.rb +19 -0
- data/lib/eaglenube/api_wrapper/aws/elastic_ip.rb +19 -0
- data/lib/eaglenube/api_wrapper/aws/iam_certificate.rb +23 -0
- data/lib/eaglenube/api_wrapper/aws/internet_gateway.rb +19 -0
- data/lib/eaglenube/api_wrapper/aws/key_pair.rb +18 -0
- data/lib/eaglenube/api_wrapper/aws/loadbalancer.rb +18 -0
- data/lib/eaglenube/api_wrapper/aws/security_group.rb +19 -0
- data/lib/eaglenube/api_wrapper/aws/snapshot.rb +19 -0
- data/lib/eaglenube/api_wrapper/aws/subnet.rb +18 -0
- data/lib/eaglenube/api_wrapper/aws/volume.rb +18 -0
- data/lib/eaglenube/api_wrapper/aws/vpc.rb +23 -0
- data/lib/eaglenube/aws_agent.rb +16 -18
- data/lib/eaglenube/aws_credential_builder.rb +15 -0
- data/lib/eaglenube/synchronizer/aws/acm_certificate.rb +32 -0
- data/lib/eaglenube/synchronizer/aws/db_snapshot.rb +4 -10
- data/lib/eaglenube/synchronizer/aws/elastic_ip.rb +4 -9
- data/lib/eaglenube/synchronizer/aws/iam_certificate.rb +32 -0
- data/lib/eaglenube/synchronizer/aws/key_pair.rb +32 -0
- data/lib/eaglenube/synchronizer/aws/loadbalancer.rb +32 -0
- data/lib/eaglenube/synchronizer/aws/security_group.rb +4 -9
- data/lib/eaglenube/synchronizer/aws/snapshot.rb +4 -9
- data/lib/eaglenube/synchronizer/aws/subnet.rb +4 -9
- data/lib/eaglenube/synchronizer/aws/volume.rb +4 -9
- data/lib/eaglenube/synchronizer/aws/vpc.rb +6 -21
- data/lib/eaglenube/synchronizer/version.rb +1 -1
- data/lib/en_aws_synchronizer.rb +3 -0
- metadata +23 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6049098ca14645323c036be757a33d2c54382a3061d0d95e3bcb871038067aa
|
4
|
+
data.tar.gz: '038fb5c7e9f7da4c0449a8b22d3bb491f8afc8dedfaecaf8a4ef5d94c79f0d45'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '094a8a6fe4220791d1e57ee23bb5ad35c46bf05cfd55dd05e44f2dbcec5541333d7baf348e3321713ab269e4816121ce96df6c0867dea6d80a34257e19a0f819'
|
7
|
+
data.tar.gz: b1ed3a516a7fd1e9887b6f823358d980c85cf5007ab1e31a347f3c3405c9201d29cbdfd49f2cc54e890c75a408e617638b9dfd2a4bebc66f85bde610f6142b62
|
data/README.md
CHANGED
@@ -1,25 +1,77 @@
|
|
1
|
-
#
|
1
|
+
# en-aws-synchronizer
|
2
2
|
|
3
|
-
|
3
|
+
`en-aws-synchronizer` is a Ruby gem designed to seamlessly synchronize AWS services to your local database within a Rails application. This gem simplifies the process of fetching AWS resource data and mapping it to your ActiveRecord models.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
- Seamless Synchronization: Sync AWS resources like EC2 Volumes to your local database effortlessly.
|
8
|
+
- Custom Mappers: Define your custom mappers using YAML files to map AWS resource attributes to your database fields.
|
9
|
+
- Extendable: Easily extend the functionality to sync other AWS services by creating custom mappers.
|
4
10
|
|
5
11
|
## Installation
|
6
12
|
|
7
|
-
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'en-aws-synchronizer'
|
17
|
+
```
|
18
|
+
And then execute:
|
19
|
+
```bash
|
20
|
+
bundle install
|
21
|
+
```
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
1. Define Your Mapper
|
26
|
+
Create a YAML file in __data/cloud_object_mappers/__ directory to map AWS service attributes to your model fields. For example, to map AWS EC2 Volumes, create __data/cloud_object_mappers/volume.yml__:
|
27
|
+
|
28
|
+
```yaml
|
29
|
+
name: (obj.tags || []).find { |t| t.key.eql?('Name') }.try(:value) || 'Undefined'
|
30
|
+
service_id: obj.volume_id
|
31
|
+
volume_type: obj.volume_type
|
32
|
+
state: obj.state
|
33
|
+
tags: obj.tags.to_h
|
34
|
+
```
|
35
|
+
2. Update Your Model
|
36
|
+
In your model, include the synchronizer module and reference the mapper YAML file:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
require 'eaglenube/synchronizer/aws/volume'
|
8
40
|
|
9
|
-
|
41
|
+
class Volume < ApplicationRecord
|
10
42
|
|
11
|
-
|
43
|
+
include Eaglenube::Synchronizer::AWS::Volume
|
12
44
|
|
13
|
-
|
45
|
+
cloud_obj_mapper_yml "data/cloud_object_mappers/volume.yml"
|
14
46
|
|
15
|
-
|
47
|
+
def self.sync
|
48
|
+
credential = Aws::Credentials.new(<access_key_id>, <secret_access_key>)
|
49
|
+
|
50
|
+
sync_resource(credential, "us-east-1") do |aws_volume|
|
51
|
+
db_composite_unique_identifers = { region_id: region.id, aws_service_id: aws_volume.volume_id }
|
16
52
|
|
17
|
-
|
53
|
+
extra_attributes = {}
|
54
|
+
[object_identifying_attributes, extra_attributes]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
```
|
59
|
+
3. Synchronize Data
|
60
|
+
Call the sync method on your model to sync the AWS resources to your local database:
|
18
61
|
|
19
|
-
|
62
|
+
```ruby
|
63
|
+
Volume.sync
|
64
|
+
```
|
65
|
+
This will fetch the AWS EC2 Volume data and map the attributes according to the volume.yml mapper file, then save it to your database.
|
20
66
|
|
21
|
-
|
67
|
+
Customization
|
68
|
+
You can extend this gem to sync other AWS resources by creating appropriate mappers and including the respective synchronizer module in your models.
|
22
69
|
|
23
|
-
|
70
|
+
Example
|
71
|
+
To sync another AWS resource, such as Vpc, follow these steps:
|
24
72
|
|
25
|
-
|
73
|
+
Create a new mapper YAML file, e.g., data/cloud_object_mappers/vpc.yml.
|
74
|
+
Include the appropriate synchronizer module in your model.
|
75
|
+
Implement the sync method in your model, similar to the Volume example.
|
76
|
+
Contributing
|
77
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/your-username/en-aws-synchronizer. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module AcmCertificate
|
9
|
+
|
10
|
+
def list_certificates(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_acm_agent(credential, region_code)
|
12
|
+
agent.list_certificates.try(:certificate_summary_list)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_certificate(credential, region_code, certificate_arn)
|
16
|
+
agent = Eaglenube::AWSAgent.get_acm_agent(credential, region_code)
|
17
|
+
agent.get_certificate({ certificate_arn: certificate_arn })
|
18
|
+
end
|
19
|
+
|
20
|
+
def describe_certificate(credential, region_code, certificate_arn)
|
21
|
+
agent = Eaglenube::AWSAgent.get_acm_agent(credential, region_code)
|
22
|
+
agent.describe_certificate({ certificate_arn: certificate_arn })
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module DbSnapshot
|
9
|
+
include Eaglenube::AWSAgent
|
10
|
+
|
11
|
+
def describe_db_snapshots(credential, region_code, **options)
|
12
|
+
agent = Eaglenube::AWSAgent.get_rds_agent(credential, region_code)
|
13
|
+
agent.describe_db_snapshots(options).try(:db_snapshots)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module ElasticIp
|
9
|
+
include Eaglenube::AWSAgent
|
10
|
+
|
11
|
+
def describe_addresses(credential, region_code)
|
12
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
13
|
+
agent.describe_addresses.try(:addresses)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module IamCertificate
|
9
|
+
|
10
|
+
def list_server_certificates(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_iam_agent(credential, region_code)
|
12
|
+
agent.list_server_certificates.try(:server_certificate_metadata_list)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_server_certificate(credential, region_code, certificate_name)
|
16
|
+
agent = Eaglenube::AWSAgent.get_iam_agent(credential, region_code)
|
17
|
+
agent.get_server_certificate({ server_certificate_name: certificate_name })
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module InternetGateway
|
9
|
+
include Eaglenube::AWSAgent
|
10
|
+
|
11
|
+
def describe_internet_gateways(credential, region_code)
|
12
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
13
|
+
agent.describe_internet_gateways.try(:internet_gateways)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module KeyPair
|
9
|
+
|
10
|
+
def describe_key_pairs(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
12
|
+
agent.describe_key_pairs.try(:key_pairs)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module Loadbalancer
|
9
|
+
|
10
|
+
def describe_load_balancers(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_elb_agent(credential, region_code)
|
12
|
+
agent.describe_load_balancers.try(:load_balancers) || []
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module SecurityGroup
|
9
|
+
include Eaglenube::AWSAgent
|
10
|
+
|
11
|
+
def describe_security_groups(credential, region_code)
|
12
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
13
|
+
agent.describe_security_groups.try(:security_groups)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module Snapshot
|
9
|
+
include Eaglenube::AWSAgent
|
10
|
+
|
11
|
+
def describe_snapshots(credential, region_code, **options)
|
12
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
13
|
+
agent.describe_snapshots(options).try(:snapshots)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module Subnet
|
9
|
+
|
10
|
+
def describe_subnets(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
12
|
+
agent.describe_subnets.try(:subnets)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module Volume
|
9
|
+
|
10
|
+
def describe_volumes(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
12
|
+
agent.describe_volumes.try(:volumes)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/aws_agent"
|
4
|
+
|
5
|
+
module Eaglenube
|
6
|
+
module ApiWrapper
|
7
|
+
module AWS
|
8
|
+
module Vpc
|
9
|
+
|
10
|
+
def describe_vpcs(credential, region_code)
|
11
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
12
|
+
agent.describe_vpcs.try(:vpcs)
|
13
|
+
end
|
14
|
+
|
15
|
+
def describe_vpc_attribute(credential, region_code, **options)
|
16
|
+
agent = Eaglenube::AWSAgent.get_compute_agent(credential, region_code)
|
17
|
+
agent.describe_vpc_attribute(options)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/eaglenube/aws_agent.rb
CHANGED
@@ -1,57 +1,55 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "eaglenube/aws_credential_builder"
|
4
|
+
|
3
5
|
module Eaglenube
|
4
6
|
module AWSAgent
|
5
|
-
|
7
|
+
|
8
|
+
extend Eaglenube::AWSCredentialBuilder
|
9
|
+
|
10
|
+
def self.get_compute_agent(customer_cred, region_code = "us-east-1")
|
6
11
|
Aws::EC2::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
7
12
|
end
|
8
13
|
|
9
|
-
def get_rds_agent(customer_cred, region_code = "us-east-1")
|
14
|
+
def self.get_rds_agent(customer_cred, region_code = "us-east-1")
|
10
15
|
Aws::RDS::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
11
16
|
end
|
12
17
|
|
13
|
-
def get_elb_agent(customer_cred, region_code = "us-east-1")
|
18
|
+
def self.get_elb_agent(customer_cred, region_code = "us-east-1")
|
14
19
|
Aws::ElasticLoadBalancing::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
15
20
|
end
|
16
21
|
|
17
|
-
def get_auto_scaling_agent(customer_cred, region_code = "us-east-1")
|
22
|
+
def self.get_auto_scaling_agent(customer_cred, region_code = "us-east-1")
|
18
23
|
Aws::AutoScaling::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
19
24
|
end
|
20
25
|
|
21
|
-
def get_s3_agent(customer_cred, region_code = "us-east-1")
|
26
|
+
def self.get_s3_agent(customer_cred, region_code = "us-east-1")
|
22
27
|
Aws::S3::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
23
28
|
end
|
24
29
|
|
25
|
-
def get_cloud_watch_agent(customer_cred, region_code = "us-east-1")
|
30
|
+
def self.get_cloud_watch_agent(customer_cred, region_code = "us-east-1")
|
26
31
|
Aws::CloudWatch::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
27
32
|
end
|
28
33
|
|
29
|
-
def get_redshift_agent(customer_cred, region_code = "us-east-1")
|
34
|
+
def self.get_redshift_agent(customer_cred, region_code = "us-east-1")
|
30
35
|
Aws::Redshift::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
31
36
|
end
|
32
37
|
|
33
|
-
def get_kms_agent(customer_cred, region_code = "us-east-1")
|
38
|
+
def self.get_kms_agent(customer_cred, region_code = "us-east-1")
|
34
39
|
Aws::KMS::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
35
40
|
end
|
36
41
|
|
37
|
-
def get_ecs_agent(customer_cred, region_code = "us-east-1")
|
42
|
+
def self.get_ecs_agent(customer_cred, region_code = "us-east-1")
|
38
43
|
Aws::ECS::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
39
44
|
end
|
40
45
|
|
41
|
-
def get_iam_agent(customer_cred, region_code = "us-east-1")
|
46
|
+
def self.get_iam_agent(customer_cred, region_code = "us-east-1")
|
42
47
|
Aws::IAM::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
43
48
|
end
|
44
49
|
|
45
|
-
def get_acm_agent(customer_cred, region_code = "us-east-1")
|
50
|
+
def self.get_acm_agent(customer_cred, region_code = "us-east-1")
|
46
51
|
Aws::ACM::Client.new(region: region_code, credentials: build_credential(customer_cred))
|
47
52
|
end
|
48
53
|
|
49
|
-
def build_credential(credential)
|
50
|
-
if credential[:session_token].blank?
|
51
|
-
Aws::Credentials.new(credential[:access_key_id], credential[:secret_access_key])
|
52
|
-
else
|
53
|
-
Aws::Credentials.new(credential[:access_key_id], credential[:secret_access_key], credential[:session_token])
|
54
|
-
end
|
55
|
-
end
|
56
54
|
end
|
57
55
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Eaglenube
|
4
|
+
module AWSCredentialBuilder
|
5
|
+
|
6
|
+
def build_credential(credential)
|
7
|
+
if credential[:session_token].blank?
|
8
|
+
Aws::Credentials.new(credential[:access_key_id], credential[:secret_access_key])
|
9
|
+
else
|
10
|
+
Aws::Credentials.new(credential[:access_key_id], credential[:secret_access_key], credential[:session_token])
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/api_wrapper/aws/acm_certificate"
|
4
|
+
require "eaglenube/synchronizer/aws"
|
5
|
+
require "eaglenube/cloud_object_mapper/aws"
|
6
|
+
|
7
|
+
# Eaglenube::Synchronizer::AWS::AcmCertificate
|
8
|
+
module Eaglenube
|
9
|
+
module Synchronizer
|
10
|
+
module AWS
|
11
|
+
module AcmCertificate
|
12
|
+
def self.included(receiver)
|
13
|
+
receiver.extend Eaglenube::Synchronizer::AWS::CommonMethods
|
14
|
+
receiver.extend AcmSyncMethods
|
15
|
+
end
|
16
|
+
|
17
|
+
module AcmSyncMethods
|
18
|
+
include Eaglenube::ApiWrapper::AWS::AcmCertificate
|
19
|
+
include Eaglenube::CloudObjectMapper::AWS
|
20
|
+
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_acm_certificates = list_certificates(credential, region_code)
|
23
|
+
remote_acm_certificates.each do |remote_acm_certificate|
|
24
|
+
object_identifying_attributes, optional_attributes = yield(remote_acm_certificate)
|
25
|
+
create_or_update(remote_acm_certificate, object_identifying_attributes, **optional_attributes)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/db_snapshot"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -15,17 +15,11 @@ module Eaglenube
|
|
15
15
|
end
|
16
16
|
|
17
17
|
module DbSnapshotSyncMethods
|
18
|
-
include Eaglenube::
|
18
|
+
include Eaglenube::ApiWrapper::AWS::DbSnapshot
|
19
19
|
include Eaglenube::CloudObjectMapper::AWS
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
agent.describe_db_snapshots({ include_public: false, include_shared: true,
|
24
|
-
snapshot_type: "manual" }).try(:db_snapshots)
|
25
|
-
end
|
26
|
-
|
27
|
-
def sync(credential, region_code)
|
28
|
-
remote_db_snapshots = list_all_remote_db_snapshots(credential, region_code)
|
21
|
+
def sync_resource(credential, region_code, **options)
|
22
|
+
remote_db_snapshots = describe_db_snapshots(credential, region_code, **options)
|
29
23
|
remote_db_snapshots.each do |remote_db_snapshot|
|
30
24
|
object_identifying_attributes, optional_attributes = yield(remote_db_snapshot)
|
31
25
|
create_or_update(remote_db_snapshot, object_identifying_attributes, **optional_attributes)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/elastic_ip"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -15,16 +15,11 @@ module Eaglenube
|
|
15
15
|
end
|
16
16
|
|
17
17
|
module EipSyncMethods
|
18
|
-
include Eaglenube::
|
18
|
+
include Eaglenube::ApiWrapper::AWS::ElasticIp
|
19
19
|
include Eaglenube::CloudObjectMapper::AWS
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
agent.describe_addresses.try(:addresses)
|
24
|
-
end
|
25
|
-
|
26
|
-
def sync(credential, region_code)
|
27
|
-
remote_eips = list_all_elastic_ips(credential, region_code)
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_eips = describe_addresses(credential, region_code)
|
28
23
|
remote_eips.each do |remote_eip|
|
29
24
|
object_identifying_attributes, optional_attributes = yield(remote_eip)
|
30
25
|
create_or_update(remote_eip, object_identifying_attributes, **optional_attributes)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/api_wrapper/aws/iam_certificate"
|
4
|
+
require "eaglenube/synchronizer/aws"
|
5
|
+
require "eaglenube/cloud_object_mapper/aws"
|
6
|
+
|
7
|
+
# Eaglenube::Synchronizer::AWS::IamCertificate
|
8
|
+
module Eaglenube
|
9
|
+
module Synchronizer
|
10
|
+
module AWS
|
11
|
+
module IamCertificate
|
12
|
+
def self.included(receiver)
|
13
|
+
receiver.extend Eaglenube::Synchronizer::AWS::CommonMethods
|
14
|
+
receiver.extend IamCertificateSyncMethods
|
15
|
+
end
|
16
|
+
|
17
|
+
module IamCertificateSyncMethods
|
18
|
+
include Eaglenube::ApiWrapper::AWS::IamCertificate
|
19
|
+
include Eaglenube::CloudObjectMapper::AWS
|
20
|
+
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_iam_certificates = list_server_certificates(credential, region_code)
|
23
|
+
remote_iam_certificates.each do |remote_iam_certificate|
|
24
|
+
object_identifying_attributes, optional_attributes = yield(remote_iam_certificate)
|
25
|
+
create_or_update(remote_iam_certificate, object_identifying_attributes, **optional_attributes)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/api_wrapper/aws/key_pair"
|
4
|
+
require "eaglenube/synchronizer/aws"
|
5
|
+
require "eaglenube/cloud_object_mapper/aws"
|
6
|
+
|
7
|
+
# Eaglenube::Synchronizer::AWS::KeyPair
|
8
|
+
module Eaglenube
|
9
|
+
module Synchronizer
|
10
|
+
module AWS
|
11
|
+
module KeyPair
|
12
|
+
def self.included(receiver)
|
13
|
+
receiver.extend Eaglenube::Synchronizer::AWS::CommonMethods
|
14
|
+
receiver.extend KeyPairSyncMethods
|
15
|
+
end
|
16
|
+
|
17
|
+
module KeyPairSyncMethods
|
18
|
+
include Eaglenube::ApiWrapper::AWS::KeyPair
|
19
|
+
include Eaglenube::CloudObjectMapper::AWS
|
20
|
+
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_key_pairs = describe_key_pairs(credential, region_code)
|
23
|
+
remote_key_pairs.each do |remote_key_pair|
|
24
|
+
object_identifying_attributes, optional_attributes = yield(remote_key_pair)
|
25
|
+
create_or_update(remote_key_pair, object_identifying_attributes, **optional_attributes)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "eaglenube/api_wrapper/aws/loadbalancer"
|
4
|
+
require "eaglenube/synchronizer/aws"
|
5
|
+
require "eaglenube/cloud_object_mapper/aws"
|
6
|
+
|
7
|
+
# Eaglenube::Synchronizer::AWS::Loadbalancer
|
8
|
+
module Eaglenube
|
9
|
+
module Synchronizer
|
10
|
+
module AWS
|
11
|
+
module Loadbalancer
|
12
|
+
def self.included(receiver)
|
13
|
+
receiver.extend Eaglenube::Synchronizer::AWS::CommonMethods
|
14
|
+
receiver.extend LbSyncMethods
|
15
|
+
end
|
16
|
+
|
17
|
+
module LbSyncMethods
|
18
|
+
include Eaglenube::ApiWrapper::AWS::Loadbalancer
|
19
|
+
include Eaglenube::CloudObjectMapper::AWS
|
20
|
+
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_load_balancers = describe_load_balancers(credential, region_code)
|
23
|
+
remote_load_balancers.each do |remote_load_balancer|
|
24
|
+
object_identifying_attributes, optional_attributes = yield(remote_load_balancer)
|
25
|
+
create_or_update(remote_load_balancer, object_identifying_attributes, **optional_attributes)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/security_group"
|
4
4
|
require "eaglenube/cloud_object_mapper/aws"
|
5
5
|
|
6
6
|
module Eaglenube
|
@@ -13,16 +13,11 @@ module Eaglenube
|
|
13
13
|
end
|
14
14
|
|
15
15
|
module SecurityGroupSyncMethods
|
16
|
-
include Eaglenube::
|
16
|
+
include Eaglenube::ApiWrapper::AWS::SecurityGroup
|
17
17
|
include Eaglenube::CloudObjectMapper::AWS
|
18
18
|
|
19
|
-
def
|
20
|
-
|
21
|
-
agent.describe_security_groups.try(:security_groups)
|
22
|
-
end
|
23
|
-
|
24
|
-
def sync(credential, region_code)
|
25
|
-
remote_security_groups = list_all_remote_security_groups(credential, region_code)
|
19
|
+
def sync_resource(credential, region_code)
|
20
|
+
remote_security_groups = describe_security_groups(credential, region_code)
|
26
21
|
remote_security_groups.each do |remote_security_group|
|
27
22
|
object_identifying_attributes, optional_attributes = yield(remote_security_group)
|
28
23
|
create_or_update(remote_security_group, object_identifying_attributes, **optional_attributes)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/snapshot"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -15,16 +15,11 @@ module Eaglenube
|
|
15
15
|
end
|
16
16
|
|
17
17
|
module SnapshotSyncMethods
|
18
|
-
include Eaglenube::
|
18
|
+
include Eaglenube::ApiWrapper::AWS::Snapshot
|
19
19
|
include Eaglenube::CloudObjectMapper::AWS
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
agent.describe_snapshots({ owner_ids: [aws_account_id] }).try(:snapshots)
|
24
|
-
end
|
25
|
-
|
26
|
-
def sync(credential, region_code, aws_account_id)
|
27
|
-
remote_snapshots = list_all_remote_snapshots(credential, region_code, aws_account_id)
|
21
|
+
def sync_resource(credential, region_code, **options)
|
22
|
+
remote_snapshots = describe_snapshots(credential, region_code, **options)
|
28
23
|
remote_snapshots.each do |remote_snapshot|
|
29
24
|
object_identifying_attributes, optional_attributes = yield(remote_snapshot)
|
30
25
|
create_or_update(remote_snapshot, object_identifying_attributes, **optional_attributes)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/subnet"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -14,16 +14,11 @@ module Eaglenube
|
|
14
14
|
end
|
15
15
|
|
16
16
|
module SubnetSyncMethods
|
17
|
-
include Eaglenube::
|
17
|
+
include Eaglenube::ApiWrapper::AWS::Subnet
|
18
18
|
include Eaglenube::CloudObjectMapper::AWS
|
19
19
|
|
20
|
-
def
|
21
|
-
|
22
|
-
agent.describe_subnets.try(:subnets)
|
23
|
-
end
|
24
|
-
|
25
|
-
def sync(credential, region_code, &_block)
|
26
|
-
remote_subnets = list_all_remote_subnets(credential, region_code)
|
20
|
+
def sync_resource(credential, region_code, &_block)
|
21
|
+
remote_subnets = describe_subnets(credential, region_code)
|
27
22
|
remote_subnets.each do |remote_subnet|
|
28
23
|
object_identifying_attributes, optional_attributes = yield(remote_subnet)
|
29
24
|
create_or_update(remote_subnet, object_identifying_attributes, **optional_attributes)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/volume"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -15,16 +15,11 @@ module Eaglenube
|
|
15
15
|
end
|
16
16
|
|
17
17
|
module VolumeSyncMethods
|
18
|
-
include Eaglenube::
|
18
|
+
include Eaglenube::ApiWrapper::AWS::Volume
|
19
19
|
include Eaglenube::CloudObjectMapper::AWS
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
agent.describe_volumes.try(:volumes)
|
24
|
-
end
|
25
|
-
|
26
|
-
def sync(credential, region_code, &_block)
|
27
|
-
remote_volumes = list_all_remote_volumes(credential, region_code)
|
21
|
+
def sync_resource(credential, region_code, &_block)
|
22
|
+
remote_volumes = describe_volumes(credential, region_code)
|
28
23
|
remote_volumes.each do |remote_volume|
|
29
24
|
object_identifying_attributes, optional_attributes = yield(remote_volume)
|
30
25
|
create_or_update(remote_volume, object_identifying_attributes, **optional_attributes)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "eaglenube/
|
3
|
+
require "eaglenube/api_wrapper/aws/vpc"
|
4
4
|
require "eaglenube/synchronizer/aws"
|
5
5
|
require "eaglenube/cloud_object_mapper/aws"
|
6
6
|
|
@@ -10,30 +10,16 @@ module Eaglenube
|
|
10
10
|
module AWS
|
11
11
|
module Vpc
|
12
12
|
def self.included(receiver)
|
13
|
-
puts "receiver module name: #{receiver}"
|
14
|
-
# module_name = Eaglenube::Synchronizer.config.find_sync_module(receiver)
|
15
|
-
# puts "module name to extend: #{module_name}"
|
16
|
-
# receiver.extend module_name if defined?(receiver)
|
17
13
|
receiver.extend Eaglenube::Synchronizer::AWS::CommonMethods
|
18
14
|
receiver.extend VpcSyncMethods
|
19
15
|
end
|
20
16
|
|
21
17
|
module VpcSyncMethods
|
22
|
-
include Eaglenube::
|
18
|
+
include Eaglenube::ApiWrapper::AWS::Vpc
|
23
19
|
include Eaglenube::CloudObjectMapper::AWS
|
24
20
|
|
25
|
-
def
|
26
|
-
|
27
|
-
agent.describe_vpcs.try(:vpcs)
|
28
|
-
end
|
29
|
-
|
30
|
-
def list_all_remote_igs(credential, region_code)
|
31
|
-
agent = get_compute_agent(credential, region_code)
|
32
|
-
agent.describe_internet_gateways.try(:internet_gateways)
|
33
|
-
end
|
34
|
-
|
35
|
-
def sync(credential, region_code)
|
36
|
-
remote_vpcs = list_all_remote_vpcs(credential, region_code)
|
21
|
+
def sync_resource(credential, region_code)
|
22
|
+
remote_vpcs = describe_vpcs(credential, region_code)
|
37
23
|
describe_vpc_attribute_permisssion_error = false
|
38
24
|
remote_vpcs.each do |remote_vpc|
|
39
25
|
object_identifying_attributes, optional_attributes = yield(remote_vpc)
|
@@ -54,11 +40,10 @@ module Eaglenube
|
|
54
40
|
end
|
55
41
|
|
56
42
|
def sync_addtional_attributes(credential, region_code, vpc_id)
|
57
|
-
agent = get_compute_agent(credential, region_code)
|
58
43
|
dns_support_attrs = { vpc_id: vpc_id, attribute: "enableDnsSupport" }
|
59
|
-
dns_support =
|
44
|
+
dns_support = describe_vpc_attribute(credential, region_code, **dns_support_attrs).try(:enable_dns_support).try(:value)
|
60
45
|
dns_hostname_attrs = { vpc_id: vpc_id, attribute: "enableDnsHostnames" }
|
61
|
-
dns_hostname =
|
46
|
+
dns_hostname = describe_vpc_attribute(credential, region_code, **dns_hostname_attrs).try(:enable_dns_hostnames).try(:value)
|
62
47
|
[dns_support, dns_hostname]
|
63
48
|
end
|
64
49
|
end
|
data/lib/en_aws_synchronizer.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: en-aws-synchronizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eaglenube
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-acm
|
@@ -179,12 +179,29 @@ files:
|
|
179
179
|
- README.md
|
180
180
|
- Rakefile
|
181
181
|
- en_aws_synchronizer.gemspec
|
182
|
+
- lib/eaglenube/api_wrapper/aws/acm_certificate.rb
|
183
|
+
- lib/eaglenube/api_wrapper/aws/db_snapshot.rb
|
184
|
+
- lib/eaglenube/api_wrapper/aws/elastic_ip.rb
|
185
|
+
- lib/eaglenube/api_wrapper/aws/iam_certificate.rb
|
186
|
+
- lib/eaglenube/api_wrapper/aws/internet_gateway.rb
|
187
|
+
- lib/eaglenube/api_wrapper/aws/key_pair.rb
|
188
|
+
- lib/eaglenube/api_wrapper/aws/loadbalancer.rb
|
189
|
+
- lib/eaglenube/api_wrapper/aws/security_group.rb
|
190
|
+
- lib/eaglenube/api_wrapper/aws/snapshot.rb
|
191
|
+
- lib/eaglenube/api_wrapper/aws/subnet.rb
|
192
|
+
- lib/eaglenube/api_wrapper/aws/volume.rb
|
193
|
+
- lib/eaglenube/api_wrapper/aws/vpc.rb
|
182
194
|
- lib/eaglenube/aws_agent.rb
|
195
|
+
- lib/eaglenube/aws_credential_builder.rb
|
183
196
|
- lib/eaglenube/cloud_object_mapper/aws.rb
|
184
197
|
- lib/eaglenube/synchronizer.rb
|
185
198
|
- lib/eaglenube/synchronizer/aws.rb
|
199
|
+
- lib/eaglenube/synchronizer/aws/acm_certificate.rb
|
186
200
|
- lib/eaglenube/synchronizer/aws/db_snapshot.rb
|
187
201
|
- lib/eaglenube/synchronizer/aws/elastic_ip.rb
|
202
|
+
- lib/eaglenube/synchronizer/aws/iam_certificate.rb
|
203
|
+
- lib/eaglenube/synchronizer/aws/key_pair.rb
|
204
|
+
- lib/eaglenube/synchronizer/aws/loadbalancer.rb
|
188
205
|
- lib/eaglenube/synchronizer/aws/security_group.rb
|
189
206
|
- lib/eaglenube/synchronizer/aws/snapshot.rb
|
190
207
|
- lib/eaglenube/synchronizer/aws/subnet.rb
|
@@ -202,7 +219,7 @@ licenses:
|
|
202
219
|
metadata:
|
203
220
|
homepage_uri: https://gitlab.com/eaglenube1/en_aws_synchronizer
|
204
221
|
source_code_uri: https://gitlab.com/eaglenube1/en_aws_synchronizer
|
205
|
-
post_install_message:
|
222
|
+
post_install_message:
|
206
223
|
rdoc_options: []
|
207
224
|
require_paths:
|
208
225
|
- lib
|
@@ -217,8 +234,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
234
|
- !ruby/object:Gem::Version
|
218
235
|
version: '0'
|
219
236
|
requirements: []
|
220
|
-
rubygems_version: 3.4.
|
221
|
-
signing_key:
|
237
|
+
rubygems_version: 3.4.10
|
238
|
+
signing_key:
|
222
239
|
specification_version: 4
|
223
240
|
summary: Synchronize your aws resource to your rails model
|
224
241
|
test_files: []
|