vagrant-aws-alb-target-group 0.1.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6ae586dca9e87f26c8c140edb21228256299c93e
4
+ data.tar.gz: 9b0e4053341dee5bd8d75c86baa523f9a2d41fb7
5
+ SHA512:
6
+ metadata.gz: aa3673968a15de883dd300837274e3001bf772f1c92e7d0b37267cd3ad2d881834c099abc5c1f37d3c24664781fce6ea85db63d42fb295b32f08733d743bc1da
7
+ data.tar.gz: 6aa9ec8d015e33d6bb84a993a26363ca97017a0f308bacace2aac9ccbd3d1d37847fc1e66da1d018ff3b1774f45190271270e67912255d1f8762d9838901e4a7
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ .idea/
11
+ .DS_Store
12
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in vagrant-aws-alb-target-group.gemspec
6
+ gemspec
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ vagrant-aws-alb-target-group (0.1.2)
5
+ aws-sdk (~> 2.6.44)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ aws-sdk (2.6.50)
11
+ aws-sdk-resources (= 2.6.50)
12
+ aws-sdk-core (2.6.50)
13
+ aws-sigv4 (~> 1.0)
14
+ jmespath (~> 1.0)
15
+ aws-sdk-resources (2.6.50)
16
+ aws-sdk-core (= 2.6.50)
17
+ aws-sigv4 (1.0.3)
18
+ jmespath (1.4.0)
19
+ rake (10.5.0)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ bundler (~> 1.16)
26
+ rake (~> 10.0)
27
+ vagrant-aws-alb-target-group!
28
+
29
+ BUNDLED WITH
30
+ 1.16.0
File without changes
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
@@ -0,0 +1,6 @@
1
+ require 'vagrant-aws-alb-target-group/plugin'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ end
6
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'base'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ module Action
6
+ class AddInstance < Base
7
+
8
+ def call(env)
9
+ super env do |instance_id, target_group_name|
10
+ @aws.add_instance(instance_id, target_group_name)
11
+ @machine.ui.info("Add instance #{instance_id} to #{target_group_name}.")
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ require 'aws-sdk'
2
+ require_relative '../util/aws_util'
3
+
4
+ module VagrantPlugins
5
+ module AwsAlbTargetGroup
6
+ module Action
7
+ class Base
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @machine = env[:machine]
12
+ end
13
+
14
+ def call(env)
15
+ return @app.call(env) if @machine.config.aws_alb.target_group_name.nil?
16
+
17
+ @aws = AwsAlbTargetGroup::Util::AwsUtil.new(@machine.provider_config.access_key_id,
18
+ @machine.provider_config.secret_access_key,
19
+ @machine.provider_config.region)
20
+ yield @machine.id, @machine.config.aws_alb.target_group_name if block_given?
21
+
22
+ @app.call(env)
23
+ end
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'base'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ module Action
6
+ class RemoveInstance < Base
7
+
8
+ def call(env)
9
+ super env do |instance_id, target_group_name|
10
+ @aws.remove_instance(instance_id, target_group_name)
11
+ @machine.ui.info("Remove instance #{instance_id} to #{target_group_name}.")
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'vagrant'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ class Config < Vagrant.plugin('2', :config)
6
+ attr_accessor :target_group_name
7
+
8
+ def initialize
9
+ @target_group_name = UNSET_VALUE
10
+ end
11
+
12
+ def finalize!
13
+ @target_group_name = nil if @target_group_name == UNSET_VALUE
14
+ end
15
+
16
+ def validate(machine)
17
+ finalize!
18
+
19
+ errors = _detected_errors
20
+
21
+ { 'AwsAlbTargetGroup' => errors }
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,47 @@
1
+ require 'vagrant'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ class Plugin < Vagrant.plugin('2')
6
+ name 'aws-alb-target-group'
7
+
8
+ description <<-DESC
9
+ A Vagrant plugin that allows you to setup ALB Target Group.
10
+ DESC
11
+
12
+ config :aws_alb do
13
+ require_relative 'config'
14
+ Config
15
+ end
16
+
17
+ action_hook :add_instance, :machine_action_up do |hook|
18
+ require_relative 'action/add_instance'
19
+ hook.after VagrantPlugins::AWS::Action::RunInstance, VagrantPlugins::AwsAlbTargetGroup::Action::AddInstance
20
+ hook.after VagrantPlugins::AWS::Action::StartInstance, VagrantPlugins::AwsAlbTargetGroup::Action::AddInstance
21
+ end
22
+
23
+ action_hook :remove_instance, :machine_action_halt do |hook|
24
+ require_relative 'action/remove_instance'
25
+ hook.after VagrantPlugins::AWS::Action::StopInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
26
+ hook.after VagrantPlugins::AWS::Action::TerminateInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
27
+ end
28
+
29
+ action_hook :remove_instance, :machine_action_destroy do |hook|
30
+ require_relative 'action/remove_instance'
31
+ hook.before VagrantPlugins::AWS::Action::StopInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
32
+ hook.before VagrantPlugins::AWS::Action::TerminateInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
33
+ end
34
+
35
+ action_hook :add_instance, :machine_action_reload do |hook|
36
+ require_relative 'action/remove_instance'
37
+ hook.after VagrantPlugins::AWS::Action::StopInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
38
+ hook.after VagrantPlugins::AWS::Action::TerminateInstance, VagrantPlugins::AwsAlbTargetGroup::Action::RemoveInstance
39
+
40
+ require_relative 'action/add_instance'
41
+ hook.after VagrantPlugins::AWS::Action::RunInstance, VagrantPlugins::AwsAlbTargetGroup::Action::AddInstance
42
+ hook.after VagrantPlugins::AWS::Action::StartInstance, VagrantPlugins::AwsAlbTargetGroup::Action::AddInstance
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,52 @@
1
+ require 'aws-sdk'
2
+
3
+ module VagrantPlugins
4
+ module AwsAlbTargetGroup
5
+ module Util
6
+ class AwsUtil
7
+
8
+ attr_reader :alb
9
+
10
+ def initialize(accesskey, secretkey, region)
11
+ credentials = Aws::Credentials.new(accesskey, secretkey)
12
+ @alb = Aws::ElasticLoadBalancingV2::Client.new(
13
+ credentials: credentials,
14
+ region: region
15
+ )
16
+ end
17
+
18
+ def add_instance(instance_id, target_group_name)
19
+ @alb.register_targets(
20
+ {
21
+ target_group_arn: get_target_group_arn(target_group_name),
22
+ targets: [
23
+ {
24
+ id: instance_id,
25
+ },
26
+ ],
27
+ }
28
+ )
29
+ end
30
+
31
+ def remove_instance(instance_id, target_group_name)
32
+ @alb.deregister_targets(
33
+ {
34
+ target_group_arn: get_target_group_arn(target_group_name),
35
+ targets: [
36
+ {
37
+ id: instance_id,
38
+ },
39
+ ],
40
+ }
41
+ )
42
+ end
43
+
44
+ private
45
+
46
+ def get_target_group_arn(target_group_name)
47
+ @alb.describe_target_groups({ names: [target_group_name] }).target_groups[0].target_group_arn
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,5 @@
1
+ module Vagrant
2
+ module AwsAlbTargetGroup
3
+ VERSION = "0.1.2"
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "vagrant-aws-alb-target-group/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "vagrant-aws-alb-target-group"
7
+ spec.version = Vagrant::AwsAlbTargetGroup::VERSION
8
+ spec.authors = ["henteko"]
9
+ spec.email = ["henteko07@gmail.com"]
10
+
11
+ spec.summary = %q{Setup AWS ALB Target Group}
12
+ spec.description = %q{Setup AWS ALB Target Group}
13
+ spec.homepage = "https://github.com/henteko/vagrant-aws-alb-target-group"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_dependency 'aws-sdk', '~> 2.6.44'
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.16"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-aws-alb-target-group
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - henteko
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-07-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.6.44
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.6.44
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ description: Setup AWS ALB Target Group
56
+ email:
57
+ - henteko07@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - Gemfile.lock
65
+ - README.md
66
+ - Rakefile
67
+ - lib/vagrant-aws-alb-target-group.rb
68
+ - lib/vagrant-aws-alb-target-group/action/add_instance.rb
69
+ - lib/vagrant-aws-alb-target-group/action/base.rb
70
+ - lib/vagrant-aws-alb-target-group/action/remove_instance.rb
71
+ - lib/vagrant-aws-alb-target-group/config.rb
72
+ - lib/vagrant-aws-alb-target-group/plugin.rb
73
+ - lib/vagrant-aws-alb-target-group/util/aws_util.rb
74
+ - lib/vagrant-aws-alb-target-group/version.rb
75
+ - vagrant-aws-alb-target-group.gemspec
76
+ homepage: https://github.com/henteko/vagrant-aws-alb-target-group
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project:
96
+ rubygems_version: 2.6.13
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: Setup AWS ALB Target Group
100
+ test_files: []