Patent ID: 12243007

DETAILED DESCRIPTION

FIG.1is a block diagram illustrating an example of a system100according to some aspects of the disclosure. The system100may include one or more servers, such as an inventory management server (IMS)102. The system100may further include one or more management controllers, such as a management controller160. The system100may further include a client device190. The client device190may correspond to or may be associated with a system administrator or other user or system.

The IMS102may include one or more processors104, a memory110coupled to the one or more processors104, and a communication interface124coupled to the one or more processors104. In some implementations, the memory110may store instructions112executable by the one or more processors104to initiate, perform, or control one or more operations described herein.

The management controller160may include one or more processors162, a memory168coupled to the one or more processors162, and a communication interface174coupled to the one or more processors162. In some implementations, the memory168may store instructions170executable by the one or more processors162to initiate, perform, or control one or more operations described herein. In some examples, the management controller160corresponds to, includes, or may be referred to as a baseboard management controller (BMC), a service processor, an embedded controller (EC), a storage enclosure processor, or a chassis processor.

In some implementations, the management controller160is assigned to monitor a set of equipment, such as equipment150. Equipment (such as the equipment150) may also be referred to herein as inventory. To illustrate, the equipment150may include one or more hardware components, such as computing devices (e.g., servers), processors, memories, network interface cards (NICs), communication devices (e.g., modems, routers, gateways, hubs, or switches), network infrastructure, one or more other hardware components, or a combination thereof. Alternatively or in addition, the equipment150may include software, such as an application or software module stored at a memory.

In some examples, the equipment150and the management controller160may be located in a datacenter. In some such examples, the equipment150may include or correspond to a server, a cloud computing device, a cloud storage device, or another computing device. Alternatively or in addition, the equipment150may include datacenter equipment, such as datacenter infrastructure equipment, heating, ventilation, and air conditioning (HVAC) equipment, storage equipment (such as a rack storage enclosure), electrical equipment (such as power delivery equipment), other equipment, or a combination thereof.

Further, although the example ofFIG.1illustrates one set of equipment150and one management controller160, other examples are also within the scope of the disclosure. To illustrate, the system100may further include a second management controller. The second management controller may be assigned to monitor some or all of the equipment150, second equipment that is distinct from the equipment150, or a combination therefore. In some examples, the second management controller and the second equipment are located in a second datacenter.

The client device190may include one or more processors192, a memory194coupled to the one or more processors192, and a communication interface198coupled to the one or more processors192. In some implementations, the memory194may store instructions196executable by the one or more processors192to initiate, perform, or control one or more operations described herein. In some implementations, the client device190may include or correspond to a server, a desktop computer, a laptop computer, a tablet, a mobile device, or another type of computing device, as illustrative examples.

The communication interfaces124,174, and198may be configured to communicate with one another using one or more techniques. In some implementations, the communication interfaces124,174, and198may be configured to communicate with one another using one or more networks, such as one or more of a local area network (LAN), a wide area network (WAN), a wired network, a wireless network, or the Internet, as illustrative examples. The communication interfaces124,174, and198may be configured transmit or receive one or more messages or signals described herein.

In some implementations, the IMS102may correspond to a “standalone” server or to a “plugin” to another server. Further, depending on the implementation, the IMS102may be implemented as an on-premises device (e.g., within a datacenter that includes the management controller160and the equipment150) or off-premises, such as in connection with a cloud computing implementation. Further, although the IMS102is illustrated inFIG.1as being external to the management controller160, in some other implementations, one or more features of the IMS102may be implemented together with one or more features of the management controller160in a single server, controller, or device.

During operation, the IMS102may receive a registration request126associated with the management controller160. In some examples, the registration request126is received from or is initiated by the client device190. To illustrate, the client device190may receive user input identifying the management controller160and indicating that the IMS102is to register the management controller160for inventory tracking. In some examples, the client device190may directly provide the registration request126to the IMS102. In some other examples, the management controller160may provide the registration request126to the IMS102, such as in response to a command received from the client device190.

In some examples, the registration request126may include one or more indications of the management controller160, such as a service tag128associated with the management controller160or a location130of the management controller160. Alternatively or in addition, the registration request126may include a registration request opcode, such as an opcode132.

In some implementations, based on the registration request126, the IMS102may determine a registration identifier (ID)122associated with the management controller160. The IMS102may determine the registration ID122such as the registration ID122is unique to the management controller160. For example, the IMS102may determine the registration ID122based on the identification information136(e.g., by hashing the identification information136) or by selecting the registration ID122from a list of available registration IDs that are not assigned to other management controllers in communication with the IMS102.

The IMS102may store the registration ID122to a registration database120. The registration ID122may be unique to the management controller160within the registration database120. For example, the registration database120may indicate other registration IDs associated with other respective management controllers, and each of the other registration IDs may be different from the registration ID122. To further illustrate, the registration database120may include a lookup table (LUT) indicating management controllers (such as the management controller160) and registration IDs (such as the registration ID122) associated with the management controllers.

The IMS102may transmit a registration response134to the management controller160based on the registration request126. For example, the registration response134may indicate that the management controller160is registered for inventory tracking with the IMS102. In some examples, the registration response134includes identification information136usable to identify the management controller160in one or more subsequent communications. For example, the identification information136may include or correspond to the registration ID122. In some other examples, the identification information136may be based on the registration ID122, such as if the identification information136includes or corresponds to a hash of the registration ID122or a digitally signed version of the registration ID122.

