inspec 0.21.3 → 0.21.4
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/CHANGELOG.md +9 -2
- data/lib/inspec/polyfill.rb +13 -0
- data/lib/inspec/profile.rb +1 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/resources/processes.rb +13 -36
- data/lib/utils/hash_map.rb +37 -0
- data/test/unit/mock/profiles/resource-tiny/inspec.yml +10 -0
- data/test/unit/mock/profiles/resource-tiny/libraries/resource.rb +3 -0
- data/test/unit/resources/processes_test.rb +14 -7
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c4b9ddfdd938125e49d0de346cd3ddc680102ec
|
4
|
+
data.tar.gz: 611a23c93ca0a9a88f0bca9c904c8976ea42b34f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ef13914cdf0244f62ec4e77bf978d4397fd35698394be0d0b1cf4369ea2eaea6b34b9091c7d2467040ede39e2696e8c1bf91031ab7c53c598c953013aff6cb8
|
7
|
+
data.tar.gz: f5decb00ff30769b253d841566798f55a6dc3f8f1582f76d6a712188ddbf9bb25e8e325b8ea7c1296b52b9c7e27e497bdd37c18f2c91e42b6d3e28294349afc3
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [0.21.
|
4
|
-
[Full Changelog](https://github.com/chef/inspec/compare/v0.21.
|
3
|
+
## [0.21.4](https://github.com/chef/inspec/tree/0.21.4) (2016-05-13)
|
4
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v0.21.3...0.21.4)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- use struct for processes list [\#744](https://github.com/chef/inspec/pull/744) ([arlimus](https://github.com/arlimus))
|
9
|
+
|
10
|
+
## [v0.21.3](https://github.com/chef/inspec/tree/v0.21.3) (2016-05-11)
|
11
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v0.21.2...v0.21.3)
|
5
12
|
|
6
13
|
**Fixed bugs:**
|
7
14
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# copyright: 2016, Chef Software Inc.
|
3
|
+
# author: Dominik Richter
|
4
|
+
# author: Christoph Hartmann
|
5
|
+
# license: All rights reserved
|
6
|
+
|
7
|
+
class Struct
|
8
|
+
unless instance_methods.include? :to_h
|
9
|
+
def to_h
|
10
|
+
Hash[each_pair.to_a]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/inspec/profile.rb
CHANGED
data/lib/inspec/version.rb
CHANGED
data/lib/resources/processes.rb
CHANGED
@@ -26,7 +26,6 @@ module Inspec::Resources
|
|
26
26
|
grep = '(/[^/]*)*'+grep if grep[0] != '/'
|
27
27
|
grep = Regexp.new('^' + grep + '(\s|$)')
|
28
28
|
end
|
29
|
-
|
30
29
|
all_cmds = ps_aux
|
31
30
|
@list = all_cmds.find_all do |hm|
|
32
31
|
hm[:command] =~ grep
|
@@ -57,7 +56,12 @@ module Inspec::Resources
|
|
57
56
|
build_process_list(command, regex, os)
|
58
57
|
end
|
59
58
|
|
60
|
-
|
59
|
+
Process = Struct.new(:label, :user, :pid,
|
60
|
+
:cpu, :mem, :vsz,
|
61
|
+
:rss, :tty, :stat,
|
62
|
+
:start, :time, :command)
|
63
|
+
|
64
|
+
def build_process_list(command, regex, os)
|
61
65
|
cmd = inspec.command(command)
|
62
66
|
all = cmd.stdout.split("\n")[1..-1]
|
63
67
|
return [] if all.nil?
|
@@ -66,40 +70,13 @@ module Inspec::Resources
|
|
66
70
|
line.match(regex)
|
67
71
|
end.compact
|
68
72
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
mem: m[5],
|
77
|
-
vsz: m[6].to_i,
|
78
|
-
rss: m[7].to_i,
|
79
|
-
tty: m[8],
|
80
|
-
stat: m[9],
|
81
|
-
start: m[10],
|
82
|
-
time: m[11],
|
83
|
-
command: m[12],
|
84
|
-
}
|
85
|
-
end
|
86
|
-
else
|
87
|
-
lines.map do |m|
|
88
|
-
{
|
89
|
-
label: nil,
|
90
|
-
user: m[1],
|
91
|
-
pid: m[2].to_i,
|
92
|
-
cpu: m[3],
|
93
|
-
mem: m[4],
|
94
|
-
vsz: m[5].to_i,
|
95
|
-
rss: m[6].to_i,
|
96
|
-
tty: m[7],
|
97
|
-
stat: m[8],
|
98
|
-
start: m[9],
|
99
|
-
time: m[10],
|
100
|
-
command: m[11],
|
101
|
-
}
|
102
|
-
end
|
73
|
+
lines.map do |m|
|
74
|
+
a = m.to_a[1..-1] # grab all matching groups
|
75
|
+
a.unshift(nil) unless os.linux?
|
76
|
+
a[2] = a[2].to_i
|
77
|
+
a[5] = a[5].to_i
|
78
|
+
a[6] = a[6].to_i
|
79
|
+
Process.new(*a)
|
103
80
|
end
|
104
81
|
end
|
105
82
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# author: Dominik Richter
|
3
|
+
# author: Christoph Hartmann
|
4
|
+
|
5
|
+
class HashMap
|
6
|
+
class << self
|
7
|
+
def [](hash, *keys)
|
8
|
+
return hash if keys.empty? || hash.nil?
|
9
|
+
key = keys.shift
|
10
|
+
if hash.is_a?(Array)
|
11
|
+
map = hash.map { |i| [i, key] }
|
12
|
+
else
|
13
|
+
map = hash[key]
|
14
|
+
end
|
15
|
+
[map, *keys]
|
16
|
+
rescue NoMethodError => _
|
17
|
+
nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class StringMap
|
23
|
+
class << self
|
24
|
+
def [](hash, *keys)
|
25
|
+
return hash if keys.empty? || hash.nil?
|
26
|
+
key = keys.shift
|
27
|
+
if hash.is_a?(Array)
|
28
|
+
map = hash.map { |i| [i, key] }
|
29
|
+
else
|
30
|
+
map = hash[key]
|
31
|
+
end
|
32
|
+
[map, *keys]
|
33
|
+
rescue NoMethodError => _
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
name: complete
|
2
|
+
title: complete example profile
|
3
|
+
maintainer: Chef Software, Inc.
|
4
|
+
copyright: Chef Software, Inc.
|
5
|
+
copyright_email: support@chef.io
|
6
|
+
license: Proprietary, All rights reserved
|
7
|
+
summary: Testing stub
|
8
|
+
version: 1.0.0
|
9
|
+
supports:
|
10
|
+
- os-family: linux
|
@@ -13,7 +13,8 @@ describe 'Inspec::Resources::Processes' do
|
|
13
13
|
|
14
14
|
it 'verify processes resource' do
|
15
15
|
resource = MockLoader.new(:freebsd10).load_resource('processes', '/bin/bash')
|
16
|
-
_(resource.list).must_equal
|
16
|
+
_(resource.list.length).must_equal 1
|
17
|
+
_(resource.list[0].to_h).must_equal({
|
17
18
|
label: nil,
|
18
19
|
user: 'root',
|
19
20
|
pid: 1,
|
@@ -26,14 +27,13 @@ describe 'Inspec::Resources::Processes' do
|
|
26
27
|
start: '14:15',
|
27
28
|
time: '0:00',
|
28
29
|
command: '/bin/bash',
|
29
|
-
}
|
30
|
-
|
31
|
-
_(resource.list.length).must_equal 1
|
30
|
+
})
|
32
31
|
end
|
33
32
|
|
34
33
|
it 'verify processes resource on linux os' do
|
35
34
|
resource = MockLoader.new(:centos6).load_resource('processes', '/sbin/init')
|
36
|
-
_(resource.list).must_equal
|
35
|
+
_(resource.list.length).must_equal 1
|
36
|
+
_(resource.list[0].to_h).must_equal({
|
37
37
|
label: 'system_u:system_r:kernel_t:s0',
|
38
38
|
user: 'root',
|
39
39
|
pid: 1,
|
@@ -46,9 +46,16 @@ describe 'Inspec::Resources::Processes' do
|
|
46
46
|
start: 'May04',
|
47
47
|
time: '0:01',
|
48
48
|
command: '/sbin/init',
|
49
|
-
}
|
49
|
+
})
|
50
|
+
end
|
50
51
|
|
51
|
-
|
52
|
+
it 'access attributes of a process' do
|
53
|
+
resource = MockLoader.new(:centos6).load_resource('processes', '/sbin/init')
|
54
|
+
process = resource.list[0]
|
55
|
+
process.user.must_equal 'root'
|
56
|
+
process[:user].must_equal 'root'
|
57
|
+
process['user'].must_equal 'root'
|
58
|
+
process[1].must_equal 'root'
|
52
59
|
end
|
53
60
|
|
54
61
|
it 'retrieves the users and states as arrays' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.21.
|
4
|
+
version: 0.21.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominik Richter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: r-train
|
@@ -279,6 +279,7 @@ files:
|
|
279
279
|
- lib/inspec/plugins/fetcher.rb
|
280
280
|
- lib/inspec/plugins/resource.rb
|
281
281
|
- lib/inspec/plugins/source_reader.rb
|
282
|
+
- lib/inspec/polyfill.rb
|
282
283
|
- lib/inspec/profile.rb
|
283
284
|
- lib/inspec/profile_context.rb
|
284
285
|
- lib/inspec/resource.rb
|
@@ -358,6 +359,7 @@ files:
|
|
358
359
|
- lib/utils/filter_array.rb
|
359
360
|
- lib/utils/find_files.rb
|
360
361
|
- lib/utils/hash.rb
|
362
|
+
- lib/utils/hash_map.rb
|
361
363
|
- lib/utils/json_log.rb
|
362
364
|
- lib/utils/modulator.rb
|
363
365
|
- lib/utils/object_traversal.rb
|
@@ -549,6 +551,8 @@ files:
|
|
549
551
|
- test/unit/mock/profiles/legacy-empty-metadata/metadata.rb
|
550
552
|
- test/unit/mock/profiles/legacy-simple-metadata/metadata.rb
|
551
553
|
- test/unit/mock/profiles/legacy-simple-metadata/test/.gitkeep
|
554
|
+
- test/unit/mock/profiles/resource-tiny/inspec.yml
|
555
|
+
- test/unit/mock/profiles/resource-tiny/libraries/resource.rb
|
552
556
|
- test/unit/mock/profiles/simple-metadata/inspec.yml
|
553
557
|
- test/unit/mock/profiles/skippy-profile-os/controls/one.rb
|
554
558
|
- test/unit/mock/profiles/skippy-profile-os/inspec.yml
|
@@ -635,7 +639,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
635
639
|
version: '0'
|
636
640
|
requirements: []
|
637
641
|
rubyforge_project:
|
638
|
-
rubygems_version: 2.
|
642
|
+
rubygems_version: 2.5.1
|
639
643
|
signing_key:
|
640
644
|
specification_version: 4
|
641
645
|
summary: Infrastructure and compliance testing.
|
@@ -824,6 +828,8 @@ test_files:
|
|
824
828
|
- test/unit/mock/profiles/legacy-empty-metadata/metadata.rb
|
825
829
|
- test/unit/mock/profiles/legacy-simple-metadata/metadata.rb
|
826
830
|
- test/unit/mock/profiles/legacy-simple-metadata/test/.gitkeep
|
831
|
+
- test/unit/mock/profiles/resource-tiny/inspec.yml
|
832
|
+
- test/unit/mock/profiles/resource-tiny/libraries/resource.rb
|
827
833
|
- test/unit/mock/profiles/simple-metadata/inspec.yml
|
828
834
|
- test/unit/mock/profiles/skippy-profile-os/controls/one.rb
|
829
835
|
- test/unit/mock/profiles/skippy-profile-os/inspec.yml
|