packageiq 0.1.1 → 0.1.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
  SHA1:
3
- metadata.gz: 3f59aa0bafa14cd72f86a6883cb9eed1fe0f6181
4
- data.tar.gz: 91207153f8dc05482b0e76532c359e0125ae6318
3
+ metadata.gz: 13cabd108b556704036440b3d81d080a240474fa
4
+ data.tar.gz: 846f9df4e844d3c4695ae21bc770763dea39b8dc
5
5
  SHA512:
6
- metadata.gz: a1bbe801925a0c3cf3906e4a068327e95353a6c00ef401831138392b16dc9ab1862b48763b2244e2ba7795d96d3030b7e1a8150177f55e4f7998dbbb081b722f
7
- data.tar.gz: 889ced6a5ae5fe6025a6826adb79125e832d23624974d6a66fe00d6916bbbbde8788b3bd80796890b87ee13d632a7d3d0862ff96220edebe72ad36760c71fb28
6
+ metadata.gz: d03e7146e6e3bb1dbda41cb3288d1e3082cfe04736e5cac45b0b6e182997b4803544ff09c70063948cd9d1e4ad1687b0d5b3f733520d7c0527145c5fb61c8b7c
7
+ data.tar.gz: ecff6b00c67880e0bfc2ad512389dbcba774cf0e7ce9b69859e0854bbe4dcb362dfed445079e9bd86851646e6aca9c5d643ac079f4b1ec4db1ea52a97cce7651
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
  /tmp/
10
10
  /.ruby-version
11
11
  /scratch/
12
+ /build/pkg/
13
+ /build/recipes/cache/
data/build/Dockerfile ADDED
@@ -0,0 +1,26 @@
1
+ FROM centos:7
2
+
3
+ MAINTAINER Eric Olsen <eric@ericolsen.net>
4
+
5
+ ENV REFRESHED_AT 2015-02-04
6
+
7
+ RUN yum update -y && yum install -y \
8
+ curl \
9
+ gcc \
10
+ git \
11
+ make \
12
+ rpm-build \
13
+ ruby \
14
+ ruby-devel \
15
+ tar
16
+
17
+ RUN echo "gem: --no-ri --no-rdoc" >/etc/gemrc
18
+ RUN gem install fpm -v 1.4.0
19
+ RUN gem install fpm-cookery -v 0.31.0
20
+ RUN yum -y install vim
21
+
22
+ VOLUME /data
23
+ WORKDIR /data
24
+
25
+ CMD ["fpm-cook", "install-build-deps", "--debug", "--tmp-root", "/tmp", "recipes/recipe.rb"]
26
+ CMD ["fpm-cook", "package", "--debug", "--tmp-root", "/tmp", "--pkg-dir", "pkg", "--no-deps", "recipes/recipe.rb"]
data/build/c7_build.sh ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ docker run -h c7-builder.docker -it --rm -v $PWD:/data c7-builder
@@ -0,0 +1,11 @@
1
+ {
2
+ "elasticsearch": {
3
+ "hosts":
4
+ [
5
+ {"host":"localhost","port":9200}
6
+ ],
7
+ "randomize_hosts":true,
8
+ "retry_on_failure":true,
9
+ "index": "packageiq"
10
+ }
11
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "indexer": {
3
+ "workers" : 10,
4
+ "threads" : 2
5
+ }
6
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "rabbitmq" : {
3
+ "host" : "localhost",
4
+ "port" : 5672,
5
+ "tls" : false,
6
+ "vhost": "/",
7
+ "user" : "guest",
8
+ "pass" : "guest",
9
+ "queue": "packageiq.packages"
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ [Unit]
2
+ Description=PackageIQ Indexer
3
+
4
+ [Service]
5
+ Type=simple
6
+ User=packageiq
7
+ Group=packageiq
8
+ ExecStart=/usr/local/bin/piq_indexer
9
+ StandardOutput=syslog
10
+ StandardError=syslog
11
+
12
+ [Install]
13
+ WantedBy=multi-user.target
@@ -0,0 +1,5 @@
1
+ class AmqProtocolGem < FPM::Cookery::RubyGemRecipe
2
+ name 'amq-protocol'
3
+ version '2.0.1'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class BunnyGem < FPM::Cookery::RubyGemRecipe
2
+ name 'bunny'
3
+ version '2.2.2'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ElasticsearchApiGem < FPM::Cookery::RubyGemRecipe
2
+ name 'elasticsearch-api'
3
+ version '1.0.15'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ElasticsearchModelGem < FPM::Cookery::RubyGemRecipe
2
+ name 'elasticsearch-model'
3
+ version '0.1.8'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ElasticsearchPersistenceGem < FPM::Cookery::RubyGemRecipe
2
+ name 'elasticsearch-persistence'
3
+ version '0.1.8'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ElasticsearchTransportGem < FPM::Cookery::RubyGemRecipe
2
+ name 'elasticsearch-transport'
3
+ version '1.0.15'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ElasticsearchGem < FPM::Cookery::RubyGemRecipe
2
+ name 'elasticsearch'
3
+ version '1.0.15'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class FaradayGem < FPM::Cookery::RubyGemRecipe
2
+ name 'faraday'
3
+ version '0.9.2'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class JSONGem < FPM::Cookery::RubyGemRecipe
2
+ name 'json'
3
+ version '1.8.3'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class MultiJSONGem < FPM::Cookery::RubyGemRecipe
2
+ name 'multi_json'
3
+ version '1.11.2'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,6 @@
1
+ class MultiPartPostGem < FPM::Cookery::RubyGemRecipe
2
+ name 'multipart-post'
3
+ version '2.0.0'
4
+ revision 5
5
+ maintainer 'Eric Olsen <eric@ericolsen.net'
6
+ end
@@ -0,0 +1,5 @@
1
+ class PackageIQGem < FPM::Cookery::RubyGemRecipe
2
+ name 'packageiq'
3
+ version '0.1.1'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,13 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ if ! getent passwd packageiq > /dev/null; then
6
+ useradd -c "PackageIQ User" -d /home/packageiq -m -U -s "/sbin/nologin" packageiq
7
+ fi
8
+
9
+ chown -R root:root /etc/packageiq
10
+ chmod 0755 /etc/packageiq
11
+ chmod 0644 /etc/packageiq/*
12
+
13
+ systemctl daemon-reload
@@ -0,0 +1,54 @@
1
+ class PackageIQ < FPM::Cookery::Recipe
2
+ name 'packageiq'
3
+ version '0.1.2'
4
+
5
+ source '', :with => :noop
6
+
7
+ description 'PackageIQ'
8
+
9
+ maintainer 'Eric Olsen <eric@ericolsen.net>'
10
+
11
+ homepage 'https://github.com/eoly/packageiq'
12
+
13
+ depends ['rubygem-packageiq',
14
+ 'rubygem-bunny',
15
+ 'rubygem-json',
16
+ 'rubygem-elasticsearch',
17
+ 'rubygem-sneakers']
18
+
19
+ config_files ['/etc/packageiq/rabbitmq.json',
20
+ '/etc/packageiq/indexer.json',
21
+ '/etc/packageiq/elasticsearch.json']
22
+
23
+ chain_package true
24
+ chain_recipes ['bunny',
25
+ 'packageiq',
26
+ 'amqp-protocol',
27
+ 'faraday',
28
+ 'json',
29
+ 'multi_json',
30
+ 'multipart-post',
31
+ 'serverengine',
32
+ 'sigdump',
33
+ 'thor',
34
+ 'thread',
35
+ 'elasticsearch',
36
+ 'elasticsearch-api',
37
+ 'elasticsearch-model',
38
+ 'elasticsearch-persistence',
39
+ 'elasticsearch-transport',
40
+ 'sneakers']
41
+
42
+ post_install 'postinst'
43
+
44
+ def build
45
+ end
46
+
47
+ def install
48
+ etc('packageiq').mkdir
49
+ etc('packageiq').install workdir('../etc/packageiq/rabbitmq.json')
50
+ etc('packageiq').install workdir('../etc/packageiq/elasticsearch.json')
51
+ etc('packageiq').install workdir('../etc/packageiq/indexer.json')
52
+ lib('systemd/system').install workdir('../lib/systemd/system/piq_indexer.service')
53
+ end
54
+ end
@@ -0,0 +1,5 @@
1
+ class ServerengineGem < FPM::Cookery::RubyGemRecipe
2
+ name 'serverengine'
3
+ version '1.5.11'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class SigdumpGem < FPM::Cookery::RubyGemRecipe
2
+ name 'sigdump'
3
+ version '0.2.4'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class SneakersGem < FPM::Cookery::RubyGemRecipe
2
+ name 'sneakers'
3
+ version '2.3.5'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ThorGem < FPM::Cookery::RubyGemRecipe
2
+ name 'thor'
3
+ version '0.19.1'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -0,0 +1,5 @@
1
+ class ThreadGem < FPM::Cookery::RubyGemRecipe
2
+ name 'thread'
3
+ version '0.1.7'
4
+ maintainer 'Eric Olsen <eric@ericolsen.net'
5
+ end
@@ -5,25 +5,25 @@ module Packageiq
5
5
  module Provider
6
6
  # rhel based system package provider
7
7
  class RHEL
8
- # mapping for yum info field name to symbol
8
+ # mapping of yum info query tags to symbol
9
9
  RPM_INFO_KEY = {
10
- 'Name' => :name,
11
- 'Epoch' => :epoch,
12
- 'Version' => :version,
13
- 'Release' => :release,
14
- 'Architecture' => :arch,
15
- 'Install Date' => :install_date,
16
- 'Group' => :group,
17
- 'Size' => :size,
18
- 'License' => :license,
19
- 'Signature' => :signature,
20
- 'Source RPM' => :source_rpm,
21
- 'Build Date' => :build_date,
22
- 'Build Host' => :build_host,
23
- 'Packager' => :packager,
24
- 'Vendor' => :vendor,
25
- 'URL' => :url,
26
- 'Summary' => :summary
10
+ :name => '%{NAME}',
11
+ :epoch => '%{EPOCH}',
12
+ :version => '%{VERSION}',
13
+ :release => '%{RELEASE}',
14
+ :arch => '%{ARCH}',
15
+ :install_date => '%{INSTALLTIME:date}',
16
+ :group => '%{GROUP}',
17
+ :size => '%{SIZE}',
18
+ :license => '%{LICENSE}',
19
+ :signature => '%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|',
20
+ :source_rpm => '%{SOURCERPM}',
21
+ :build_date => '%{BUILDTIME:date}',
22
+ :build_host => '%{BUILDHOST}',
23
+ :packager => '%{PACKAGER}',
24
+ :vendor => '%{VENDOR}',
25
+ :url => '%{URL}',
26
+ :summary => '%{SUMMARY}'
27
27
  }
28
28
 
29
29
  attr_reader :command_handler, :hostname, :timestamp, :os_release
@@ -49,7 +49,11 @@ module Packageiq
49
49
 
50
50
  # returns hash of rpm info
51
51
  def info(package)
52
- info = run("rpm -qi #{package}")
52
+ queryformat = ''
53
+ RPM_INFO_KEY.each do |symbol, query|
54
+ queryformat += "#{symbol}: #{query}\\n"
55
+ end
56
+ info = run("rpm -q --queryformat \"#{queryformat}\" #{package}")
53
57
  parse_info(info)
54
58
  end
55
59
 
@@ -135,8 +139,8 @@ module Packageiq
135
139
  lines = info.split("\n")
136
140
  info_hash = { package: {} }
137
141
  lines.each do |line|
138
- RPM_INFO_KEY.each do |field, symbol|
139
- parse_regex = Regexp.new("^(#{field})+\s*:{1}\s+(.*)$")
142
+ RPM_INFO_KEY.each do |symbol, query|
143
+ parse_regex = Regexp.new("^(#{symbol})+\s*:{1}\s{1}(.*)$")
140
144
  parts = parse_regex.match(line)
141
145
  info_hash[:package][symbol] = parts[2] if parts
142
146
  end
@@ -1,3 +1,3 @@
1
1
  module Packageiq
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/packageiq.gemspec CHANGED
@@ -33,4 +33,7 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_development_dependency 'bundler', '~> 1.10'
35
35
  spec.add_development_dependency 'rake', '~> 10.0'
36
+ spec.add_development_dependency 'pleaserun', '~> 0.0.16'
37
+ spec.add_development_dependency 'fpm', '~> 1.4.0'
38
+ spec.add_development_dependency 'fpm-cookery', '~> 0.31.0'
36
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packageiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Olsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-02-08 00:00:00.000000000 Z
11
+ date: 2016-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -94,6 +94,48 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pleaserun
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.0.16
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.0.16
111
+ - !ruby/object:Gem::Dependency
112
+ name: fpm
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.4.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.4.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: fpm-cookery
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.31.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.31.0
97
139
  description: Package Intelligence Gathering System
98
140
  email:
99
141
  - eric@ericolsen.net
@@ -110,6 +152,31 @@ files:
110
152
  - Rakefile
111
153
  - bin/console
112
154
  - bin/setup
155
+ - build/Dockerfile
156
+ - build/c7_build.sh
157
+ - build/etc/packageiq/elasticsearch.json
158
+ - build/etc/packageiq/indexer.json
159
+ - build/etc/packageiq/rabbitmq.json
160
+ - build/lib/systemd/system/piq_indexer.service
161
+ - build/recipes/amqp-protocol.rb
162
+ - build/recipes/bunny.rb
163
+ - build/recipes/elasticsearch-api.rb
164
+ - build/recipes/elasticsearch-model.rb
165
+ - build/recipes/elasticsearch-persistence.rb
166
+ - build/recipes/elasticsearch-transport.rb
167
+ - build/recipes/elasticsearch.rb
168
+ - build/recipes/faraday.rb
169
+ - build/recipes/json.rb
170
+ - build/recipes/multi_json.rb
171
+ - build/recipes/multipart-post.rb
172
+ - build/recipes/packageiq.rb
173
+ - build/recipes/postinst
174
+ - build/recipes/recipe.rb
175
+ - build/recipes/serverengine.rb
176
+ - build/recipes/sigdump.rb
177
+ - build/recipes/sneakers.rb
178
+ - build/recipes/thor.rb
179
+ - build/recipes/thread.rb
113
180
  - etc/packageiq/elasticsearch.json
114
181
  - etc/packageiq/indexer.json
115
182
  - etc/packageiq/rabbitmq.json
@@ -150,4 +217,3 @@ signing_key:
150
217
  specification_version: 4
151
218
  summary: Package Intelligence Gathering System
152
219
  test_files: []
153
- has_rdoc: