Contents

Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide PDF

1 of 118
1 of 118

Summary of Content for Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide PDF

OpenManage Integration for VMware vCenter Version 5.3 API Guide

March 2021 Rev. A00

Notes, cautions, and warnings

NOTE: A NOTE indicates important information that helps you make better use of your product.

CAUTION: A CAUTION indicates either potential damage to hardware or loss of data and tells you how to avoid

the problem.

WARNING: A WARNING indicates a potential for property damage, personal injury, or death.

2010 - 2021 Dell Inc. or its subsidiaries. All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries. Other trademarks may be trademarks of their respective owners.

Chapter 1: Overview...................................................................................................................... 6 Access OMIVV API documentation on Dell Technologies API marketplace..........................................................6 What is new in this release................................................................................................................................................6

Chapter 2: Get started.................................................................................................................. 9 Prerequisites......................................................................................................................................................................... 9 Base URI................................................................................................................................................................................ 9 Request headers.................................................................................................................................................................. 9 Rate limit................................................................................................................................................................................9

Chapter 3: Security...................................................................................................................... 11 OMIVV authentication....................................................................................................................................................... 11

Bearer Token..................................................................................................................................................................11 vCenter authorization....................................................................................................................................................... 12

Validate session token.................................................................................................................................................12 Validate vCenter user credentials ........................................................................................................................... 12

Chapter 4: Use cases................................................................................................................... 13 Navigate vCenter heirachy.............................................................................................................................................. 13 Retrieve firmware repository data................................................................................................................................ 24 Update firmware using catalogs.................................................................................................................................... 27 Retrieve OMIVV license information............................................................................................................................ 29 Compute server drift from baseline...............................................................................................................................31 Monitor component health in OMIVV.......................................................................................................................... 35

Chapter 5: Session management..................................................................................................37 Start an OMIVV session...................................................................................................................................................37 End an OMIVV session.....................................................................................................................................................38

Chapter 6: License management..................................................................................................39 Get list of vCenter and host license ............................................................................................................................39 Get vCenter and hosts license details......................................................................................................................... 40 Upload license to OMIVV................................................................................................................................................ 40

Chapter 7: Console management................................................................................................. 42 Get list of registered vCenters...................................................................................................................................... 42 Get list of all hosts in vCenter........................................................................................................................................43 Get host details..................................................................................................................................................................43 Get vCenter tree view of data center..........................................................................................................................44 Set vCenter context.........................................................................................................................................................45 Get cluster details............................................................................................................................................................. 46 Get cluster health..............................................................................................................................................................47

Chapter 8: Repository profile management................................................................................. 49

Contents

Contents 3

Get list of repository profiles..........................................................................................................................................49 Get repository profile details..........................................................................................................................................50 Create a new repository profile......................................................................................................................................51 Modify or edit repository profile....................................................................................................................................52

Chapter 9: Cluster profile management....................................................................................... 54 Get list of cluster profiles................................................................................................................................................54 Get details of cluster profiles......................................................................................................................................... 54

Chapter 10: Firmware repository inventory management............................................................. 57 Get firmware repository inventory details...................................................................................................................57

Chapter 11: Firmware inventory management.............................................................................. 59 Create host level firmware inventory report.............................................................................................................. 59 Create cluster level firmware inventory report..........................................................................................................60

Chapter 12: Firmware update management.................................................................................. 63 Create host level firmware update jobs.......................................................................................................................63 Create cluster level firmware update jobs.................................................................................................................. 64 Get list of firmware update jobs (Host and Cluster)................................................................................................65 Get firmware update job details (Host or Cluster)................................................................................................... 66 Delete firmware update job.............................................................................................................................................67 Cancel firmware update job............................................................................................................................................68

Chapter 13: System profile management..................................................................................... 70 Get list of system profiles............................................................................................................................................... 70 Get system profile details................................................................................................................................................70

Chapter 14: Drift management.....................................................................................................72 Get all drift detection job.................................................................................................................................................72 Get specified drift detection job....................................................................................................................................73 Get drift report for all clusters....................................................................................................................................... 74 Get drift report for specific cluster.............................................................................................................................. 75 Get firmware drift report ............................................................................................................................................... 76 Get driver drift report...................................................................................................................................................... 78 Get configuration drift report ....................................................................................................................................... 79 Gets host details on specified drift detection jobs.................................................................................................... 81

Chapter 15: Get subsystem health report (OMIVV Host Health)...................................................82

Chapter 16: Host management.....................................................................................................84 Get the host overview..................................................................................................................................................... 84 Get host firmware inventory.......................................................................................................................................... 85 Get host warranty.............................................................................................................................................................86 Get alarms and events..................................................................................................................................................... 87 Set alarms and events......................................................................................................................................................88 Get host power supply information.............................................................................................................................. 88 Get host memory information........................................................................................................................................ 89 Get host processors information...................................................................................................................................90

4 Contents

Appendix A: Request body........................................................................................................... 92

Appendix B: Response body.........................................................................................................96

Appendix C: OMIVV-Specific error codes....................................................................................112

Contents 5

Overview OpenManage Integration for VMware vCenter (OMIVV) provides RESTful APIs to enable automation. The support for RESTful API is available from version 5.2.0. The APIs are compliant with OpenAPI Specification (OAS) 3.0.0.

This document is intended for a vCenter Administrator. It is assumed that the reader is familiar with REST APIs and programmatic interaction with REST APIs. Any programming language can be used to create applications that interface with these APIs. You can run the APIs using an API Client such as Curl or Postman.

OMIVV sample API scripts are available at https://github.com/dell/omivv.

Topics:

Access OMIVV API documentation on Dell Technologies API marketplace What is new in this release

Access OMIVV API documentation on Dell Technologies API marketplace

About this task

The API documentation for OMIVV 5.2 and later versions is now available on the Dell Technologies API Marketplace. To access the OMIVV API documentation:

Steps

1. Go to https://api-marketplace.dell.com/.

2. Click Explore API and then click APIs.

3. Under Filter by Categories, select Infrastructure.

4. Under Filter By API Access, select Public.

5. Under Filter By API Type, select Catalog.

The OMIVV API is displayed.

6. Click View More.

What is new in this release Table 1. List of new and enhanced APIs

Summary of new APIs APIs

License management GET to retrieve list of all licenses uploaded in OMIVV

and details by license ID POST for uploading new licenses (in XML file format)

to OMIVV

(GET)/Services/LicenseService/Licenses Gets list of all licenses uploaded in OMIVV

(GET)/Services/LicenseService/Licenses/ {id}Gets license details using license ID

(POST)/Services/LicenseService/Licenses Uploads new license in XML file format to OMIVV

Console management GET for all the hosts in a given vCenter and the details

of a particular host

(GET)/Services/ConsoleService/Consoles/ {id}/Hosts?serviceTags={service Tag1}& serviceTags={serviceTag2}Gets the list of all the hosts registered in a vCenter for the given OMIVV IP.

1

6 Overview

Table 1. List of new and enhanced APIs (continued)

Summary of new APIs APIs

(GET)/Services/ConsoleService/Consoles/ {id}/Hosts/{hostid}Gets details of a particular host in a vCenter.

Repository Profile Management POST for creating a new repository profile PUT for modifying existing repository profiles

(POST)/Services/PluginProfileService/ RepositoryProfilesCreates a new repository profile

(PUT)/Services/PluginProfileService/ RepositoryProfilesModifies repository profile

Cluster Profile Management Enhancement to existing GET, added information about

the drift job details of a given cluster profile

(GET)/Services/PluginProfileService/ ClusterProfiles/{id}Gets the details of a given cluster profile. Added information about the drift job details of a given cluster profile.

Firmware Update Management DELETE to remove a specific successful, failed, or

cancelled firmware update job PUT to cancel a host firmware update job

(DELETE)/Services/UpdateService/Jobs/{id} Deletes specific firmware update job

(PUT)/Services/UpdateService/Jobs/{id}/ CancelCancels host firmware update job

System Profile Management Enhancement to existing GET, added reference server

information to the response as well as ability to get details of specific profile ID

(GET)/Services/PluginProfileService/ SystemProfilesGets the list of all system profiles that are created in OMIVV UI. Added reference server information to the response.

(GET)/Services/PluginProfileService/ SystemProfilesGets the details of the given system profile ID. Added more details about reference server.

Drift Management GET for all and specific drift detection jobs, including

host details within a specific job, a report for all non-compliant hosts, or specific firmware, driver, or configuration only reports

(GET)/Services/DriftDetectionService/ DriftReport/{id}/DriverDriftDetailsGets the driver drift details of a specific vSAN cluster ID.

(GET)/Services/DriftDetectionService/ DriftReport/{id}/ConfigurationDriftDetails Gets the configuration drift (system profile drift) details of a specific cluster ID. Ensure that system profile is created using OMIVV UI.

(GET)/Services/DriftDetectionService/ DriftReportGets the drift report of all the clusters that are non-compliant.

(GET)/Services/DriftDetectionService/Jobs/ {id}Gets specified drift detection job.

(GET)/Services/DriftDetectionService/Jobs Gets all drift detection jobs.

(GET)/Services/DriftDetectionService/Jobs/ {id}/DetailsGets host details on specified drift detection jobs

(GET)/Services/DriftDetectionService/ DriftReport/{cluster-id}Gets the drift report of a specific cluster ID. The drift details includes firmware, driver, and configuration details of the given cluster ID.

Subsystem Health report GET to report on the health of iDRAC tracked

subsystems, such as fans, power supply, and memory.

(GET)/Services/InventoryService/Hosts/ {id}/SubSystemHealthGets the health of the server components such as Fan, Power Supply, and Memory.

Host Management GET for the host overview, firmware inventory details,

warranty information, power supplies, host memory, host processors.

(GET)/Services/ConsoleService/ AlarmsAndEventsGets alarms and events details

(GET)/Services/ConsoleService/ AlarmsAndEventsSets alarms and events

Overview 7

Table 1. List of new and enhanced APIs (continued)

Summary of new APIs APIs

GET and PUT to see and enable and disable alarms and events, including new Memory Page Retire events

(GET)/Services/InventoryService/Hosts/ {id}/HostOverviewGets the host overview

(GET)/Services/InventoryService/Hosts/ {id}/FirmwareInventoryGets the host firmware inventory details

(GET)/Services/InventoryService/Hosts/ {id}/WarrantyGets the host warranty details

(GET)/Services/InventoryService/Hosts/ {id}/Hardware/PowerSuppliesGets the host power supplies

(GET)/Services/InventoryService/Hosts/ {id}/Hardware/ProcessorsGets the host processors

(GET)/Services/InventoryService/Hosts/ {id}/Hardware/MemoriesGets the information about the host memories.

8 Overview

Get started

Topics:

Prerequisites Base URI Request headers Rate limit

Prerequisites Ensure that: User profile used to access API has administrator privileges vCenter profile has required Dell privileges. For more information, see the Required privileges for non-administrator

users topic in User's Guide. Host Credential Profile, Cluster Profile, and System Profile are created in OMIVV User Interface (UI) and use the profiles

as required. For more information, see the Create Host Credential Profile, Create Cluster Profile, and Create System Profile topics in User's Guide.

The hosts are management-complaint. For more information, see the Management Compliance topic in User's Guide.

Base URI The base URI for any OMIVV RESTful API request must be in the following format:

https://{OMIVV Address}/Spectre/api/rest/v1/Services/ OMIVV Address: IPv4 address or Fully Qualified Domain Name (FQDN).

NOTE: All the URIs and query parameters are case-sensitive.

Request headers The request header represents headers in the client HTTPS request that are used to communicate client preferences to the service end-point. The bearer token is the request header.

Rate limit At a given time, only three unique client IPs can be active and can create total ten sessions.

OMIVV supports 100 requests per minute. If there are multiple sessions, make sure that each session has maximum 10 API requests per minute in parallel. However, if there is a single session, parallel API requests can go up to 100 per minute.

If there are more than ten sessions, Request limit per minute exceeded message is sent to the API Client.

Each OMIVV session is correspond to one vCenter. Ensure that you sequence the communication if you have more than ten vCenters registered in OMIVV because you can start only 10 sessions at a time.

The total number of failure login attempts that is allowed is six (count includes failed login attempts in administration console or REST API or use of invalid token for REST API access). After six failed login attempts, the account gets locked.

The account lockout duration is one minute.

You cannot start a new session when the account is locked. But, current active session remains active.

2

Get started 9

During the lockout period, any REST API call will not work except logoff API. An appropriate error message is displayed.

10 Get started

Security The authentication and authorization flows are prerequisites to any API invocation. The request is forwarded to the CXF server defined for the REST API after the invocation.

If there is authorization and authentication failure, an appropriate error code with message is sent to the API client.

On success, the request is forwarded to the appropriate REST service endpoint (API) defined on the CXF servlet.

Topics:

OMIVV authentication vCenter authorization

OMIVV authentication OMIVV web server handles incoming web requests and routes them to the REST endpoints.

Authentication server performs the following: Accepts login requests and provide the bearer token. This token is generated using the JWT scheme that includes a

header, body, and footer. Accepts log out requests which closes the session

API server: Service all defined REST endpoints except endpoints that are related to authentication.

API clients establish a session with the API server using the endpoint: /Services/AuthenticationService/login.

OMIVV user credentials are required to authenticate a client of the RESTful API. Only user profile with admin privilege is allowed to log in as an API user. Other user profiles with privileges like Read only cannot access the API.

Sample code to create an OMIVV session:

```json def login_with_OMIVV (omivvIP,username,domain, password): baseurl ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/AuthenticationService/ login" postBodyData={"apiUserCredential" : {"username":username,"domain" : domain,"password" : password}} jsonReponse = requests.post(baseurl, json=postBodyData, verify=False) if(jsonReponse.status_code == 200): bearerToken = jsonReponse['accessToken'] return bearerToken else: print("Login failed") ```

omivvIP can be a valid OMIVV IP or FQDN.

Bearer Token

Each session that is created using an authentication service contains a bearer token that is generated using the JWT scheme.

Expiration period for bearer token is 60 minutes. If you are using the token after 60 minutes, Token is already expired message is sent to the API client.

The account lockout duration is one minute. If an account lockout happens after creating the Bearer token, bearer token cannot be used during lockout duration (one minute). After an account lockout duration, same Bearer token can be used until it expires.

3

Security 11

vCenter authorization Authorization flow validates the following:

Session token vCenter user credentials for the required permissions to run the API

Validate session token

OMIVV validates the token that is received from the API client against the following:

Tampering Session validity

Validate vCenter user credentials

APIs are authorized against the vCenter user credentials, when required. Set an operational context which indicates the registered vCenter and the associated user credentials.

An operation context is required to ensure the permissions available to the user. You can set an operation context by invoking the corresponding API.

This context is unique to an OMIVV user session, and only a single context can be active for a session at a time. The different OMIVV user sessions can invoke APIs using a different vCenter context.

The required vCenter user privileges for all other APIs are verified when you trigger the API.

The following is the sample code to set the operational context:

```json def setOperationalContext(omivvIP, bearerToken, vcenterId, vcenterUsername,vCenterDomain, vCenterPassword): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData={"consoleId" : vcenterId, "consoleUserCredential": {"username":vcenterUsername,"domain" : vCenterDomain,"password" : vCenterPassword}} head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 204): return pass; else: print("setOperationalContext failed.") ```

The vCenter user privilege is not required to access the following APIs:

/Services/AuthenticationService/login /Services/AuthenticationService/logoff /Services/ConsoleService/OperationalContext /Services/ConsoleService/Consoles /Services/ConsoleService/Consoles/{id}

12 Security

Use cases

Topics:

Navigate vCenter heirachy Retrieve firmware repository data Update firmware using catalogs Retrieve OMIVV license information Compute server drift from baseline Monitor component health in OMIVV

Navigate vCenter heirachy

Prerequisites

Ensure that you have verified all the pre-requisites mentioned in the Prerequisites on page 9.

About this task

The vSphere Client lists all the registered vCenters, hosts, clusters, and datacenters in a hierarchical manner.

You can use OMIVV APIs to retrieve the required details of host, cluster, vCenter, and datacenter listed in the vSphere Client.

This topic describes how you can:

Retrieve host ID using Service Tag Retrieve cluster ID using cluster name Retrieve vCenter ID using vCenter IP Retrive cluster ID for a given host ID Get list of registered vCenters Get host details Retrieve host ID using Host IP Retrieve host details using host ID

Steps

Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTful API.

For more information, see OMIVV authentication on page 11.

Retrieve host ID using Service Tag

Sample code to retrieve the host ID using Service Tag:

```json def get_host_id_by_service_tag(bearer_token,ip_address, vcenter_ip, serviec_tag, vc_username, vc_domain, vc_password): """Authenticate with OMIVV and enumerate reports."""

try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array:

4

Use cases 13

if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

vcenter_tree_response = get_vcenter_tree_from_omivv(ip_address,vcenter_id, bearer_token) flag = True; cluster_list = [] if vcenter_tree_response is not None: vcenter_datacenters = json.loads(vcenter_tree_response) vcenter_datacenters_List = vcenter_datacenters['datacenters'] for vcenter_datacenter in vcenter_datacenters_List:

hosts_list = vcenter_datacenter["hosts"] if hosts_list is not None: for host in hosts_list: if host['serviceTag'] == serviec_tag: host_response = json.dumps(host, indent=4, sort_keys=True) print(host_response['id']) flag = False cluster_array = vcenter_datacenter['clusters'] for cluster in cluster_array: href = cluster['href'] cluster_list.append(href)

if flag: """set operational context""" set_operational_context(ip_address,vcenter_id, bearer_token, vc_username, vc_domain, vc_password)

""" Found the host inside the clusters""" cluster_flag = False for cluster_href in cluster_list: """Get cluster details""" cluster_details = get_cluster_details(cluster_href, bearer_token) cluster_json_response = cluster_details.json() hosts_list = cluster_json_response['hosts'] for host in hosts_list: if host['serviceTag'] == serviec_tag: host_response = json.dumps(host, indent=4, sort_keys=True) print(host_response) cluster_flag = True break if cluster_flag: break;

if cluster_flag == False: print("Host with serice tag " + serviec_tag + " not found.") except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed")

def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_id, session_token): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/" + vcenter_id head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

14 Use cases

def get_cluster_details(url, session_token): head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): return response else: print(response.status_code) print("Get cluster details failed")

def set_operational_context(omivv_ip, vcenter_id, session_token, vcenter_username, vcenter_domain, vcenter_password): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData = {"consoleId": vcenter_id, "consoleUserCredential": {"username": vcenter_username, "domain": vcenter_domain, "password": vcenter_password}} head = {'Authorization': 'Bearer ' + session_token} jsonReponse = requests.post(base_url, json=postBodyData, verify=False, headers=head) if (jsonReponse.status_code != 204): print("setOperationalContext failed.") ```

Retrieve cluster ID using cluster name

Sample code to retrieve the cluster ID:

```json def get_cluster_id_by_cluster_name(bearer_token, ip_address, vcenter_ip, cluster_name): """Authenticate with OMIVV and enumerate reports.""" try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

vcenter_tree_response = get_vcenter_tree_from_omivv(ip_address,vcenter_id, bearer_token) found = False if vcenter_tree_response is not None: vcenter_datacenters = json.loads(vcenter_tree_response) vcenter_datacenters_List = vcenter_datacenters['datacenters'] for vcenter_datacenter in vcenter_datacenters_List: cluster_list = vcenter_datacenter["clusters"] if cluster_list is not None: for cluster in cluster_list: if cluster['name'] == cluster_name: print("Cluster name: " + cluster_name + ", Cluster id: " + cluster['id']) found = True break if found: break if found == False: print("Cluster " + cluster_name + " not found.") """ Log out from OMIVV """ logout(ip_address, bearer_token) except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0]) def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200):

Use cases 15

json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed") def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_id, session_token): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/" + vcenter_id head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

```

Retrieve vCenter ID using vCenter IP

Sample code retrieve the vCenter ID using the vCenter IP:

```json def get_vcenter_id(bearer_token, ip_address, vcenter_ip): """Authenticate with OMIVV and enumerate reports."""

try: bearer_token = get_bearer_token(ip_address, user_name, password) """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): print(vc['id']) break

except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed")

```

Retrieve cluster ID for a given host ID

Sample code to retrive the cluster ID using host ID:

```json def get_cluster_id_by_host_id(bearer_token, ip_address, vcenter_ip, host_id, vc_username, vc_domain, vc_password): """Authenticate with OMIVV and enumerate reports."""

try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else:

16 Use cases

vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

vcenter_tree_response = get_vcenter_tree_from_omivv(ip_address,vcenter_id, bearer_token) flag = True; cluster_list = [] dacenter_name = ""; if vcenter_tree_response is not None: vcenter_datacenters = json.loads(vcenter_tree_response) vcenter_datacenters_List = vcenter_datacenters['datacenters'] for vcenter_datacenter in vcenter_datacenters_List:

hosts_list = vcenter_datacenter["hosts"] if hosts_list is not None: for host in hosts_list: if host['id'] == host_id: datacenter_name = vcenter_datacenter['name'] flag = False cluster_array = vcenter_datacenter['clusters'] for cluster in cluster_array: href = cluster['href'] cluster_list.append(href)

if flag: """set operational context""" set_operational_context(ip_address,vcenter_id, bearer_token, vc_username, vc_domain, vc_password)

""" Found the host inside the clusters""" cluster_flag = False cluster_id = ""; for cluster_href in cluster_list: """Get cluster details""" cluster_details = get_cluster_details(cluster_href, bearer_token) cluster_json_response = cluster_details.json() hosts_list = cluster_json_response['hosts'] for host in hosts_list: if host['id'] == host_id: host_response = json.dumps(host, indent=4, sort_keys=True) cluster_flag = True print("Host id: " + host_id + ", cluster id: " + cluster_json_response['id']) break if cluster_flag: break;

if cluster_flag == False: print("Host with host id " + host_id + " not found.") else: print("Host is not inside a cluster. It is inside the datacenter: " + datacenter_name) except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed")

def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_id, session_token): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/" + vcenter_id head = {'Authorization': 'Bearer ' + session_token}

Use cases 17

response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

def get_cluster_details(url, session_token): head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): return response else: print(response.status_code) print("Get cluster details failed")

def set_operational_context(omivv_ip, vcenter_id, session_token, vcenter_username, vcenter_domain, vcenter_password): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData = {"consoleId": vcenter_id, "consoleUserCredential": {"username": vcenter_username, "domain": vcenter_domain, "password": vcenter_password}} head = {'Authorization': 'Bearer ' + session_token} jsonReponse = requests.post(base_url, json=postBodyData, verify=False, headers=head) if (jsonReponse.status_code != 204): print("setOperationalContext failed.")

```

Get list of registered vCenters

Sample code to get the list of registered vCenters:

```json def get_regitered_vcenter(bearer_token,ip_address, vcenter_ip, serviec_tag, vc_username, vc_domain, vc_password): """Authenticate with OMIVV and enumerate reports."""

try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: print(registered_vcenter_list) except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed") ```

Get host details

Sample code to get the host details:

```json def get_host_detail_by_service_tag(bearer_token,ip_address, vcenter_ip, serviec_tag, vc_username, vc_domain, vc_password): """Authenticate with OMIVV and enumerate reports."""

18 Use cases

try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

vcenter_tree_response = get_vcenter_tree_from_omivv(ip_address,vcenter_id, bearer_token) flag = True; cluster_list = [] if vcenter_tree_response is not None: vcenter_datacenters = json.loads(vcenter_tree_response) vcenter_datacenters_List = vcenter_datacenters['datacenters'] for vcenter_datacenter in vcenter_datacenters_List:

hosts_list = vcenter_datacenter["hosts"] if hosts_list is not None: for host in hosts_list: if host['serviceTag'] == serviec_tag: host_response = json.dumps(host, indent=4, sort_keys=True) print(host_response) flag = False cluster_array = vcenter_datacenter['clusters'] for cluster in cluster_array: href = cluster['href'] cluster_list.append(href)

if flag: """set operational context""" set_operational_context(ip_address,vcenter_id, bearer_token, vc_username, vc_domain, vc_password)

""" Found the host inside the clusters""" cluster_flag = False for cluster_href in cluster_list: """Get cluster details""" cluster_details = get_cluster_details(cluster_href, bearer_token) cluster_json_response = cluster_details.json() hosts_list = cluster_json_response['hosts'] for host in hosts_list: if host['serviceTag'] == serviec_tag: host_response = json.dumps(host, indent=4, sort_keys=True) print(host_response) cluster_flag = True break if cluster_flag: break;

if cluster_flag == False: print("Host with serice tag " + serviec_tag + " not found.") except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed")

Use cases 19

def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_id, session_token): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/" + vcenter_id head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

def get_cluster_details(url, session_token): head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): return response else: print(response.status_code) print("Get cluster details failed")

def set_operational_context(omivv_ip, vcenter_id, session_token, vcenter_username, vcenter_domain, vcenter_password): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData = {"consoleId": vcenter_id, "consoleUserCredential": {"username": vcenter_username, "domain": vcenter_domain, "password": vcenter_password}} head = {'Authorization': 'Bearer ' + session_token} jsonReponse = requests.post(base_url, json=postBodyData, verify=False, headers=head) if (jsonReponse.status_code != 204): print("setOperationalContext failed.")

```

Retrieve host ID using Host IP

Sample code to retrieve the host ID:

```json def get_host_id_by_service_tag(bearer_token,ip_address, vcenter_ip, hostIp, vc_username, vc_domain, vc_password): """Authenticate with OMIVV and enumerate reports."""

try: """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

vcenter_tree_response = get_vcenter_tree_from_omivv(ip_address,vcenter_id, bearer_token) flag = True; cluster_list = [] if vcenter_tree_response is not None: vcenter_datacenters = json.loads(vcenter_tree_response) vcenter_datacenters_List = vcenter_datacenters['datacenters'] for vcenter_datacenter in vcenter_datacenters_List:

hosts_list = vcenter_datacenter["hosts"] if hosts_list is not None: for host in hosts_list: if host['hostip'] == hostIp: host_response = json.dumps(host, indent=4, sort_keys=True)

20 Use cases

print(host_response['id']) flag = False cluster_array = vcenter_datacenter['clusters'] for cluster in cluster_array: href = cluster['href'] cluster_list.append(href)

if flag: """set operational context""" set_operational_context(ip_address,vcenter_id, bearer_token, vc_username, vc_domain, vc_password)

""" Found the host inside the clusters""" cluster_flag = False for cluster_href in cluster_list: """Get cluster details""" cluster_details = get_cluster_details(cluster_href, bearer_token) cluster_json_response = cluster_details.json() hosts_list = cluster_json_response['hosts'] for host in hosts_list: if host['hostip'] == hostIp: host_response = json.dumps(host, indent=4, sort_keys=True) print(host_response) cluster_flag = True break if cluster_flag: break;

if cluster_flag == False: print("Host with serice tag " + hostIp + " not found.") except: print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response; else: print("Get registered vCenter list failed")

def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_id, session_token): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/" + vcenter_id head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

def get_cluster_details(url, session_token): head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): return response else: print(response.status_code) print("Get cluster details failed")

def set_operational_context(omivv_ip, vcenter_id, session_token, vcenter_username, vcenter_domain, vcenter_password): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData = {"consoleId": vcenter_id, "consoleUserCredential": {"username": vcenter_username, "domain": vcenter_domain, "password": vcenter_password}}

Use cases 21

head = {'Authorization': 'Bearer ' + session_token} jsonReponse = requests.post(base_url, json=postBodyData, verify=False, headers=head) if (jsonReponse.status_code != 204): print("setOperationalContext failed.") ```

Retrieve host details using host ID

Retrieve the host IP, hostname, management IP, ServiceTag, model, and system ID for a host using host ID.

host IP: Hypervisor IP address hostname: DNS host name of the hypervisor. If hostName is not configured value will be empty. management IP : iDRAC IP address of the server ServiceTag : Service tag of the server model : Dell Technologies server model system ID : Unique ID used to determine the server model. Server model will be same for all servers of a particular model

Sample code to retrieve the host details using host ID:

```json def get_vcenter_tree(ip_address, user_name, password, bearer_token, vcenter_ip, vc_username, vc_domain, vc_password, host_id, details): """Authenticate with OMIVV and enumerate reports.""" try: local_bearer_token=None if(bearer_token == None): local_bearer_token = get_bearer_token(ip_address, user_name, password) else: local_bearer_token = bearer_token """ Get all registered vcenter """ registered_vcenter_list = get_registered_vcenter_list(ip_address, local_bearer_token) if(registered_vcenter_list is None): print("No vcenter is regsitered with this OMIVV") return else: vcenter_id = None; registered_vc_array = json.loads(registered_vcenter_list) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id']

#Set operational Context. set_operational_context(ip_address, vcenter_id, local_bearer_token, vc_username, vc_domain, vc_password) # Get host subsystem heath if(host_id is None): print("Pass the host_id") else: get_host_details(ip_address, local_bearer_token, host_id, details) """ Log out from OMIVV """ if(bearer_token == None): logout(ip_address, local_bearer_token) except: traceback.print_exc() print("get_vcenter_tree: Unexpected error:", sys.exc_info()[0])

def get_bearer_token(ip_address, user_name, password): try: baseurl = "https://" + ip_address + "/Spectre/api/rest/v1/Services/ AuthenticationService/login" postBodyData = {"apiUserCredential": {"username": user_name, "domain": "", "password": password}} response = requests.post(baseurl, json=postBodyData, verify=False) if (response.status_code == 200): json_response = response.json() bearerToken = json_response['accessToken'] return bearerToken else: print("Login to OMIVV failed")

22 Use cases

except: print("get_bearer_token: Unexpected error:", sys.exc_info()[0])

def logout(omivvIP,session_token): try: head = {'Authorization': 'Bearer ' + session_token} url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/ AuthenticationService/logoff" response = requests.post(url, verify=False, headers=head) if (response.status_code != 200): print("Log out failed.") except: print("logout: Unexpected error:", sys.exc_info()[0])

def get_registered_vcenter_list(omivvIP,bearerToken): """Get all registered vcenter with this OMIVV""" url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get registered vCenter list failed")

def set_operational_context(omivv_ip, vcenter_id, session_token, vcenter_username, vcenter_domain, vcenter_password): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData = {"consoleId": vcenter_id, "consoleUserCredential": {"username": vcenter_username, "domain": vcenter_domain, "password": vcenter_password}} head = {'Authorization': 'Bearer ' + session_token} jsonReponse = requests.post(base_url, json=postBodyData, verify=False, headers=head) if (jsonReponse.status_code != 204): print("setOperationalContext failed.")

def get_host_details(omivv_ip, bearer_token, host_id, details_str): """ Get the Host details value""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/InventoryService/ Hosts/" + host_id + "/" + details_str head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) else: print("Get host details failed.")

if __name__ == '__main__': urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

PARSER = argparse.ArgumentParser(description=__doc__, formatter_class=RawTextHelpFormatter) PARSER.add_argument("--ip", "-i", required=True, help="OMIVV Appliance IP") PARSER.add_argument("--user", "-u", required=False, help="Username for OMIVV Appliance", default="admin") PARSER.add_argument("--password", "-p", required=False, default=None, help="Password for OMIVV Appliance") PARSER.add_argument("--bearertoken", "-bt", required=False, default=None, help="bearertoken for OMIVV Appliance") PARSER.add_argument("--vcenterip", "-vcip", required=True, help="IP for vcenter") PARSER.add_argument("--vcusername", "-vcuser", required=True, help="username of vcenter") PARSER.add_argument("--vcdomain", "-vcdomain", required=True, help="domain of the vcenter") PARSER.add_argument("--vcpassword", "-vcpass", required=True, help="password of vcenter") PARSER.add_argument("--hostId", "-hId", required=True,

Use cases 23

help="Id of the host") PARSER.add_argument("--getdetails", "-getd", required=True, help="get details of the host. Accepted value: 1.SubSystemHealth 2.HostOverview, 3.FirmwareInventory, 4.Warranty") ARGS = PARSER.parse_args() if(ARGS.password == None and ARGS.bearertoken == None): print("Pass either the password or the bearer token") get_vcenter_tree(ARGS.ip, ARGS.user, ARGS.password, ARGS.bearertoken, ARGS.vcenterip, ARGS.vcusername, ARGS.vcdomain, ARGS.vcpassword, ARGS.hostId, ARGS.getdetails) ```

Retrieve firmware repository data

Prerequisites

Ensure that you have verified all the pre-requisites mentioned in the Prerequisites on page 9.

About this task

Software components needs to be identified from a desired firmware repository before updating the firmware associated to those components on a cluster or an individual host.

This topic describes various steps to retrieve the software components details of a host.

Steps

1. Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTful API.

For more information, see OMIVV authentication on page 11.

Sample code to start an OMIVV session:

```json def login_with_OMIVV (omivvIP,username,domain, password): baseurl ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ AuthenticationService/login" postBodyData={"apiUserCredential" : {"username":username,"domain" : domain,"password" : password}} jsonReponse = requests.post(baseurl, json=postBodyData, verify=False) if(jsonReponse.status_code == 200): bearerToken = jsonReponse['accessToken'] return bearerToken else: print("Login failed") ```

2. Set the vCenter context. After you log in to OMIVV, select or identify a vCenter on which you want to perform operation. This is done by setting an operational context.

For more information, see OMIVV authentication on page 11.

Before setting the vCenter Context, get the list of registered vCenters.

Sample code to get the list of registered vCenters:

```json def getRegisteredVcenterList(omivvIP,bearerToken): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles" head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if(jsonReponse.status_code == 200): return Response else:

24 Use cases

print("Get registered vCenter list failed")

```

After you get the list of registered vCenters, set the vCenter context.

Sample code to set the vCenter context:

```json def setOperationalContext(omivvIP, bearerToken, vcenterId, vcenterUsername,vCenterDomain, vCenterPassword): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData={"consoleId" : vcenterId, "consoleUserCredential": {"username":vcenterUsername,"domain" : vCenterDomain,"password" : vCenterPassword}} head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 204): return pass; else: print("setOperationalContext failed.") pass ```

3. Identify system ID of the host for retrieving repository inventory. To get the repository inventory for the host, identify the host ID based on the Service Tag of the host, and then retrieve the system ID using host ID.

Invoke the /services/consoleServices/Console/{1d}/Hosts? serviceTags={serviceTag1}&servicetas={serviceTags2} API to get the host ID.

Sample code to get the Host ID:

``` def get_host_id_from_serviceTag(omivvIP, bearerToken, vcenter_ip,host_servicetag): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) print(response) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) registered_vc_array = json.loads(json_response) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id'] url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/ ConsoleService/Consoles/" + vcenter_id + "/Hosts?serviceTags=" + host_servicetag head = {'Authorization': 'Bearer ' + bearerToken} print(url) response = requests.get(url, verify=False, headers=head) print(response) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response else: print("Get host details failed") else: print("Get registered vCenter list failed") ```

Invoke the /services/consoleServices/Consoles/{id}/Hosts/{hostid} to get the system ID.

Sample code to get the system ID:

``` def get_vcenter_tree_from_omivv(omivvIP, bearerToken, vcenter_ip,host_id): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles" head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head)

Use cases 25

print(response) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) registered_vc_array = json.loads(json_response) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id'] if(host_id == None): url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/ ConsoleService/Consoles/" + vcenter_id + "/Hosts" else: url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/ ConsoleService/Consoles/" + vcenter_id + "/Hosts/" + host_id head = {'Authorization': 'Bearer ' + bearerToken} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response else: print("Get host details failed") else: print("Get registered vCenter list failed") ```

4. Get the repository profile ID.

Repository profile contains the firmware and driver repository information. You can use firmwrae repository to update the firmware.

To get the list of repository profile, ensure that you have the following vCenter privilege: Dell.Inventory.Configure Inventory.

Sample code to get the repository profile ID:

```json def get_repo_ID(omivvIP,bearerToken): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles" head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if(jsonReponse.status_code == 200): return jsonReponse.json() else: print("Get getallRepositoryProfile failed") pass ```

5. Get the firmware repository inventory details. From step 3 and 4, we have received the system ID and repository profile ID of the inventory details.

Firmware repository inventory contains the bundle ID and firmware component details. Ensure that you have the following vCenter privilege to get the firmware repository inventory details: Dell.Configuration.Firmware Update

Sample code to get the firmware repository inventory:

```json def postFirmwareInventoryReportforHost(omivvIP, bearerToken, systemID, bundleID, repoID, hostID='',clusterID=''): url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/UpdateService/ FWReport" head = {'Authorization': 'Bearer ' + bearerToken} if(hostID != ''): postBodyData = {"reportType": "HOST", "hostID": hostID, "repoProfileID": repoID, "bundleAssociation" : [{"systemId": systemID, "bundleID": bundleID}]} else: postBodyData = {"reportType": "HOST", "clusterID": clusterID, "repoProfileID": repoID, "bundleAssociation": [{"systemId": systemID, "bundleID": bundleID}]} jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 200): return jsonReponse.json()

26 Use cases

else: print("PostFirmwareInventoryReport API is failed.") ```

Update firmware using catalogs

Prerequisites

Before you create firmware update job, ensure that you have:

Service Tag of the host Repository profile name Verified all the required pre-requisites mentioned in the Prerequisites on page 9. Verified the following for vSAN host and cluster:

DRS is enabled Host is not already in maintenance mode vSAN data objects are healthy

Verified that DRS is enabled for vSphere host and cluster

About this task

This topic explains how you can use OMIVV APIs to update the host firmware components.

Steps

1. Log in to OMIVV. Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTful API.

For more information, see OMIVV authentication on page 11.

2. Get firmware repository profile ID. You can get the firmware repository profile ID from the repository profile name.

Sample code to get the repository profile ID:

```json def getRepoId(omivv_ip, bearer_token): response = getAllRepositoryProfile(omivv_ip, bearer_token) for repo in response: if(repo_name == repo['profileName']): return repo['id'] def getAllRepositoryProfile(omivvIP,bearerToken): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles" print("url: " + url) head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if(jsonReponse.status_code == 200): return jsonReponse.json() else: print("Get getallRepositoryProfile failed")

```

3. Get Host ID and System ID. Get the host ID and system ID by using the host Service Tag.

Sample code to get the host ID and system ID:

```json def get_vcenter_tree_from_omivv(OMIVV_ip, vcenter_ip, session_token ,host_service_Tag): url ="https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles" head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if(response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True)

Use cases 27

registered_vc_array = json.loads(json_response) for vc in registered_vc_array: if vcenter_ip.upper() == vc['ip'].upper(): vcenter_id = vc['id'] url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/Services/ ConsoleService/Consoles/" + vcenter_id + "/Hosts" head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): allHost = response.json() for host in allHost: if (host["serviceTag"] == host_service_Tag): url = "https://" + OMIVV_ip + "/Spectre/api/rest/v1/ Services/ConsoleService/Consoles/" + vcenter_id + "/Hosts/" + host['id'] head = {'Authorization': 'Bearer ' + session_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response

4. Get bundle ID. Get the bundle ID using the repository profile ID received from step 2 and System ID received from step 3.

Sample code to get the bundle ID:

```json def getBundleId(omivvIP, bearerToken, repoProfileID, systemId): url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/ RepositoryManagementService/RepositoryData?repoProfileID=" + repoProfileID + "&systemId=" + systemId head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if (jsonReponse.status_code == 200): json_object = json.dumps(jsonReponse.json(), indent=4, sort_keys=True) print(json_object) else: print("getRepositoryDataReport API is failed.")

```

5. Create firmware inventory report. You can create the firmware inventory report using the repository profile ID, System ID, Host ID, and Bundle ID.

Sample code to create the firmware inventory report:

```json def postFirmwareInventoryReportforHost(omivvIP, bearerToken, systemID, bundleID, repoID, hostID): url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/UpdateService/ FWReport" head = {'Authorization': 'Bearer ' + bearerToken} postBodyData = {"reportType": "HOST", "hostID": hostID, "repoProfileID": repoID, "bundleAssociation" : [{"systemId": systemID, "bundleID": bundleID}]} jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 200): json_object = json.dumps(jsonReponse.json(), indent=4, sort_keys=True) print(json_object) else: print("PostFirmwareInventoryReport API is failed.")

```

6. Create firmware update job

In this topic, the firmware components that are having Criticality as Urgent and Upgrade Action as Update used in firmware inventory report.

Once you get all the firmware target details such as repository profile ID, Host ID, Bundle ID, and Package ID, create the firmware update job

When you are creating firmware update job, enter the following job specific custom configuration details:

28 Use cases

preCheck: Prerequisites check before firmware update. exit MaintenanceMode: Option to exit from maintenance mode. resetIDracAndDeleteJobs: Set this value as TRUE. Clears all the iDRAC jobs present in the Job Queue followed by iDRAC

reset before updating firmware on the host.

If you do not mention any value while running API, OMIVV considers the settings configured on the Settings > Firmware Update Settings on the User Interface.

enterMaintenanceModetimeout: Time out value for host to enter maintenance mode. Enter the Maintenance Mode timeout value between 601440 minutes. If the wait time goes beyond the specified time, the update jobs fail and enter maintenance task will be canceled or timed out. However, the components may get updated automatically when the host is restarted.

reboot options: Host reboot options. In this article, we use the host reboot option as Safe reboot.

The possible input value is true or false. Default value is true if the required value is not entered. For cluster-level firmware update, the only allowed value is true.

Sample code to create the firmware update job:

```json def creatHostFirmwareUpdateJob(omivvIP, bearerToken, repoId, bundleID, packageIds, hostID, jobName): url = "https://" + omivvIP + "/Spectre/api/rest/v1/Services/UpdateService/Jobs" head = {'Authorization': 'Bearer ' + bearerToken}

postBodyData = {"jobname": jobName, "jobdesc": "FWTest1Desc", "updateType": "FIRMWARE", "updateTargetType" : "HOST", "schedule":{"runLater":"true", "runNow":"false","dateTime":"2021-10-24T02:30:01Z"}, "firmwareRepoProfileID":repoId,"rebootOptions":"FORCEREBOOT","preCheck":"false","firmw areUpdateTargets": [{"hostId":hostID,"bundleId":bundleID,"packageIDs":packageIds}],"jobSpecificCustomConf iguration": {"exitMaintenanceMode":"true","migratePoweredOffAndSuspendedVMs":"true","resetIDracAnd DeleteJobs":"false","enterMaintenanceModetimeout":60, "enterMaintenanceModeOption" : "Ensure accessibility"}}

jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 202): json_object = json.dumps(jsonReponse.json(), indent=4, sort_keys=True) print(json_object) else: print("creatHostFirmwareUpdateJob API is failed.")

```

7. Track firmware update job. After you create the firmware update job, you can track the job status by calling the following API received from the response of step 6.

/Services/UpdateService/Jobs/{firmware update job ID}

```json def getHostFirmwareUpdateJobDetails(omivvIP, bearerToken, JobId): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/UpdateService/Jobs/" + JobId head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if (jsonReponse.status_code == 200): json_object = json.dumps(jsonReponse.json(), indent=4, sort_keys=True) print(json_object) else: print("Get getHostFirmwareUpdateJobDetails failed") ```

Retrieve OMIVV license information

Prerequisites

Ensure that:

Use cases 29

OMIVV has at least one license installed. You have verified all the pre-requisites mentioned in the Prerequisites on page 9.

About this task

OMIVV requires a valid license to successfully manage the hosts. Multiple licenses can be installed at a time to the appliance. This topic describes how to get list of all licenses installed in OMIVV and retrieve information of individual license.

Steps

Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTful API.

For more information, see OMIVV authentication on page 11.

Get all licenses

Invoke /Services/LicenseService/Licenses API get list of all licenses.

The API response contains following attributes for all the licenses installed: Id - License ID generated by OMIVV when the license is installed href - URI to individual license in the format /Services/LicenseService/Licenses/{Id} objectType - Type of the JSON object. Value is "LicenseInfo" entitlementID: Unique license ID licenseType - License term. Possible values are Evaluation or Standard or Perpetual maxHosts - Maximum hosts that can be managed with this license startDate - License start date expirationDate - License expiration date duration - License validity duration in days licenseStatus - Current license status. Possible values are Active or Inactive or Expired

Sample code to get the list of all licenses:

``` def get_all_licenses(omivv_ip, bearer_token): """Get all license jobs""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/LicenseService/Licenses" head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get all license jobs failed.") ```

Get individual license information

Invoke /Services/LicenseService/Licenses/{Id} API get list of all licenses.

The attributes are same as /Services/LicenseService/Licenses response.

Sample code to get the individual license information:

``` def get_license_deatil_by_id(omivv_ip, bearer_token, licesne_id): """ Get the license details""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/LicenseService/ Licenses/" + licesne_id; head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response else: print("Get all license jobs failed.") ```

30 Use cases

The sum of maxHosts of all active licenses during the time of API invocation gives the maximum number of hosts that can be managed using the OMIVV instance in context.

Compute server drift from baseline

Prerequisites

Ensure that you have verified all the pre-requisites mentioned in the Prerequisites on page 9.

About this task

Configuration drift deals with calculating drift from the baseline (hardware configuration, firmware, or driver versions). This article describes about identifying the drift between hardware configuration, firmware, and driver versions, run the drift detection job, and then viewing the drift report using OMIVV APIs.

Steps

1. Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTful API.

For more information, see OMIVV authentication on page 11.

2. Once you log in to OMIVV, select or identify a vCenter on which you want to perform operation. This is done by setting operational context.

For more information, see OMIVV authentication on page 11.

Before setting the vCenter Context, get the list of registered vCenter.

Sample code to get the list of registered vCenters:

```json def getRegisteredVcenterList(omivvIP,bearerToken): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ Consoles" head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.get(url, verify=False, headers=head) if(jsonReponse.status_code == 200): return Response else: print("Get registered vCenter list failed")

```

After you get the list of registered vCenters, set the vCenter context.

Sample code to set the vCenter context:

```json def setOperationalContext(omivvIP, bearerToken, vcenterId, vcenterUsername,vCenterDomain, vCenterPassword): url ="https://" + omivvIP + "/Spectre/api/rest/v1/Services/ConsoleService/ OperationalContext" postBodyData={"consoleId" : vcenterId, "consoleUserCredential": {"username":vcenterUsername,"domain" : vCenterDomain,"password" : vCenterPassword}} head = {'Authorization': 'Bearer ' + bearerToken} jsonReponse = requests.post(url, json=postBodyData, verify=False,headers=head) if(jsonReponse.status_code == 204): return pass; else: print("setOperationalContext failed.") pass ```

3. Create repository profile.

Repository Profile enables to create or maintain multiple driver or firmware repository profiles.

These driver or firmware repository profiles can be used to create cluster profile for baselining the clusters.

Use cases 31

Sample code to create repository profile:

``` def create_repository_profile(omivv_ip, bearer_token, create_args_file): base_url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ PluginProfileService/RepositoryProfiles" """Open the JSON input file""" input_file = open(create_args_file,"r") input_data = json.load(input_file) head = {'Authorization': 'Bearer ' + bearer_token} jsonReponse = requests.post(base_url, json=input_data, verify=False, headers=head) if (jsonReponse.status_code == 200): json_response = json.dumps(jsonReponse.json(), indent=4, sort_keys=True) print(json_response) print("Successfully creating the repository profile.") return json_response else: print("Error in creating the repository profile.") print(json_response)

Sample of input_file: { "name":"LocalOnelineCatalog", "description": "LocalOnlineCatalog", "globalDefault": "false", "repoType": "FIRMWARE", "protocolType": "CIFS", "uri": "\\\\xx.xx.xx.xx\\ShareFolder\\onlineCatalog\\Catalog.xml", "credential": { "username": "xxxx", "domain": "", "password": "xxxx" } } ```

4. Create system profile. System profile is used to configure hardware attributes for the desired configuration. Create the system profile in OMIVV UI.

5. Create cluster profile using repository profile and system profile using OMIVV UI.

A cluster profile enables to capture the configuration baseline (hardware configuration, firmware, or driver versions).

6. View drift detection job. A drift detection job is run to find the comparison between the validated baseline and the server configuration which includes hardware configuration, firmware, and driver versions. Drift job gets triggered automatically after you create the cluster profile.

Invoke the following API to retrieve all drift job: /Services/DriftDetectionService/Jobs

``` def get_all_drift_jobs(omivv_ip, bearer_token): """Get all drift jobs""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ DriftDetectionService/Jobs" head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get all drift jobs failed.") ```

Invoke the following API to get cluster details about a specific job: /Services/DriftDetectionService/Jobs/{id} Sample code to get the cluster details:

``` def get_drift_job_by_id(omivv_ip, bearer_token, d_job_id): """ Get the drift job details by job id""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/

32 Use cases

DriftDetectionService/Jobs/" + d_job_id; print("url: " + url ) head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response else: print("Get drift job detail by id.") ```

Invoke the following API to get host level details about specific drift job: /Services/DriftDetectionService/Jobs/ {id}/Details Sample code to get host level details about specific drift job:

``` def get_drift_job_deatil_by_id(omivv_ip, bearer_token, d_job_id): """ Get the drift job details details""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ DriftDetectionService/Jobs/" + d_job_id + "/Details"; print("url: " + url ) head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response else: print("Get all drift jobs details failed.") ```

7. View drift report. Drift detection job computes drift details of the hardware, firmware, and driver components from the baseline.

Invoke the following API to view the complete drift for all clusters: /Services/DriftDetectionService/DriftReport

Sample code to view the complete drift for all clusters:

``` def get_all_drift_jobs_report(omivv_ip, bearer_token): """Get all drift report jobs""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ DriftDetectionService/DriftReport" head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) #print(json_response) return json_response else: print("Get all drift jobs report failed.") ```

Invoke the following API to view drift for a specific cluster: /Services/DriftDetectionService/DriftReport/{id}

Sample code to view drift for a specific cluster:

``` def get_drift_job_by_id(omivv_ip, bearer_token, d_job_id): """ Get the drift job report by job id""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/ DriftDetectionService/Jobs/" + d_job_id; print("url: " + url ) head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) return json_response

Use cases 33

else: print("Get the drift job report by job id.")

```

Invoke the following API to get only driver drift for a specific cluster: /Services/DriftDetectionService/DriftReport/{id}/ DriverDriftDetails

Sample code to get only driver drift for a specific cluster:

``` d_job_id_href = It is the href for drift job i.e "https://omivvIP/Spectre/api/rest/v1/Services/DriftDetectionService/DriftReport/ domain-c47"

def get_driver_drift_report_detail_by_id(omivv_ip, bearer_token, d_job_id_href): """ Get the drift job details""" print("get Driver report") head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(d_job_id_href + "/DriverDriftDetails", verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get all drift jobs failed.") ```

Invoke the following API to get only hardware drift for a specific cluster: /Services/DriftDetectionService/DriftReport/{id}/ ConfigurationDriftDetails

Sample code to get only hardware drift for a specific cluster:

```

d_job_id_href = It is the href for drift job i.e "https://omivvIP/Spectre/api/rest/v1/Services/DriftDetectionService/DriftReport/ domain-c47"

def get_drift_report_configuration_detail_by_id(omivv_ip, bearer_token, d_job_id_href): """ Get the drift job details""" print("get Configuration report") head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(d_job_id_href + "/ConfigurationDriftDetails", verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get configuration failed..") ```

Invoke the following API to get only firmware drift for a specific cluster: /Services/DriftDetectionService/DriftReport/{id}/ FwDriftDetails

Sample code to get only firmware drift for a specific cluster:

```

d_job_id_href = It is the href for drift job i.e "https://omivvIP/Spectre/api/rest/v1/Services/DriftDetectionService/DriftReport/ domain-c47"

def get_drift_report_fwDriftDetails_detail_by_id(omivv_ip, bearer_token, d_job_id_href): """ Get the drift job details""" print("get Configuration report") head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(d_job_id_href + "/FwDriftDetails", verify=False,

34 Use cases

headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) return json_response else: print("Get fw report failed.") ```

Next steps

Update firmware for drifted components

The intention is to maintain the desired state for the cluster. For the drifted components in the drift report, trigger firmware update using the use case described earlier. For sample code, see https://github.com/dell/omivv.

Monitor component health in OMIVV

Prerequisites

Ensure that:

Hosts added in the vCenter Host Credential Profile is created using OMIVV UI and inventory is run successfully

About this task

OMIVV manages ESXi host in vCenter server and calculates status of different sub systems of the server. This topic helps you to check the health of various server components.

Steps

1. Start an OMIVV session using OMIVV user credentials. OMIVV credentials are required to authenticate a client of the RESTFul API.

For more information, see OMIVV authentication on page 11.

2. View component health.

Invoke the following API to retrieve different server component health: Services/InventoryService/Hosts/{host- id}/SubSystemHealth Invoke the following API to retrieve host ID: Services/ConsoleService/Consoles/{console-id} Invoke the following API to retrieve Console id: /Services/ConsoleService/Consoles

``` detail_str -> Only below 4 strings is supported 1.SubSystemHealth 2.HostOverview 3.FirmwareInventory 4.Warranty

e.g def get_host_details(omivv_ip, bearer_token, host_id, 'SubSystemHealth')

def get_host_details(omivv_ip, bearer_token, host_id, details_str): """ Get the Host details value""" url = "https://" + omivv_ip + "/Spectre/api/rest/v1/Services/InventoryService/ Hosts/" + host_id + "/" + details_str head = {'Authorization': 'Bearer ' + bearer_token} response = requests.get(url, verify=False, headers=head) if (response.status_code == 200): json_response = json.dumps(response.json(), indent=4, sort_keys=True) print(json_response) else: print("Get host details failed.")

```

Use cases 35

Next steps

View different health status of the components that is Healthy, Warning, Critical and take corrective actions if necessary.

36 Use cases

Session management

Topics:

Start an OMIVV session End an OMIVV session

Start an OMIVV session Description: Starts an OMIVV session for the given OMIVV IP. The OMIVV session is valid for 60 minutes. Only the admin user is allowed to successfully log in as an API user.

The bearer token received from this API must be used for other APIs as a header parameter.

Command or URL: /Services/AuthenticationService/login Method: POST

Request body:

{ "apiUserCredential" : { "username":"{OMIV username (admin}", "domain" : "", "password" : "{OMIVV password}" } }

For more information about request body parameters, see Request body on page 92.

Parameters: None

vCenter Privileges required: None

HTTP response code:

Table 2. HTTP response codes

Code Description or response object

200 OK

400 Invalid parameters

429 Too many requests

500 Internal Server error / timeout

503 Client limit exhausted.

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "accessToken": "{token ID}", "tokenType": "{token type}", "expiresAt": "{token expire date and time}" }

For more information, see Response body on page 96.

5

Session management 37

End an OMIVV session Description: Logs out from the OMIVV session. This API internally invalidate the bearer token.

Command or URL: /Services/AuthenticationService/logoff Method: POST

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: None

HTTP response code:

Table 3. HTTP response codes

Code Description or response object

200 Logged off successfully

401 Authorization failure

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response: Logged off successfully.

38 Session management

License management

Topics:

Get list of vCenter and host license Get vCenter and hosts license details Upload license to OMIVV

Get list of vCenter and host license Description: Gets list of all licenses uploaded in OMIVV.

Command or URL: /Services/LicenseService/Licenses Method: GET

Parameters: None

Authorization: Bearer authentication

vCenter privileges required: None

HTTP response code:

Table 4. HTTP response code

Code Description or response object

200 License Info

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{License ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/LicenseService/Licenses/ {LicenseID}", "objectType": "LicenseInfo", "entitlementID": "{Entitlement ID}", "licenseType": "{License Type}", "maxHosts": {number of maximum hosts allowed}, "startDate": "{License start date}", "expirationDate": "{License expiry date}", "duration": {Duration of license}, "licenseStatus": "{License status}" }, ]

NOTE: After a standard license is uploaded, the evaluation license status is displayed as "inactive".

For more information, see Response body on page 96.

6

License management 39

Get vCenter and hosts license details Description: Gets license details using license ID.

Command or URL: /Services/LicenseService/Licenses/{id} Method: GET

Authorization: Bearer authentication

vCenter privileges required: None

Parameters:

Table 5. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) License ID. Use the license ID received from the Get list of vCenter and host license on page 39 API.

N/A Path String

HTTP response code:

Table 6. HTTP response code

Code Description or response object

200 License Info

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{License ID}", "href": "https://{OMIVV IP}/Spectre/api/rest/v1/Services/LicenseService/Licenses/ {LicenseID}", "objectType": "LicenseInfo", "entitlementID": "{Entitlement ID}", "licenseType": "{License Type}", "maxHosts": {number of maximum hosts allowed}, "startDate": "{License start date}", "expirationDate": "{License expiry date}", "duration": {Duration of the license}, "licenseStatus": "{License status}" }

For more information, see Response body on page 96.

Upload license to OMIVV Description: Uploads new license in .XML file format to OMIVV. You can upload one license file at a time.

After you upload the standard license, the existing evaluation license becomes inactive.

Command or URL: /Services/LicenseService/Licenses Method: POST

40 License management

Request Body:

{ "sharetype": "{share type}", "path": "{license file path}", "credential": { "username": "{username}", "domain": "{domain}", "password": "{password}" } }

For more information about request body parameters, see Request body on page 92.

Parameters:

For NFS, credential is not required.

For CIFS credentials are required. domain parameter is not mandatory.

vCenter privileges required: None

HTTP response code:

Table 7. HTTP response code

Code Description or response object

200 Created

204 No content

401 Authorization failure

424 Failed Dependency

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "License ID", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/LicenseService/Licenses/ {LicenseID}", "objectType": "LicenseInfo", "entitlementID": "{Entitlement ID}", "licenseType": "{License Type}", "maxHosts": {number of maximum hosts allowed}, "startDate": "{License start date}", "expirationDate": "{License expiry date}", "duration": {Duration of license}, "licenseStatus": "{License status}" }

License management 41

Console management

Topics:

Get list of registered vCenters Get list of all hosts in vCenter Get host details Get vCenter tree view of data center Set vCenter context Get cluster details Get cluster health

Get list of registered vCenters Description: Gets the list of all the registered vCenters for the given OMIVV.

Command or URL: /Services/ConsoleService/Consoles Method: GET

Parameters: None

Authorization: Bearer authentication

vCenter privileges required: None

HTTP response code:

Table 8. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{vCenter ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/Consoles/ {vCenter ID}", "objectType": "ConsoleMetadata", "hostname": "{vCenter hostname or FQDN}", "ip": "{vCenter IP}" } ]

For more information, see Response body on page 96.

7

42 Console management

Get list of all hosts in vCenter Description: Gets the list of all the hosts registered in a vCenter for the given OMIVV IP. All Dell EMC and OEM managed hosts are listed.

Command or URL: /Services/ConsoleService/Consoles/{id}/Hosts?serviceTags={service Tags 1}& serviceTags={service Tags 2} Method: GET

Optional query Parameter: serviceTag

Authorization: Bearer authentication

vCenter privileges required: None

HTTP response code:

Table 9. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{Host ID}", "href": "string", "objectType": "string", "serviceTag": "{Service Tag of host}" } ]

Example response using query parameter to get details of only particular host using serviceTags:

[ { "id": "{Host ID}", "href": "https://{OMIVV IP}/Spectre/api/rest/v1/Services/ConsoleService/ Consoles/33/Hosts/{Host ID}", "objectType": "Host", "serviceTag": "{Service Tag of host}" } ]

For more information, see Response body on page 96.

Get host details Description: Gets details of a particular host in a vCenter. Use host ID as a input parameter.

Command or URL: /Services/ConsoleService/Consoles/{id}/Hosts/{hostid} Method: GET

Parameters: None

Console management 43

Authorization: Bearer authentication

vCenter privileges required: None

HTTP response code:

Table 10. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{Host ID}", "href": "string", "objectType": "string", "hostip": "{Host IP}", "hostName": "{Hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Service Tag}", "model": "{Server model name}", "systemId": "{System ID}" }

For more information, see Response body on page 96.

Get vCenter tree view of data center Description: Gets the vCenter tree view of all the data centers, clusters, and hosts of the given vCenter ID.

This API helps you to get the host and cluster details for operations like firmware update.

All Dell EMC and OEM managed or unmanaged hosts are listed.

Command or URL: /Services/ConsoleService/Consoles/{id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 11. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the vCenter ID received from the Get list of registered vCenters API. For more information, see Get list of registered vCenters on page 42.

N/A Path String

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

vCenter privileges required: None

HTTP response code:

44 Console management

Table 12. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

Example Response:

{ "id": "{vCenter ID}", "href": "https://{OMIVV IP}/Spectre/api/rest/v1/Services/ConsoleService/Consoles/ {vCenterID}", "objectType": "Console", "ip": "{vCenter IP}", "hostname": "{vCenter hostname or FQDN}", "registeredWithVlcm": "{vLCM registration status (true or false)}, "datacenters": [ { "id": "{Datacenter ID}", "href": "", "objectType": "Datacenter", "name": "{Datacenter name}", "clusters": [ { "id": "{cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ ConsoleService/Clusters/{clusterID}", "objectType": "ClusterMetadata", "name": "{cluster name}" }, { "id": "{cluster id}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ ConsoleService/Clusters/{clusterID}", "objectType": "ClusterMetadata", "name": "{Cluster name}" } ], "hosts": ": [ { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "{Hostname or FQDN}", "managementIP": "{iDRAC IP}", "serviceTag": "{Host Service Tag}", "model": "{Server Model Name}", "systemId": "{System ID}" } ] } ,

For more information, see Response body on page 96.

Set vCenter context Description: Sets the vCenter context on which user want to perform any operation.

Enter the vCenter ID received from /Services/ConsoleService/Consoles API.

Console management 45

The required vCenter user privilege for all other APIs are verified when you trigger the API.

Command or URL: /Services/ConsoleService/OperationalContext Method: POST

Request Body:

{ "consoleId": "{vCenterID}", "consoleUserCredential": { "username": "{vCenter username}", "domain": "{domain}", "password": "{vCenter password}" } }

For more information about request body parameters, see Request body on page 92.

Parameters: None

vCenter privileges required: None

HTTP response code:

Table 13. HTTP response code

Code Description or response object

204 OK

400 Invalid parameters

401 Authorization failure

403 Failed to login to vCenter

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response: No content

Get cluster details Description: Gets the cluster details of the given cluster ID. You can view all the hosts belong to the cluster. The vSAN and vSphere cluster details are displayed.

Command or URL: /Services/ConsoleService/Clusters/{cluster-id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 14. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the cluster ID received from the Get vCenter tree view of datacenter API. For more information, see Get vCenter tree view of data center on page 44.

N/A Path String

vCenter privileges required: None

HTTP response code:

46 Console management

Table 15. HTTP response code

Code Description or response object

200 OK

400 Operational context not set

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example response:

{ "id": "{Cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/Clusters/ {cluster ID}", "objectType": "Cluster", "name": "{Cluster name}", "consoleID": {Console ID}, "clusterType": "{Cluster Type (vSAN or vSphere)}", "hosts": [ { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{host IP}", "hostName": "{Hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Service Tag}", "model": "{Server model name}", "systemId": "{System ID}" } ] }

For more information, see Response body on page 96.

Get cluster health Description: Gets the health (DRS and vSAN cluster health) of the given cluster ID. The health data is used for assessing the firmware update.

The data that is displayed here is real-time health information.

Command or URL: /Services/ConsoleService/Clusters/{cluster_id}/Details Method: GET

Authorization: Bearer authentication

Parameters:

Table 16. Parameters

Parameter Value Description Default value

Parameter type Data type

id (required) Resource ID. Use the cluster ID received from the Get vCenter tree view of datacenter API. For more information, see Get vCenter tree view of data center on page 44.

N/A Path String

Console management 47

vCenter privileges required: None

HTTP response code:

Table 17. HTTP response code

Code Description or response object

200 OK

400 Operational context is not set.

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "clusterId": "{cluster ID}", "drsState": "{DRS status}", "vsanObjectHealth": "{vSAN object health status}" }

For more information, see Response body on page 96.

48 Console management

Repository profile management

Topics:

Get list of repository profiles Get repository profile details Create a new repository profile Modify or edit repository profile

Get list of repository profiles Description: Gets the list of all repository profiles that are created in OMIVV UI.

Command or URL: /Services/PluginProfileService/RepositoryProfiles Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 18. HTTP response code

Code Description or response object

200 OK

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{Repository profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles/{vCenterID}", "objectType": "BaseProfileMetadata", "profileName": "{Repository profile name}", "description": "{Profile description}" }, ]

For more information, see Response body on page 96.

8

Repository profile management 49

Get repository profile details Description: Gets the details of the given repository profile ID. You can view the firmware and driver repository details. Also, you can view factory-created and user-created repository details.

Command or URL: /Services/PluginProfileService/RepositoryProfiles/{id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 19. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the repository profile ID received from the Get list of repository profiles API. For more information, see Get list of repository profiles on page 49

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 20. HTTP response code

Code Description or response object

200 OK

400 Operational Context is not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{Repository profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles/{Repository profile ID}", "objectType": "RepositoryProfile", "data": { "name": "{Profile Name}", "description": "{Repository Profile description}", "globalDefault": {Dell default repository profile}, "repoType": "{Repository type}", "protocolType": "{Protocol type}", "uri": "{Catalog location}", "credential": { "username": "{Repository profile username}", "domain": "{domain name}", "password": "{Profile password}" }, "synchronizeRepository": {Synchronize with current repository location} } }

For more information, see Response body on page 96.

50 Repository profile management

Create a new repository profile Description: Creates a new repository profile

Command or URL: /Services/PluginProfileService/RepositoryProfiles Method: POST

Request Body:

{ "name": "{profile name}", "description": "{profile description}", "globalDefault":{Dell default repository profile(false), currently not supported}, "repoType": "{repository type}", "protocolType": "{protocol type}", "uri": "{Catalog location}", "credential": { "username": "{share username}", "domain": "{domain}", "password": "{share password}" }, "synchronizeRepository": {Synchronize with current repository location (false)} }

For more information about request body parameters, see Request body on page 92.

For NFS, credential is not required.

For CIFS credentials are required. domain parameter is not mandatory.

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 21. HTTP response code

Code Description or response object

200 Repository Profile Data

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{repository profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles/{repository profile ID}", "objectType": "RepositoryProfile", "data": { "name": "{Repository profile name}", "description": "{Repository profile description}", "globalDefault": {Dell default repository profile (true or false)}, "repoType": "{Repository Type}", "protocolType": "{Protocol type}", "uri": "{Repository location}", "credential": { "username": "{share username}", "domain": "{domain}", "password": "{}" },

Repository profile management 51

"synchronizeRepository": {Synchronize with current repository location(true)} } }

Modify or edit repository profile Description: Modifies repository profile

Command or URL: /Services/PluginProfileService/RepositoryProfiles Method: PUT

Request Body:

{ "name": "{profile name}", "description": "{profile description}", "repoType": "{Repository type}", "protocolType": "{Protocol type}", "uri": "{catalog location}", "credential": { "username": "{share username}", "domain": "{domain}", "password": "{share password}" }, "synchronizeRepository": {Synchronize with current repository location} }

For more information about request body parameters, see Request body on page 92.

For NFS, credential is not required.

For CIFS credentials are required. domain parameter is not mandatory.

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 22. HTTP response code

Code Description or response object

200 Repository Profile Data

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles/{profile ID}", "objectType": "RepositoryProfile", "data": { "name": "{profile name}", "description": "{Profile description}", "globalDefault": {Dell default repository profile}, "repoType": "{Repository type}", "protocolType": "{Protocol type}", "uri": "{Catalog location}",

52 Repository profile management

"credential": { "username": "{share username}", "domain": "{domain}", "password": "{}" }, "synchronizeRepository": {Synchronize with current repository location} } }

Repository profile management 53

Cluster profile management

Topics:

Get list of cluster profiles Get details of cluster profiles

Get list of cluster profiles Description: Gets the list of all cluster profiles that are created in OMIVV UI.

Command or URL: /Services/PluginProfileService/ClusterProfiles Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 23. HTTP response code

Code Description or response object

200 OK

400 Operation context is not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{Cluster Profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ ClusterProfiles/{Cluster profile ID}", "objectType": "BaseProfileMetadata", "profileName": "{Cluster profile name}", "description": "{Cluster profile description}" } ]

For more information, see Response body on page 96.

Get details of cluster profiles Description: Gets the details of a given cluster profile. You can view the associated system profile, driver repository profile, firmware repository profile, and associated cluster details.

Command or URL: /Services/PluginProfileService/ClusterProfiles/{id}

9

54 Cluster profile management

Method: GET

Authorization: Bearer authentication

Parameters:

Table 24. Parameters

Parameter Value Description Default value

Parameter type

Data type

id (required) Cluster profile ID. Use the cluster profile ID received from the Get list of cluster profiles API. For more information, see Get list of cluster profiles on page 54

N/A Path String

vCenter Privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 25. HTTP response code

Code Description or response object

200 OK

400 Operational Context not set

401 Authorization failure

403 VCenter permission denied

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{Cluster profie ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ ClusterProfiles/{Cluster profile ID}", "objectType": "ClusterProfile", "data": { "profileName": "{Cluster profile name}", "description": "{Cluster profile description}", "clusters": [ { "id": "{Cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/ Clusters/{Cluster ID}", "objectType": "ClusterMetadata", "name": "{Cluster name}" } ], "repo": [ { "id": "{Repostory profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ PluginProfileService/RepositoryProfiles/{Repository profile ID}", "objectType": "BaseProfileMetadata", "profileName": "{Repository profile name}", "repoType": "{Repository profile type (Firmware or Driver}", "description": "{Profile description}" } ], "systemProfile": { "id": "{System profileID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ RepositoryProfiles/{System profile ID}",",

Cluster profile management 55

"objectType": "BaseProfileMetadata", "profileName": "{System profile name}", "description": "{System profile description}" } }, "driftJob": { "id": "{Drift detection job ID}", "href": "https://{OMIVV IP}/Spectre/api/rest/v1/Services/DriftDetectionService/ Jobs/{drift detection job ID}", "objectType": "JOB", "status": "{Status of drift detection job}" }

}

For more information, see Response body on page 96.

56 Cluster profile management

Firmware repository inventory management

Topics:

Get firmware repository inventory details

Get firmware repository inventory details Description: Gets the details of firmware repository inventory. Ensure that the repository is successfully downloaded.

The driver repository inventory is not supported.

You can view the details like bundle ID, list of components of the particular bundle ID for the specific server model.

Command or URL: /Services/RepositoryManagementService/RepositoryData? repoProfileID={repoProfileID}&bundleId={bundleId} &systemId={systemId} Mandatory query parameter: repoProfileID

Optional query parameter: bundleId, systemId

Method: GET

Authorization: Bearer authentication

Parameters:

Table 26. Parameters

Parameter Value Description Parameter type

Data type

repoProfileID (required) Related firmware repository profile ID. Use the repository profile ID received from the Get list of repository profiles API. For more information, see Get list of repository profiles on page 49

query String

systemId Optional SystemID of the server to filter the bundles. To get the system ID, run /Services/ConsoleService/Consoles/{id} or /Services/ConsoleService/Clusters/{cluster-id}. For more information, see Get vCenter tree view of data center on page 44 and Get cluster details on page 46.

query String

bundleId Optional Bundle ID to retrieve software components. To get the bundle ID, run /Services/ RepositoryManagementService/RepositoryData? repoProfileID={repoProfileID}&bundleId={bundleId}. It is mandatory to enter bundleId to get the component list.

query String

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 27. HTTP response code

Code Description or response object

200 OK

400 Invalid parameters

401 Authorization failure

403 Failed to log in to vCenter

10

Firmware repository inventory management 57

Table 27. HTTP response code (continued)

Code Description or response object

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "repoProfileID": "{Repository profile ID}", "bundleID": "{Bundle ID}", "bundles": [ { "bundleID": "{Bundle ID}", "name": "{Bundle name}", "description": "{Bundle description}", "model": "{Server model name}", "targetOS": "{Target host OS name}", "systemId": "{Server unique ID}" } ], "components": [ { "packageID": "{Component unique package ID}", "rebootRequired":"{host reboot required (True or False)}", "releaseDate": "{Component release date and month}", "name": "{Component name}", "description": "{Component description}", "supportedHWComponents": [ { "componentID": "{Component ID}", "pcieVariants": [ { "deviceID": "{Device ID}", "subDeviceID": "{Sub device ID}", "subVendorID": "{Sub vendor ID}", "vendorID": "{Vendor ID}" } ] }, ] }], "revisionHistory": "{Revison history}", "vendorVersion": "{Vendor Version}", "criticality": "{importance of component update}" },

NOTE: After you upgrade OMIVV to 5.2 (RPM Upgrade or backup and restore), the value of model, revisionHistory, and

description are displayed as null until firmware repository is refreshed. To refresh the repository profile, on the repository

profile page, click Edit and complete the wizard without doing any modification.

For more information, see Response body on page 96.

58 Firmware repository inventory management

Firmware inventory management

Topics:

Create host level firmware inventory report Create cluster level firmware inventory report

Create host level firmware inventory report Description: Creates the host level firmware inventory report. You can view the host component details that is associated to the given bundle ID before performing firmware update.

Ensure that the host is managed by OMIVV and management complaint.

Use the bundle ID received from the /Services/RepositoryManagementService/RepositoryData? repoProfileID={repoProfileID}&systemId={systemId}&bundleId={bundleId} API.

Use the system ID received from the /Services/ConsoleService/Clusters/{cluster-id} API.

For hosts that are managed at data center level, use the system ID received from the /Services/ConsoleService/Consoles/{id} API.

Command or URL: /Services/UpdateService/FWReport Method: POST

Authorization: Bearer authentication

Request Body:

{ "reportType":"HOST", "hostID":"{host ID}", "repoProfileID":"{Repository profile ID}" "bundleAssociation":[ { "systemId":"{system ID}", "bundleID":"{Bundle ID}" } ], }

For more information about request body parameters, see Request body on page 92.

Parameters: None

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 28. HTTP response code

Code Description or response object

200 OK

400 Invalid parameters

401 Authorization failure

403 Failed to login to vCenter

429 Too many requests

11

Firmware inventory management 59

Table 28. HTTP response code (continued)

Code Description or response object

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "reportType": "HOST", "clusterReport":NULL, "hostReports": { "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IPv4 or FQDN}", "hostName": "", "managementIP": "{iDRAC IP}", "serviceTag": "{Host Service Tag}", "model": "{Server model name}", "systemId": "{System ID}" }, "applicableComponents": [ { "componentType": "{Component Type}", "packageId": "{Package ID}", "component": "{Component Name}", "currentVersion": "{Current installed componet verson}", "availableVersion": "{Available component version}", "criticality": "{Importance of component update}", "updateAction": "{Component update status}", "scheduled": {Component update job scheduled}, "rebootRequired": {Host reboot required (True or False)}, "releaseDate": "{Component release date and month}" }, ] } }

For more information, see Response body on page 96.

Create cluster level firmware inventory report Description: Creates the cluster-level firmware inventory report. You can create vSAN and vSphere cluster level firmware inventory reports.

Use the bundle ID received from the /Services/RepositoryManagementService/RepositoryData? repoProfileID={repoProfileID}&systemId={systemId}&bundleId={bundleId} API.

Use the system ID received from the /Services/ConsoleService/Clusters/{cluster-id} API.

Command or URL: /Services/UpdateService/FWReport Method: POST

Authorization: Bearer authentication

Request Body:

{ "reportType":"{CLUSTER}", "clusterID":"{Cluster ID}", "bundleAssociation":[ { "systemId":"{System ID}",

60 Firmware inventory management

"bundleID":"{Bundle ID}" }, { "systemId":"{System ID}", "bundleID":"{Bundle ID}" } ], "repoProfileID":"{Repository profile ID}" }

For more information about request body parameters, see Request body on page 92.

Parameters: None

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 29. HTTP response code

Code Description or response object

200 OK

400 Invalid parameters

401 Authorization failure

403 Failed to login to vCenter

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "reportType": "{CLUSTER}", "clusterReport": { "cluster": { "id": "{Cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/ Clusters/{Cluster ID}", "objectType": "clusterMetadata", "name": "{Cluster name}" }, "hostReports": [ { "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "", "managementIP": "{iDRAC IP}", "serviceTag": "{Host Service Tag}", "model": "{Server model name}", "systemId": "{System ID}" }, "applicableComponents": [ { "componentType": "{Componenet Type}", "packageId": "{Package ID}", "component": "{Component Name}", "currentVersion": "{Currently installed component version}", "availableVersion": "{Available component version}", "criticality": "{Importance of component update}", "updateAction": "{Component update status}", "scheduled": {Component update job scheduled},

Firmware inventory management 61

"rebootRequired": {Host reboot required}, "releaseDate": "{Component release date and month}" }, ] } ] }, "hostReport": null }

For more information, see Response body on page 96.

62 Firmware inventory management

Firmware update management

Topics:

Create host level firmware update jobs Create cluster level firmware update jobs Get list of firmware update jobs (Host and Cluster) Get firmware update job details (Host or Cluster) Delete firmware update job Cancel firmware update job

Create host level firmware update jobs Description: Creates the firmware update job for a host managed by OMIVV. You can update both vSAN and vSphere host.

Driver update is not supported.

Chassis and single DUP firmware updates are not supported.

It may take few seconds to create firmware update job for large number of hosts.

Command or URL: Services/UpdateService/Jobs Method: POST

Request body:

{ "jobname":"{Firmware update job name}", "jobdesc":"{Job description}", "updateType":"{Update type (FIRMWARE)}", "updateTargetType":"HOST", "schedule":{ "runLater":{Scheduled to run at a specified time (true or false)}, "dateTime":"{Firmware update job schedule (date and time format:YYYY-MM- DDTHH:MM:SSZ, 24 hour UTC time}" "runNow":{Run firmware update job now (true or false)}, }, "firmwareRepoProfileID":"{Firmware repository profile ID}", "rebootOptions":"{Reboot options}", "preCheck":{Check prerequisites before upate(true or false)}, "firmwareUpdateTargets":[ { "hostId":"{Host ID}", "bundleId":"{Bundle ID}", "packageIDs":["Package ID1", "Package ID2"] }], "jobSpecificCustomConfiguration":{ "exitMaintenanceMode":{true or false}, "migratePoweredOffAndSuspendedVMs":{true or false}, "resetIDracAndDeleteJobs":{true or false}, "enterMaintenanceModetimeout":60, enterMaintenanceModeOption: {Enter maintenance mode option} } }

For more information about request body parameters, see Request body on page 92.

Authorization: Bearer authentication

Parameters: None

12

Firmware update management 63

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 30. HTTP response code

Code Description

202 OK

400 Operational Context not set

401 Authorization failure

403 VCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{JOB ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/UpdateService/Jobs/{job ID}", "objectType": "Job", "status": "{Job status}" }

For more information, see Response body on page 96.

Create cluster level firmware update jobs Description: Creates the firmware update job for a cluster managed by OMIVV. You can update both vSAN and vSphere clusters.

Driver update is not supported.

It may take few seconds to create the firmware update job for large number of hosts.

Command or URL: Services/UpdateService/Jobs Method: POST

Request body:

{ "jobname":"{job name}", "jobdesc":"{job description}", "updateType":"{Update type (firmware)}", "updateTargetType":"CLUSTER", "schedule":{ "runLater":{Scheduled to run at a specified time (true or false), "dateTime":"{Firmware update job schedule (Firmware update job schedule (date and time format:YYYY-MM-DDTHH:MM:SSZ, 24 hour UTC time)}" "runNow":{Run firmware update job now (true or false)}, }, "firmwareRepoProfileID":"{Firmware repository profile ID}", "rebootOptions":"{Reboot options}", "preCheck":{Check prerequisites before upate(true or false), "firmwareUpdateTargets":[ { "hostId":"{Host ID}", "clusterId":"{Cluster ID, only for cluster update}", "bundleId":"{Bundle ID}", "packageIDs":["Package ID1", "Package ID2"] }], "jobSpecificCustomConfiguration":{

64 Firmware update management

"exitMaintenanceMode":{true or false}, "migratePoweredOffAndSuspendedVMs":{true or false}, "resetIDracAndDeleteJobs":{true or false}, "enterMaintenanceModetimeout":60, enterMaintenanceModeOption: {enter maintenance mode option} } }

For more information about request body parameters, see Request body on page 92.

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 31. HTTP response code

Code Description or response object

202 OK

400 Operational Context not set

401 Authorization failure

403 VCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{JOB ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/UpdateService/Jobs/{job ID}", "objectType": "Job", "status": "Scheduled" }

For more information, see Response body on page 96.

Get list of firmware update jobs (Host and Cluster) Description: Gets all the host and cluster firmware update jobs.

Command or URL: /Services/UpdateService/Jobs Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 32. HTTP response code

Code Description or response object

200 OK

Firmware update management 65

Table 32. HTTP response code (continued)

Code Description or response object

400 Operational Context not set

401 Authorization failure

403 VCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{Firmware update job ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1Services/UpdateService/Jobs/ {firmware update job ID}", "objectType": "JOB", "status": "{job status}" } ]

For more information, see Response body on page 96.

Get firmware update job details (Host or Cluster) Description: Gets the details of the given host firmware update job ID.

Command or URL: /Services/UpdateService/Jobs/{id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 33. Parameters

Param eter

Value Description Default value

Parameter type

Data type

id (required) Firmware update job ID. Use the firmware update job ID received from the Get list of host firmware update jobs API. For more information, see Get list of firmware update jobs (Host and Cluster) on page 65.

N/A Path String

vCenter privileges required: Dell.Configuration.Firmware Update

HTTP response code:

Table 34. HTTP response code

Code Description or response object

200 OK

400 Operational Context is not set

401 Authorization failure

403 vCenter permission denied

404 Resource not found

429 Too many requests

66 Firmware update management

Table 34. HTTP response code (continued)

Code Description or response object

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{Job ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/UpdateService/Jobs/{job ID}", "objectType": "UpdateJob", "status": "{job status}", "data": { "jobname": "{Job name}", "jobdesc": "{Job description}", "updateType": "{Update type}", "schedule": { "runNow": false, "runLater": true, "dateTime": "{Update job schedule date and time}" }, "repoProfileID": "{Repository profile ID}", "associatedEntities": [ { "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "{Hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Host Service Tag}", "model": "{Server model name}", "systemId": "{System ID}" }, "bundleId": null, "packageIDs": [ "{Package ID1}", "{Package ID2}" ] } ], "rebootOptions": "{reboot options}", "jobSpecificCustomConfiguration": { "exitMaintenanceMode":{true or false}, "migratePoweredOffAndSuspendedVMs":{true or false}, "resetIDracAndDeleteJobs":{true or false}, "enterMaintenanceModetimeout":60, enterMaintenanceModeOption: {Enter maintenance mode option} } } }

For more information, see Response body on page 96.

Delete firmware update job Description: Deletes specific firmware update job. You can delete only one job at a time.

This API enables you to delete only Successful, Failed, and Canceled firmware update jobs.

Command or URL: /Services/UpdateService/Jobs/{id} Method: DELETE

Authorization: Bearer authentication

vCenter privileges required: Dell.Configuration.Firmware Update

Firmware update management 67

Table 35. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Firmware update job ID. Use the firmware update job ID received from the Get list of host firmware update jobs API. For more information, see Get list of firmware update jobs (Host and Cluster) on page 65.

N/A Path String

HTTP response code:

Table 36. HTTP response code

Code Description or response object

200 Deleted

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

Deleted

For more information, see Response body on page 96.

Cancel firmware update job Description: Cancels scheduled and in progress firmware update jobs.

If you stop a firmware update job that is already submitted to iDRAC, the firmware might still get updated on the host. OMIVV reports the job as canceled.

If the job is in scheduled state in OMIVV, job is not submitted to iDRAC. It will get submitted in iDRAC only when it is submitted in OMIVV.

Command or URL: /Services/UpdateService/Jobs/{id}/Cancel Method: PUT

Authorization: Bearer authentication

vCenter privileges required: Dell.Configuration.Firmware Update

Table 37. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Firmware update job ID. Use the firmware update job ID received from the Get list of host firmware update jobs API. For more information, see Get list of firmware update jobs (Host and Cluster) on page 65.

N/A Path String

HTTP response code:

68 Firmware update management

Table 38. HTTP response code

Code Description or response object

200 Cancelled

202 Cancelling

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

The scheduled firmware update job is cancelled.

For more information, see Response body on page 96.

Firmware update management 69

System profile management

Topics:

Get list of system profiles Get system profile details

Get list of system profiles Description: Gets the list of all system profiles that are created in OMIVV UI.

Command or URL: /Services/PluginProfileService/SystemProfiles Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: None

HTTP response code:

Table 39. HTTP response code

Code Description or response object

200 OK

400 Operation context is not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{System profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ SystemProfiles/{SystemProfileID}", "objectType": "SystemProfileMetadata", "profileName": "{Profile name}", "description": "{Profile description}", "systemProfileType": "{System profile Type (Basic or Advanced)}", "referenceServer": "{Reference server IP}", "serverModel": "{Server model name}" } ]

For more information, see Response body on page 96.

Get system profile details Description: Gets the details of the given system profile ID.

13

70 System profile management

You can use only 12G and later PowerEdge servers and bare-metal servers as a reference server.

Command or URL: /Services/PluginProfileService/SystemProfiles Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: None

HTTP response code:

Table 40. HTTP response code

Code Description or response object

200 OK

400 Operation context is not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "id": "{system profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ SystemProfiles/{systemprofileID}", "objectType": "SystemProfile", "data": { "name": "{profile name}", "description": "{profile description}", "systemProfileType": "{Profile Type (Basic or Advanced)}", "referenceESXiHostNameOrIP": "{Reference server hostname or hostIP}", "referenceManagementIP": "{iDRAC IP}", "referenceiDRACType": "{iDRAC license type}", "serviceTag": "{Service Tag of host}", "serverModel": "{Server model name}", "dateCreated": "{date and time when the profile is created}", "dateModified": "{date and time when the profile is modified}", "lastModifiedBy": "{Details of the user who modified the profile}" } }

For more information, see Response body on page 96.

System profile management 71

Drift management

Topics:

Get all drift detection job Get specified drift detection job Get drift report for all clusters Get drift report for specific cluster Get firmware drift report Get driver drift report Get configuration drift report Gets host details on specified drift detection jobs

Get all drift detection job Description: Gets all drift detection jobs.

Command or URL: /Services/DriftDetectionService/Jobs Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 41. HTTP response code

Code Description or response object

200 Drift job MetaData

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "id": "{Drift job ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/DriftDetectionService/ Jobs/{drift job ID}", "objectType": "JOB", "status": "{Job status}" }, ]

For more information, see Response body on page 96.

14

72 Drift management

Get specified drift detection job Description: Gets specified drift detection job.

Command or URL: /Services/DriftDetectionService/Jobs/{id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 42. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the vCenter ID received from the Get all drift detection jobs API. For more information, see Get all drift detection job on page 72.

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 43. HTTP response code

Code Description or response object

200 Drift job MetaData

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "jobname": "{Drift detection job name}", "lastrun": "{Drift detection job last run}", "nextrun": "{Drift detection job next run}", "collectionSize": "0", "associatedClusterProfile": { "id": "{drift detection job ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ ClusterProfiles/{job ID}", "objectType": "ClusterProfile", "data": { "profileName": "{cluster profile name}", "description": "{Profile description}", "clusters": [ { "id": "{cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ ConsoleService/Clusters/{cluster ID}", "objectType": "ClusterMetadata", "name": "{cluster name}" } ], "repo": [ { "id": "{repository profile ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/

Drift management 73

PluginProfileService/RepositoryProfiles/{profile ID}", "objectType": "RepositoryProfileMetadata", "profileName": "{Repository profile name}", "description": "{Profile description}", "repoType": "{Repository type}" } ], "systemProfile": { "id": "{system profile name}", "href": "", "objectType": "", "profileName": "{system profile name}", "description": "{profile description}" } }, "driftJob": { "id": "{drift job ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ DriftDetectionService/Jobs/{drift job ID}", "objectType": "JOB", "status": "{Job status}" } } }

For more information, see Response body on page 96.

Get drift report for all clusters Description: Gets the drift report of all the clusters that are non-compliant.

Command or URL: /Services/DriftDetectionService/DriftReport Method: GET

Authorization: Bearer authentication

Parameters: None

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 44. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "cluster": { "id": "{cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/ Clusters/{cluster ID}", "objectType": "ClusterMetadata", "name": "{Cluster name}" }, "clusterComplianceStatus": "{Compliance status}", "clusterProfileDetails": {

74 Drift management

"id": "{cluster profile ID}", "name": "{cluster profile name}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ ClusterProfiles/{cluster profile ID}" }, "href": "https://{OMIVV IP}/Spectre/api/rest/v1/Services/DriftDetectionService/ DriftReport/{cluster ID}", "systemProfileName": "{system profile name}", "fmRepoProfileName": "{firmware respository profile name}", "driverRepoProfileName": "{driver repository profile name}" } ]

For more information, see Response body on page 96.

Get drift report for specific cluster Description: Gets the drift report of a specific cluster ID. The drift details includes firmware, driver, and configuration details of the given cluster ID.

Command or URL: /Services/DriftDetectionService/DriftReport/{cluster-id} Method: GET

Authorization: Bearer authentication

Parameters:

Table 45. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the cluster ID retrieved from /Services/ DriftDetectionService/ DriftReport or /Services/ ConsoleService/Consoles/{id} API.

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 46. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "cluster": { "id": "{Cluster ID}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ConsoleService/Clusters/ {Cluster ID}", "objectType": "ClusterMetadata", "name": "{Cluster Name}"

Drift management 75

}, "clusterComplianceStatus": "{Cluster Compliance Status}", "clusterProfileDetails": { "id": "{Cluster Profile ID}", "name": "{Cluster Profile Name}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/PluginProfileService/ ClusterProfiles/{Cluster profile ID}" }, "driftDetails": { "fwDriftDetails": { "complianceStatus": "{Firmware compliance status of the cluster}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ DriftDetectionService/DriftReport/{Cluster ID}/FwDriftDetails", "objectType": "FirmwareDriftDetails", "nonCompliantHostList": [ "{Host ID}" ], "notApplicableHostList": [], "compliantHostList": [] }, "driverDriftDetails": { "complianceStatus": "{Driver Compliance status of the cluster}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ DriftDetectionService/DriftReport/{Cluster ID}/DriverDriftDetails", "objectType": "DriverDriftDetails", "nonCompliantHostList": [], "notApplicableHostList": [ "{Host ID}" ], "compliantHostList": [] }, "configurationDriftDetails": { "complianceStatus": "{Configuration compliance status of the cluster}", "href": "https://{OMIVVIP}/Spectre/api/rest/v1/Services/ DriftDetectionService/DriftReport/{Cluster ID}/ConfigurationDriftDetails", "objectType": "ConfigurationDriftDetails", "nonCompliantHostList": [], "notApplicableHostList": [ "{Host ID}" ], "compliantHostList": [] } } }

For more information, see Response body on page 96.

Get firmware drift report Description: Gets the firmware drift report for specific cluster.

This API helps you to get the drifted components details before running firmware update.

Command or URL: /Services/DriftDetectionService/DriftReport/{id}/FwDriftDetails Method: GET

Authorization: Bearer authentication

Parameters:

Table 47. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Resource ID. Use the cluster ID retrieved from /Services/ ConsoleService/Consoles/{id}.

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

76 Drift management

HTTP response code:

Table 48. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "{Hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Service tag}", "model": "{Server Model name}", "systemId": "{System ID}" }, "overallSummary": { "compliantStatus": "{Compliance Status}", "nonCompliantType": "{Non-compliant Type}", "noncompliantTypeDescription": "{Firmware version is different for N number of component (s)}" }, "componentDriftList": [ { "componentDetails": { "componentID": "{Component ID}", "packageID": "{Package ID}", "bundleID": "{Bundle ID}", "instanceID": "{Instance ID}", "componentName": "{Component Name}", "componentType": "{Component Type}", "componentTypeDisplay": "{Component Type Display}", "upgrade": "Component Update required True or False", "criticality": "{Importance of component update}", "rebootRequired": "Host reboot required (True or False)", "pciDeviceInfo": { "deviceID": "{PCI device ID}", "subDeviceID": "{PCI sub device ID}", "subVendorID": "{PCI sub vendor ID}", "vendorID": "{PCI vendor ID}" } }, "complianceSummary": { "compliantStatus": "{Compliance Status}", "nonCompliantType": "{non-compliance type}", "noncompliantTypeDescription": "{Reason for non-compliance}" }, "complianceDetails": { "driftedVersionInfo": "{Component Version in Host}", "baselineVersionInfo": "{Component version in Repository}" } } ] }

Drift management 77

]

NOTE: After you upgrade OMIVV to 5.2 (RPM Upgrade or backup and restore), the value of model, revisionHistory, and

description are displayed as null until firmware repository is refreshed. To refresh the repository profile, on the repository

profile page, click Edit and complete the wizard without doing any modification. After repository profile is updated, update

the associated cluster profile. Drift detection job runs after you update the cluster profile.

For more information, see Response body on page 96.

Get driver drift report Description: Gets the driver drift details of a specific vSAN cluster ID.

Command or URL: /Services/DriftDetectionService/DriftReport/{id}/DriverDriftDetails Method: GET

Authorization: Bearer authentication

Parameters:

Table 49. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Cluster ID. Use the cluster ID retrieved from /Services/ DriftDetectionService/ DriftReport or /Services/ ConsoleService/Consoles/{id} API.

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 50. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "overallSummary": { "compliantStatus": "{Compliance status of the cluster}", "nonCompliantType": "{Non-compliance Type}", "noncompliantTypeDescription": "{Reason for non-comliance}" }, "componentDriftList": [ { "complianceDetails": { "driftedVersionInfo": "{Driver version in Host}", "baselineVersionInfo": "{Component version in Repo}" }, "complianceSummary": {

78 Drift management

"compliantStatus": "{Component compliance status}", "nonCompliantType": "{Non-Compliance Type}", "noncompliantTypeDescription": "{Non-Compliance Reason}" }, "componentDetails": { "vendorName": "{Vendor name}" "componentName": "{Component Name}", "driverName": "{Driver Name}", "packageType": "{Package Type}", "rebootRequired": "{Host reboot required (True or False)}", "recommendation": "{Recommendation (Yes or No)}" } } ], "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "{Hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Service Tag}", "model": "{Server Model Name}", "systemId": "{System ID}" } } ]

For more information, see Response body on page 96.

Get configuration drift report Description: Gets the configuration drift (system profile drift) details of a specific cluster ID. Ensure that system profile is created using OMIVV UI.

Command or URL: Services/DriftDetectionService/DriftReport/{id}/ConfigurationDriftDetails Method: GET

Authorization: Bearer authentication

Parameters:

Table 51. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Cluster ID. Use the cluster ID retrieved from /Services/ DriftDetectionService/ DriftReport or /Services/ ConsoleService/Consoles/{id} API.

N/A Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 52. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

Drift management 79

Table 52. HTTP response code (continued)

Code Description or response object

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "host": { "id": "{Host ID}", "href": "", "objectType": "Host", "hostip": "{Host IP}", "hostName": "{hostname}", "managementIP": "{iDRAC IP}", "serviceTag": "{Service Tag}", "model": "{Server Model Name}", "systemId": "{System ID}" }, "overallSummary": { "compliantStatus": "{Compliance Status}", "nonCompliantType": "{Non-compliant Type}", "noncompliantTypeDescription": "{Reason for non-compliance}" }, "componentDriftInfo": { "missingComponents": [ { "componentName": "{Component name}", "componentFqdd": "{Component FQDD}" }, { "componentName": "{Component name}", "componentFqdd": "{Component FQDD}" } ], "mismatchedComponents": [ { "componentName": "{Component name}", "componentFqdd": "{Component FQDD}", "subComponents": [], "containsSubComponent": false, "missingGroups": [], "misMatchedGroups": [ { "name": "{Component name}", "missingAttributes": [], "misMatchedAttirbutes": [ { "attributeName": "{Attribute Name}", "attributeLctValue": "{Attribute Value}", "attributeDeviceValue": "{Attribute value configured in server (enabled or disabled)" } ] } ] } ] } } ]

For more information, see Response body on page 96.

80 Drift management

Gets host details on specified drift detection jobs Description: Gets host details on specified drift detection jobs

Command or URL: /Services/DriftDetectionService/Jobs/{id}/Details Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Table 53. Parameters

Paramet er

Value Description Default value Parameter type

Data type

id (required) Drift detection job ID. Use the job ID received from /Services/ DriftDetectionService/Jobs. For more information, see Get all drift detection job on page 72.

N/A Path String

HTTP response code:

Table 54. HTTP response code

Code Description or response object

200 DriftDetectionJobHostData

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

[ { "status": "{Drift detection job status}", "startTime": "{Drift detection job start time}", "endTime": "{Drift detection job end time}", "host": "{Host IP}", "serviceTag": "{Host Service Tag}", "managementIP": "{iDRAC IP}", "cluster": "{Cluster name}", "vcenter": "{vCenter IP}" } ]

For more information, see Response body on page 96.

Drift management 81

Get subsystem health report (OMIVV Host Health)

Description: Gets the health of the server components such as Fan, Power Supply, and Memory. The information displayed here is real-time information.

Command or URL: Services/InventoryService/Hosts/{id}/SubSystemHealth Method: GET

Authorization: Bearer authentication

Parameters:

Table 55. Parameters

Parameter Value Description Parameter type Data type

id (required) Host ID. Use the host ID received from /Services/ ConsoleService/Consoles/{id} or /Services/ConsoleService/ Consoles/{Console-ID}/Hosts or /Services/ConsoleService/Consoles/ {id}/Hosts?serviceTags={service Tags 1}& serviceTags={service Tags 2}

Path String

vCenter privileges required: Dell.Inventory.Configure Inventory

HTTP response code:

Table 56. HTTP response code

Code Description or response object

200 OK

401 Authorization failure

404 Resource not found

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "overallHealth": "{{Overall health of a server}}", "subSystemHealth": [ { "subSystem": "{Fan}", "rollUpStatus": "CRITICAL" }, { "subSystem": "{Memory}", "rollUpStatus": "NORMAL" }, { "subSystem": "{PSU}", "rollUpStatus": "NORMAL" },

15

82 Get subsystem health report (OMIVV Host Health)

{ "subSystem": "{Processor}", "rollUpStatus": "CRITICAL" }, { "subSystem": "{Temperature}", "rollUpStatus": "NORMAL" }, { "subSystem": "{Voltage}", "rollUpStatus": "NORMAL" }, { "subSystem": "{Battery}", "rollUpStatus": "NORMAL" }, { "subSystem": "{PowerConsumption}", "rollUpStatus": "NORMAL" }, ] }

