Source code for saltext.vmware.modules.nsxt_transport_zone

"""
Salt execution Module to manage VMware NSX-T transport-zones
"""
import logging

from saltext.vmware.utils import common
from saltext.vmware.utils import nsxt_request

log = logging.getLogger(__name__)
__virtual_name__ = "nsxt_transport_zone"


def __virtual__():
    return __virtual_name__


TRANSPORT_ZONE_BASE_URL = "https://{0}/api/v1/transport-zones"

create_params_for_transport_zones = [
    "host_switch_name",
    "transport_type",
    "description",
    "host_switch_id",
    "host_switch_mode",
    "uplink_teaming_policy_names",
    "tags",
    "is_default",
    "display_name",
]


[docs]def get( hostname, username, password, verify_ssl=True, cert=None, cert_common_name=None, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None, ): """ Retrieves transport zones from Given NSX-T Manager CLI Example: .. code-block:: bash salt vm_minion nsxt_transport_zones.get_transport_zone hostname=nsxt-manager.local username=admin ... hostname The host name of NSX-T manager username Username to connect to NSX-T manager password Password to connect to NSX-T manager 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 NSX-T manager. The certificate can be retrieved from browser. cert_common_name (Optional) By default, the hostname parameter and the common name in certificate is compared for host name verification. If the client certificate common name and hostname do not match (in case of self-signed certificates), specify the certificate common name as part of this parameter. This value is then used to compare against certificate common name. cursor (Optional) Opaque cursor to be used for getting next page of records (supplied by current result page) include_system_owned (Optional) Filter to indicate whether to include system owned Transport Zones. included_fields (Optional) Comma separated list of fields that should be included in query result is_default (Optional) Filter to choose if default transport zones will be returned. If set to true, only the default transport zones will be returned. If set to false, all transport zones except the default ones will be returned. If unset, all transport zones will be returned. page_size (Optional) Maximum number of results to return in this page (server may return fewer) sort_ascending (Optional) Value to sort result in ascending order sort_by (Optional) Field by which records are sorted """ log.info("Fetching transport zones") url = TRANSPORT_ZONE_BASE_URL.format(hostname) params = common._filter_kwargs( allowed_kwargs=["cursor", "included_fields", "page_size", "sort_ascending", "sort_by"], default_dict=None, cursor=cursor, included_fields=included_fields, page_size=page_size, sort_by=sort_by, sort_ascending=sort_ascending, ) return nsxt_request.call_api( method="get", url=url, username=username, password=password, cert_common_name=cert_common_name, verify_ssl=verify_ssl, cert=cert, params=params, )
[docs]def get_by_display_name( hostname, username, password, display_name, verify_ssl=True, cert=None, cert_common_name=None, ): """ Lists the Transport Zones based on display name in the NSX-T Manager CLI Example: .. code-block:: bash salt vm_minion nsxt_transport_node.get_transport_node_by_display_name hostname=nsxt-manager.local username=admin ... hostname The host name of NSX-T manager username Username to connect to NSX-T manager password Password to connect to NSX-T manager verify_ssl Option to enable/disable SSL verification. Enabled by default. If set to False, the certificate validation is skipped. cert Path to the SSL client certificate file to connect to NSX-T manager. The certificate can be retrieved from browser. cert_common_name (Optional) By default, the hostname parameter and the common name in certificate is compared for host name verification. If the client certificate common name and hostname do not match (in case of self-signed certificates), specify the certificate common name as part of this parameter. This value is then used to compare against cursor (Optional) Opaque cursor to be used for getting next page of records (supplied by current result page) included_fields (Optional) Comma separated list of fields that should be included in query result page_size (Optional) Maximum number of results to return in this page sort_by (Optional) Field by which records are sorted sort_ascending (Optional) Boolean value to sort result in ascending order """ log.info("Finding transport zones with display name: %s", display_name) transport_zones = common._read_paginated( func=get, display_name=display_name, hostname=hostname, username=username, password=password, verify_ssl=verify_ssl, cert=cert, cert_common_name=cert_common_name, ) if "error" in transport_zones: return transport_zones return {"results": transport_zones}
[docs]def create( hostname, username, password, verify_ssl=True, cert=None, cert_common_name=None, host_switch_name=None, transport_type=None, description=None, display_name=None, host_switch_id=None, host_switch_mode=None, uplink_teaming_policy_names=None, tags=None, is_default=None, ): """ Creates transport zone to NSX-T Manager CLI Example: .. code-block:: bash salt vm_minion nsxt_transport_zone.create_transport_zone hostname=nsxt-manager.local username=admin ... hostname The host name of NSX-T manager username Username to connect to NSX-T manager password Password to connect to NSX-T manager transport_type (Optional) Transport type to be added to NSX-T Manager description (Optional) Description for the transport zones display_name (Optional) Value of the transport zone which we want to specify 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 NSX-T manager. The certificate can be retrieved from browser. cert_common_name (Optional) By default, the hostname parameter and the common name in certificate is compared for host name verification. If the client certificate common name and hostname do not match (in case of self-signed certificates), specify the certificate common name as part of this parameter. This value is then used to compare against certificate common name. host_switch_id (Optional) The host switch id generated by the system. host_switch_mode (Optional) Operational mode of the transport zone. STANDARD mode applies to all the hypervisors. ENS mode stands for Enhanced Networking Stack. This feature is only available for ESX hypervisor. It is not available on KVM, EDGE and Public Cloud Gateway etc. When a Transport Zone mode is set to ENS, only Transport Nodes of type ESX can participate in such a Transport Zone. host_switch_name (Optional) Name of the host switch on all transport nodes in this transport zone that will be used to run NSX network traffic. If this name is unset or empty then the default host switch name will be used. uplink_teaming_policy_names (Optional) Names of the switching uplink teaming policies that are supported by this transport zone. tags (Optional) Opaque identifiers meaningful to the API user """ log.info("Creating Transport Zones") url = TRANSPORT_ZONE_BASE_URL.format(hostname) req_data = common._filter_kwargs( allowed_kwargs=create_params_for_transport_zones, default_dict={}, host_switch_name=host_switch_name, transport_type=transport_type, description=description, host_switch_id=host_switch_id, host_switch_mode=host_switch_mode, uplink_teaming_policy_names=uplink_teaming_policy_names, display_name=display_name, tags=tags, is_default=is_default, ) return nsxt_request.call_api( method="post", url=url, username=username, password=password, cert_common_name=cert_common_name, verify_ssl=verify_ssl, cert=cert, data=req_data, )
[docs]def update( hostname, username, password, transport_zone_id, revision, verify_ssl=None, cert=None, cert_common_name=None, host_switch_name=None, transport_type=None, description=None, host_switch_id=None, host_switch_mode=None, uplink_teaming_policy_names=None, tags=None, is_default=None, display_name=None, ): """ Update transport zone to NSX-T Manager CLI Example: .. code-block:: bash salt vm_minion nsxt_transport_zone.update hostname=nsxt-manager.local username=admin ... hostname The host name of NSX-T manager username Username to connect to NSX-T manager password Password to connect to NSX-T manager transport_zone_id Id of the transport zone for which update needs to be done 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 NSX-T manager. The certificate can be retrieved from browser. revision Required to keep track of the total posted version cert_common_name (Optional) By default, the hostname parameter and the common name in certificate is compared for host name verification. If the client certificate common name and hostname do not match (in case of self-signed certificates), specify the certificate common name as part of this parameter. This value is then used to compare against certificate common name. host_switch_id (Optional) The host switch id generated by the system. host_switch_mode (Optional) Operational mode of the transport zone. STANDARD mode applies to all the hypervisors. ENS mode stands for Enhanced Networking Stack. This feature is only available for ESX hypervisor. It is not available on KVM, EDGE and Public Cloud Gateway etc. When a Transport Zone mode is set to ENS, only Transport Nodes of type ESX can participate in such a Transport Zone. host_switch_name (Optional) Name of the host switch on all transport nodes in this transport zone that will be used to run NSX network traffic. If this name is unset or empty then the default host switch name will be used. uplink_teaming_policy_names (Optional) Names of the switching uplink teaming policies that are supported by this transport zone. tags (Optional) Opaque identifiers meaningful to the API user """ log.info("Updating transport zones") url = TRANSPORT_ZONE_BASE_URL.format(hostname) + "/{}".format(transport_zone_id) update_body = common._filter_kwargs( allowed_kwargs=create_params_for_transport_zones, default_dict={}, host_switch_name=host_switch_name, transport_type=transport_type, description=description, host_switch_id=host_switch_id, host_switch_mode=host_switch_mode, uplink_teaming_policy_names=uplink_teaming_policy_names, display_name=display_name, tags=tags, is_default=is_default, ) update_body["_revision"] = revision return nsxt_request.call_api( method="put", url=url, username=username, password=password, cert_common_name=cert_common_name, verify_ssl=verify_ssl, cert=cert, data=update_body, )
[docs]def delete( hostname, username, password, transport_zone_id, verify_ssl=True, cert=None, cert_common_name=None, ): """ Deletes transport-zone in NSX-T Manager CLI Example: .. code-block:: bash salt vm_minion nsxt_transport_zone.delete_license hostname=nsxt-manager.local username=admin ... hostname The host name of NSX-T manager username Username to connect to NSX-T manager password Password to connect to NSX-T manager transport-zone-id Transport zone id which needs to be 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 NSX-T manager. The certificate can be retrieved from browser. cert_common_name (Optional) By default, the hostname parameter and the common name in certificate is compared for host name verification. If the client certificate common name and hostname do not match (in case of self-signed certificates), specify the certificate common name as part of this parameter. This value is then used to compare against certificate common name. For more information, see `VMware API docs for NSX-T <https://code.vmware.com/apis/1163/nsx-t>`_ """ log.info("Deleting transport zones for %s", transport_zone_id) url = TRANSPORT_ZONE_BASE_URL.format(hostname) + "/{}".format(transport_zone_id) delete_response = nsxt_request.call_api( method="delete", url=url, username=username, password=password, cert_common_name=cert_common_name, verify_ssl=verify_ssl, cert=cert, ) return delete_response or {"message": "Deleted transport zone successfully"}