The management controller160may receive the registration response134from the IMS102. The management controller160may store the identification information136. For example, the management controller160may store the identification information136to the memory168.

In some implementations, the management controller160may provide, based on the registration response134, an inventory snapshot116to the IMS102. For example, in some implementations, the management controller160may collect or access data that indicates characteristics of the equipment150and may transmit the data to the IMS102as the inventory snapshot116. In some examples, the inventory snapshot116may indicate the identification information136.

To further illustrate, in some implementations, the inventory snapshot116may indicate one or more of service tags associated with items of the equipment150, part numbers associated with items of the equipment150, serial numbers associated with items of equipment150, addresses associated with items of the equipment150(such as media access control (MAC) addresses), descriptions of items of the equipment150, or names of items of the equipment150. Alternatively or in addition, the inventory snapshot116may indicate relationships associated with the equipment150, which as whether one item of the equipment150is connected to another item of the equipment150. Alternatively or in addition, the inventory snapshot116may indicate locations of items of the equipment150, such as an identifier of one or more datacenters that include the equipment150or a location of a part within a datacenter, as illustrative examples.

The IMS102may receive the inventory snapshot116from the management controller160. The IMS102may store the inventory snapshot116. For example, the IMS102may store the inventory snapshot116to the memory110, such as within an equipment tracking database114that may be stored at the memory110.

In some other implementations, the management controller160may not transmit the inventory snapshot116to the IMS102. For example, instead of providing a single inventory snapshot, the management controller160may provide “piecemeal” data to the IMS102associated with the equipment150, such as by providing push notifications based on one or more of addition, removal, or modification to the equipment150, as described further below.

In some circumstances, the equipment150may be subject to one or more modifications, such as a change142associated with the equipment150. For example, one or more items (also referred to herein as components or parts) may be added to the equipment150, removed from the equipment150, or reconfigured. The management controller160may detect the change142associated with the equipment150.

To illustrate, in some examples, the change142may include addition of first equipment150ato the equipment150. In some examples, the first equipment150amay include one or more of a server, a cloud computing device, a cloud storage device, or other equipment. The management controller160may detect the addition of the equipment150, such as by detecting a communication from the equipment150(e.g., via an Ethernet connection to the equipment150or via a wireless connection to the equipment150). Alternatively or in addition, in some implementations, the first equipment150amay include or correspond to a software program or application that is installed on a computing device, and the change142may include installation of the software program or application. In some examples, detecting the addition of the first equipment150amay include receiving user input, such as if the management controller160receives user input specifying one or more characteristics of the first equipment150a, such as a MAC address of the first equipment150a, as an illustrative example.

Alternatively or in addition, in some examples, the change142may include removal of second equipment150bfrom the equipment150. The management controller160may detect the removal of the second equipment150bfrom the equipment150. In some examples, the management controller160may detect the removal of the second equipment150bbased on failure to receive a communication (e.g., a status message or a query response) from the second equipment150bwithin a threshold time period (e.g., a threshold time period since receiving a prior communication from the second equipment150bor since transmitting a query to the second equipment150b). In some implementations, a failure of the second equipment150b(e.g., a “crash”) may constitute removal of the second equipment150b. In some examples, detecting the removal of the second equipment150bmay include receiving user input specifying the removal of the second equipment150bfrom the equipment150.

Alternatively or in addition, in some examples, the change142may include modification of third equipment150cof the equipment150. As an illustrative example, the modification may include a software installation, software update, or repair of the third equipment150c. As another illustrative example, the modification may include disconnection of the third equipment150cfrom one device and reconnection of the third equipment150cto another device. In some examples, the management controller160may detect the modification based on a change in one or more signals received from the third equipment150c(or from a device that includes the third equipment150c), such as a change in a software version number reported by the third equipment150c. In some examples, detecting the modification may include receiving user input specifying the modification.

Based on detecting the change, the management controller160may transmit a push notification138to the IMS102. For example, the management controller160may automatically transmit the push notification138without receiving a request for the push notification. The push notification138may include an indication of the change142and may further indicate the identification information136. The push notification138may also include an item identifier140of an item associated with the change142. For example, the item identifier140may indicate one or more of a service tag associated with the item, a part number of the item, a serial number of the item, a description of the item, or a name of the item. In some examples, the management controller160includes or executes push notification logic166to initiate transmission of the push notification138.

The IMS102may receive the push notification138from the management controller160. In some implementations, the IMS102may verify (e.g., authenticate) the management controller160based on information of the push notification138, such as the identification information136. For example, if the identification information136is invalid or incorrect, the IMS102may decline or reject the push notification138, such as by issuing a message to the management controller160to retry the push notification138with correct identification information136.

After authenticating the management controller160, the IMS102may perform an update118of the equipment tracking database114based on the indication of the change142specified by the push notification138. In some examples, the equipment tracking database114indicates the inventory snapshot116, and the IMS102performs the update118to the inventory snapshot116. In some examples, performing the update118may include one or more of adding a first indication of the first equipment150ato the equipment tracking database114, removing a second indication of the second equipment150bfrom the equipment tracking database114, or modifying one or more attributes associated with a third indication of the third equipment150c.

