Created
March 27, 2017 20:01
-
-
Save trisharia/d1be95abf8f926bed1c82cb938daf242 to your computer and use it in GitHub Desktop.
Start, stop, restart, or uninstall services of an ESXi Host in vCenter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// VMware vRealize Orchestrator action sample | |
// | |
// Get all the security profile service keys (IDs) of an ESXi Host, used as parameters for starting/stopping/restarting a service. | |
// | |
// For vRO 6.0+/vCenter 6.0+ | |
// | |
// Action Inputs: | |
// host - VC:HostSystem - ESXi Host from which to retrieve services | |
// logging - boolean - If true, write verbosely to the vRO system logs | |
// | |
// Return type: Array/string - The service keys of a VC:HostSystem | |
var hostServiceSystem = host.configManager.serviceSystem; | |
hostServiceSystem.refreshServices(); | |
var services = hostServiceSystem.serviceInfo.service; | |
var serviceKeys = new Array(); | |
for each (svc in services){ | |
if(logging == true){ | |
System.log("Key: "+svc.key+" -- Label: "+svc.label+" -- Policy: "+svc.policy); | |
} | |
serviceKeys.push(svc.key); | |
} | |
return serviceKeys; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// VMware vRealize Orchestrator action sample | |
// | |
// Start, stop, restart, or uninstall security profile services of an ESXi Host. | |
// Optionally, specify whether a service policy is to start automatically when ports are open (automatic), | |
// start with server (on), or start manually (off). | |
// WARNING - no checks to see if service is required when attempting to uninstall. | |
// | |
// For vRO 6.0+/vCenter 5.5+ | |
// | |
// Action Inputs: | |
// host - VC:HostSystem - ESXi Host to update | |
// serviceName - string - Key of the ESXi service to update (can get valid keys with getVcHostSystemServiceKeys.js) | |
// serviceAction - string - Can be: start, stop, restart, uninstall | |
// policyAction - string - Can be: on, off, automatic | |
// | |
// Return type: void | |
// Get the hostServiceSystem object from the host: | |
var hostServiceSystem = host.configManager.serviceSystem; | |
// refresh services info to make sure all properties are fresh: | |
hostServiceSystem.refreshServices(); | |
var serviceObj = getService(hostServiceSystem, serviceName); | |
performServiceAction(hostServiceSystem, serviceObj, serviceAction); | |
performPolicyAction(hostServiceSystem, serviceObj, policyAction); | |
// Get Service: | |
function getService(hostServiceSystem, serviceName) { | |
var serviceObj = null; | |
var services = hostServiceSystem.serviceInfo.service; | |
for each (svc in services) { | |
if (svc.key === serviceName) { | |
System.log("Service Found! "+svc.label); | |
return svc; | |
} | |
} | |
// Throw exception if failed to get service: | |
throw "Unable to locate service '" + serviceName + "' on host: " + host.name; | |
} | |
// Perform service action: | |
function performServiceAction(hostServiceSystem, serviceObj, serviceAction) { | |
switch (serviceAction) { | |
case "start": | |
// before trying to start, make sure running is not true | |
if (serviceObj.running != true){ | |
hostServiceSystem.startService(serviceObj.key); | |
} | |
break; | |
case "stop": | |
if (serviceObj.running == true){ | |
hostServiceSystem.stopService(serviceObj.key); | |
} | |
break; | |
case "restart": | |
hostServiceSystem.restartService(serviceObj.key); | |
break; | |
case "uninstall": | |
try { | |
hostServiceSystem.uninstallService(serviceObj.key); | |
} catch(err) { | |
throw "Error uninstalling service " + serviceObj.key + " (" + err + ")"; | |
} | |
break; | |
default: | |
System.warn("Invalid service action selected"); | |
} | |
} | |
function performPolicyAction(hostServiceSystem, serviceObj, policyAction) { | |
if (policyAction != null && policyAction != "" && policyAction != "No Change") { | |
// only valid policy actions are: on, off, automatic | |
try { | |
hostServiceSystem.updateServicePolicy(serviceObj.key,policyAction); | |
} catch(err) { | |
throw "Error updating service policy " + serviceObj.key + " (" + err + ")"; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment