MiqUtilities
Installation
$ bundle install
Usage
require 'miq_utilities'
Dependencies
- bundler ~> 1.16
- rake ~> 10.0
- rbvmomi ~> 1.11.3
- tiny_tds ~> 2.1.0
- winrm ~> 2.2.3
- slack-notifier ~> 2.3.2
- rest-client ~> 1.8.0 x64-mingw32
- json ~> 2.0.4
Class Summary
Sql Server (SqlClass)
Used to manage Sql Server queries. This Class utilises the tiny_tds
Ruby Gem (version => 2.1.0).
Class Method Summary
initialize
Create a connection to the client
Parameters
Name | Type | Description
-----------------------------------------------------
user ¦ String ¦ Username
password ¦ String ¦ Password
host ¦ String ¦ The host name to connect to
port ¦ String ¦ The port to use (default 1433)
database ¦ String ¦ The database name to connect to
azure ¦ Boolean ¦ Set to true when connecting to Azure
Method usage
require 'miq_utilities'
sql = SqlClass.new(user, pwrd, host, 1433, db, azure)
get_client
Returns the client to utilise the tiny_tds
functionality
Method usage
client = sql.get_client()
run_sql_query
Runs the specified SQL query against the client the class was instantiated for.
Parameters
Name | Type | Description
--------------------------------------
sql ¦ String ¦ Sql Query to be run
Method usage
query = 'SELECT * FROM tbl_users'
out = sql.run_sql_query(query)
out.each {|user| puts "User Details: #{user}"}
close_connection
closes the connection to the client.
Method usage
sql.close_connection()
Logging (LoggingClass)
This Class is used to handle the logging for ManageIQ and an IDE.
Class Method Summary
initialize
Instantiate the class using the name of the class/method/instantiator.
Parameters
Name | Type | Description
------------------------------------------------------------
name ¦ String ¦ The name of the class/method/instantiator
Method usage
require 'miq_utilities'
logger = LoggingClass.new('example_method_name')
log
Log to the $evm
object i.e. automation.log.
Parameters
Name | Type | Description
----------------------------------------------------------------------
level ¦ String ¦ The level of info/warning/error
message ¦ String ¦ The message to write
logtoscreenonly ¦ Boolean ¦ Only log to screen
notify ¦ Boolean ¦ Process message through the notify process
Method usage
logger.log('info','This is a test message!')
or to process through the Notify class we would use the follwoing:
logger.log('warn', 'This is a warning message', false, true)
NOTE: When "NOTE" is passed as the level, the notify class turns this into an INFO on-screen message.
VmWare (VmwareClass)
This Class is used to handle some of the heavily used VMWare utilities. This Class utilises the rbvmomi
Ruby Gem (version => 1.11.3).
Class Method Summary
initialize
Assign the host name.
Parameters
Name | Type | Description
------------------------------------------------------
hostName ¦ String ¦ The name of the host to be used
Method usage
vmware = VmwareClass.new('MyHostName')
get_vsphere_connection
Returns the client connection.
Parameters
Name | Type | Description
------------------------------------------------------
user ¦ String ¦ The name of the host to be used
password ¦ String ¦ The users password
Method usage
vsphereconn = vmware.get_vsphere_connection(user,pwd)
retrieve_data_centre
Returns the datacentre based on the connection and datacentre name.
Parameters
Name | Type | Description
---------------------------------------------------------------
vsphereconn ¦ object ¦ The return of "get_vsphere_connection"
dcname ¦ String ¦ The name of the datacentre
Method usage
vmdc = vmware.retrieve_data_centre(vsphereconn,'MyDatacentre')
Run Powershell (WinrmClass)
This Class is used to run PowerShell scripts. This Class utilises the winrm
Ruby Gem (version => 2.2.3).
Class Method Summary
initialize
Run a specified PowerShell script.
Parameters
Name | Type | Description
---------------------------------------------------------
ps_script ¦ String ¦ The script to run
host ¦ String ¦ The name of the host to connect to
user ¦ String ¦ The user to connect with
password ¦ String ¦ The users password
Method usage
Name = 'Aaron'
ps1 = "C:\\Powershell\\RunHelloWorld.ps1 -name #{Name}"
winrm_run(ps1,host,user,pwrd)
Notification (NotificationClass)
This Class is used to notify users and log messages accordingly. This Class utilises the slack-notifier Ruby Gem (version => 2.3.2).
Class Method Summary
notify
Initiate the process.
Parameters
Name | Type | Description
---------------------------------------------------------------
event_level ¦ String ¦ info, warn, error
event_message ¦ String ¦ The message to be used
email_to ¦ String ¦ Who to send an email to
email_from ¦ String ¦ Sent from which email address
signature ¦ String ¦ Who the emails from
webhookURL ¦ String ¦ The webhook to be used
Method usage
require 'miq_utilities'
logger = LoggingClass.new('Test NotificationCLass')
logger.log('error', 'An error occured!', false, true)
Levels (event_level)
Level | Action
----------------------------------------------------------------------------------------------
INFO | Logs to the $evm log
WARN | Logs to the $evm log, sends an Email and a Slack message
ERROR | Logs to the $evm log, sends an Email, a Slack message and an on-screen notification
NOTE | Sends an on-screen notification (As an info message)
send_email
Sends an email to the specified user using the $evm.execute MIQ method
Parameters
Name | Type | Description
---------------------------------------------
message ¦ String ¦ The message to be used
subject ¦ String ¦ The Subject to be used
to_email ¦ String ¦ Recipient email
from_email ¦ String ¦ Sender email
signature ¦ String ¦ Who the emails from
Method usage
require 'miq_utilities'
notify = NotificationCLass.new
notify.send_email('This is an Email.', 'Test', '[email protected]', '[email protected]', 'DevOps')
send_slack_message
Sends a Slcak message
Parameters
Name | Type | Description
--------------------------------------------------------------
message ¦ String ¦ The message to be used
webhookURL ¦ String ¦ The webhook to be used
Method usage
require 'miq_utilities'
notify = NotificationCLass.new
notify.send_slack_message('This a Slack post!', 'https://hooks.slack.com/services/token')
on_screen_message
on_screen_message - Sends an on-screen notification
Parameters
Name | Type | Description
--------------------------------------------
level ¦ String v info, warn, error
message ¦ String ¦ The message to be used
subject ¦ String ¦ The Subject to be used
Method usage
require 'miq_utilities'
notify = NotificationCLass.new
notify.on_screen_message('info', 'This is an on-screen notification', 'Test')