In some implementations, the IMS102may transmit a response144to the push notification138to the management controller160(e.g., based on the update118to the equipment tracking database114). In some examples, the update118is associated with a logical address146within the equipment tracking database of a part of the equipment150, and the response144indicates the logical address146. In some examples, the logical address146corresponds to a uniform resource indicator (URI) or a uniform resource locator (URL). To further illustrate, if the update118includes adding an entry to the equipment tracking database114based on addition of the first equipment150ato the equipment150, the IMS102may add the logical address146to equipment tracking database114to identify the first equipment150a.

The management controller160may receive the response144from the IMS102. In some implementations, the management controller160may store the logical address146to a sync database172. The sync database172may include a lookup table (LUT) of logical addresses used by the IMS102to indicate parts of the equipment150.

After storing the logical address146to the sync database172, the management controller160may use the logical address146in one or more communications with the IMS102. For example, based on detecting a modification to, or removal of, equipment associated with the logical address146, the management controller160may use the logical address146to identify the equipment in a push notification to the IMS102. As another example, in some circumstances, the IMS102may transmit to the management controller160a query or a command indicating the equipment using the logical address146. For example, the query may request a current status of the equipment associated with the logical address146, such as whether the equipment is in an active or standby state of operation, as an illustrative example.

Accordingly, by receiving push notifications from one or more management controllers (such as the management controller160) based on a change in equipment (such as the change associated with the equipment), the equipment tracking database114may reflect real time or near-real time inventory data without querying of the management controllers, which may reduce network congestion, resource utilization, latency, and power consumption. In some examples, the IMS102may be referred to as a “zero-touch” centralized push-based datacenter inventory tracker. Further, the real time or near-real time inventory data may enhance one or more operations, such as operations initiated or performed by one or more client devices (such as the client device190).

To illustrate, in some examples, the client device190may transmit an inventory request180to the IMS102. The IMS102may receive the inventory request180and may access the equipment tracking database114based on the inventory request180to identify inventory data186. The inventory data186may include data associated with at least some of the equipment150. The IMS102may transmit, to the client device190, a response184indicating the inventory data186. The client device190may receive the response184.

To further illustrate, the inventory request180may indicate one or more filtering parameters182. In some examples, the one or more filtering parameters182may include or correspond to an indication of a particular datacenter, a type of component, a date range, a status request, a usage history request, one or more other criteria, or a combination thereof. The IMS102may access the equipment tracking database114to identify the inventory data186based on the one or more filtering parameters182. In some examples, the inventory data186may indicate one or more of a movement history of an item within a datacenter, a usage history of the item, a current status associated with the item, a lifecycle of the item, a listing of management controllers that are registered with the IMS102(such as a listing of the registration database120), or a listing of equipment associated with the management controllers, as illustrative examples.

As an additional example, the equipment tracking database114may be used in connection with a troubleshooting operation. For example, if one instance of a particular part is found to be faulty or subject to poor performance, the inventory request180may include a request to identify other information related to the part, such as other instances of the part and locations of the part within a datacenter (e.g., so the part can be replaced or refurbished). The response184may include such information. As a result, the need to manually “track down” instances of the part may be reduced or eliminated.

Alternatively or in addition, in some datacenters, parts may be relocated (or “repurposed”) relatively frequently. By issuing push notifications to the IMS102, such relocated parts may be tracked automatically and in real time or near-real time. As a result, the need to manually record relocation (or repurposing) of such parts may be reduced or eliminated.

In some circumstances, the management controller160may deregister from the IMS102. In some examples, the management controller160may initiate deregistration based on retirement of a server that includes or that is managed by the management controller160, based on relocation of the server to a different datacenter (which may be associated with a different IMS), or based on expiration of a service (such as expiration of a “trial” service period associated with the IMS102). In such examples, the management controller160may send a deregistration request to the IMS102. The deregistration request may include the identification information136. Based on the deregistration request, the IMS102may delete information associated with the management controller160from the registration database120, such as by deleting the registration ID122from the registration database120.

In some implementations, one or more operations described herein may be performed using a representational state transfer (REST) protocol. For example, the IMS102may expose a REST application program interface (API)106to the management controller160. The REST API106may enable one or more of registration of the management controller160with the IMS102, deregistration of the management controller160, addition of inventory to the equipment tracking database114, updating of the inventory at the equipment tracking database114, or deletion of inventory from the equipment tracking database114. To further illustrate, exposing the REST API106to the management controller160may enable the management controller160to provide one or more of the registration request126or the push notification138to the IMS102. Alternatively or in addition, the management controller160may expose a REST API164to the IMS102to enable the IMS102to provide the registration response134to the management controller160.

Further, in some examples, the IMS102may expose a client-facing REST API108to the client device190to enable one or more operations described herein. To illustrate, the IMS102may expose the client-facing REST API108to the client device190to enable communication of the inventory request180. Alternatively or in addition, the client device190may expose a REST API to the IMS102to enable the IMS102to provide the response184to the client device190.

To further illustrate, the example of Table 1 provides examples of operations that may be supported within the system100. In some implementations, the operations of Table 1 may be performed according to a REST protocol. Each operation of Table 1 may be associated with a target address, such as a uniform resource identifier (URI).

TABLE 1OperationExample URIDescriptionGET/ims/v1/InventoryManagementService/Metadata of the IMS.POST/ims/v1/InventoryManagementService/Register a BMC with the IMS.Actions/InventoryManagementService.RegisterBMCReturns RegistrationId to bepassed in header for POST. Createand DELETE as XRegistrationId.POST/ims/v1/InventoryManagementService/Actions/Unregister a BMC from the IMS.InventoryManagementService.DeRegisterBMCDelete all parts which were taggedwith the BMC.GET/ims/v1/InventoryManagementService/Details of the registered BMCs.RegisteredBMCsGET/ims/v1/InventoryManagementService/PartsGET collection of parts.POST/ims/v1/InventoryManagementService/PartsAdd a part entry to IMS inventory.GET/ims/v1/InventoryManagementService/Get details of a part.Parts/{PartId}DELETE/ims/v1/InventoryManagementService/Delete a part entry to the IMSParts/{PartId}Inventory.

In some implementations, one or more operations described may be used in connection with an integrated remote access controller. The example of Table 2 illustrates examples of such operations.

TABLE 2OperationExample URIDescriptionPOST/redfish/v1/Managers/iDRAC.Embedded.1/Registers iDRAC with the IMSOem/Dell/DelliDRACCardService/Actions/whose IP is sent in the payload.DelliDRACCardService.RegisteriDRACWithIMSRegistrationId returned in theresponse along with the IP addressof the IMS stored internally to beused for updating inventoryinformation with the IMS.POST/redfish/v1/Managers/iDRAC.Embedded.1/Unregisters the BMC from theOem/Dell/DelliDRACCardService/Actions/IMS.DelliDRACCardService.DeRegisteriDRACWithIMS

To further illustrate, some examples described in connection withFIG.2are described with reference to a REST protocol. Other examples are also within the scope of the disclosure.

FIG.2is a diagram illustrating examples of operations200that may be performed by the system100ofFIG.1according to some aspects of the disclosure. In some examples, the operations200may be performed by the IMS102, the management controller160, and the client device190according to some aspects. In some examples, the operations200are performed according to a REST protocol. Other examples are also within the scope of the disclosure.

The operations200may include performing a POST operation, at202. For example, the client device190may transmit, to the management controller160, a POST request having a payload that indicates an address associated with the IMS102. The address may correspond to an Internet Protocol (IP) address of the IMS102, as an illustrative example. In some examples, the POST request may include or correspond to a command to perform registration with the IMS102.

The operations200may further include performing a POST operation, at204. For example, the management controller160may transmit a POST request to the IMS102. The POST request may indicate one or more of a service tag associated with the management controller160, a location of the management controller160, or a registration request opcode. In some examples, the POST request includes or corresponds to the registration request126.

The operations200may further include transmitting a response, at206. For example, the IMS102may transmit the registration response134to the management controller160. The registration response134may include an acknowledgement message, such as a hypertext transfer protocol (HTTP) 200 response code.

The operations200may further include transmitting a response, at208. For example, the management controller160may transmit the response to the client device190to indicate a result of the registration process. The response may include an acknowledgement message, such as an HTTP 200 response code.

The operations200may further include detecting addition of inventory, at210. As an illustrative example, the management controller160may detect addition of the first equipment150ato the equipment150.

The operations200may further include performing a POST operation associated with the added inventory, at212. For example, the management controller160may transmit a POST request to the IMS102indicating one or more of a service tag associated with the added inventory, a part number of the added inventory, a serial number of the added inventory, a description of the added inventory, or a name of the added inventory. In some examples, the POST request may include the identification information136. In some implementations, the identification information136includes, corresponds to, or is based on a BMC IP address of the management controller160. In some examples, the POST request includes or corresponds to the push notification138or another push notification.

The operations200may further include transmitting a response, at214. In some examples, the response includes an address (e.g., a uniform resource indicator (URI) or uniform resource locator (URL)) associated with the added inventory within the equipment tracking database114. The response may include a message indicating success of creation of a resource corresponding to the address. The message may include or correspond to an HTTP 201 response code. In some examples, the response corresponds to the response144, and the address corresponds to the logical address146.

The operations200may further include storing an address of the inventory, at216. For example, the management controller160may store an indication of the URI or URL to the sync database172.

The operations200may further include detecting deletion of inventory, at218. In an illustrative example, the management controller160may detect removal of the first equipment150a.

The operations200may further include performing a DELETE operation, at220. For example, the management controller160may transmit a DELETE request to the IMS102indicating one or more of a service tag associated with the deleted inventory, a part number of the deleted inventory, a serial number of the deleted inventory, a description of the deleted inventory, or a name of the deleted inventory. In some examples, the DELETE request may include the address (e.g., URI or URL) associated with the deleted inventory. In some examples, the DELETE request includes or corresponds to the push notification138or another push notification.

The operations200may further include transmitting a response, at222. For example, the IMS102may transmit the response to the management controller160to indicate success of the DELETE operation. The response may include an acknowledgement message, such as an HTTP 200 response code.

The operations200may further include performing a POST operation, at224. For example, the client device190may transmit, to the management controller160, a POST request having a payload that indicates the address (e.g., IP address) associated with the IMS102. In some examples, the POST request may include or correspond to a command to perform deregistration with the IMS102. For example, in some circumstances, the client device190may initiate deregistration of the management controller160from the IMS102, such as if inventory tracking is to be transferred to another device other than the IMS102.

The management controller160may transmit a POST request to the IMS102to initiate deregistration, at226, and may receive a response from the IMS102, at228. The response may include an acknowledgement message, such as an HTTP 200 response code, indicating success of the deregistration. The management controller160may transmit a response including an acknowledgement message, such as an HTTP 200 response code, indicating success of the deregistration, at230.

The operations200may further include performing a GET operation, at232. For example, the client device190may transmit a GET request to the IMS102requesting a listing of management controllers that are registered with the IMS102. The IMS102may transmit a response, at234. The response may include the listing of management controllers that are registered with the IMS102.

The operations200may further include performing a GET operation, at236. For example, the client device190may transmit a GET request to the IMS102requesting inventory data. The GET request may include or correspond to the inventory request180. The IMS102may transmit a response, at238indicating a part collection resource, which may include or correspond to the inventory data186. In some examples, the GET request indicates a filter query (such as the one or more filtering parameters182), and the IMS102accesses the equipment tracking database114based on the filter query to identify the part collection resource.

One or more techniques described herein may improve performance of a system, such as the system100ofFIG.1. For example, by using push notifications to the IMS102(e.g., instead of queries to BMCs by a system administrator), an amount of messaging in the system100may be reduced as compared to other techniques. For example, an amount of messaging may be reduced as compared to a system in which a system administrator transmits a query to a BMC to obtain information on system devices. As a result, a load on BMCs may be reduced as compared to other systems, and network congestion may be reduced. Further, use of push notifications may reduce transmission of redundant or unhelpful information, which may occur in some conventional systems when a BMC has no new updated information to report in response to a query.

Further, some aspects described herein may reduce an amount of stored credentials and other information stored by a system administrator, which may increase efficiency and network security. To illustrate, in some conventional systems, each system administrator may maintain management information, such as an Internet Protocol (IP) address or other credentials of a BMC, which system administrators may use to query the BMC. Such credentials may occasionally change over time (such as due to a change in IP address), which may introduce delays or difficulty in querying the BMC. In some aspects of the disclosure, the IMS102may centrally store such information and may receive push notifications from BMCs (such as the push notification138from the management controller160) in response to changes (such as BMC credential changes), which may reduce or avoid querying based on incorrect or outdated information (e.g., due to a change in IP address of the management controller160). Further, reducing or avoiding storage of such information by system administrators may increase network security in some cases (e.g., by reducing or avoiding storage of credentials externally to the system100).

FIG.3depicts an illustrative example of an information handling system300according to some aspects of the disclosure. In some examples, one or more features of the information handling system300may be implemented using one or more features described with reference toFIG.1, as described further below.

Information handling system300may include a processor302(e.g., a central processing unit (CPU)), a memory304(e.g., a dynamic random-access memory (DRAM)), and a chipset306. In some examples, one or more of the processor302, the memory304, or the chipset306may be included on a motherboard (also referred to as a mainboard), which may include a printed circuit board (PCB) with embedded conductors organized as transmission lines between any of the processor302, the memory304, the chipset306, or other components of the information handling system300. The components may be coupled to the motherboard through packaging connections such as a pin grid array (PGA), ball grid array (BGA), land grid array (LGA), surface-mount technology, and/or through-hole technology. In some embodiments, one or more of the processor302, the memory304, the chipset306, or other components may be organized as a system on chip (SoC).

The processor302may execute program code by accessing instructions loaded into memory304from a storage device, may execute the instructions to operate on data also loaded into memory304from a storage device, and may generate output data that is stored to memory304or sent to another component. The processor302may include processing cores capable of implementing any of a variety of instruction set architectures (ISAs), such as the x86, POWERPC®, ARM®, SPARC®, or MIPS® ISAs, or any other suitable ISA. In multi-processor systems, each of the processors302may commonly, but not necessarily, implement the same ISA. In some embodiments, multiple processors may each have different configurations such as when multiple processors are present in a big-little hybrid configuration with some high-performance processing cores and some high-efficiency processing cores. The chipset306may facilitate the transfer of data between the processor302, the memory304, and other components. In some embodiments, chipset306may include two or more integrated circuits (ICs), such as a northbridge controller coupled to the processor302, the memory304, and a southbridge controller, with the southbridge controller coupled to the other components such as universal serial bus (USB) controller310, a SATA bus controller320, and PCIe buses308. The chipset306may couple to other components through one or more PCIe buses308.

