# US 10,771,344 B2 · Discovery of hyper-converged infrastructure devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,771,344 B2
- Document ID: US10771344B2
- Status: Granted
- Kind: B2
- Application number: 16/230,661
- Filed: 2018-12-21
- Published: 2020-06-25
- Granted: 2020-09-08
- Earliest claimed: 2018-12-21
- Assignees: ServiceNow, Inc.
- Applicants: ServiceNow, Inc.
- Inventors: Robert Bitterfeld; Boris Erblat; Aviya Aron; Bary Solomon; Daniel Badyan
- Web page: https://patentgrep.com/patent/US10771344B2

## CPC

- H04L 41/122: of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
- G06F 16/182: Distributed file systems
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- H04L 41/0853: by actively collecting configuration information or by backing up configuration information
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system may include a database, where a managed network includes a computing cluster that provides networking, storage, and virtualization services distributed across a plurality of computing devices, where each computing device can execute one or more respective software applications and comprises: (i) a respective controller, and (ii) a respective storage device, and where the storage devices of the plurality of computing devices collectively form a storage pool. The system may also include a proxy server application configured to: request and receive computing cluster data that identifies the computing cluster; request and receive storage pool data that identifies the storage pool; request and receive storage container data that identifies storage containers of the storage pool; request and receive controller data that identifies the controllers of the plurality computing devices; and provide, to the database, the computing cluster data, the storage pool data, the storage container data, and the controller data.

## Claims

### Claim 1

A system comprising:
a database disposed within a remote network management platform that is associated with a managed network, wherein the managed network comprises a computing cluster that provides networking, storage, and virtualization services distributed across each of a plurality of computing devices that are communicatively coupled via a local-area network, wherein each computing device is configured to execute one or more respective software applications and comprises: (i) a respective controller, and (ii) a respective storage device, and wherein the storage devices of the plurality of computing devices collectively form a storage pool for the computing cluster; and
a proxy server application disposed within the managed network and configured to perform operations of a computing cluster discovery pattern, the operations comprising:
requesting and receiving, from a first controller of one of the plurality of computing devices, computing cluster data that identifies the computing cluster;
requesting and receiving, from the first controller, storage pool data that identifies the storage pool;
requesting and receiving, from the first controller, storage container data that identifies storage containers of the storage pool, wherein a storage container includes a subset of available storage in the storage pool;
requesting and receiving, from the first controller, controller data that identifies the controllers of the plurality computing devices; and
providing, to the database, the computing cluster data, the storage pool data, the storage container data, and the controller data.

### Claim 2 (depends on 1)

The system of claim 1, wherein the database stores: (i) software application data that identifies software applications that are executed by the plurality of computing devices, (ii) computing device data that identifies the plurality of computing devices, and (iii) storage device data that identifies the storage devices of the plurality of computing devices.

### Claim 3 (depends on 2)

The system of claim 2, wherein the software application data, the computing device data, and the storage device data are determined by an initial discovery performed by the proxy server application.

### Claim 4 (depends on 2)

The system of claim 2, further comprising:
a server device disposed within the remote network management platform and configured to, based on the software application data, the computing device data, and the storage device data, map each software application to a corresponding computing device that executes the software application and each storage device to a corresponding computing device that houses the storage device.

### Claim 5 (depends on 2)

The system of claim 2, further comprising:
a server device disposed within the remote network management platform and configured to:
use the software application data to determine a type of the computing cluster;
based on the type of the computing cluster, select the computing cluster discovery pattern to discover the computing cluster; and
responsive to selecting the computing cluster discovery pattern, send an instruction to the proxy server application to perform the operations of the computing cluster discovery pattern.

### Claim 6 (depends on 1)

The system of claim 1, further comprising:
a server device disposed within the remote network management platform and configured to, based on the computing cluster data, the storage pool data, the storage container data, and the controller data, generating a hierarchical representation of the computing cluster, wherein the hierarchical representation is indicative of relationships between components of the computing cluster.

### Claim 7 (depends on 6)

The system of claim 6, wherein generating the hierarchical representation of the computing cluster comprises:
mapping the plurality of computing devices to the computing cluster;
mapping the storage pool to the storage devices;
mapping the storage containers to the storage pool; and
mapping each respective controller to a corresponding computing device associated with the respective controller.

### Claim 8 (depends on 7)

The system of claim 7, wherein mapping the plurality of computing devices to the computing cluster comprises:
determining, from the computing cluster data, a first computing cluster unique identifier (UID) that identifies the computing cluster;
determining, from computing device data stored in the database, a second computing cluster UID that identifies a particular computing cluster associated with the plurality of computing devices;
determining that the first computing cluster UID and the second computing cluster UID are identical; and
responsively mapping the plurality of computing devices to the computing cluster.

### Claim 9 (depends on 7)

The system of claim 7, wherein mapping the storage pool to the storage devices comprises:
determining, from the storage pool data, a first storage device unique identifier (UID) of a particular storage device associated with the storage pool;
determining, from storage device data stored in the database, a second storage device UID that identifies a storage device of the computing cluster;
determining that the first storage device UID and the second storage device UID are identical; and
responsively mapping the storage pool to the storage device.

### Claim 10 (depends on 7)

The system of claim 7, wherein mapping the storage containers to the storage pool comprises:
determining, from the storage pool data, a first storage pool unique identifier (UID) that identifies the storage pool;
determining, from the storage container data, a second storage pool UID of a particular storage pool associated with the storage containers;
determining that the first storage pool UID and the second storage pool UID are identical; and
responsively mapping the storage containers to the storage pool.

