Source code for saltext.vmware.modules.datacenter

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

import salt.exceptions
import saltext.vmware.utils.common as utils_common
import saltext.vmware.utils.datacenter as utils_datacenter
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_datacenter"
__proxyenabled__ = ["vmware_datacenter"]
__func_alias__ = {"list_": "list"}


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


[docs]def list_(service_instance=None): """ Returns a list of datacenters for the specified host. .. code-block:: bash salt '*' vmware_datacenter.list """ if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) return utils_datacenter.list_datacenters(service_instance)
[docs]def create(name, service_instance=None): """ Creates a datacenter. Supported proxies: esxdatacenter name The datacenter name .. code-block:: bash salt '*' vmware_datacenter.create dc1 """ if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) try: utils_datacenter.create_datacenter(service_instance, name) except salt.exceptions.VMwareApiError as exc: return {name: False, "reason": str(exc)} return {name: True}
[docs]def get(name, service_instance=None): """ Get the properties of a datacenter. Supported proxies: esxdatacenter name The datacenter name .. code-block:: bash salt '*' vmware_datacenter.get dc1 """ ret = {} if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) try: dc_ref = utils_datacenter.get_datacenter(service_instance, name) dc = utils_common.get_mors_with_properties( service_instance, vim.Datacenter, container_ref=dc_ref, local_properties=True ) if dc: ret = dc[0] except (salt.exceptions.VMwareApiError, salt.exceptions.VMwareObjectRetrievalError) as exc: return {name: False, "reason": str(exc)} return ret
[docs]def delete(name, service_instance=None): """ Deletes a datacenter. Supported proxies: esxdatacenter name The datacenter name .. code-block:: bash salt '*' vmware_datacenter.delete dc1 """ if service_instance is None: service_instance = get_service_instance(opts=__opts__, pillar=__pillar__) try: utils_datacenter.delete_datacenter(service_instance, name) except (salt.exceptions.VMwareApiError, salt.exceptions.VMwareObjectRetrievalError) as exc: return {name: False, "reason": str(exc)} return {name: True}