Some components may be coupled to one bus line of the PCIe buses308, whereas some components may be coupled to more than one bus line of the PCIe buses308. One example component is the USB controller310, which may interface the chipset306to a USB bus312. The USB bus312may couple input/output components, such as a keyboard314and a mouse316, and also other components, such as USB flash drives, or another information handling system. Another example component is the SATA bus controller320, which may couple the chipset306to a SATA bus322. The SATA bus322may facilitate efficient transfer of data between the chipset306and components coupled to the chipset306and a storage device324(e.g., a hard disk drive (HDD) or solid-state disk drive (SDD)) and/or a compact disc read-only memory (CD-ROM)326. The PCIe buses308may also couple the chipset306directly to a storage device328(e.g., a solid-state disk drive (SDD)). A further example of an example component is a graphics device330(e.g., a graphics processing unit (GPU)) for generating output to a display device332, a network interface controller (NIC)340, and/or a wireless interface350(e.g., a wireless local area network (WLAN) or wireless wide area network (WWAN) device) such as a Wi-Fi® network interface, a Bluetooth® network interface, a GSM® network interface, a 3G network interface, a 4G LTE® network interface, and/or a 5G NR network interface (including sub-6 GHz and/or mmWave interfaces). In one example, chipset306may be directly connected to an individual end point via a PCIe root port within the chipset and a point-to-point topology as shown inFIG.3.

The chipset306may also be coupled to a bus360, which may couple the chipset306to one or more system management components. For example, a non-volatile random-access memory (NVRAM)370storing firmware372may be coupled to the bus360. As another example, a controller, such as a baseboard management controller (BMC)380, may be coupled to the chipset306through the bus360. BMC380may be referred to as a service processor or embedded controller (EC). Capabilities and functions provided by BMC380may vary based on the type of information handling system. For example, the term baseboard management system may be used to describe an embedded processor included at a server, while an embedded controller may be found in a consumer-level device. As disclosed herein, BMC380may represent a processing device different from processor302, which provides various management functions for information handling system300. For example, an embedded controller may be responsible for power management, cooling management, and the like. An embedded controller included at a data storage system may be referred to as a storage enclosure processor or a chassis processor.

Information handling system300may include additional processors that are configured to provide localized or specific control functions, such as a battery management controller. Bus360can include one or more buses, such as a Serial Peripheral Interface (SPI) bus, an Inter-Integrated Circuit (I2C) bus, a system management bus (SMBUS), a power management bus (PMBUS), or the like. BMC380may be configured to provide out-of-band access to devices at information handling system300. Out-of-band access in the context of the bus360may refer to operations performed prior to execution of firmware372by processor302to initialize operation of the information handling system300.

Firmware372may include instructions executable by processor302to initialize and test the hardware components of information handling system300. For example, the instructions may cause the processor302to execute a power-on self-test (POST). The instructions may further cause the processor302to load a boot loader or an operating system (OS) from a mass storage device. Firmware372additionally may provide an abstraction layer for the hardware, such as a consistent way for application programs and operating systems to interact with the keyboard, display, and other input/output devices. When power is first applied to information handling system300, the system may begin a sequence of initialization procedures, such as a boot procedure or a secure boot procedure. During the initialization sequence, also referred to as a boot sequence, components of information handling system300may be configured and enabled for operation and device drivers may be installed. Device drivers may provide an interface through which other components of information handling system300can communicate with a corresponding device. The firmware372may include a basic input-output system (BIOS) and/or include a unified extensible firmware interface (UEFI). Firmware372may also include one or more firmware modules of the information handling system300. Additionally, configuration settings for the firmware372and firmware of the information handling system300may be stored in the NVRAM370. NVRAM370may, for example, be a non-volatile firmware memory of the information handling system300and may store a firmware memory map namespace of the information handling system. NVRAM370may further store one or more container-specific firmware memory map namespaces for one or more containers concurrently executed by the information handling system.

Information handling system300may include additional components and additional buses, not shown for clarity. For example, information handling system300may include multiple processor cores (either within processor302or separately coupled to the chipset306or through the PCIe buses308), audio devices (such as may be coupled to the chipset306through one of the PCIe buses308), or the like. While a particular arrangement of bus technologies and interconnections is illustrated for the purpose of example, one of skill will appreciate that the techniques disclosed herein are applicable to other system architectures. Information handling system300may include multiple processors and/or redundant bus controllers. In some examples, one or more components may be integrated together in an integrated circuit (IC), which may include circuitry built on a common substrate. For example, portions of chipset306can be integrated within processor302. Additional components of information handling system300may include one or more storage devices that may store machine-executable code, one or more communications ports for communicating with external devices, and various input and output (I/O) devices, such as a keyboard, a mouse, and a video display.

In some embodiments, processor302may include multiple processors, such as multiple processing cores for parallel processing by the information handling system300. For example, the information handling system300may include a server comprising multiple processors for parallel processing. In some embodiments, the information handling system300may support virtual machine (VM) operation, with multiple virtualized instances of one or more operating systems executed in parallel by the information handling system300. For example, resources, such as processors or processing cores of the information handling system may be assigned to multiple containerized instances of one or more operating systems of the information handling system300executed in parallel. A container may, for example, be a virtual machine executed by the information handling system300for execution of an instance of an operating system by the information handling system300. Thus, for example, multiple users may remotely connect to the information handling system300, such as in a cloud computing configuration, to utilize resources of the information handling system300, such as memory, processors, and other hardware, firmware, and software capabilities of the information handling system300. Parallel execution of multiple containers by the information handling system300may allow the information handling system300to execute tasks for multiple users in parallel secure virtual environments.

