Source code for saltext.vmware.modules.vmc_sddc_clusters

"""
Salt execution module for Cluster management
Provides methods to Retrieve, Create and Delete cluster in the target SDDC
"""
import logging

from saltext.vmware.modules import vmc_sddc
from saltext.vmware.utils import vmc_constants
from saltext.vmware.utils import vmc_request
from saltext.vmware.utils import vmc_templates

log = logging.getLogger(__name__)
__virtualname__ = "vmc_sddc_clusters"
__func_alias__ = {"list_": "list"}


def __virtual__():
    return __virtualname__


[docs]def list_(hostname, refresh_key, authorization_host, org_id, sddc_id, verify_ssl=True, cert=None): """ Retrieves Clusters list for the given SDDC Please refer the `VMC Get SDDC documentation <https://developer.vmware.com/docs/vmc/latest/vmc/api/orgs/org/sddcs/sddc/get/>`_ to get insight of functionality and input parameters CLI Example: .. code-block:: bash salt <minion id> vmc_sddc_cluster.get hostname=vmc.vmware.com ... hostname The host name of VMC refresh_key API Token of the user which is used to get the Access Token required for VMC operations authorization_host Hostname of the Cloud Services Platform (CSP) org_id The Id of organization to which the SDDC belongs to sddc_id The Id of SDDC for which the clusters would be retrieved verify_ssl (Optional) Option to enable/disable SSL verification. Enabled by default. If set to False, the certificate validation is skipped. cert (Optional) Path to the SSL client certificate file to connect to VMC Cloud Console. The certificate can be retrieved from browser. """ log.info("Retrieving clusters for the sddc %s in the organization %s", sddc_id, org_id) sddc_detail = vmc_sddc.get_by_id( hostname=hostname, refresh_key=refresh_key, authorization_host=authorization_host, org_id=org_id, sddc_id=sddc_id, verify_ssl=verify_ssl, cert=cert, ) if "error" in sddc_detail: return sddc_detail cluster_details = sddc_detail["resource_config"]["clusters"] result = {"description": "vmc_sddc_clusters.list_", "clusters": cluster_details} return result
[docs]def create( hostname, refresh_key, authorization_host, org_id, sddc_id, num_hosts, host_cpu_cores_count=None, host_instance_type=None, msft_license_config=None, storage_capacity=None, verify_ssl=True, cert=None, ): """ Creates a new cluster for a given SDDC with passed config Please refer the `VMC create cluster documentation <https://developer.vmware.com/docs/vmc/latest/vmc/api/orgs/org/sddcs/sddc/clusters/post/>`_ to get insight of functionality and input parameters CLI Example: .. code-block:: bash salt <minion id> vmc_sddc_cluster.create hostname=vmc.vmware.com ... hostname The host name of VMC refresh_key API Token of the user which is used to get the Access Token required for VMC operations authorization_host Hostname of the Cloud Services Platform (CSP) org_id The Id of organization to which the SDDC belongs to sddc_id The Id of SDDC for which the cluster would be created num_hosts: Integer (Required) Number of hosts in a cluster host_cpu_cores_count: Integer (Optional) Customize CPU cores on hosts in a cluster. Specify number of cores to be enabled on hosts in a cluster host_instance_type: enum (Optional) The instance type for the esx hosts added to this cluster. Possible values are: i3.metal, r5.metal, i3en.metal msft_license_config (Optional) The desired Microsoft license status to apply to this cluster msft_license_config expects to be passed as a dict with provided licences .. code-block:: msft_license_config": { "mssql_licensing": "string", "windows_licensing": "string" } storage_capacity: Integer (Optional) For EBS-backed instances only, the requested storage capacity in GiB. verify_ssl (Optional) Option to enable/disable SSL verification. Enabled by default. If set to False, the certificate validation is skipped. cert (Optional) Path to the SSL client certificate file to connect to VMC Cloud Console. The certificate can be retrieved from browser. For example: .. code-block:: { "host_cpu_cores_count": 0, "host_instance_type": "i3.metal", "msft_license_config": { "mssql_licensing": "ENABLED", "windows_licensing": "DISABLED", "academic_license": null }, "num_hosts": 1, "storage_capacity": 0 } """ log.info("Creating a new cluster in the SDDC %s", sddc_id) api_base_url = vmc_request.set_base_url(hostname) api_url = "{base_url}vmc/api/orgs/{org_id}/sddcs/{sddc_id}/clusters".format( base_url=api_base_url, org_id=org_id, sddc_id=sddc_id ) allowed_dict = { "num_hosts": num_hosts, "host_cpu_cores_count": host_cpu_cores_count, "host_instance_type": host_instance_type, "msft_license_config": msft_license_config, "storage_capacity": storage_capacity, } req_data = vmc_request._filter_kwargs(allowed_kwargs=allowed_dict.keys(), **allowed_dict) request_data = vmc_request.create_payload_for_request( vmc_templates.create_sddc_cluster, req_data ) return vmc_request.call_api( method=vmc_constants.POST_REQUEST_METHOD, url=api_url, refresh_key=refresh_key, authorization_host=authorization_host, description="vmc_sddc_clusters.create", data=request_data, verify_ssl=verify_ssl, cert=cert, )
[docs]def get_primary( hostname, refresh_key, authorization_host, org_id, sddc_id, verify_ssl=True, cert=None, ): """ Retrieves the primary cluster in provided customer sddc UUID Please refer the `VMC Get primary cluster documentation <https://developer.vmware.com/docs/vmc/latest/vmc/api/orgs/org/sddcs/sddc/primarycluster/get/>`_ to get insight of functionality and input parameters CLI Example: .. code-block:: bash salt <minion id> vmc_sddc_cluster.get_primary_cluster hostname=vmc.vmware.com ... hostname The host name of VMC refresh_key API Token of the user which is used to get the Access Token required for VMC operations authorization_host Hostname of the Cloud Services Platform (CSP) org_id The Id of organization to which the SDDC belongs to sddc_id The Id of SDDC for which the cluster would be retrieved verify_ssl (Optional) Option to enable/disable SSL verification. Enabled by default. If set to False, the certificate validation is skipped. cert (Optional) Path to the SSL client certificate file to connect to VMC Cloud Console. The certificate can be retrieved from browser. """ log.info( "Retrieves the primary cluster for the sddc %s in the organization %s", sddc_id, org_id ) api_base_url = vmc_request.set_base_url(hostname) api_url = "{base_url}vmc/api/orgs/{org_id}/sddcs/{sddc_id}/primarycluster".format( base_url=api_base_url, org_id=org_id, sddc_id=sddc_id ) return vmc_request.call_api( method=vmc_constants.GET_REQUEST_METHOD, url=api_url, refresh_key=refresh_key, authorization_host=authorization_host, description="vmc_sddc_clusters.get_primary_cluster", verify_ssl=verify_ssl, cert=cert, )
[docs]def delete( hostname, refresh_key, authorization_host, org_id, sddc_id, cluster_id, verify_ssl=True, cert=None, ): """ Delete the cluster in the given SDDC Please refer the `VMC Delete SDDC cluster documentation <https://developer.vmware.com/docs/vmc/latest/vmc/api/orgs/org/sddcs/sddc/clusters/cluster/delete/>`_ to get insight of functionality and input parameters This is a force operation which will delete the cluster even if there can be a data loss. Before calling this operation, all the VMs should be powered off. CLI Example: .. code-block:: bash salt <minion id> vmc_sddc_cluster.create hostname=vmc.vmware.com ... hostname The host name of VMC refresh_key API Token of the user which is used to get the Access Token required for VMC operations authorization_host Hostname of the Cloud Services Platform (CSP) org_id The Id of organization to which the SDDC belongs to sddc_id The Id of SDDC for which the cluster would be deleted cluster_id The Id of the cluster that would get deleted verify_ssl (Optional) Option to enable/disable SSL verification. Enabled by default. If set to False, the certificate validation is skipped. cert (Optional) Path to the SSL client certificate file to connect to VMC Cloud Console. The certificate can be retrieved from browser. """ log.info("Deleting a cluster %s in the SDDC %s", cluster_id, sddc_id) api_base_url = vmc_request.set_base_url(hostname) api_url = "{base_url}vmc/api/orgs/{org_id}/sddcs/{sddc_id}/clusters/{cluster_id}".format( base_url=api_base_url, org_id=org_id, sddc_id=sddc_id, cluster_id=cluster_id ) return vmc_request.call_api( method=vmc_constants.DELETE_REQUEST_METHOD, url=api_url, refresh_key=refresh_key, authorization_host=authorization_host, description="vmc_sddc_clusters.delete", verify_ssl=verify_ssl, cert=cert, )