Source code for saltext.vmware.modules.license_mgr

# Copyright 2021 VMware, Inc.
# SPDX-License-Identifier: Apache-2.0
import logging

# noreorder
import salt.exceptions
import saltext.vmware.utils.common as utils_common
import saltext.vmware.utils.license_mgr as utils_license_mgr
from saltext.vmware.utils.connect import get_service_instance

log = logging.getLogger(__name__)

try:
    from pyVmomi import vim

    HAS_PYVMOMI = True
except ImportError:
    HAS_PYVMOMI = False


__virtualname__ = "vmware_license_mgr"
__proxyenabled__ = ["vmware_license_mgr"]
__func_alias__ = {"list_": "list"}


def __virtual__():
    if not HAS_PYVMOMI:
        return False, "Unable to import pyVmomi module."
    return __virtualname__


[docs]def add(license_key, **kwargs): """ Add a license specified by license key to a Datacenter, Cluster, ESXI Server or vCenter If no datacenter, cluster or ESXI Server is specified, it is assumed the operation is to be applied to a vCenter license_key License Key which specifies license to add to license manager service_instance Use this vCenter service connection instance instead of creating a new one [default None] datacenter_name Datacenter name to use for the operation [default None] cluster_name Name of the cluster to add license [default None] esxi_hostname Hostname of the ESXI Server to add license [default None] CLI Example: .. code-block:: bash salt '*' vmware_license_mgr.add license_key=AAAAA-11111-AAAAA-11111-AAAAA datacenter_name=dc1 """ ret = {} service_instance = kwargs.get("service_instance", None) datacenter_name = kwargs.get("datacenter_name", None) cluster_name = kwargs.get("cluster_name", None) esxi_hostname = kwargs.get("esxi_hostname", None) if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) if not utils_license_mgr.is_vcenter(service_instance): ret["message"] = "Failed, not connected to a vCenter" ret["result"] = False return ret try: if __opts__.get("test", None): ret["licenses"] = license_key ret["message"] = "Test dry-run, not really connected to a vCenter testing" return ret result = utils_license_mgr.add_license( service_instance, license_key, datacenter_name, cluster_name, esxi_hostname ) if result: ret["licenses"] = license_key except ( salt.exceptions.VMwareApiError, salt.exceptions.VMwareObjectRetrievalError, salt.exceptions.VMwareRuntimeError, salt.exceptions.CommandExecutionError, ) as exc: log.exception(exc) ret["message"] = f"Failed to add a license key due to Exception '{exc}'" ret["result"] = False return ret if not result: ret["message"] = f"Failed specified license key was not added to License Manager" ret["result"] = False return ret
[docs]def list_(service_instance=None): """ Returns a list of licenses for the specified Service Instance service_instance Use this vCenter service connection instance instead of creating a new one [default None] .. code-block:: bash salt '*' vmware_license_mgr.list """ if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) return utils_license_mgr.list_licenses(service_instance)
[docs]def remove(license_key, **kwargs): """ Remove a license specified by license_key from a Datacenter, Cluster, ESXI Server or vCenter If no datacenter, cluster or ESXI Server is specified, it is assumed the operation is to be applied to a vCenter license_key License Key which specifies license to remove from the license manager service_instance Use this vCenter service connection instance instead of creating a new one [default None] datacenter_name Datacenter name to use for the operation [default None] cluster_name Name of the cluster to add license [default None] esxi_hostname Hostname of the ESXI Server to add license [default None] CLI Example: .. code-block:: bash salt '*' vmware_license_mgr.remove license_key=AAAAA-11111-AAAAA-11111-AAAAA """ ret = {} service_instance = kwargs.get("service_instance", None) datacenter_name = kwargs.get("datacenter_name", None) cluster_name = kwargs.get("cluster_name", None) esxi_hostname = kwargs.get("esxi_hostname", None) if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) if not utils_license_mgr.is_vcenter(service_instance): ret["message"] = "Failed, not connected to a vCenter" ret["result"] = False return ret try: if __opts__.get("test", None): ret["licenses"] = license_key ret["message"] = "Test dry-run, not really connected to a vCenter testing" return ret result = utils_license_mgr.remove_license( service_instance, license_key, datacenter_name, cluster_name, esxi_hostname ) except ( salt.exceptions.VMwareApiError, salt.exceptions.VMwareObjectRetrievalError, salt.exceptions.VMwareRuntimeError, salt.exceptions.CommandExecutionError, ) as exc: log.exception(exc) ret["message"] = f"Failed to remove license key due to Exception '{exc}'" ret["result"] = False return ret if not result: ret["message"] = f"Failed specified license key was not found in License Manager" ret["result"] = False return ret