In some examples, BMC380may include or correspond to the management controller160ofFIG.1. BMC380may include or execute push notification logic166to initiate transmission (e.g., via wireless interface350or via another interface) of the push notification138. Further, one or more of processor302, memory304, chipset306, USB controller310, USB bus312, PCIe buses308, keyboard314, mouse316, SATA bus controller320, SATA bus322, storage device324, CD ROM326, storage device328, graphics device330, display device332, network interface controller340, wireless interface350, bus360, NVRAM370, or firmware372may be included in equipment150ofFIG.1(and may be managed by BMC380, which may correspond to management controller160). Accordingly, BMC380may execute push notification logic166to notify the IMS102of addition, removal, or modification associated with one or more of processor302, memory304, chipset306, USB controller310, USB bus312, PCIe buses308, keyboard314, mouse316, SATA bus controller320, SATA bus322, storage device324, CD ROM326, storage device328, graphics device330, display device332, network interface controller340, wireless interface350, bus360, NVRAM370, or firmware372.

Alternatively or in addition, one or more features ofFIG.3may correspond one or more features of the IMS102. For example, in some implementations, the processor302may correspond to the one or more processors104, and the memory304may correspond to the memory110. To further illustrate, in some implementations, features of both the IMS102and the management controller160may be integrated within information handling system300.

Alternatively or in addition, one or more features ofFIG.3may correspond one or more features of the client device190. For example, in some implementations, the processor302may correspond to the one or more processors192, and the memory304may correspond to the memory194. In some examples, a user may utilize display device332, keyboard314, and mouse316to initiate transmission of the inventory request180, such as by using a graphical user interface (GUI) of display device332to select the one or more filtering parameters182for the inventory request180.

FIG.4is a flow chart of an example of a method400according to some aspects of the disclosure. In some examples, the method400is performed by the IMS102ofFIG.1. Alternatively or in addition, the method400may be performed by the information handling system300ofFIG.3.

The method400includes receiving a registration request associated with a management controller that is assigned to monitor a set of equipment, at402. For example, the IMS102may receive the registration request126associated with the management controller160, which may be assigned to monitor the equipment150.

The method400further includes transmitting a registration response to the management controller based on the registration request, at404. For example, the IMS102may transmit the registration response134to the management controller160.

The method400further includes receiving, from the management controller, a push notification indicating a change to the set of equipment and further indicating an identification information that is based on the registration request, at406. For example, the IMS102may receive the push notification138indicating the change142to the equipment150and further indicating the identification information136.

The method400further includes initiating an update to an equipment tracking database based on the indication of the change, at408. For example, the IMS102may initiate the update118to the equipment tracking database114based on the indication of the change142.

FIG.5is a flow chart of another example of a method500according to some aspects of the disclosure. In some examples, the method500is performed by the management controller160ofFIG.1. Alternatively or in addition, the method400may be performed by the information handling system300ofFIG.3, such as by the BMC380.

The method500includes transmitting, to an inventory management server (IMS), a registration request associated with a management controller that is assigned to monitor a set of equipment, at502. For example, the management controller160may transmit, to the IMS102, the registration request126.

The method500further includes receiving a registration response from the IMS based on the registration request, at504. For example, the management controller160may receive the registration response134from the IMS102.

The method500further includes transmitting, to the IMS, a push notification indicating a change to the set of equipment and further indicating identification information that is based on the registration request, at506. For example, the management controller160may transmit the push notification138indicating the change142to the equipment150and further indicating the identification information136.

According to some further aspects, in a first aspect, an apparatus includes a memory and one or more processors coupled to the memory. The one or more processors are configured to receive a registration request associated with a management controller that is assigned to monitor a set of equipment. The one or more processors are further configured to transmit a registration response to the management controller based on the registration request and to receive, from the management controller, a push notification indicating a change to the set of equipment and further indicating an identification information that is based on the registration request. The one or more processors are further configured to initiate an update to an equipment tracking database based on the indication of the change.

In a second aspect in addition to the first aspect, the change to the set of equipment includes one or more of addition of first equipment to set of equipment, removal of second equipment from the set of equipment, or modification of third equipment of the set of equipment.

In a third aspect in addition to one or more of the first through second aspects, the one or more processors are further configured to add a first indication of the first equipment to the equipment tracking database, remove a second indication of the second equipment from the equipment tracking database, modify one or more attributes associated with a third indication of the third equipment at the equipment tracking database, or a combination thereof.

In a fourth aspect in addition to one or more of the first through fourth aspects, the registration request further indicates one or more of a service tag associated with the management controller, a location of the management controller, or a registration request opcode.

In a fifth aspect in addition to one or more of the first through fourth aspects, the one or more processors are further configured to, based on the registration request, determine a registration identifier (ID) associated with the management controller, where the identification information includes or is based on the registration ID, and to store the registration ID to a registration database, where the registration ID is unique to the management controller within the registration database.

In a sixth aspect in addition to one or more of the first through fifth aspects, the one or more processors are further configured to expose a representational state transfer (REST) application program interface (API) to the management controller to enable the management controller to provide one or more of the registration request or the push notification.

In a seventh aspect in addition to one or more of the first through sixth aspects, the one or more processors are further configured to, based on the registration response and prior to receiving the push notification, receive, from the management controller, an inventory snapshot of the set of equipment and to store the inventory snapshot to the equipment tracking database.

In an eighth aspect in addition to one or more of the first through seventh aspects, the push notification indicates one or more of a service tag associated with an item of the set of equipment, a part number of the item, a serial number of the item, a description of the item, or a name of the item.

