Source code for saltext.vmware.modules.nsxt_uplink_profiles

"""
Salt Module to perform CRUD operations for NSX-T uplink profiles
"""
import logging

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

log = logging.getLogger(__name__)

__virtual_name__ = "nsxt_uplink_profiles"


def __virtual__():
    return __virtual_name__


UPLINK_PROFILES_BASE_URL = "https://{0}/api/v1/host-switch-profiles"

create_params_for_uplink_profies = [
    "lags",
    "mtu",
    "named_teamings",
    "overlay_encap",
    "required_capabilities",
    "tags",
    "transport_vlan",
    "description",
]


[docs]def get( hostname, username, password, verify_ssl=True, cert=None, cert_common_name=None, cursor=None, deployment_type=None, hostswitch_profile_type=None, include_system_owned=None, included_fields=None, node_type=None, page_size=None, sort_ascending=None, sort_by=None, uplink_teaming_policy_name=None, ): """ Lists NSX-T up-link profiles CLI Example: .. code-block:: bash salt vm_minion nsxt_uplink_profiles.get 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 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) deployment_type (Optional) Deployment type of EdgeNode or PublicCloudGatewayNode If the node_type is specified, then deployment_type may be specified to filter uplink profiles applicable to only PHYSICAL_MACHINE or VIRTUAL_MACHINE deployments of these nodes. hostswitch_profile_type (Optional) Type of host switch profile include_system_owned (Optional) Boolean. Whether the list result contains system resources included_fields (Optional) Comma separated list of fields that should be included in query result node_type (Optional) Fabric node type for which uplink profiles are to be listed. The fabric node type is the resource_type of the Node such as EdgeNode and PublicCloudGatewayNode. If a fabric node type is given, uplink profiles that apply for nodes of the given type will be returned. page_size (Optional) Maximum number of results to return in this page sort_ascending (Optional) Boolean sort_by (Optional) Field by which records are sorted uplink_teaming_policy_name (Optional) The host switch profile's uplink teaming policy name. If populated, only UplinkHostSwitchProfiles with the specified uplink teaming policy name are returned. Otherwise, any HostSwitchProfile can be returned. """ log.info("Fetching NSX-T uplink profiles") url = UPLINK_PROFILES_BASE_URL.format(hostname) params = common._filter_kwargs( allowed_kwargs=[ "cursor", "deployment_type", "hostswitch_profile_type", "include_system_owned", "included_fields", "node_type", "page_size", "sort_ascending", "sort_by", "uplink_teaming_policy_name", ], default_dict=None, cursor=cursor, deployment_type=deployment_type, hostswitch_profile_type=hostswitch_profile_type, include_system_owned=include_system_owned, included_fields=included_fields, page_size=page_size, sort_ascending=sort_ascending, sort_by=sort_by, uplink_teaming_policy_name=uplink_teaming_policy_name, node_type=node_type, ) 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, ): """ Gets nsxt uplink profiles(UplinkHostSwitchProfile) present in the NSX-T Manager with given display_name. CLI Example: .. code-block:: bash salt vm_minion nsxt_uplink_profiles.get_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 display_name The name of the uplink profile 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 """ log.info("Finding uplink profiles with display name: %s", display_name) uplink_profiles = 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 uplink_profiles: return uplink_profiles return {"results": uplink_profiles}
[docs]def create( hostname, username, password, display_name, teaming, verify_ssl=True, cert=None, cert_common_name=None, lags=None, mtu=None, named_teamings=None, overlay_encap=None, required_capabilities=None, tags=None, transport_vlan=None, description=None, ): """ Creates uplink profile(resource_type: UplinkHostSwitchProfile) CLI Example: .. code-block:: bash salt vm_minion nsxt_uplink_profiles.create 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 display_name The name of the uplink profile teaming Default TeamingPolicy associated with this UplinkProfile. Object with following parameters: Example: .. code:: {'standby_list':[],'active_list':[{'uplink_name':'uplink3','uplink_type':'PNIC'}],'policy':'FAILOVER_ORDER'} active_list List of Uplinks used in active list. Array of Uplink objects. .. code:: active_list='[ { "uplink_name": "uplink3", "uplink_type": "PNIC" } ]' Parameters as follows: uplink_name Name of this uplink uplink_type Type of the uplink. PNIC or LAG policy Teaming policy. Required field. Values could be one among FAILOVER_ORDER, LOADBALANCE_SRCID, LOADBALANCE_SRC_MAC standby_list List of Uplinks used in standby list. Array of Uplink objects. .. code:: standby_list='[ { "uplink_name": "uplink2", "uplink_type": "PNIC" } ]' Parameters as follows: uplink_name Name of this uplink uplink_type Type of the uplink. PNIC or LAG 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 lags (Optional) list of LACP group mtu (Optional) Maximum Transmission Unit used for uplinks named_teamings (Optional) List of named uplink teaming policies that can be used by logical switches. Array of NamedTeamingPolicy overlay_encap (Optional) The protocol used to encapsulate overlay traffic required_capabilities (Optional) List of string tags (Optional) Opaque identifier meaninful to API user. Array of Tag transport_vlan (Optional) VLAN used for tagging Overlay traffic of associated HostSwitch. Type: integer description (Optional) Description for the resource """ log.info("Creating nsxt uplink profile") url = UPLINK_PROFILES_BASE_URL.format(hostname) req_data = common._filter_kwargs( allowed_kwargs=create_params_for_uplink_profies, default_dict={}, lags=lags, mtu=mtu, named_teamings=named_teamings, overlay_encap=overlay_encap, required_capabilities=required_capabilities, tags=tags, transport_vlan=transport_vlan, description=description, ) req_data["display_name"] = display_name req_data["resource_type"] = "UplinkHostSwitchProfile" req_data["teaming"] = teaming 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, display_name, teaming, uplink_profile_id, revision, verify_ssl=True, cert=None, cert_common_name=None, lags=None, mtu=None, named_teamings=None, overlay_encap=None, required_capabilities=None, tags=None, transport_vlan=None, description=None, ): """ Updates uplink profile(resource_type: UplinkHostSwitchProfile) CLI Example: .. code-block:: bash salt vm_minion nsxt_uplink_profiles.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 display_name The name of the uplink profile teaming Default TeamingPolicy associated with this UplinkProfile. Object with following parameters: Example: .. code:: {'standby_list':[],'active_list':[{'uplink_name':'uplink3','uplink_type':'PNIC'}],'policy':'FAILOVER_ORDER'} active_list List of Uplinks used in active list. Array of Uplink objects. .. code:: active_list='[ { "uplink_name": "uplink3", "uplink_type": "PNIC" } ]' Parameters as follows: uplink_name Name of this uplink uplink_type Type of the uplink. PNIC or LAG policy Teaming policy. Required field. Values could be one among FAILOVER_ORDER, LOADBALANCE_SRCID, LOADBALANCE_SRC_MAC standby_list List of Uplinks used in standby list. Array of Uplink objects. .. code:: standby_list='[ { "uplink_name": "uplink2", "uplink_type": "PNIC" } ]' Parameters as follows: uplink_name Name of this uplink uplink_type Type of the uplink. PNIC or LAG uplink_profile_id Unique id provided by NSX-T for uplink profile revision _revision property of the uplink profile provided by NSX-T 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 certificate common name lags (Optional) list of LACP group mtu (Optional) Maximum Transmission Unit used for uplinks named_teamings (Optional) List of named uplink teaming policies that can be used by logical switches. Array of NamedTeamingPolicy overlay_encap (Optional) The protocol used to encapsulate overlay traffic required_capabilities (Optional) List of string tags (Optional) Opaque identifier meaninful to API user. Array of Tag transport_vlan (Optional) VLAN used for tagging Overlay traffic of associated HostSwitch. Type: integer description (Optional) Description for the resource """ log.info("Updating nsxt uplink profile %s", display_name) url = UPLINK_PROFILES_BASE_URL.format(hostname) + "/{}".format(uplink_profile_id) req_data = common._filter_kwargs( allowed_kwargs=create_params_for_uplink_profies, default_dict={}, lags=lags, mtu=mtu, named_teamings=named_teamings, overlay_encap=overlay_encap, required_capabilities=required_capabilities, tags=tags, transport_vlan=transport_vlan, description=description, ) req_data["display_name"] = display_name req_data["resource_type"] = "UplinkHostSwitchProfile" req_data["teaming"] = teaming req_data["_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=req_data, )
[docs]def delete( hostname, username, password, uplink_profile_id, verify_ssl=True, cert=None, cert_common_name=None, ): """ Deletes uplink profile(UplinkHostSwitchProfile) CLI Example: .. code-block:: bash salt vm_minion nsxt_uplink_profiles.delete 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 uplink_profile_id Existing uplink profile id 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 """ log.info("Deleting uplink profile with id %s", uplink_profile_id) url = UPLINK_PROFILES_BASE_URL.format(hostname) + "/{}".format(uplink_profile_id) result = 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 result or {"message": "Deleted uplink profile successfully"}