BACKGROUND

Modern enterprises are rapidly embracing cloud-based technologies, including the migration of certain software applications from local managed networks to remote public cloud platforms. Doing so often serves to simplify operational aspects of providing software-based services for the enterprise and/or its customers. Some enterprises even use multi-cloud deployments, distributing their software applications between a local managed network and two or more cloud platforms. But the advantages of doing so can be negatively impacted by the complexity of tracking and managing these software applications, and entitlements thereto, across multiple locations.

SUMMARY

The embodiments herein address these problems and others by providing a unified and automated process for determining the extent of deployed software applications across a managed network and at least one cloud platform, and then determining whether an enterprise has entitlement compliance for these applications. Doing so is complicated, because some entitlements allow license mobility (e.g., between the managed network and a cloud platform) while others do not. Further, some cloud platforms support using entitlements with license mobility for certain applications in certain situations and on certain types of hosts, while others do not.

When an enterprise is not in compliance, these embodiments may suggest strategies for obtaining more entitlements on specific platforms in order to achieve compliance. Further, if the enterprise has more entitlements than needed, these embodiments may suggest strategies for reallocating, releasing, and/or not renewing a subset of the entitlements to reduce licensing overhead. Some of the embodiments may allow the enterprise to engage in speculative “what-if” scenarios to determine its licensing compliance and/or overhead for various proposed arrangements or under certain constraints. Graphical user interfaces generated by a remote network management platform may be used to efficiently guide the enterprise through this process.

Accordingly, a first example embodiment may involve persistent storage containing a plurality of software models respectively defining a corresponding plurality of software packages, and one or more entitlements to a particular software package of the plurality of software packages, wherein the entitlements are associated with a managed network and use of the entitlements is constrained by entitlement rules. The first example embodiment may also involve one or more processors configured to: (i) determine, by way of querying computing devices on the managed network, a first deployment of the particular software package on the managed network; (ii) determine, by way of querying an interface of a public cloud platform to which the managed network has access, a second deployment of the particular software package on the public cloud platform, wherein use of the entitlements on the public cloud platform is constrained by platform rules; (iii) determine, based on constraints specified by the entitlement rules and the platform rules, an assignment of the entitlements to the first deployment and the second deployment; (iv) determine that the assignment of the entitlements leaves one or more deployed instances of the particular software package not covered by the entitlements; and (v) determine a modification to the entitlements that: satisfies the constraints specified by the entitlement rules and the platform rules, and facilitates a further assignment of the entitlements to the first deployment and the second deployment that covers all deployed instances of the particular software package.

A second example embodiment may involve determining, by way of querying computing devices on a managed network, a first deployment of a particular software package on the managed network, wherein persistent storage contains a plurality of software models respectively defining a corresponding plurality of software packages, and one or more entitlements to the particular software package, and wherein the entitlements are associated with the managed network and use of the entitlements is constrained by entitlement rules. The second example embodiment may also involve determining, by way of querying an interface of a public cloud platform to which the managed network has access, a second deployment of the particular software package on the public cloud platform, wherein use of the entitlements on the public cloud platform is constrained by platform rules. The second example embodiment may also involve determining, based on constraints specified by the entitlement rules and the platform rules, an assignment of the entitlements to the first deployment and the second deployment. The second example embodiment may also involve determining that the assignment of the entitlements leaves one or more deployed instances of the particular software package not covered by the entitlements. The second example embodiment may also involve determining a modification to the entitlements that: (i) satisfies the constraints specified by the entitlement rules and the platform rules, and (ii) facilitates a further assignment of the entitlements to the first deployment and the second deployment that covers all deployed instances of the particular software package.

In a third example embodiment, an article of manufacture may include a non-transitory computer-readable medium, having stored thereon program instructions that, upon execution by a computing system, cause the computing system to perform operations in accordance with the first and/or second example embodiment.

In a fourth example embodiment, a computing system may include at least one processor, as well as memory and program instructions. The program instructions may be stored in the memory, and upon execution by the at least one processor, cause the computing system to perform operations in accordance with the first and/or second example embodiment.

In a fifth example embodiment, a system may include various means for carrying out each of the operations of the first and/or second example embodiment.

These, as well as other embodiments, aspects, advantages, and alternatives, will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, this summary and other descriptions and figures provided herein are intended to illustrate embodiments by way of example only and, as such, that numerous variations are possible. For instance, structural elements and process steps can be rearranged, combined, distributed, eliminated, or otherwise changed, while remaining within the scope of the embodiments as claimed.