In a ninth aspect in addition to one or more of the first through eighth aspects, the one or more processors are further configured to receive an inventory request from a client device, to access, based on the inventory request, the equipment tracking database to identify inventory data, and to transmit, to the client device, a response indicating the inventory data.

In a tenth aspect in addition to one or more of the first through ninth aspects, the inventory request indicates one or more filtering parameters, and the one or more processors are further configured to access the equipment tracking database to identify the inventory data based on the one or more filtering parameters.

In an eleventh aspect in addition to one or more of the first through tenth aspects, the one or more processors are further configured to expose a client-facing representational state transfer (REST) application program interface (API) to the client device to enable communication of the inventory request.

In a twelfth aspect in addition to one or more of the first through eleventh aspects, the inventory data indicates one or more of a movement history of an item within a datacenter, a usage history of the item, a current status associated with the item, a lifecycle of the item, a listing of management controllers that are associated with the equipment tracking database, or a listing of equipment associated with the management controllers.

In a thirteenth aspect, a method includes receiving a registration request associated with a management controller that is assigned to monitor a set of equipment. The method further includes transmitting a registration response to the management controller based on the registration request and receiving, from the management controller, a push notification indicating a change to the set of equipment and further indicating identification information that is based on the registration request. The method further includes initiating an update to an equipment tracking database based on the indication of the change.

In a fourteenth aspect in addition to the fifteenth aspect, the change to the set of equipment includes one or more of addition of first equipment to set of equipment, removal of second equipment from the set of equipment, or modification of third equipment of the set of equipment.

In a fifteenth aspect in addition to one or more of the thirteenth through fourteenth aspects, the method further includes performing one or more of adding a first indication of the first equipment to the equipment tracking database, removing a second indication of the second equipment from the equipment tracking database, or modifying one or more attributes associated with a third indication of the third equipment at the equipment tracking database.

In a sixteenth aspect in addition to one or more of the thirteenth through fifteenth aspects, the registration request further indicates one or more of a service tag associated with the management controller, a location of the management controller, or a registration request opcode.

In a seventeenth aspect, an information handling system includes a memory and one or more processors coupled to the memory. The one or more processors are configured to initiate transmission, to an inventory management server (IMS), of a registration request associated with a management controller that is assigned to monitor a set of equipment. The one or more processors are further configured to receive a registration response from the IMS based on the registration request and to transmit, to the IMS, a push notification indicating a change to the set of equipment and further indicating identification information that is based on the registration request.

In an eighteenth aspect in addition to the seventeenth aspect, the one or more processors are further configured to receive, based on an update to an equipment tracking database that is based on the push notification, a response to the push notification from the IMS.

In a nineteenth aspect in addition to one or more of the seventeenth through eighteenth aspects, the update to the equipment tracking database is associated with a logical address within the equipment tracking database of a part of the set of equipment, and wherein the response indicates the logical address.

In a twentieth aspect in addition to one or more of the seventeenth through nineteenth aspects, the one or more processors are further configured to store the logical address to a sync database stored at the memory.

A diagram described herein (such as the ladder diagram ofFIG.2and the flow chart diagrams ofFIGS.3and4) may be generally set forth as a logical flow chart diagram. As such, the depicted order and labeled steps may be indicative of aspects of the disclosed method. Other steps and methods may also be used to implement one or more steps, or portions thereof, of the illustrated method. Additionally, the format and symbols employed are provided to explain the logical steps of the method and are understood not to limit the scope of the method. Although various arrow types and line types may be employed in the flow chart diagram, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.

One or more operations described herein may be described as being performed by a controller or processor. Such operations may be performed by any circuit configured to perform the operations. Such a circuit may be an integrated circuit (IC) constructed on a semiconductor substrate and include logic circuitry, such as transistors configured as logic gates, and memory circuitry, such as transistors and capacitors configured as dynamic random access memory (DRAM), electronically programmable read-only memory (EPROM), or other memory devices. The logic circuitry may be configured through hard-wire connections or through programming by instructions contained in firmware. Further, the logic circuitry may be configured as a general purpose processor capable of executing instructions contained in software and/or firmware.

If implemented in firmware and/or software, functions described above may be stored as one or more instructions or code on a computer-readable medium. Examples include non-transitory computer-readable media encoded with a data structure and computer-readable media encoded with a computer program. Computer-readable media includes physical computer storage media. A storage medium may be any available medium that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise random access memory (RAM), read-only memory (ROM), electrically-erasable programmable read-only memory (EEPROM), compact disc read-only memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc includes compact discs (CD), laser discs, optical discs, digital versatile discs (DVD), floppy disks and Blu-ray discs. Generally, disks reproduce data magnetically, and discs reproduce data optically. Combinations of the above should also be included within the scope of computer-readable media.

Although the present disclosure and certain representative advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the scope of the disclosure as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. For example, although processors are described throughout the detailed description, aspects of the invention may be applied to the design of or implemented on different kinds of processors, such as graphics processing units (GPUs), central processing units (CPUs), and digital signal processors (DSPs). As another example, although processing of certain kinds of data may be described in example embodiments, other kinds or types of data may be processed through the methods and devices described above. As one of ordinary skill in the art will readily appreciate from the present disclosure, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.