puppet-lint-global_resource-check 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # puppet-lint global resource check
2
+
3
+ ## Installation
4
+
5
+ To use this plugin, add the following like to the Gemfile in your Puppet code
6
+ base and run `bundle install`.
7
+
8
+ ```ruby
9
+ gem 'puppet-lint-global_resource-check'
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ This plugin provides a new check to `puppet-lint`.
15
+
16
+ ### global_resource
17
+
18
+ **--fix support: No**
19
+
20
+ This check will raise a error for any global defines resource.
21
+
22
+ ```
23
+ ERROR: Resource file in global space on line 19
24
+ ```
25
+
@@ -0,0 +1,33 @@
1
+ PuppetLint.new_check(:global_resource) do
2
+ def check
3
+
4
+ secure = []
5
+
6
+ class_indexes.each { |c| secure << [c[:start], c[:end]] }
7
+ defined_type_indexes.each { |d| secure << [d[:start], d[:end]] }
8
+
9
+ # node_indexes will be in the next puppet-lint version
10
+ unless defined? node_indexes
11
+ node_indexes = PuppetLint::Data.definition_indexes(:NODE)
12
+ end
13
+ node_indexes.each { |n| secure << [n[:start], n[:end]] }
14
+
15
+ resource_indexes.each do |r|
16
+ encap = 0
17
+ secure.each do |s|
18
+ if s[0] < r[:start] and s[1] > r[:end]
19
+ encap = 1
20
+ end
21
+ end
22
+ next if encap == 1
23
+
24
+ notify(:error, {
25
+ :message => "Resource #{r[:type].value} in global space",
26
+ :line => r[:type].line,
27
+ :column => r[:type].column,
28
+ })
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'global_resource' do
4
+
5
+ context 'just a class' do
6
+ let(:code) { "class test { file { 'file': } }" }
7
+
8
+ it 'should not detect any problems' do
9
+ expect(problems).to have(0).problems
10
+ end
11
+ end
12
+
13
+ context 'just a define' do
14
+ let(:code) { "define test ($param = undef) { file { 'file': } }" }
15
+
16
+ it 'should not detect any problems' do
17
+ expect(problems).to have(0).problems
18
+ end
19
+ end
20
+
21
+ context 'allow node resources' do
22
+ let(:code) { "node 'test' { file { 'file': } }" }
23
+
24
+ it 'should not detect any problems' do
25
+ expect(problems).to have(0).problems
26
+ end
27
+ end
28
+
29
+ context 'global file' do
30
+ let(:code) { "file { 'file': } define test ($param = undef) { file { 'file': } }" }
31
+
32
+ it 'should detect a problem' do
33
+ expect(problems).to have(1).problems
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,3 @@
1
+ require 'puppet-lint'
2
+
3
+ PuppetLint::Plugins.load_spec_helper
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: puppet-lint-global_resource-check
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marius Rieder
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-03-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: puppet-lint
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec-its
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec-collection_matchers
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: ! ' Extends puppet-lint to ensure that your manifests have no global
95
+ resources.
96
+
97
+ '
98
+ email: marius.rieder@nine.ch
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - README.md
104
+ - lib/puppet-lint/plugins/check_global_resource.rb
105
+ - spec/puppet-lint/plugins/check_global_resource_spec.rb
106
+ - spec/spec_helper.rb
107
+ homepage: https://github.com/ninech/puppet-lint-global_resource-check
108
+ licenses:
109
+ - MIT
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project:
128
+ rubygems_version: 1.8.23
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: puppet-lint global_resource check
132
+ test_files:
133
+ - spec/puppet-lint/plugins/check_global_resource_spec.rb
134
+ - spec/spec_helper.rb