Source code for saltext.vmware.states.folder

# SPDX-License-Identifier: Apache-2.0
import logging

import saltext.vmware.modules.folder as m_folder
import saltext.vmware.utils.common as utils_common
import saltext.vmware.utils.connect as connect

log = logging.getLogger(__name__)

try:
    from pyVmomi import vim

    HAS_PYVMOMI = True
except ImportError:
    HAS_PYVMOMI = False


__virtualname__ = "vmware_folder"
__proxyenabled__ = ["vmware_folder"]


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


[docs]def manage(name, task, dc_name, type, service_instance=None): """ Creates or destroy a folder on a given datacenter. name Name of folder. task create or destroy dc_name Name of datacenter where folder will be created. type (vm, host, datastore, network) Type of folder to be created. service_instance (optional) The Service Instance from which to obtain managed object references. """ if service_instance is None: service_instance = connect.get_service_instance(opts=__opts__, pillar=__pillar__) ret = {"name": name, "changes": {}, "result": True, "comment": ""} task_string = "created" if (task == "create") else "destroyed" if __opts__["test"]: ret["changes"] = {"new": f"folder {name} will be {task_string}"} ret["comment"] = "These options are set to change." return ret if task == "create": result = m_folder.create(name, dc_name, type, service_instance) ret["changes"] = {"new": f"folder {name} {task_string}"} elif task == "destroy": result = m_folder.destroy(name, dc_name, type, service_instance) ret["changes"] = {"new": f"folder {name} {task_string}"} else: ret["comment"] = "invalid task" ret["result"] = False return ret ret["comment"] = result["status"] return ret
[docs]def rename(name, new_folder_name, dc_name, type, service_instance=None): """ Rename a folder on a given datacenter. name Name of folder. new_folder_name Name to rename folder. dc_name Name of datacenter where folder will be renamed. type (vm, host, datastore, network) Type of folder to be renamed. service_instance (optional) The Service Instance from which to obtain managed object references. """ if service_instance is None: service_instance = connect.get_service_instance(opts=__opts__, pillar=__pillar__) ret = {"name": name, "changes": {}, "result": True, "comment": ""} if __opts__["test"]: ret["changes"] = {"new": f"folder {name} will be renamed {new_folder_name}"} ret["comment"] = "These options are set to change." return ret result = m_folder.rename(name, new_folder_name, dc_name, type, service_instance) ret["changes"] = {"new": f"folder {name} renamed {new_folder_name}"} ret["comment"] = result["status"] return ret
[docs]def move(name, destination_folder_name, dc_name, type, service_instance=None): """ Move a folder on a given datacenter. folder_name Name of folder. destination_folder_name Destination folder for named folder. dc_name Name of datacenter where folder will be moved. type (vm, host, datastore, network) Type of folder to be moved. service_instance (optional) The Service Instance from which to obtain managed object references. """ if service_instance is None: service_instance = connect.get_service_instance(opts=__opts__, pillar=__pillar__) ret = {"name": name, "changes": {}, "result": True, "comment": ""} if __opts__["test"]: ret["changes"] = {"new": f"folder {name} will be moved to {destination_folder_name}"} ret["comment"] = "These options are set to change." return ret result = m_folder.move(name, destination_folder_name, dc_name, type, service_instance) ret["changes"] = {"new": f"folder {name} moved to {destination_folder_name}"} ret["comment"] = result["status"] return ret