"""
Salt Module to perform CRUD operations for NSX-T transport node profiles
"""
import logging
from saltext.vmware.utils import common
from saltext.vmware.utils import nsxt_request
log = logging.getLogger(__name__)
__virtual_name__ = "nsxt_transport_node_profiles"
def __virtual__():
return __virtual_name__
TRANSPORT_NODE_PROFILE_BASE_URL = "https://{0}/api/v1/transport-node-profiles"
create_params_for_transport_profiles = [
"transport_zone_endpoints",
"description",
"ignore_overridden_hosts",
]
[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,
):
"""
Lists NSX-T transport node profiles
CLI Example:
.. code-block:: bash
salt vm_minion nsxt_transport_node_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)
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_ascending
(Optional) Boolean. Specifies sorting order
sort_by
(Optional) Field by which records are sorted
For more information, see `VMware API docs for NSX-T <https://code.vmware.com/apis/1163/nsx-t>`_
"""
log.info("Fetching NSX-T transport node profiles")
url = TRANSPORT_NODE_PROFILE_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,
):
"""
Gets nsxt transport node profiles present in the NSX-T Manager with given display_name.
CLI Example:
.. code-block:: bash
salt vm_minion nsxt_transport_node_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 transport node 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 transport node profiles with display name: %s", display_name)
transport_node_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 transport_node_profiles:
return transport_node_profiles
return {"results": transport_node_profiles}
[docs]def create(
hostname,
username,
password,
display_name,
host_switch_spec,
verify_ssl=True,
cert=None,
cert_common_name=None,
transport_zone_endpoints=None,
description=None,
ignore_overridden_hosts=None,
):
"""
Creates transport node profile with the data payload provided.
CLI Example:
.. code-block:: bash
salt vm_minion nsxt_transport_node_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 transport node 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
description
(Optional) Description of this resource
display_name
(Optional) Display name for the transport node profile. Defaults to nsxt id, if not set
host_switch_spec
(Optional) Transport node host switch specification
The HostSwitchSpec is the base class for standard and preconfigured host switch specifications.
Only standard host switches are supported in the transport node profile.
transport_zone_endpoints
(Optional) This is deprecated. TransportZoneEndPoints should be specified per host switch at
StandardHostSwitch through Transport Node or Transport Node Profile configuration. Array of transport zones.
ignore_overridden_hosts
(Optional) Boolean which determines if cluster-level configuration should be applied on overridden hosts. Default: False
.. code-block:: yaml
hostname: <nsxt-hostname>
username: <nsxt-username>
password: <nsxt-password>
verify-ssl: <True/False>
display_name: <display_name>
description: <description>
host_switch_spec:
resource_type: StandardHostSwitchSpec
host_switches:
- host_switch_name: nvds1
host_switch_type: NVDS/VDS
host_switch_mode: STANDARD
host_switch_profile_ids:
- key: UplinkHostSwitchProfile
value: <Respective nsxt id>
- key: LldpHostSwitchProfile
value: <Respective nsxt id>
- key: NiocProfile
value: <Respective nsxt id>
is_migrate_pnics: false
ip_assignment_spec:
resource_type: AssignedByDhcp
transport_zone_endpoints:
- transport_zone_id: <Respective nsxt id>
"""
log.info("Creating nsxt transport node profile")
url = TRANSPORT_NODE_PROFILE_BASE_URL.format(hostname)
req_data = common._filter_kwargs(
allowed_kwargs=create_params_for_transport_profiles,
default_dict={},
transport_zone_endpoints=transport_zone_endpoints,
description=description,
ignore_overridden_hosts=ignore_overridden_hosts,
)
req_data["resource_type"] = "TransportNodeProfile"
req_data["display_name"] = display_name
req_data["host_switch_spec"] = host_switch_spec
req_data["host_switch_spec"]["resource_type"] = "StandardHostSwitchSpec"
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,
host_switch_spec,
transport_node_profile_id,
revision,
verify_ssl=True,
cert=None,
cert_common_name=None,
transport_zone_endpoints=None,
description=None,
ignore_overridden_hosts=None,
):
"""
Updates transport node profile with the data payload provided.
CLI Example:
.. code-block:: bash
salt vm_minion nsxt_transport_node_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
(Optional) The name of the transport node 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
transport_node_profile_id
Unique id provided by NSX-T for transport node profile
revision
_revision property of the transport node profile provided by NSX-T
description
(Optional) Description of this resource
display_name
(Optional) Display name for the transport node profile. Defaults to nsxt id, if not set
host_switch_spec
(Optional) Transport node host switch specification
The HostSwitchSpec is the base class for standard and preconfigured host switch specifications.
Only standard host switches are supported in the transport node profile.
transport_zone_endpoints
(Optional) This is deprecated. TransportZoneEndPoints should be specified per host switch at
StandardHostSwitch through Transport Node or Transport Node Profile configuration. Array of transport zones.
ignore_overridden_hosts
(Optional) Boolean which determines if cluster-level configuration should be applied on overridden hosts. Default: False
.. code-block:: yaml
hostname: <nsxt-hostname>
username: <nsxt-username>
password: <nsxt-password>
verify-ssl: <True/False>
display_name: <display_name>
description: <description>
host_switch_spec:
resource_type: StandardHostSwitchSpec
host_switches:
- host_switch_name: nvds1
host_switch_type: NVDS/VDS
host_switch_mode: STANDARD
host_switch_profile_ids:
- key: UplinkHostSwitchProfile
value: <Respective nsxt id>
- key: LldpHostSwitchProfile
value: <Respective nsxt id>
- key: NiocProfile
value: <Respective nsxt id>
is_migrate_pnics: false
ip_assignment_spec:
resource_type: AssignedByDhcp
transport_zone_endpoints:
- transport_zone_id: <Respective nsxt id>
"""
log.info("Updating nsxt transport node profile")
url = TRANSPORT_NODE_PROFILE_BASE_URL.format(hostname) + "/{}".format(transport_node_profile_id)
req_data = common._filter_kwargs(
allowed_kwargs=create_params_for_transport_profiles,
default_dict={},
transport_zone_endpoints=transport_zone_endpoints,
description=description,
ignore_overridden_hosts=ignore_overridden_hosts,
)
req_data["resource_type"] = "TransportNodeProfile"
req_data["display_name"] = display_name
req_data["host_switch_spec"] = host_switch_spec
req_data["host_switch_spec"]["resource_type"] = "StandardHostSwitchSpec"
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,
transport_node_profile_id,
verify_ssl=True,
cert=None,
cert_common_name=None,
):
"""
Deletes transport node profile
CLI Example:
.. code-block:: bash
salt vm_minion nsxt_transport_node_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
transport_node_profile_id
Existing transport node 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 transport node profile with id %s", transport_node_profile_id)
url = TRANSPORT_NODE_PROFILE_BASE_URL.format(hostname) + "/{}".format(transport_node_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 transport node profile successfully"}