op5util 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 633eb23a8f27b8e4fec8a2b91346245798125cb0
4
- data.tar.gz: 96e215bea0d1036f0a0d5b6e9708477e02bcb167
3
+ metadata.gz: 98b7c7098263b0b79fbcc7dab53a96c1d66d9001
4
+ data.tar.gz: ed48f74b4482bc6d8a3e3688d7f6a5583526e1bd
5
5
  SHA512:
6
- metadata.gz: 876545c14290ab04a7983d407ef1d538681b7a688bb2a59cdf77e0e646ce96a2ad9e2c5481dbbce50523677800961443108c2daa4127fff78701074535167b5b
7
- data.tar.gz: 50dbac952a698fb8067550eeb4d8fd4118dd5ea3eb8af68dba63c5dbe57edd69395be0c8e11e8d3a61050138bed2cb752dbe84a94c7421ecf9eb966f8bfc88bf
6
+ metadata.gz: a4e6f2e3588cbbb251e67fe09ddfb4946d4b10715f3d6849d9d45699c7a610bae978e23f7d274c34f82e30afef19a58aa3d26d0f110fdaadaef316084e0da7e5
7
+ data.tar.gz: 837f71ec446b2151ac5c68ebf5e9ee412257fb97142dde0b0946c9e27f9937740f8b203c0923a4656d936cfa75249f2b2290fdfea3e9ab2e9f2fb809bb852bed
data/Readme.md CHANGED
@@ -5,7 +5,7 @@ and want to be able to do the most common Op5 tasks without logging in
5
5
  to a web-gui?
6
6
 
7
7
  Or you want to start monitoring the newly installed hosts with Op5
8
- using your config management tool?
8
+ using your ansible/chef/whatever config management tool?
9
9
 
10
10
  Those two use-cases were my biggest itches when I first started to use
11
11
  saved curl commands to interact with the REST-api and soon op5util.rb
@@ -92,14 +92,14 @@ and the other gems that op5util depends on.
92
92
  user@host:~$ sudo gem install op5util
93
93
  ```
94
94
 
95
- Latest version is 0.1.5, you can verify that op5util is installed correctly with:
95
+ Latest version is 0.1.6, you can verify that op5util is installed correctly with:
96
96
 
97
97
  ``` shell
98
98
  user@host:~$ gem list --details op5util
99
99
 
100
100
  *** LOCAL GEMS ***
101
101
 
102
- op5util (0.1.5)
102
+ op5util (0.1.6)
103
103
  Author: Niklas Paulsson
104
104
  Homepage: https://github.com/np422/Op5util
105
105
  License: MIT License
@@ -139,7 +139,7 @@ SYNOPSIS
139
139
  op5util [global options] command [command options] [arguments...]
140
140
 
141
141
  VERSION
142
- 0.1.5
142
+ 0.1.6
143
143
 
144
144
  GLOBAL OPTIONS
145
145
  -f, --authfile=authfile - Authfile containing "username:password" used to authenticate with Op5
@@ -163,6 +163,7 @@ COMMANDS
163
163
  autocomplete - Show instruction on howto setup tab autocomplete for op5util in your shell
164
164
  downtime - Schedule fixed downtime for a host
165
165
  help - Shows a list of commands or help for one command
166
+ hosts - List all hosts, or detailed information about a single host
166
167
  hostgroups - List hostgroups, optionally with member and service info, Usage examples:
167
168
  'op5util hostgroups' to list all hostgroups, 'op5util hostgroups -l linux_hosts'
168
169
  to list members and services for the linux_hosts hostgroup
@@ -213,6 +214,11 @@ free to leave a bug-reports or feature requests as an issue in this repo.
213
214
 
214
215
  ## Version history
215
216
 
217
+ ### 0.1.6
218
+
219
+ New command 'hosts' which lists hosts, included example of ansible playbook
220
+ in documentation.
221
+
216
222
  ### 0.1.5
217
223
 
218
224
  Added template for shell autocomplete of op5util command (bash/zsh)
@@ -225,3 +231,36 @@ Gemspec filespec corrected to avoid unnecessary large .gem-files.
225
231
 
226
232
  Environment variable OP5AUTHFILE possible to use instead of --authfile, check permission
227
233
  of authfile and refuse to start if readable by other than owner.
234
+
235
+ ## Example, use op5util with ansible
236
+
237
+ Use the example below as a source of inspiration on how op5util can be used from
238
+ an ansible playbook.
239
+
240
+ In this example the variable 'hostgroups', which should be a list, will be used to
241
+ assign hostgroups, otherwise the default hostgroup 'linux_hosts' will beassigned.
242
+
243
+ ``` yaml
244
+ ---
245
+ - hosts: monitoring-clients
246
+ gather_facts: false
247
+ serial: 1
248
+ vars:
249
+ op5_user: 'user'
250
+ op5_password: 'password'
251
+ op5_server: 'op5server'
252
+ tasks:
253
+
254
+ - name: Check if Op5 registration is needed
255
+ shell: op5util -u {{ op5_user }} -p {{ op5_password }} -m {{ op5_server }} hosts
256
+ register: var_op5_hosts
257
+ delegate_to: localhost
258
+
259
+ - set_fact:
260
+ op5_hosts: "{{ var_op5_hosts.stdout_lines }}"
261
+
262
+ - name: Register client with Op5 monitoring server
263
+ shell: op5util -u {{ op5_user }} -p {{ op5_password }} -m {{ op5_server }} add -g {{ hostgroups | default([ 'linux_hosts' ]) | join(' -g ') }} {{ inventory_hostname }}
264
+ delegate_to: localhost
265
+ when: inventory_hostname not in op5_hosts
266
+ ```
data/bin/op5util CHANGED
@@ -156,6 +156,17 @@ command :hostgroups do |c|
156
156
  end
157
157
  end
158
158
 
159
+ desc 'List all hosts, or detailed information about a single host'
160
+ arg_name 'host'
161
+ command :hosts do |c|
162
+ c.desc 'Show detailed information'
163
+ c.switch [:l, :long]
164
+
165
+ c.action do |_global_options, options, args|
166
+ monitor.list_hosts(args[0], options)
167
+ end
168
+ end
169
+
159
170
  desc 'Show instruction on howto setup tab autocomplete for op5util in your shell'
160
171
  command :autocomplete do |c|
161
172
  c.action do
@@ -0,0 +1,29 @@
1
+ # rubocop:disable LineLength, AbcSize
2
+ # Foo
3
+ module Op5util
4
+ # Foo
5
+ class Monitor
6
+ def list_hosts(host, options)
7
+ response = self.class.get(@base_uri + 'config/host?format=json',
8
+ basic_auth: @auth, verify: false)
9
+ raise ApiError unless response.code == 200
10
+ JSON.parse!(response.body).map { |h| h['name'] }.select { |h| host.nil? ? true : h == host }.each do |h|
11
+ puts h
12
+ print_detailed_host_info(h) if options[:long]
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def print_detailed_host_info(host)
19
+ response = self.class.get(@base_uri + "config/host/#{host}?format=json",
20
+ basic_auth: @auth, verify: false)
21
+ raise ApiError unless response.code == 200
22
+ host_info = JSON.parse!(response.body)
23
+ puts 'Contact-groups: ' + host_info['contact_groups'].join(',')
24
+ puts 'Host-groups: ' + host_info['hostgroups'].join(',')
25
+ puts 'Address: ' + host_info['address']
26
+ puts 'Alias: ' + host_info['alias']
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Op5util
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.6'.freeze
3
3
  end
data/lib/op5util.rb CHANGED
@@ -10,3 +10,4 @@ require 'op5util/acknowledge_alarm.rb'
10
10
  require 'op5util/list_hostgroups.rb'
11
11
  require 'op5util/schedule_checks.rb'
12
12
  require 'op5util/autocomplete.rb'
13
+ require 'op5util/list_hosts.rb'
data/op5util.gemspec CHANGED
@@ -6,7 +6,7 @@ spec = Gem::Specification.new do |s|
6
6
  s.author = 'Niklas Paulsson'
7
7
  s.email = 'niklasp@gmail.com'
8
8
  s.platform = Gem::Platform::RUBY
9
- s.licenses = ['MIT License']
9
+ s.licenses = ['MIT']
10
10
  s.homepage = 'https://github.com/np422/Op5util'
11
11
  s.summary = 'A utility to do common Op5 administration from the commandline'
12
12
  s.files = %w[bin/op5util lib/op5util.rb LICENSE op5util.gemspec] +
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: op5util
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niklas Paulsson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -128,6 +128,7 @@ files:
128
128
  - lib/op5util/autocomplete.rb
129
129
  - lib/op5util/check_auth.rb
130
130
  - lib/op5util/list_hostgroups.rb
131
+ - lib/op5util/list_hosts.rb
131
132
  - lib/op5util/method_template.rb
132
133
  - lib/op5util/monitor.rb
133
134
  - lib/op5util/schedule_checks.rb
@@ -139,7 +140,7 @@ files:
139
140
  - op5util.rdoc
140
141
  homepage: https://github.com/np422/Op5util
141
142
  licenses:
142
- - MIT License
143
+ - MIT
143
144
  metadata: {}
144
145
  post_install_message:
145
146
  rdoc_options: