yle_tf-landscape 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 46b8b4793d4061168c787e4f011501bdb0be2a48
4
+ data.tar.gz: '081eb08df7190970212f07a9b4843ca6d89fe967'
5
+ SHA512:
6
+ metadata.gz: 7fc4583c8b57a645b61e843c02cb7b9f11d61efacb0839ef60e7b8473ff5489ac886947a7c958886e5db510ef006a05e1c2522e41adbb6d6c5e79fd12bec60bd
7
+ data.tar.gz: cad71930fe0dbbb4da6c7a081a07ffdd68b9bc4cc3497c0abc83f27dc8a5ca70b70009fe8b0d60b1e5850c225e2e63a19f25de5140f994bc3d5e901c2ab62210
@@ -0,0 +1,2 @@
1
+ require_relative 'yle_tf-landscape/plugin'
2
+ require_relative 'yle_tf-landscape/version'
@@ -0,0 +1,20 @@
1
+ require 'yle_tf/logger'
2
+
3
+ module YleTfPlugins
4
+ module Landscape
5
+ module Action
6
+ class ChangeTfCommand
7
+ def initialize(app)
8
+ @app = app
9
+ end
10
+
11
+ def call(env)
12
+ YleTf::Logger.debug "Changing 'tf_command' to 'plan'"
13
+ env[:tf_command] = 'plan'
14
+
15
+ @app.call(env)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ require 'terraform_landscape'
2
+ require 'yle_tf/logger'
3
+ require 'yle_tf/system'
4
+
5
+ module YleTfPlugins
6
+ module Landscape
7
+ class Command
8
+ def execute(env)
9
+ args = env[:tf_command_args].dup
10
+ args << '-no-color'
11
+ args << '-input=false'
12
+
13
+ landscape_handler = landscape_handler(env)
14
+
15
+ YleTf::Logger.info 'Running `terraform plan`'
16
+ YleTf::System.cmd('terraform', 'plan', *args,
17
+ stdin: :console,
18
+ stdout: landscape_handler)
19
+ end
20
+
21
+ def landscape_handler(env)
22
+ printer = landscape_printer(env)
23
+
24
+ proc do |io|
25
+ YleTf::Logger.debug 'Streaming to Landscape'
26
+ Thread.new { printer.process_stream(io) }
27
+ end
28
+ end
29
+
30
+ def landscape_printer(env)
31
+ output = landscape_output(env)
32
+ TerraformLandscape::Printer.new(output)
33
+ end
34
+
35
+ def landscape_output(env)
36
+ TerraformLandscape::Output.new(STDOUT).tap do |output|
37
+ output.color_enabled = false if env[:tf_options][:no_color]
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ require 'yle_tf'
2
+
3
+ module YleTfPlugins
4
+ module Landscape
5
+ class Plugin < YleTf::Plugin
6
+ register
7
+
8
+ command('planb', 'Run `terraform plan` with landscaped output') do
9
+ require_relative 'action'
10
+ require_relative 'command'
11
+
12
+ YleTf::Action::Builder.new do
13
+ use Action::ChangeTfCommand
14
+ use YleTf::Action.default_action_stack(Command)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ module YleTfPlugins
2
+ module Landscape
3
+ VERSION = '1.0.0'.freeze
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yle_tf-landscape
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Yleisradio
8
+ - Teemu Matilainen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-09-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: yle_tf
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0.2'
28
+ - !ruby/object:Gem::Dependency
29
+ name: terraform_landscape
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 0.1.13
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.1.13
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.13'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.13'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '12.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '12.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '3.5'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '3.5'
84
+ description: A plugin for YleTf adding a `planb` command that runs `terraform plan`
85
+ with piping the output through Terraform Landscape for reformatting the output to
86
+ be easier to read and understand
87
+ email:
88
+ - devops@yle.fi
89
+ - teemu.matilainen@iki.fi
90
+ executables: []
91
+ extensions: []
92
+ extra_rdoc_files: []
93
+ files:
94
+ - lib/yle_tf-landscape.rb
95
+ - lib/yle_tf-landscape/action.rb
96
+ - lib/yle_tf-landscape/command.rb
97
+ - lib/yle_tf-landscape/plugin.rb
98
+ - lib/yle_tf-landscape/version.rb
99
+ homepage: https://github.com/Yleisradio/yle_tf-landscape
100
+ licenses:
101
+ - MIT
102
+ metadata: {}
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ requirements: []
118
+ rubyforge_project:
119
+ rubygems_version: 2.6.11
120
+ signing_key:
121
+ specification_version: 4
122
+ summary: YleTf plugin for Terraform Landscape
123
+ test_files: []