For more information, see Response body on page 96.

Get subsystem health report (OMIVV Host Health) 83

Host management

Topics:

Get the host overview Get host firmware inventory Get host warranty Get alarms and events Set alarms and events Get host power supply information Get host memory information Get host processors information

Get the host overview Description: Gets the host overview of successfully inventoried host.

Command or URL: /Services/InventoryService/Hosts/{id}/HostOverview Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Table 57. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/ Consoles/{Console-id}/Hosts API. For more information, see Get list of all hosts in vCenter on page 43.

N/A Path String

HTTP response code:

Table 58. HTTP response code

Code Description or response object

200 HostOverview

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "modelName": "{Server model name}",

16

84 Host management

"hostName": "{Host name}", "serviceTag": "{Host Service Tag}", "powerState": "{Power state (on or off)", "assetTag": "{Asset tag}", "warrantyDaysleft": {Number of warranty days left}, "warrantyStatus": {Warranty status}, "warrantyNotificationEnabled": {warranty notification enabled on the Settings page (True or False)}, "operatingSystem": "{OS name}", "operatingSystemVersion": "{OS version}", "HostcredentialProfileName": "{Host credential profile name}", "lastInventoryScan": "{Date and time when invetory is run last time}", "systemId": "{System ID}", "isBlade": {Blade Server (True or false)} , "chassisInfo": null, "frmState": "{firmware state}", "lockDownState": "{System Lockdown status (Enabled or Disabled)}", "biosFirmware": "{BIOS Firmware version}", "idracFirmware": "{iDRAC firmware version}", "idracIpaddress": "{iDRAC IP address}", "managementURI": "{CMC or OME-M URL}", "vcenterIpAddress": "{vCenter IP address}" }

For more information, see Response body on page 96.

Get host firmware inventory Description: Gets the host firmware inventory details. The information displayed here is real-time information.

Command or URL: /Services/InventoryService/Hosts/{id}/FirmwareInventory Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Table 59. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/ Consoles/{Console-id}/Hosts API. For more information, see Get list of all hosts in vCenter on page 43.

N/A Path String

HTTP response code:

Table 60. HTTP response code

Code Description or response object

200 FirmwareInventory

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Host management 85

Example Response:

{ "componentType": "{component type}", "elementName": "{Name of the software component}", "installationDate": "{component installation date}", "versionString": "{firmware version}", "componentId": "{componenent ID}", "deviceId": "{device ID}", "identityInfoValue": "{component type:component ID}", "instanceId": "{Unique identifier}", "isEntity": "{true or false}", "majorVersion": "{component major version}", "minorVersion": "{component minor version}", "releaseDate": null, "revisionNumber": "{revison number}", "serialNumber": "{serial number}", "status": "{installation status}", "subDeviceId": "{sub device ID}", "subVendorId": "{sub vendor ID}", "vendorId": "{vendor ID}"

For more information, see Response body on page 96.

Get host warranty Description: Gets the host warranty.

Command or URL: /Services/InventoryService/Hosts/{id}/Warranty Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Table 61. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/ Consoles/{Console-id}/Hosts API. For more information, see Get list of all hosts in vCenter on page 43.

N/A Path String

HTTP response code:

Table 62. HTTP response code

Code Description or response object

200 WarrantyInfo

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

86 Host management

Example Response:

{ "overAllStatus": "{overall status of warranty}", "warranty": [ { "hostName": "{host name}", "serviceTag": "{host Service Tag}", "id": {Host ID}, "serviceLevelCode": "{Types of warranty}", "serviceLevelDescription": "{Warranty description}", "provider": "{Provider}", "startDate": "{Warranty start date}", "endDate": "{warranty end date}", "daysLeft": "{number of days left}", "entitlementType": "{entitlement type}", "lastUpdated": "{The date and time when the warranty job is run}", "status": "{Warranty status of particular warranty component(active or expired)}" } ] }

For more information, see Response body on page 96.

Get alarms and events Description: Get alarms and events.

Command or URL: /Services/ConsoleService/AlarmsAndEvents Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Parameters: None

HTTP response code:

Table 63. HTTP response code

Code Description or response object

200 Get Alarms and Event

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

{ "alarmStatus": {hosts and chassis alarm status (True or false)}, "mprAlarmStatus": {MPR forecast status (true or false)}, "eventPostType": "{event posting level option}" }

For more information, see Response body on page 96.

Host management 87

Set alarms and events Description: Sets alarms and events.

Command or URL: /Services/ConsoleService/AlarmsAndEvents Method: PUT

Request Body:

{ "alarmStatus": {Host and chassis alarm status (true or false)}, "mprAlarmStatus": {MPR forecast alarm status(true or false)}, "eventPostType": "{event posting level options}" }

For more information about request body parameters, see Request body on page 92.

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Parameters: None

HTTP response code:

Table 64. HTTP response code

Code Description or response object

200 Updated Alarms and Event

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

Alerts and Event updated successfully

For more information, see Response body on page 96.

Get host power supply information Description: Gets the information about the host power supplies.

Command or URL: /Services/InventoryService/Hosts/{id}/Hardware/PowerSupplies Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Parameters:

Table 65. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/

N/A Path String

88 Host management

Table 65. Parameters

Parameter Value Description Default value Parameter type

Data type

Consoles/{Console-id}/Hosts API. For more information, see Get list of all hosts in vCenter on page 43.

HTTP response code:

Table 66. HTTP response code

Code Description or response object

200 Powersupply info

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

PowerSupplyInfo: { "powerSupplyCount": {PSU count} , "powerSupplies": [ { "type": "{Power supply type}", "location": "{PSU location}", "outputWatts": "{Output in watts}", "status": "{PSU status}" }, { "type": "{Power supply type}", "location": "{PSU location}", "outputWatts": {Output in watts}, "status": "{PSU status}" } ] }

For more information, see Response body on page 96.

Get host memory information Description: Gets the information about the host memories.

Command or URL: /Services/InventoryService/Hosts/{id}/Hardware/Memories Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

Host management 89

Table 67. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/ Consoles/{Console-id}/Hosts API.

N/A Path String

HTTP response code:

Table 68. HTTP response code

Code Description or response object

200 MemoryInfo

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

MemoryInfo: { "maxSizeMB": "{Max size}", "numSocketsTotal": {total number of sockets}, "numSocketsUsed": {Total number of sockets in use}, "memoryList": [ { "slot": "{Memory slot}", "size": "{Memory size}", "type": "{Memory type}" }, { "slot": "{Memory slot}", "size": "{Memory size}", "type": "{Memory type}" },

For more information, see Response body on page 96.

Get host processors information Description: Gets the information about host processors.

Command or URL: /Services/InventoryService/Hosts/{id}/Hardware/Processors Method: GET

Authorization: Bearer authentication

vCenter privileges required: Dell.Inventory.Configure Inventory

90 Host management

Table 69. Parameters

Parameter Value Description Default value Parameter type

Data type

id (required) Host ID. Get the host ID from / Services/ConsoleService/ Consoles/{Console-id}/Hosts API. For more information, see Get list of all hosts in vCenter on page 43.

N/A Path String

HTTP response code:

Table 70. HTTP response code

Code Description or response object

200 Processor

400 Operational Context not set

401 Authorization failure

403 vCenter permission denied

429 Too many requests

500 Internal Server error / timeout

For OMIVV-Specific error codes, see OMIVV-Specific error codes on page 112.

Example Response:

Processor: { "socket": "{CPU socket information}", "currentSpeed": {Current speed of CPU}, "brand": "{CPU brand}", "version": "{CPU version}", "coreCount": {core count} }

For more information, see Response body on page 96.

Host management 91

Request body

Start an OMIVV session Table 71. Start an OMIVV session API

Parameter Description

username OMIVV username. Only admin user is allowed to login to API.

password OMIVV password

Set vCenter context Table 72. Set vCenter context API

Parameter Description

consoleId vCenter ID

username vCenter username

domain vCenter domain

password vCenter password

Create and modify repository profile Table 73. Create and modify repository profile

Parameter Description

name Repository profile name

description Repository profile description

globalDefault Dell default repository profile. Currently, this parameter is not supported.

repoType Repository profile type (Firmware and Driver). You cannot edit this parameter while modifying the profile.

protocolType Protocol Type (NFS or CIFS). For NFS, credential is not required.For CIFS credentials are required. domain parameter is not mandatory.

uri Catalog location.

Catalog file path for firmware:

host:/share/filename.xml, host:/share/filename.gz, \\\ \host\\share\\filename.xml, or \\host\\share\\filename.gz.

Catalog file path for driver:

host:/share/foldername, \\\\host\\share\\foldername

username share username

domain Domain

A

92 Request body

Table 73. Create and modify repository profile (continued)

Parameter Description

password share password

synchronizeRepository Synchronize with current repository location (always set to true)

Create host or cluster level firmware inventory report Table 74. Host or cluster level firmware inventory report

Parameter Description

reportType Inventory report type (Host or Cluster)

hostID Host ID

clusterID Cluster ID

repoProfieID Repository profile ID

systemId System ID

bundleID Bundle ID

Create cluster or host level firmware update job Table 75. Cluster or host level firmware update job

Parameter Description

jobname Firmware update job name

jobdesc Firmware update job description

updateType Update type (FIRMWARE).

The value for update type is case-sensitive. Enter the value in upper case. OMIVV supports only FIRMWARE update type.

updateTartgetType Update Target Type (host or cluster).

Hostused to update single host

Clusterused to update the hosts under cluster

runLater Scheduled to run at a specified time (true or false)

runNow Run firmware update job now (true or false)

dateTime Firmware update job schedule (date and time format: YYYY- MM-DDTHH:MM:SSZ) for runLater.

Enter date and time in 24 hour UTC format.

firmwareRepoProfileID Repository profile ID. To get the repository profile details, run /Services/PluginProfileService/ RepositoryProfiles.

rebootOptions Reboot options.

Safe reboot: Apply Updates and Reboot after entering Maintenance mode. Applicable for cluster level, vSphere, vSAN, and datacenter host level.

Next reboot: Apply updates on next reboot. Applicable for vSphere, datacenter, and vSAN host level.

Request body 93

Table 75. Cluster or host level firmware update job (continued)

Parameter Description

Force reboot: Apply updates and force reboot without entering maintenance mode. Applicable for vSphere and datacenter host level.

NOTE: If you select the Next reboot or Force reboot options, the following parameters are not applicable: exitMaintenanceMode, migratePoweredOffAndSuspendedVMs, enterMaintenanceModetimeout, enterMaintenanceModeOption

preCheck Prerequisites check before firmware update.

Ensure that prerequisites checks are met in your environment:

For vSAN host and cluster:

DRS is enabled

Host is not already in maintenance mode

vSAN data objects are healthy

For vSphere host and cluster:

DRS is enabled.

The possible input value is true or false. Default value is true if the required value is not entered. For cluster-level firmware update, the only allowed value is true.

hostId Host ID. You can update only 64 hosts. To get the host ID, run /Services/ConsoleService/Consoles/{id}

clusterId Cluster ID. To get the cluster ID, run /Services/ ConsoleService/Consoles/{id}.

bundleId Bundle ID. To get the bundle ID, run /Services/RepositoryManagementService/ RepositoryData?bundleId={bundleId}

packageIDs package ID. To get the package ID, run /Services/ UpdateService/FWReport.

Package ID of the up-to-date components are not supported and firmware update job fails.

exitMaintenanceMode Exit maintenance mode after firmware update completes. If you disable this option, host remains in maintenance mode.

migratePoweredOffAndSuspendedVMs Move powered-off and suspended virtual machines to other hosts in cluster. Disabling this option disconnects VM until the host device is online.

resetIDracAndDeleteJobs Clears all the iDRAC jobs present in the Job Queue followed by iDRAC reset before updating firmware on the host.

If you do not mention any value while running API, OMIVV considers the settings configured on the Settings > Firmware Update Settings on the User Interface.

enterMaintenanceModetimeout Enter the Maintenance Mode timeout value between 601440 minutes. If the wait time goes beyond the specified time, the update jobs fail and enter maintenance task will be canceled

94 Request body

Table 75. Cluster or host level firmware update job (continued)

Parameter Description

or timed out. However, the components may get updated automatically when the host is restarted.

enterMaintenanceModeOption Enter maintenance mode option. This option is applicable for vSAN host and cluster.

Supported options are:

Ensure accessibility

Full Data migration

No data migration

Upload license to OMIVV Table 76. Upload license to OMIVV

Parameter Description

sharetype Repository share location (NFS/CIFS).

path License file path. The format of the license file path is \\\ \IP-hostname-fqdn\\pathfolder1\\pathfolder2\ \..\\pathfolderN\\ .

credential Username, domain, and password.

For NFS, credential is not required.

For CIFS credentials are required. domain parameter is not mandatory.

Set alarms and events Table 77. Set alarms and events

Parameter Description

alarmStatus Host and chassis alarm status (true or false)

mprAlarmStatus MPR alarm status(true or false)

eventPostType Event posting level options. Available options are Do not post any events, Post all events, Post only critical and warning events, and Post only virtualization-related critical, and warning events.

Request body 95

Response body This topic describes each parameter in the example response.

Start an OMIVV session Table 78. Start an OMIVV session

Field Type Description

accessToken String Token ID

tokenType String Token type

expiresAt Integer and string Expiry date and time for token ID.

Get list of vCenter and host license Table 79. Get list of vCenter and host license

Field Type Description

id String License ID

entitlementID String Entitlement ID

licenseType Integer and string License Type (Standard or Evaluation)

maxHosts String Number of maximum hosts allowed

startDate Integer and string The date when the license is uploaded to OMIVV

expirationDate Integer and string License expiry date

duration String License duration

licenseStatus String License status

Get host and vCenter license details, upload vCenter license Table 80. Get host and vCenter license details, upload vCenter license

Field Type Description

id String License ID

entitlementID String Entitlement ID

licenseType String License Type (Standard or Evaluation)

maxHosts String Number of maximum hosts allowed

startDate Integer and string The date when the license is uploaded to OMIVV

expiryDate Integer and string License expiry date

duration String Duration of the license

B

96 Response body

Table 80. Get host and vCenter license details, upload vCenter license (continued)

Field Type Description

licenseStatus String Status of license (ACTIVE, INACTIVE, and EXPIRED)

Get list of registered vCenters Table 81. Get list of registered vCenters

Field Type Description

id String vCenter ID

hostname String vCenter Hostname or FQDN

ip String vCenter IP

Get list of all hosts in vCenter Table 82. Get list of all hosts in vCenter

Field Type Description

id String Host ID

servicetag String service tag of a host

Get host details Table 83. Get host details

Field Type Description

id String Host ID

serviceTag String Service Tag of host

hostip String Host IP

hostName String Hostname

managementIP String iDRAC IP

model String Server model name

systemId String System ID

Get vCenter tree view of datacenter Table 84. Get vCenter tree view of datacenter

Field Type Description

id String vCenter ID or datacenter ID or cluster ID or Host ID

hostname String vCenter hostname or FQDN.

The hostname value is displayed in the response only if the hostname

Response body 97

Table 84. Get vCenter tree view of datacenter (continued)

Field Type Description

is configured properly using DNS. Otherwise, hostname value displayed as null or blank.

ip String vCenter IP

name String Datacenter name or cluster name

registeredWithVlcm Boolean vSphere Lifecycle Manager (vLCM) registration status (true or false)

Get cluster details Table 85. Get cluster details

Field Type Description

id String Cluster ID or host ID

name String Cluster name

cluster type String Cluster type (vSAN or vSphere)

hostip String Host IPv4

managementIP String iDRAC IP

hostname String vCenter host name

serviceTag String Service Tag of the server

model String Server model name

systemId String System ID

Get cluster health Table 86. Get cluster health

Field Type Description

clusterId String Cluster ID

drsState String DRS state (Enabled or Disabled)

vsanObjectHealth String vSAN object health status (Healthy, Unhealthy, or N/A)

Get list of cluster profiles Table 87. Get list of cluster profiles

Field Type Description

id String Cluster profile ID

profileName String Cluster profile name

description String Cluster profile description

98 Response body

Get details of cluster profiles Table 88. Get details of cluster profiles

Field Type Description

id String Cluster ID or cluster profile ID or repository profile ID or system profile ID or drift detection job ID

profileName String Cluster profile name or repository profile name or system profile name

description String Description of cluster profile or repository profile or system profile

name String Cluster name

repoType String Repository profile type (Driver or Firmware)

status String Drift detection job status

Get list of repository profiles Table 89. Get list of repository profiles

Field Type Description

id String vCenter ID

profileName String Repository profile name

Get repository profile details Table 90. Get repository profile details

Field Type Description

id String Repository profile ID

name String Repository profile name

description String Repository profile description.

globalDefault Boolean Dell EMC default catalog repository profile (True). Factory-created firmware repository profile.

repoType String Repository Type (Firmware or Driver)

protocolType String Protocol Type (NFS, CIFS). For NFS, credential is not required.For CIFS credentials are required. domain parameter is not mandatory.

uri String Catalog location

synchronzeRepository Boolean Synchronize with currently repository location (Enabled or Disabled)

username String share username

domain String domain name

password String share password

Response body 99

Create and modify repository profile Table 91. Create and modify repository profile

Parameter Description

name Repository profile name

description Repository profile description

globalDefault Dell default repository profile. Currently, this parameter is not supported.

repoType Repository profile type (Firmware and Driver). You cannot edit this parameter while modifying the profile. Ensure that you enter value for repository type in upper case letters.

protocolType Protocol Type (NFS or CIFS). For NFS, credential is not required.For CIFS credentials are required. domain parameter is not mandatory.

uri Catalog location

username share username

domain Domain

password share password

synchronizeRepository Synchronize with current repository location (always set to true)

Get firmware repository inventory details Table 92. Get firmware repository inventory details

Field Type Description

repoProfileID String Repository profile ID

bundleID String Bundle ID

name String Bundle name

description String Bundle description

model String Server Model

targetOS String Target host OS name. Windows target OS used for firmware update using iDRAC.

systemId String System ID

packageID String Component unique package ID

rebootRequired Boolean Host reboot required (True or False)

releaseDate Integer and string Component release date and month

componentID String Supported hardware component ID

deviceID String Supported hardware device ID

subDeviceID String Supported hardware sub device ID

subVendorID String Supported hardware sub vendor ID

vendorID String Supported hardware sub vendor ID

100 Response body

Create host level firmware inventory report Table 93. Create host level firmware inventory report

Field Type Description

reportType String Inventory report type

id String Host ID

hostip String Host IPv4 or FQDN

hostName String Hostname

managementIP String iDRAC IP

serviceTag String Host Service Tag

model String Server model

systemId String System ID

componentType String Component type

packageId String Component unique package ID

component String Component name

currentVersion String Current installed component version

availableVersion String Available component version

criticality String Importance of component update (Urgent, Recommended, Optional, Security, Performance)

updateAction String Component update status (Up to date, downgrade, upgrade)

scheduled String Component update job scheduled

rebootRequired Boolean Host reboot required (True or False)

releaseDate Integer and String Component release date and month

Create cluster level firmware inventory report Table 94. Create cluster level firmware inventory report

Field Type Description

reportType String Inventory report type

id String Host ID or cluster ID

hostip String Host IPv4 or FQDN

hostName String Hostname

managementIP String iDRAC IP

serviceTag String Host Service Tag

model String Server model

systemId String System ID

componentType String Component type

packageId String Component unique package ID

component String Component name

Response body 101

Table 94. Create cluster level firmware inventory report (continued)

Field Type Description

currentVersion String Current installed component version

availableVersion String Available component version

criticality String Importance of component update (Urgent, Recommended, Optional, Security, Performance)

updateAction String Component update status (up to date, downgrade, upgrade)

scheduled String Component update job scheduled

rebootRequired Boolean Host reboot required (True or False)

releaseDate Integer and String Component release date and month

Create host or cluster level firmware update job Table 95. Create host or cluster level firmware update job

Field Type Description

id String Firmware update job ID

Status String Firmware update job status.

Get list of host firmware update jobs Table 96. Get list of host firmware update jobs

Field Type Description

id String Firmware update job ID

status String Status of the firmware update job (Scheduled, Cancelled, Staging, Success, and Failed)

Get host or cluster firmware update job details Table 97. Get host or cluster firmware update job details

Field Type Description

id String Firmware update job ID or host ID

status String Status of the firmware update job

jobname String Firmware update job name

jobdesc String Firmware update job description

updateType String Update type

runNow Boolean Run update job now

runLater Boolean Run update job later

dateTime Integer and String Update job schedule date and time

repoProfileID String Firmware repository profile ID

102 Response body

Table 97. Get host or cluster firmware update job details (continued)

Field Type Description

hostip String Host IPv4 or FQDN

hostName String Hostname

managementIP String IDRAC IP

serviceTag String Host Service Tag

model String Server Model

systemId String System ID

bundleId String Bundle ID

packageIDs String Component unique package ID

rebootOptions String Reboot options.

Safe reboot: Apply Updates and Reboot after entering Maintenance mode. Applicable for cluster level, vSphere, vSAN, and datacenter host level.

Next reboot: Apply updates on next reboot. Applicable for vSphere, datacenter, and vSAN host level.

Force reboot: Apply updates and force reboot without entering maintenance mode. Applicable for vSphere and datacenter host level.

precheck Boolean Prerequisites check before firmware update.

Ensure that prerequisites checks are met in your environment:

For vSAN host and cluster:

DRS is enabled

Host is not already in maintenance mode

vSAN data objects are healthy

For vSphere host and cluster: DRS is enabled

migratePoweredOffAndSuspendedVMs Boolean Move powered-off and suspended virtual machines to other hosts in cluster. Disabling this option disconnects VM until the host device is online.

resetiDracAndDeleteJobs Boolean Clears all the iDRAC jobs present in the Job Queue followed by iDRAC reset before updating firmware on the host.

If you do not mention any value while running API, OMIVV considers the settings configured on the Settings > Firmware Update Settings on the User Interface.

enterMaintenanceModetimeout String Enter the Maintenance Mode timeout value between 601440 minutes.

Response body 103

Table 97. Get host or cluster firmware update job details (continued)

Field Type Description

If the wait time goes beyond the specified time, the update jobs fail and enter maintenance task will be canceled or timed out. However, the components may get updated automatically when the host is restarted

enterMaintenanceModeOption String Enter maintenance mode option. This option is applicable for vSAN host and cluster.

Supported options are:

Ensure accessibility

Full Data migration

No data migration

Get list of system profiles and get system profile details Table 98. Get list of system profiles and get system profile details

Field Type Description

id String system profile ID

name String system profile name

description String profile description

systemProfileType String system profile type (basic or advanced)

referenceESXiHostNameOrIP String Reference server hostname or hostIP

referenceManagementIP String iDRAC IP

referenceiDRACType String iDRAC license type

serviceTag String Service Tag of a host

serverModel String Server model name

dateCreated String Date and time when the profile is created

dateModified String Date and time when the profile is modified

lastModifiedBy String Details of the user who modified the profile

Get firmware drift report Table 99. Get firmware drift report

Field Type Description

id String Host ID

hostip String Host IP

hostname String Hostname

104 Response body

Table 99. Get firmware drift report (continued)

Field Type Description

managementIP String iDRAC IP

Service Tag String Service Tag of the host

model String Server Model Name

systemID String System ID

complianceStatus String Compliance Status.

You may get any of the following values for compliant status:

VERSION_MISMATCH

NEW COMPONENT

COMPONENT MISSING/ATTRIBUTE_MISMATCH

NOT_APPLICABLE

nonCompliantType String Reason for non-compliance

noncompliantTypeDescription String Detailed description for non-compliance

componentID String Component ID

packageID String Package ID

bundleID String Bundle ID

instanceID String FQDD

componentName String Component Name

componentType String Component Type

componentTypeDisplay String Component Type Display. For example, firmware is displayed as FRMW.

upgrade Boolean Component Upgrade required (True or False)

criticality String Importance of component update

rebootRequired Boolean Host reboot required (true or false)

deviceID String Device ID

subDeviceID String Sub device ID

subVendorID String Sub Vendor ID

vendorID String Vendor ID

driftedVersionInfo String Component version in host

baselineVersionInfo" String component version in repository

Get drift report for all clusters Table 100. Get drift report for all clusters

Field Type Description

id String Cluster ID or cluster profile ID.

name String Cluster name or cluster profile name

Response body 105

Table 100. Get drift report for all clusters (continued)

Field Type Description

clusterComplianceStatus String Compliance status of the cluster (Complaint or non-compliant)

systemprofileName String System profile name. If any system profile is not associated with cluster profile, profile name is displayed as null.

fmRepoProfileName String Firmware repository profile name. If any firmware repository profile is not associated with cluster profile, profile name is displayed as null.

driverRepoProfileName String Driver repository profile name. If any driver repository profile is not associated with cluster profile, profile name is displayed as null.

Get drift report for specific cluster Table 101. Get drift report for specific cluster

Field Type Description

id String Cluster ID or cluster profile ID

name String Cluster name or cluster profile name

clusterComplianceStatus String Cluster compliance status

complianceStatus String Firmware or driver or configuration drift compliance status

fwDriftDetails String Firmware drift details. If any firmware repository profile is not associated with cluster profile, fwDriftDetails value is displayed as null.

driverDriftDetails String Driver drift details. If any driver repository profile is not associated with cluster profile, driverDriftDetails parameter value is displayed as null.

configurationDriftDetails String Configuration drift details. If any system profile is not associated with cluster profile, configurationDriftDetails parameter value is displayed as null.

nonCompliantHostList String List of non-complaint host

notApplicableHostList String List of not applicable hosts

compliantHostList String List of compliant hosts

Get driver report Table 102. Get driver report

Field Type Description

compliantStatus String Compliance status

nonCompliantType String Non-compliance type

106 Response body

Table 102. Get driver report (continued)

Field Type Description

noncompliantTypeDescription String Reason for non-compliance

vendorName String Component vendor name

componentName String Component name

driverName String Driver name

packageType String Package type (Component, Bulletin)

rebootRequired Boolean Host reboot required (true or false)

recommendation Boolean Recommendation (Yes or No)

compliantStatus String Complaint status

nonCompliantType String non-compliance type. If the driver is not installed, the noncomplaintType displays NEW_COMPONENT.

noncompliantTypeDescription String Reason for non-compliance

driftedVersionInfo String Installed driver version. If driver is not installed, driftedVersionInfo parameter value is displayed as N/A

baselineVersionInfo String Driver component version in repository

id String Host ID

hostip String Host IP

hostname String Hostname

managementIP String iDRAC IP

serviceTag String Service Tag of host

model String Server model name

systemId String System ID

Get configuration drift report Table 103. Get configuration drift report

Field Type Description

id String Host ID

hostip String Host IP

hostName String Hostname

managementIP String iDRAC IP

serviceTag String Service Tag of host

model String Server Model Name

systemId String System ID

compliantStatus String Comppliance Status

nonCompliantType String Non-complaint Type

noncompliantTypeDescription String Reason for non-compliance

componentName String Mismatched component name

Response body 107

Table 103. Get configuration drift report (continued)

Field Type Description

componentFqdd String Component FQDD

subComponents String Sub components

containSubComponent Boolean Presence of child components

missingGroups String Missing groups from source and target system profile

misMatchedGroups String List of mismatched group names

name String Attribute name

missingAtributes String Attributes which are present in source but not present in target

misMatchedAtributes String List of mismatched attributes

attributeName String Attribute Name

attributeLctValue String Baseline value

attributeDeviceValue String Attribute value configured in server (Enabled or Disabled)

Get subsystem health report (OMIVV Host Health) Table 104. Get subsystem health report (OMIVV Host Health)

Field Type Description

overallHealth String Overall health status of servers

subsystem String Subsystem name (For example, Fan, Memory, PSU, Processor, Temperature, Voltage, Battery, PowerConnection)

rollUpStatus String Status of the components (Normal, Critical, and Warning)

Get the host overview Table 105. Get the host overview

Field Type Description

modelName String server model name

hostName String host name

seriveTag String Host service tag

powerState Boolean Power State (on or off)

assetTag String Asset tag

warrantyDaysleft Integer Number of warranty days left

warrantyStatus String Warranty status

warrantyNotificationEnabled Boolean warranty notification enabled on the Settings page (True or False)

operatingSystem String OS name

108 Response body

Table 105. Get the host overview (continued)

Field Type Description

operatingSystemVersion String OS version

HostcredentialProfileName String Host credential profile name

lastInventoryScan Integer Date and time when inventory is run last time

systemId String System ID

isBlade Boolean Blade server (true or false)

chassisInfo String chassis information

frmState String firmware state

lockDownState Boolean system lookdown mode status (enabled or disabled)

biosFirmware String BIOS firmware version

idracFirmware String iDRAC firmware version

idracIpaddress String iDRAC IP address

managementURI String CMC or OME-M URL

vcenterIpAddress String vCenter IP address

Get host firmware inventory Table 106. Get host firmware inventory

Field Type Description

componentType String component type

elementName String name of the software component

installationDate String component installation date

versionString String firmware version

componentId String component ID

deviceId String device ID

identityInfoValue String component type: component ID

instanceId String unique identifier

isEntity Boolean The IsEntity property is used to indicate whether the SoftwareIdentity corresponds to a discrete copy of the software component or is being used to convey descriptive and identifying information about software that is not present in the management domain. A value of TRUE indicates that the SoftwareIdentity instance corresponds to a discrete copy of the software component. A value of FALSE indicates that the SoftwareIdentity instance does not correspond to a discrete copy of the Software

majorVersion String component major version

Response body 109

Table 106. Get host firmware inventory (continued)

Field Type Description

minorVersion String component minor version

releaseDate Integer component release date

revisionNumber String revison number

serialNumber String serial number

status String installation status

subDeviceId String sub device ID

subVendorId String sub vendor ID

vendorId String vendor ID

Get host warranty Table 107. Get host warranty

Field Type Description

overAllStatus String overall status of warranty

hostName String host name

serviceTag String host service tag

id number host ID

serviceLevelCode String types of warranty

serviceLevelDescription String warranty description

provider String provider

startDate number warranty start date

endDate number warranty end date

daysLeft number number of days left

entitlementType String entitlement type

lastUpdated number the date and time when the warranty job is run

status String Warranty status of particular warranty component(active or expired)

Get alarms and events, Set alarm and events Table 108. Get alarms and events, Set alarm and events

Field Type Description

alarmStatus boolean Host and chassis alarm status (true or false)

mprAlarmStatus Boolean Memory Page Retire (MPR) forecast alarm status (true or false)

eventPostType String Event posting level options. Available options are Do not post any events, Post all events, Post only critical and warning

110 Response body

Table 108. Get alarms and events, Set alarm and events (continued)

Field Type Description

events, and Post only virtualization- related critical, and warning events.

Get host power supply information Table 109. Get host power supply information

Field Type Description

powerSupplyCount String PSU count

type String PSU type

location String PSU location

outputWatts String Output in watts

status String PSU status

Get host memory information Table 110. Get host memory information

Field Type Description

maxSizeMB String Maximum memory size

numSocketsTotal String total number of sockets

numSocketsUsed String total number of sockets in use

slot String memory slot

size String memory size

type String memory type

Get host processors information Table 111. Get host processors information

Field Type Description

socket String CPU socket information

currentSpeed String Current speed of CPU

brand String CPU brand

version String CPU version

coreCount String core count

Response body 111

OMIVV-Specific error codes Table 112. OMIVV-specific error codes

Code Description

11501 Number of active sessions limit exceeded.

11502 Number of active client limit exceeded.

11503 Input user data is not valid to process the login request.

11504 Exception occurred in token generation.

11505 User is not authorized to process the login request.

11506 Not a valid API Action specified.

11507 Account is locked.

11508 Request limit per minute exceeded.

11509 Empty Action request. Connection refused.

11510 User is not authorized to process the login request. Account Locked.

11601 Invalid Token

11602 Invalid path

11603 Internal Server Error

11604 Public key not found

11605 Token has already expired

10001 vCenter is not registered with appliance.

10002 This instance of OpenManage Integration is already registered with vCenter.

10003 Make sure vCenter is reachable and services are running.

10004 Failed to login to vCenter due to incorrect username or password.

10005 Invalid Parameters. vCenter registration data is not proper.

10006 Invalid Parameter.Provide valid vCenter IP/Hostname.

10101 Invalid console id {0}

10102 No vCenter is registered with appliance for the given id {0}

10103 vCenter tree is empty for id {0}

10201 Invalid http header does not contain authorization token.

10202 Invalid http header is empty.

10203 Invalid Parameters. vCenter context request parameters is not proper.

10205 Failed to login to vCenter. Make sure vCenter is running and credentials are valid.

C

112 OMIVV-Specific error codes

Table 112. OMIVV-specific error codes (continued)

Code Description

10206 Invalid Parameters. No vCenter is registered with the appliance.

10301 Cluster does not exist.

10302 The cluster with name {0} and id {1} has been deleted or has zero hosts.

10303 The cluster with name {0} and id {1} has been deleted or has zero OMIVV managed hosts.

10304 The cluster with name {0} and id {1} is not associated with Cluster Profile.

10305 The {0} is invalid host-id.

10401 The requestinfo is null or request does not contain serverIP details.

10402 Unable to find the cluster details because cluster is not part of the selected vCenter: {0}

10601 Repository profile does not exist.

10603 The NFS share path is invalid. The supported format is host:/ share/file or host:/share/folder

10604 Repository profile already exists.

10605 Repository profile name is invalid.

10606 Unable to access the NFS share specified. The supported format is host:/share/folder

10607 Authorization failed to access the remote share. Check the provided credentials and/or write permissions on the share.

10608 Profile name must be Dell Default Catalog for Global firmware repository.

10609 Validated MX stack Catalog online URI must be https://downloads.dell.com/catalog/ ValidatedMXstack_Catalog.xml.gz

10610 Authorization failed to access the remote share. Check the provided credentials and/or write permissions on the share. The supported format is \\\\host\\share\\filename.xml or \\ \\host\\share\\filename.gz

10611 Unable to access the NFS share specified.

10612 Unable to access the HTTP/HTTPS share {0}

10613 Unsupported Protocol

10614 Global Repository is of type FIRMWARE only.

10615 Repository type can not be changed.

10616 Profile name must be Validated MX stack Catalog

10617 Protocol should be HTTP for the specified URI.

10618 Protocol should be HTTPS for the specified URI.

10619 Name is limited to only 250 characters.

10620 Description is limited to only 400 characters.

10901 Cluster profile is not created.

OMIVV-Specific error codes 113

Table 112. OMIVV-specific error codes (continued)

Code Description

11001 Cluster profile does not exist.

11002 Drift detection Job does not exist.

10701 Invalid repository profile {0}.

10702 The repository {0} is not downloaded or refreshed.

10703 An exception occurred while loading the repository {0} : {1}.

10704 Invalid bundleId {0}.

10705 Invalid systemId {0}.

10706 Driver repository profiles {0} are not supported.

10802 For vSAN-enabled cluster, the cluster or host level firmware inventory is not supported for Dell Default Catalog and Validated MX Stack Catalog firmware repository profiles.

10804 Unable to find the cluster details: {0}.

10808 Firmware inventory report at host level does not allow empty or null hostId value.

10809 System BundleID does not allow empty or null value.

10810 vCenter with id {0} not found in registered list.

10812 Unable to find the cluster details using: {0}.

10814 The host is not compliant because the Hypervisor status is non- compliant.

10815 Only HOST/CLUSTER firmware inventoryType is allowed.

10816 Firmware inventory report does not allow empty or null BundleAssociations value.

10817 SystemId does not allow empty or null value.

10818 Unable to find the applicable files components using BundleAssociations.

10820 Unable to find the HostName using hostAddress {0}.

10821 Firmware inventory report at cluster level does not allow empty or null clusterId.

10822 Unable to retrieved vcenter tree using vCenterAddress {0}.

10823 The host is not compliant because the host is not associated to Host Credential Profile.

10824 The host is not compliant because the CSIOR status is non- compliant.

10825 Unable to find the Host managementIP using hostAddress {0}.

11301 preCheck is not applicable for rebootOptions with values FORCEREBOOT or NEXTREBOOT.

11302 enterMaintenanceModeOption, exitMaintenanceMode, migratePoweredOffAndSuspendedVMs, and enterMaintenanceModetimeout are not applicable for rebootOptions with values FORCEREBOOT or NEXTREBOOT.

11303 firmwareUpdateTargets cannot be null or empty.

11304 More than one firmwareUpdateTargets is not supported for HOST firmware update.

114 OMIVV-Specific error codes

Table 112. OMIVV-specific error codes (continued)

Code Description

11305 Invalid job schedule.

11306 Invalid jobSpecificCustomConfiguration details : {0}.

11307 rebootOptions cannot be null or empty.

11308 Invalid jobSpecificCustomConfiguration details. Enter the enterMaintenanceModetimeout value between 60 to 1440 minutes.

11309 Invalid input. The value for preCheck should be true for cluster update.

11310 exitMaintenanceMode value should be true for cluster update.

11312 Invalid enterMaintenanceModeOption.

11313 enterMaintenanceModeOption is not applicable for non-vSAN host or cluster.

11315 packageIDs cannot be null or empty.

11316 Unsupported jobSpecificCustomConfigurations. Only 5 job specific configurations are supported.

11317 Duplicate Host id : {0}.

11318 Component is up to date with package id: {0}.

11319 Invalid packageId {0}.

11320 Invalid packageId.

11321 Invalid input preCheck is applicable only for host managed under cluster.

11322 Unable to find the host details in inventory for host : {0}.

11323 The host with id {0} is not associated to credential profile.

11324 The host is not compliant {0}.

11325 The following firmware update jobs are currently scheduled {0} for host/cluster {1}.

11326 Invalid dateTime: {0}.

11327 An exception occurred while setting date and time schedule : {0}.

11328 Empty or null value is not allowed for job name.

11329 The job name is too long. Job name allows only 255 characters.

11330 The entered job name already exists {0}.

11331 The job Description is too long. Job Description allows only 2000 characters.

11332 Do not enter true or false or null values for both the runNow and runLater job schedules at a time.

11333 Schedule the job at least 30 minutes after the UTC current time: {0}.

11334 The dateTime values for job schedular should not be null or empty.

11335 The dateTime used for job schedular is invalid.

OMIVV-Specific error codes 115

Table 112. OMIVV-specific error codes (continued)

Code Description

11336 The dateTime format for job schedular should be : yyyy-MM- dd'T'HH:mm:ssZ.

11337 Host {0} is not part of the cluster.

11338 All hosts in the cluster are non-compliant.

11339 The host is not compliant {0}.

11340 rebootOptions with NEXTREBOOT is not applicable for runLater.

11341 rebootOptions with NEXTREBOOT is applicable only for HOST level Update Job.

11342 rebootOptions with FORCEREBOOT is not applicable for runLater.

11343 rebootOptions with FORCEREBOOT is applicable only for HOST level Update Job.

11344 rebootOptions with FORCEREBOOT is applicable only for non- vSAN HOST level Update Job.

11345 Driver updates are not supported.

11346 bundleId cannot be null or empty.

11347 hostId cannot be null or empty.

11349 clusterId cannot be null or empty.

11350 Invalid clusterId {0}.

11351 For vSAN-enabled cluster, the cluster or host level update job is not supported for Dell Default Catalog and Validated MX Stack Catalog firmware repository profiles.

11451 Firmware update job is not present.

11452 Invalid Job id.

11453 Job id {0} not found.

11455 Job ID {0} is not valid to purge the job. The job must be in canceled, or successful, or failed state.

11456 Job id {0} is not a firmware update job.

11457 Task is already triggered to cancel the job {0}.

11458 The cancel job task is already completed for {0}. You cannot create the task to cancel the job for already completed task.

11701 Exception occured while retrieving firmware drift details.

11702 Exception occured while retrieving configuration drift details

11703 Exception occured while retrieving driver drift details

11704 Firmware drift is not calculated for cluster {0}. Ensure drift detection job is completed successfully.

0 Unknown exception occured.

12501 Input request is not valid.

12502 Operational Context not set.

12503 Invalid path parameter.

12504 Invalid Parameters.

116 OMIVV-Specific error codes

Table 112. OMIVV-specific error codes (continued)

Code Description

12505 vCenter for which the Operational Context was set got unregistered with the appliance.

12506 Could not find the request header information.

12507 Could not find the Bearer Authorization token.

12508 Invalid Server Context.

12509 Error in connecting to vCenter.

12510 vCenter User is not authorized to access this URI.

12511 URI not supported by OMIVV.

12512 vCenter ID {0} is not available in the registered list.

12001 Internal Server Error/Timeout occurred: {0}.

12002 Unable to schedule the firmware update job.

12003 Unable to get applicable files.

12004 Unable to get the applicable software files.

12005 Unable to get the applicable software bundles.

12006 An exception occurred while finding the vSAN cluster details.

12007 Unable to process.

12008 vCenter id {0} is not is not registered with appliance.

12009 Invalid vCenter details.

12010 An unknown exception was recorded in the logs.

13001 No licenses found.

13002 License with id {0} does not exist.

13003 The detected older license format is not supported in this version. To get an updated license, send an email to Download_Software@Dell.com with original order number and contact details.

13004 Invalid license issuer. Use the license issued by Dell and ensure that the license has not been modified.

13005 Installing an evaluation license is not permitted when a standard license exists. Upload only a standard license.

13006 Invalid signature on the license file. Upload a valid license file.

13007 Unable to parse license file. Ensure that the license is issued for OMIVV and has not been modified.

13008 Your license is expired. Upload a new license to use this feature.

13009 License contains invalid values. To get an valid license, send an email to Download_Software@Dell.com with original order number and contact details.

13010 License already in use. Select a different license file, and try again.

13011 License is not for this application. Select a different license file, and try again.

13012 Parameters are empty. Enter proper input values.

OMIVV-Specific error codes 117

Table 112. OMIVV-specific error codes (continued)

Code Description

13013 File path is not matching the mentioned sharetype parameter. Enter proper license file path.

13014 Unable to read the file.

13015 File content is empty. Upload a proper license file.

13016 Unable to access the file or file has insufficient permission. Enter proper license file and provide permission to read the file.

13017 Failed to authenticate the CIFS share. Enter credentials to read the file.

13018 Unable to access the file.

13019 Upload a valid XML license file.

13020 The domain name format is not correct. Enter domain name in proper format.

13021 The username format is not correct. Enter username in proper format.

13022 Unable to upload the license file because the provided lic

Manualsnet FAQs

If you want to find out how the V5.3 Dell works, you can view and download the Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide on the Manualsnet website.

Yes, we have the API Guide for Dell V5.3 as well as other Dell manuals. All you need to do is to use our search bar and find the user manual that you are looking for.

The API Guide should include all the details that are needed to use a Dell V5.3. Full manuals and user guide PDFs can be downloaded from Manualsnet.com.

The best way to navigate the Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide is by checking the Table of Contents at the top of the page where available. This allows you to navigate a manual by jumping to the section you are looking for.

This Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide consists of sections like Table of Contents, to name a few. For easier navigation, use the Table of Contents in the upper left corner.

You can download Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide free of charge simply by clicking the “download” button in the upper right corner of any manuals page. This feature allows you to download any manual in a couple of seconds and is generally in PDF format. You can also save a manual for later by adding it to your saved documents in the user profile.

To be able to print Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide, simply download the document to your computer. Once downloaded, open the PDF file and print the Dell OpenManage Enterprise VMware vCenter V5.3 Software API Guide as you would any other document. This can usually be achieved by clicking on “File” and then “Print” from the menu bar.