How to add/setup a group of servers Maintenance schedule
search cancel

How to add/setup a group of servers Maintenance schedule

book

Article ID: 115699

calendar_today

Updated On:

Products

DX Unified Infrastructure Management (Nimsoft / UIM)

Issue/Introduction

UIM customers may need to place servers into maintenance mode en masse. There could be one or more options leveraged to accomplish this task, e.g., NAS LUA script that reads a list of servers to place in maintenance, from a file, probe utility commands/script, or REST API calls.

Environment

- UIM 8.5.1 or higher

Resolution

-- NAS script to set all robots from a given file into maintenance mode
-- Just put a maintenance.txt file in the nas installation directory (probes/service/nas) with a robot address on each line.
-- /domain/hub/robot
-- /domain/hub/robot2

local duration = 60 --edit per hub - note this is in seconds
local myBuffer ="NMS Scheduled Maintenance Script: \n"
local fts = timestamp.format (timestamp.now(),"%d_%b_%Y_%H_%M_%S")
local ts = timestamp.format (timestamp.now(),"%c")

-- see if the file exists
function file_exists(file)
local f = io.open(file, "rb")
if f then f:close() end
return f ~= nil
end

-- get all lines from a file, returns an empty
-- list/table if the file does not exist
function lines_from(file)
if not file_exists(file) then return {} end
lines = {}
for line in io.lines(file) do
lines[#lines + 1] = line
end
return lines
end

-- tests the functions above
local file = "maintenance.txt"
local lines = lines_from(file)

myBuffer = myBuffer..ts.."\n"
myBuffer = myBuffer.."Maintenance Period Duration: "..tostring(duration).." seconds\n"

-- print all line numbers and their contents
for _,device in pairs(lines) do
local myArgs = pds.create ()
pds.putString (myArgs, "until", "")
pds.putInt (myArgs, "for", duration)
pds.putString(myArgs, "comment", "NMS Scheduled Maintenance Script")
local rc = nimbus.request(device.."/controller","maint_until", myArgs)
pds.delete(myArgs)
myBuffer = myBuffer..device..": In Maintenance\n"
end

print (myBuffer)

Additional Information

Probe Utility commands

You can also run the pu command from the cmd line to see all of the available probe commands which could be used within a script. Most of them are self-explanatory. The _* commands are only available via checking Expert Mode. Click the cogwheel icon to enable Expert Mode.



C:\Users\Administrator>"C:\Program Files (x86)\Nimsoft\bin\pu.exe" -u administrator -p xxxxxxxx maintenance_mode

Sep 24 15:11:15:309 pu: SSL - init: mode=0, cipher=DEFAULT, context=OK

======================================================

Address: maintenance_mode            Request: _command

======================================================

 

add_computer_systems_to_active_window PDS_PCH          17 scheduleId,csIds

 

probe_up        PDS_PCH           1

 

_restart        PDS_PCH           1

 

get_historical_maintenance_windows PDS_PCH          27 start_time,end_time,dev_id

 

register_maintenance_subscriber PDS_PCH          42 path,version,interval_start,interval_stop

 

new_duration_for_active_window PDS_PCH          20 scheduleId,duration

 

_status         PDS_PCH           9 detail%d

 

remove_computer_systems_from_schedule PDS_PCH          17 scheduleId,csIds

 

get_next_fire_time_for_schedules PDS_PCH           1

 

_stop           PDS_PCH           1

 

delete_schedule PDS_PCH          11 scheduleId

 

add_schedule    PDS_PCH         190 name,description,start_time,duration,account

_id,recurrence_pattern,recurrence_period,recurrence_days_of_the_week,recurrence_

day_of_the_month,recurrence_instance,recurrence_end_time,timezone

 

_debug          PDS_PCH           8 level%d

 

_command        PDS_PCH           9 detail%d

 

unregister_maintenance_subscriber PDS_PCH           5 path

 

stop_maintenance PDS_PCH          17 scheduleId,csIds

 

add_computer_systems_to_schedule PDS_PCH          17 scheduleId,csIds

 

modify_schedule PDS_PCH         202 schedule_id,name,description,start_time,dura

tion,account_id,recurrence_pattern,recurrence_period,recurrence_days_of_the_week

,recurrence_day_of_the_month,recurrence_instance,recurrence_end_time,timezone

 

REST API option:

 

Maintenance Mode via command line 2.6 (rest api) 

https://community.broadcom.com/enterprisesoftware/communities/community-home/librarydocuments/viewdocument?DocumentKey=6b2f7c79-9f03-4365-b307-f734f08bb1f6&CommunityKey=170eb4e5-a593-4af2-ad1d-f7655e31513b&tab=librarydocuments

The attached tool makes it possible to put servers in maintenance mode via a command line tool (via REST API calls)

- list defined calendars

- list servers/devices in maintenance

- add server(s) in existing calendar (with server name)

- define calendar and add servers, with the server name, directly in this new calendar

- put an USM group into maintenance

- list empty calendars

- delete empty calendars

- list expired calendars

- delete expired calendars

- remove servers from maintenance

Doc file is included.

Prereq: this tool uses the webservices_rest probe that must be deployed to your UMP server.

note: Perl source and compiled version are included

Version 2.2:

- add USM group in maintenance

- add regex selection of robots in maintenance

- delete empty and/or expired calendars (only for MSSQL, if anybody with MySQL skills could translate them?)

- tested and compiled on Centos7 & Windows 2012

 

Version 2.4:

- UMP/Rest http or https

- add with(nolock) in sql queries

- correct sql query to select USM groups

 

Version 2.5:

- remove servers from maintenance (in regex format)

- a server that has multiple entries in the discovery tab (multiple cs_ids) will have all entries added in maintenance

Attachments

1558695430166000115699_sktwi1f5rjvs16i56.png get_app