idlc-sdk-deploy 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea8424f4a8f6aa83bd86e90c41dea5042fd62d552d5f193fe230607ed0618e3a
4
- data.tar.gz: 19eed5e3abe75babc9af5d7b58ba8906e0ee81b9e0cb3a93adefa38b1ede19dc
3
+ metadata.gz: b1df6f007c0c69a1479eef7ffd90292a637db1ec8b540561174f16d468a615c4
4
+ data.tar.gz: 1cfc825a82f9f330e640a979f0bcc83ced3c6a51b3c22e16cf585c730fe8d87e
5
5
  SHA512:
6
- metadata.gz: ebe1a8ce4304605d51ffa2b8f3aebbb6e3f4f2e39d405b1192c56c1fd80fa6ee49c70bb8c25cdcf4ddda50bc46b7a3477434b7d347e31424cd35a714c5a49e51
7
- data.tar.gz: fc70e4c67f31956872524df248bd90af1c273fc19d7e83152bcd966fdeee2992cf271290641a39c3138330d21217dc9c5a161784f26a1651b52d93bc0946cb2d
6
+ metadata.gz: 09bc22072385e7634ab9cda68b828224a10414cfba401e3fbfb8fa07fe0b7599de8f551c054b8973d6a136c7411a38772cffc75f69a6635a1371b218dd88e865
7
+ data.tar.gz: 47ba5805035ffa58399f89a25cc64cf797898a05558132bee075023d4559276699ff859e76a8a2aaf38821e608c899d9c4c2f50b6f692d280a6fa46aa6b2bb8f
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_runtime_dependency 'idlc-sdk-core'
36
36
  spec.add_runtime_dependency 'aws-sdk-elasticsearchservice'
37
+ spec.add_runtime_dependency 'aws-sdk-lambda'
37
38
  spec.add_runtime_dependency 'aws-sigv4'
38
39
  spec.add_runtime_dependency 'net-telnet'
39
40
  spec.add_runtime_dependency 'sshkey'
@@ -23,23 +23,41 @@ module Idlc
23
23
  end
24
24
 
25
25
  def get_env_metadata(env_key)
26
- client = Idlc::Deploy::AWSRestClient.new()
26
+ client = Idlc::Deploy::AWSLambdaProxy.new()
27
27
 
28
28
  request = {
29
29
  service: 'deploy',
30
30
  method: 'GET',
31
- path: "/metadata/#{env_key}",
31
+ lambda: 'metadata',
32
+ pathParameters: {
33
+ jobName: env_key
34
+ }
32
35
  }
33
- metadata = client.fetch(request.to_json)['deployments'].first
36
+ metadata = client.fetch(request)['deployments'].first
34
37
 
35
38
  request = {
36
39
  service: 'config',
37
40
  method: 'GET',
38
- path: "/account/#{metadata['environment']['account_alias']}",
41
+ lambda: "accounts",
42
+ pathParameters: {
43
+ accountName: metadata['environment']['account_alias']
44
+ }
39
45
  }
40
- account = client.fetch(request.to_json)
46
+ account = client.fetch(request)
41
47
 
42
48
  metadata['account'] = account
49
+
50
+ request = {
51
+ service: 'config',
52
+ method: 'GET',
53
+ lambda: "applications",
54
+ pathParameters: {
55
+ appName: metadata['environment']['application_name'].downcase
56
+ }
57
+ }
58
+ application = client.fetch(request)
59
+
60
+ metadata['application'] = application
43
61
  metadata
44
62
  end
45
63
  end
@@ -1,15 +1,39 @@
1
1
  require 'aws-sigv4'
2
2
  require 'json'
3
3
  require 'net/http'
4
+ require 'aws-sdk-lambda'
4
5
 
5
6
  # Service Definitions
6
- $config = {
7
- 'config_svc_endpoint' => 'https://un0t03st4m.execute-api.us-east-1.amazonaws.com/dev',
8
- 'deploy_svc_endpoint' => 'https://dwervfhpxe.execute-api.us-east-1.amazonaws.com/dev'
7
+ $services = {
8
+ 'config' => {
9
+ 'endpoint' => 'un0t03st4m.execute-api.us-east-1.amazonaws.com',
10
+ 'stage' => 'dev'
11
+ },
12
+ 'deploy' => {
13
+ 'endpoint' => 'dwervfhpxe.execute-api.us-east-1.amazonaws.com',
14
+ 'stage' => 'dev'
15
+ }
9
16
  }
10
17
 
11
18
  module Idlc
12
19
  module Deploy
20
+ class AWSLambdaProxy
21
+ def fetch(request)
22
+ client = Aws::Lambda::Client.new()
23
+
24
+ request[:function] = "#{request[:service]}-" + $services[request[:service]]['stage'] + "-#{request[:lambda]}"
25
+ request[:httpMethod] = request[:method]
26
+
27
+ resp = client.invoke({
28
+ function_name: "service-deploy-lambda-proxy",
29
+ invocation_type: "RequestResponse",
30
+ log_type: "None",
31
+ payload: request.to_json,
32
+ })
33
+
34
+ JSON.parse(JSON.parse(JSON.parse(resp.payload.string)['Payload'])['body'])
35
+ end
36
+ end
13
37
  class AWSRestClient
14
38
  def initialize(credentials= {
15
39
  access_key_id: ENV['AWS_ACCESS_KEY_ID'],
@@ -25,7 +49,7 @@ module Idlc
25
49
  def fetch(request)
26
50
  request = JSON.parse(request)
27
51
 
28
- endpoint = $config["#{request['service']}_svc_endpoint"]
52
+ endpoint = 'https://' + $config["#{request['service']}_svc"]['endpoint'] + $config["#{request['service']}"]['stage']
29
53
 
30
54
  body = ''
31
55
  body = request['body'].to_json if request['body']
@@ -1,5 +1,5 @@
1
1
  module Idlc
2
2
  module Deploy
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: idlc-sdk-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Cazell
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: aws-sdk-lambda
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: aws-sigv4
127
141
  requirement: !ruby/object:Gem::Requirement