### Claim 11 (depends on 7)

The system of claim 7, wherein mapping each respective controller to a corresponding computing device that is associated with the respective controller comprises:
determining, from the controller data, a first computing device unique identifier (UID) of a particular computing device that is associated with the respective controller;
determining, from computing device data stored in the database, a second respective computing device UID for each of the plurality of computing devices;
selecting from the plurality of computing devices a first computing device whose second respective computing device UID is identical to the first computing device UID; and
mapping the respective storage device to the particular computing device.

### Claim 12

A method comprising:
requesting and receiving, from a first controller and by a proxy server application, computing cluster data that identifies a computing cluster, wherein the first controller is associated with one of a plurality of computing devices of the computing cluster, wherein the computing cluster and the proxy server application are disposed within a managed network, wherein the computing cluster provides networking, storage, and virtualization services distributed across the plurality of computing devices, wherein the plurality of computing devices are communicatively coupled via a local-area network, and wherein each computing device is configured to execute one or more respective software applications and comprises: (i) a respective controller, and (ii) a respective storage device;
requesting and receiving, from the first controller and by the proxy server application, storage pool data that identifies a storage pool of the computing cluster, wherein the storage pool is provided by the storage devices of the plurality of computing devices;
requesting and receiving, from the first controller and by the proxy server application, storage container data that identifies storage containers of the storage pool, wherein a storage container includes a subset of available storage in the storage pool;
requesting and receiving, from the first controller and by the proxy server application, controller data that identifies the controllers of the plurality computing devices; and
providing, to a database disposed within a remote network management platform and by the proxy server application, the computing cluster data, the storage pool data, the storage container data, and the controller data.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
based on the computing cluster data, the storage pool data, the storage container data, and the controller data, generating a hierarchical representation of the computing cluster, wherein the hierarchical representation is indicative of relationships between components of the computing cluster.

### Claim 14 (depends on 13)

The method of claim 13, wherein generating the hierarchical representation of the computing cluster comprises:
mapping the plurality of computing devices to the computing cluster;
mapping the storage pool to the storage devices;
mapping the storage containers to the storage pool; and
mapping the respective controller to a corresponding computing device that executes the respective controller.

### Claim 15 (depends on 14)

The method of claim 14, wherein mapping the plurality of computing devices to the computing cluster comprises:
determining, from the computing cluster data, a first computing cluster unique identifier (UID) that identifies the computing cluster;
determining, from computing device data stored in the database, a second computing cluster UID that identifies a particular computing cluster associated with the plurality of computing devices;
determining that the first computing cluster UID and the second computing cluster UID are identical; and
responsively mapping the plurality of computing devices to the computing cluster.

### Claim 16 (depends on 14)

The method of claim 14, wherein mapping the storage pool to the storage devices comprises:
determining, from the storage pool data, a first storage device unique identifier (UID) of a particular storage device associated with the storage pool;
determining, from storage device data stored in the database, second storage device UID that identifies a storage device of the computing cluster;
determining that the first storage device UID and the second storage device UID are identical; and
responsively mapping the storage pool to the storage device.

### Claim 17 (depends on 14)

The method of claim 14, wherein mapping the storage containers to the storage pool comprises:
determining, from the storage pool data, a first storage pool unique identifier (UID) that identifies the storage pool;
determining, from the storage container data, a second storage pool UID of a particular storage pool associated with the storage containers;
determining that the first storage pool UID is identical to the second storage pool UID; and
responsively mapping the storage containers to the storage pool.

### Claim 18 (depends on 14)

The method of claim 14, wherein mapping each respective controller to a corresponding computing device that is associated with the respective controller comprises:
determining, from the controller data, a first computing device unique identifier (UID) of a particular computing device that is associated with the respective controller;
determining, from computing device data stored in the database, a second respective computing device UID for each of the plurality of computing devices;
selecting from the plurality of computing devices a first computing device whose second respective computing device UID is identical to the first computing device UID; and
mapping the respective storage device to the first computing device.

### Claim 19

An article of manufacture including a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by a proxy server application disposed within a managed network, cause the proxy server application to perform operations comprising:
requesting and receiving, from a first controller, computing cluster data that identifies a computing cluster, wherein the first controller is associated with one of a plurality of computing devices of the computing cluster, wherein the computing cluster is disposed within the managed network, wherein the computing cluster provides networking, storage, and virtualization services distributed across the plurality of computing devices, wherein the plurality of computing devices are communicatively coupled via a local-area network, and wherein each computing device is configured to execute one or more respective software applications and comprises: (i) a respective controller, and (ii) a respective storage device, and
requesting and receiving, from the first controller, storage pool data that identifies a storage pool of the computing cluster, wherein the storage pool is provided by the storage devices of the plurality of computing devices;
requesting and receiving, from the first controller, storage container data that identifies storage containers of the storage pool, wherein a storage container includes a subset of available storage in the storage pool;
requesting and receiving, from the first controller, controller data that identifies the controllers of the plurality computing devices; and
providing, to a database disposed within a remote network management platform, the computing cluster data, the storage pool data, the storage container data, and the controller data.

### Claim 20 (depends on 19)

The article of manufacture of claim 19, wherein the database stores: (i) software application data that identifies software applications that are executed by the plurality of computing devices, (ii) computing device data that identifies the plurality of computing devices, and (iii) storage device data that identifies the storage devices of the plurality of computing devices.
