miq_utilities 0.2.2.pre.WIP → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -11
- data/Gemfile +2 -2
- data/Gemfile.lock +28 -3
- data/README.md +12 -11
- data/lib/miq_utilities/infoblox.rb +1 -1
- data/lib/miq_utilities/notification.rb +35 -20
- data/lib/miq_utilities/sql.rb +2 -2
- data/lib/miq_utilities/version.rb +1 -1
- data/lib/miq_utilities/vmware.rb +9 -11
- data/lib/miq_utilities.rb +0 -2
- data/miq_utilities.gemspec +0 -1
- metadata +3 -18
- data/.rubocop.yml +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2b19bb0fcf6f8850ddd88cb84f111b7f638b2b2caa8947d2dbd8ca0d0ea4384
|
4
|
+
data.tar.gz: 0ca998eb10a330141f7b21d50d9310276c7b002d6fc2f5fe9961577406620502
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1a4dafef4451c2224f9645abfb58064cf6a825449ef45f218c0806de8707bc3e41f7d4f29646b70f6324db73f05be12f22d0d78f7745217fc191ec6b7bb1eea
|
7
|
+
data.tar.gz: e5a4b01286f9d45a6e6b8bba0c26ea9d4abe1984a98170d247a39146678135cb8202b9e97f0907afbc7710649b2b1f2ba07ba5d22775211f8a63445bd4bdfd09
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -4,11 +4,11 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in miq_utilities.gemspec
|
6
6
|
gemspec
|
7
|
-
gem 'slack-
|
7
|
+
gem 'slack-ruby-client'
|
8
8
|
gem 'eventmachine'
|
9
9
|
gem 'faye-websocket'
|
10
10
|
gem 'rbvmomi'
|
11
11
|
gem 'tiny_tds'
|
12
12
|
gem 'winrm'
|
13
13
|
gem 'rest-client'
|
14
|
-
gem 'json'
|
14
|
+
gem 'json'
|
data/Gemfile.lock
CHANGED
@@ -1,27 +1,41 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
miq_utilities (0.2.
|
4
|
+
miq_utilities (0.2.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
+
activesupport (5.2.0)
|
10
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
11
|
+
i18n (>= 0.7, < 2)
|
12
|
+
minitest (~> 5.1)
|
13
|
+
tzinfo (~> 1.1)
|
9
14
|
builder (3.2.3)
|
15
|
+
concurrent-ruby (1.0.5)
|
10
16
|
domain_name (0.5.20180417)
|
11
17
|
unf (>= 0.0.5, < 1.0.0)
|
12
18
|
erubis (2.7.0)
|
13
19
|
eventmachine (1.2.6-x64-mingw32)
|
20
|
+
faraday (0.15.0)
|
21
|
+
multipart-post (>= 1.2, < 3)
|
22
|
+
faraday_middleware (0.12.2)
|
23
|
+
faraday (>= 0.7.4, < 1.0)
|
14
24
|
faye-websocket (0.10.7)
|
15
25
|
eventmachine (>= 0.12.0)
|
16
26
|
websocket-driver (>= 0.5.1)
|
17
27
|
ffi (1.9.23-x64-mingw32)
|
28
|
+
gli (2.17.1)
|
18
29
|
gssapi (1.2.0)
|
19
30
|
ffi (>= 1.0.1)
|
20
31
|
gyoku (1.3.1)
|
21
32
|
builder (>= 2.1.2)
|
33
|
+
hashie (3.5.7)
|
22
34
|
http-cookie (1.0.3)
|
23
35
|
domain_name (~> 0.5)
|
24
36
|
httpclient (2.8.3)
|
37
|
+
i18n (1.0.1)
|
38
|
+
concurrent-ruby (~> 1.0)
|
25
39
|
json (2.1.0)
|
26
40
|
little-plugger (1.1.4)
|
27
41
|
logging (2.2.2)
|
@@ -31,7 +45,9 @@ GEM
|
|
31
45
|
mime-types-data (~> 3.2015)
|
32
46
|
mime-types-data (3.2016.0521)
|
33
47
|
mini_portile2 (2.3.0)
|
48
|
+
minitest (5.11.3)
|
34
49
|
multi_json (1.13.1)
|
50
|
+
multipart-post (2.0.0)
|
35
51
|
netrc (0.11.0)
|
36
52
|
nokogiri (1.8.2-x64-mingw32)
|
37
53
|
mini_portile2 (~> 2.3.0)
|
@@ -48,9 +64,18 @@ GEM
|
|
48
64
|
mime-types (>= 1.16, < 4.0)
|
49
65
|
netrc (~> 0.8)
|
50
66
|
rubyntlm (0.6.2)
|
51
|
-
slack-
|
67
|
+
slack-ruby-client (0.11.1)
|
68
|
+
activesupport
|
69
|
+
faraday (>= 0.9)
|
70
|
+
faraday_middleware
|
71
|
+
gli
|
72
|
+
hashie
|
73
|
+
websocket-driver
|
74
|
+
thread_safe (0.3.6)
|
52
75
|
tiny_tds (2.1.1-x64-mingw32)
|
53
76
|
trollop (2.1.2)
|
77
|
+
tzinfo (1.2.5)
|
78
|
+
thread_safe (~> 0.1)
|
54
79
|
unf (0.1.4)
|
55
80
|
unf_ext
|
56
81
|
unf_ext (0.0.7.5-x64-mingw32)
|
@@ -79,7 +104,7 @@ DEPENDENCIES
|
|
79
104
|
rake (~> 10.0)
|
80
105
|
rbvmomi
|
81
106
|
rest-client
|
82
|
-
slack-
|
107
|
+
slack-ruby-client
|
83
108
|
tiny_tds
|
84
109
|
winrm
|
85
110
|
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## Installation
|
4
4
|
|
5
|
-
$
|
5
|
+
$ gem install miq_utilities
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
3. rbvmomi ~> 1.11.3
|
16
16
|
4. tiny_tds ~> 2.1.0
|
17
17
|
5. winrm ~> 2.2.3
|
18
|
-
6. slack-
|
18
|
+
6. slack-ruby-client ~> 0.11.1
|
19
19
|
7. rest-client ~> 1.8.0 x64-mingw32
|
20
20
|
8. json ~> 2.0.4
|
21
21
|
|
@@ -214,7 +214,7 @@ password ¦ String ¦ The users password
|
|
214
214
|
|
215
215
|
## Notification (NotificationClass)
|
216
216
|
|
217
|
-
This Class is used to notify users and log messages accordingly. This Class utilises the slack-
|
217
|
+
This Class is used to notify users and log messages accordingly. This Class utilises the `slack-ruby-client` Ruby Gem (version => 0.11.1).
|
218
218
|
|
219
219
|
### Class Method Summary
|
220
220
|
|
@@ -229,8 +229,8 @@ event_level ¦ String ¦ info, warn, error
|
|
229
229
|
event_message ¦ String ¦ The message to be used
|
230
230
|
email_to ¦ String ¦ Who to send an email to
|
231
231
|
email_from ¦ String ¦ Sent from which email address
|
232
|
-
|
233
|
-
|
232
|
+
from ¦ String ¦ From who
|
233
|
+
slack_channel ¦ Boolean ¦ The slcak channel to send the message to
|
234
234
|
```
|
235
235
|
|
236
236
|
##### Method usage
|
@@ -240,7 +240,7 @@ webhookURL ¦ String ¦ The webhook to be used
|
|
240
240
|
logger.log('error', 'An error occured!', false, true)
|
241
241
|
```
|
242
242
|
|
243
|
-
#### Levels
|
243
|
+
#### Levels
|
244
244
|
```
|
245
245
|
Level | Action
|
246
246
|
----------------------------------------------------------------------------------------------
|
@@ -260,7 +260,7 @@ message ¦ String ¦ The message to be used
|
|
260
260
|
subject ¦ String ¦ The Subject to be used
|
261
261
|
to_email ¦ String ¦ Recipient email
|
262
262
|
from_email ¦ String ¦ Sender email
|
263
|
-
|
263
|
+
from ¦ String ¦ Sent from
|
264
264
|
```
|
265
265
|
##### Method usage
|
266
266
|
|
@@ -275,10 +275,11 @@ signature ¦ String ¦ Who the emails from
|
|
275
275
|
_Sends a Slcak message_
|
276
276
|
##### Parameters
|
277
277
|
```
|
278
|
-
Name
|
278
|
+
Name | Type | Description
|
279
279
|
--------------------------------------------------------------
|
280
|
-
message
|
281
|
-
|
280
|
+
message ¦ String ¦ The message to be used
|
281
|
+
channel ¦ String ¦ The channel in which to post the message
|
282
|
+
token ¦ String ¦ The API token used to authenticate
|
282
283
|
```
|
283
284
|
|
284
285
|
##### Method usage
|
@@ -286,7 +287,7 @@ webhookURL ¦ String ¦ The webhook to be used
|
|
286
287
|
```$xslt
|
287
288
|
require 'miq_utilities'
|
288
289
|
notify = NotificationCLass.new
|
289
|
-
notify.send_slack_message('This a Slack post!', '
|
290
|
+
notify.send_slack_message('This a Slack post!', '#MIQ-CHANNEL', 'token-to-use')
|
290
291
|
```
|
291
292
|
|
292
293
|
#### **on_screen_message**
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# .SYNOPSIS
|
4
|
-
# This Class utilises the slack-
|
4
|
+
# This Class utilises the slack-ruby-client Ruby Gem (version => 0.11.1).
|
5
5
|
#
|
6
6
|
# Methods Summary:
|
7
7
|
# > Name > Description/Params
|
@@ -10,37 +10,39 @@
|
|
10
10
|
# event_message - String : The message to be used
|
11
11
|
# email_to - String : Who to send an email to
|
12
12
|
# email_from - String : Sent from which email address
|
13
|
-
#
|
14
|
-
#
|
13
|
+
# from - String : From who
|
14
|
+
# slack_channel - Boolean : The slcak channel to send the message to
|
15
15
|
#
|
16
16
|
# send_email - Sends an email to the specified user
|
17
17
|
# message - String : The message to be used
|
18
18
|
# subject - String : The Subject to be used
|
19
|
-
# from_email - String : Sender email
|
20
|
-
# signature - String : Who the emails from
|
21
19
|
# to_email - String : Recipient email
|
20
|
+
# from_email - String : Sender email
|
21
|
+
# from - String : Sent from
|
22
22
|
#
|
23
23
|
# send_slack_message - Sends a Slcak message
|
24
|
-
# message
|
25
|
-
#
|
24
|
+
# message - String : The message to be used
|
25
|
+
# channel - String : The channel in which to post the message
|
26
|
+
# token - String : The API token used to authenticate
|
26
27
|
#
|
27
28
|
# on_screen_message - Sends an on-screen notification
|
28
29
|
# level - String : info, warn, error
|
29
30
|
# message - String : The message to be used
|
30
31
|
# subject - String : The Subject to be used
|
31
32
|
# WIP
|
32
|
-
require 'slack-
|
33
|
+
require 'slack-ruby-client'
|
33
34
|
|
34
35
|
# notification class
|
35
36
|
class NotificationClass
|
36
|
-
|
37
|
+
|
38
|
+
def notify(event_level, event_message, email_to = nil, email_from = nil, from = nil, slack_channel = nil)
|
37
39
|
case event_level.upcase
|
38
40
|
when %w[WARN WARNING]
|
39
|
-
send_email(event_message, 'Warning Identified',
|
40
|
-
send_slack_message(event_message,
|
41
|
+
send_email(event_message, 'Warning Identified', email_to, email_from, from)
|
42
|
+
send_slack_message(event_message, slack_channel)
|
41
43
|
when %w[ERR ERROR]
|
42
|
-
send_email(event_message, 'Error Identified',
|
43
|
-
send_slack_message(event_message,
|
44
|
+
send_email(event_message, 'Error Identified', email_to, email_from, from)
|
45
|
+
send_slack_message(event_message, slack_channel)
|
44
46
|
on_screen_message(event_level, event_message)
|
45
47
|
when 'NOTE'
|
46
48
|
on_screen_message(event_level, event_message)
|
@@ -49,7 +51,7 @@ class NotificationClass
|
|
49
51
|
raise("Oopps! Something went wrong trying to notify. Error:<#{err}>")
|
50
52
|
end
|
51
53
|
|
52
|
-
def send_email(message, subject,
|
54
|
+
def send_email(message, subject, to_email = nil, from_email, from)
|
53
55
|
# Look in the current object for a VM
|
54
56
|
vm = $evm.object['vm']
|
55
57
|
if vm.nil?
|
@@ -93,7 +95,7 @@ class NotificationClass
|
|
93
95
|
body = 'Hello, '
|
94
96
|
body += message
|
95
97
|
body += 'Thank you,'
|
96
|
-
body +=
|
98
|
+
body += from
|
97
99
|
|
98
100
|
$evm.execute(:send_email, to, from_email, subject, body)
|
99
101
|
rescue => err
|
@@ -101,11 +103,24 @@ class NotificationClass
|
|
101
103
|
end
|
102
104
|
|
103
105
|
# TBD - awaiting webhook setup
|
104
|
-
def send_slack_message(message,
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
106
|
+
def send_slack_message(message, channel, token = nil)
|
107
|
+
# https://github.com/slack-ruby/slack-ruby-client - install required
|
108
|
+
if token.nil?
|
109
|
+
Slack.configure do |config|
|
110
|
+
config.token = ENV['SLACK_API_TOKEN']
|
111
|
+
raise 'Missing ENV[SLACK_API_TOKEN]!' unless config.token
|
112
|
+
end
|
113
|
+
else
|
114
|
+
config.token = token
|
115
|
+
end
|
116
|
+
|
117
|
+
begin
|
118
|
+
client = Slack::Web::Client.new
|
119
|
+
client.auth_test
|
120
|
+
client.chat_postMessage(channel: channel, text: message, as_user: true)
|
121
|
+
rescue => err
|
122
|
+
raise("Oopps! Something went wrong trying to send a Slack notification. Error:<#{err}>")
|
123
|
+
end
|
109
124
|
end
|
110
125
|
|
111
126
|
def on_screen_message(level, message, subject = nil)
|
data/lib/miq_utilities/sql.rb
CHANGED
@@ -9,9 +9,9 @@
|
|
9
9
|
# user - String : Username
|
10
10
|
# password - String : Password
|
11
11
|
# host - String : The host name to connect to
|
12
|
+
# port - String : The port to use, default (nil) 1433
|
12
13
|
# database - String : The database name to connect to
|
13
14
|
# azure - Boolean : Set to true when connecting to Azure
|
14
|
-
# port - String : The port to use, default (nil) 1433
|
15
15
|
#
|
16
16
|
# get_client - returns the client to utilise the tiny_tds functionality
|
17
17
|
#
|
@@ -25,7 +25,7 @@ require 'tiny_tds'
|
|
25
25
|
# Sql class
|
26
26
|
class SqlClass
|
27
27
|
# Initialize Class
|
28
|
-
def initialize(user, password, host,
|
28
|
+
def initialize(user, password, host, port = nil, database, azure)
|
29
29
|
# Logging
|
30
30
|
@logger = LoggingClass.new('SQL')
|
31
31
|
|
data/lib/miq_utilities/vmware.rb
CHANGED
@@ -12,12 +12,10 @@
|
|
12
12
|
# user - String : The user to connect with
|
13
13
|
# password - String : The users password
|
14
14
|
#
|
15
|
-
#
|
15
|
+
# get_data_center - returns the datacenter based on the connection and datacenter
|
16
|
+
# vsphereconn - connection : The return of "get_vsphere_connection"
|
17
|
+
# dcname - String : The name of the datacenter
|
16
18
|
#
|
17
|
-
#
|
18
|
-
# find_vm - Get the VM details from vmware
|
19
|
-
# datacenter - String : datacenter name returned from retrieve_data_center
|
20
|
-
# vmname - String : The vmname
|
21
19
|
require 'rbvmomi'
|
22
20
|
|
23
21
|
# vmware wrapper class
|
@@ -36,10 +34,10 @@ class VmwareClass
|
|
36
34
|
raise("No connection established!\nUse the \"get_vsphere_connection\" method to connect.") if @connection.nil?
|
37
35
|
end
|
38
36
|
|
39
|
-
def find_vm(
|
37
|
+
def find_vm(dc, name)
|
40
38
|
vm = {}
|
41
|
-
|
42
|
-
vm[:instance] = datastore.vm.find { |x| x.name ==
|
39
|
+
dc.datastoreFolder.childEntity.collect do |datastore|
|
40
|
+
vm[:instance] = datastore.vm.find { |x| x.name == name }
|
43
41
|
if vm[:instance]
|
44
42
|
vm[:datastore] = datastore.name
|
45
43
|
break
|
@@ -48,10 +46,10 @@ class VmwareClass
|
|
48
46
|
vm
|
49
47
|
end
|
50
48
|
|
51
|
-
def upg_tools(
|
52
|
-
instopts = if
|
49
|
+
def upg_tools(vm)
|
50
|
+
instopts = if vm[:instance][:guest][:guestFamily] == 'windowsGuest'
|
53
51
|
'/s /v "/qn REBOOT=ReallySuppress"'
|
54
52
|
end
|
55
|
-
|
53
|
+
vm[:instance].UpgradeTools_Task(installerOptions: instopts).wait_for_completion
|
56
54
|
end
|
57
55
|
end
|
data/lib/miq_utilities.rb
CHANGED
data/miq_utilities.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miq_utilities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.2
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron McCatty
|
@@ -108,20 +108,6 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '2.0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: slack-notifier
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '2.3'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '2.3'
|
125
111
|
description: " This Gem was written to hold utilities commonly used within ManageIQ/Cloudforms. "
|
126
112
|
email:
|
127
113
|
- aaronmccatty@hotmail.co.uk
|
@@ -130,7 +116,6 @@ extensions: []
|
|
130
116
|
extra_rdoc_files: []
|
131
117
|
files:
|
132
118
|
- ".gitignore"
|
133
|
-
- ".rubocop.yml"
|
134
119
|
- Gemfile
|
135
120
|
- Gemfile.lock
|
136
121
|
- LICENSE.txt
|
@@ -162,9 +147,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
147
|
version: '0'
|
163
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
149
|
requirements:
|
165
|
-
- - "
|
150
|
+
- - ">="
|
166
151
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
152
|
+
version: '0'
|
168
153
|
requirements: []
|
169
154
|
rubyforge_project:
|
170
155
|
rubygems_version: 2.7.6
|
data/.rubocop.yml
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
TargetRubyVersion: 2.4
|
3
|
-
Exclude:
|
4
|
-
- vendor/**/*
|
5
|
-
- Guardfile
|
6
|
-
|
7
|
-
ClassLength:
|
8
|
-
Enabled: false
|
9
|
-
CyclomaticComplexity:
|
10
|
-
Enabled: false
|
11
|
-
GlobalVars:
|
12
|
-
AllowedVariables:
|
13
|
-
- $evm
|
14
|
-
LineLength:
|
15
|
-
Enabled: false
|
16
|
-
MethodLength:
|
17
|
-
Enabled: false
|
18
|
-
Metrics/AbcSize:
|
19
|
-
Enabled: false
|
20
|
-
Metrics/LineLength:
|
21
|
-
Enabled: false
|
22
|
-
Metrics/ModuleLength:
|
23
|
-
Enabled: false
|
24
|
-
Metrics/PerceivedComplexity:
|
25
|
-
Enabled: false
|
26
|
-
Metrics/ParameterLists:
|
27
|
-
Enabled: false
|
28
|
-
Style/RescueStandardError:
|
29
|
-
Enabled: false
|