"""
Salt execution module for VPN statistics
Provides methods to Display VPN Statistics and Sessions.
"""
import logging
from saltext.vmware.utils import vmc_constants
from saltext.vmware.utils import vmc_request
log = logging.getLogger(__name__)
__virtualname__ = "vmc_vpn_statistics"
def __virtual__():
return __virtualname__
[docs]def get_ipsec_statistics(
hostname,
refresh_key,
authorization_host,
org_id,
sddc_id,
locale_service_id,
service_id,
session_id,
tier0_id=None,
tier1_id=None,
verify_ssl=True,
cert=None,
enforcement_point_path=None,
):
"""
Retrieves VPN IPSec Statistics from Given SDDC
CLI Example:
.. code-block:: bash
salt vm_minion vmc_vpn_statistics.get_ipsec_statistics hostname=nsxt-manager.local ...
hostname
The host name of NSX-T manager
refresh_key
refresh_key to get access token
authorization_host
hostname to get access token
org_id
org_id of the SDDC
sddc_id
sddc_id from which ipsec statistics should be retrieved
locale_service_id
id of locale service for example default
service_id
id of service for example default
session_id
id of session
Enter one of the tier0 or tier1 id
tier0_id
id of tier0 for example vmc
tier1_id is currently not supported
id of tier1
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.
enforcement_point_path
(Optional) String Path of the enforcement point
"""
log.info("Retrieving ipsec statistics for SDDC %s", sddc_id)
if tier0_id and tier1_id:
log.error(vmc_constants.VPN_ERROR_SPECIFY_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ONE}
elif not (tier0_id or tier1_id):
log.error(vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE}
if tier0_id:
tier = "tier-0s"
tier_id = tier0_id
else:
tier = "tier-1s"
tier_id = tier1_id
api_url_base = vmc_request.set_base_url(hostname)
api_url = (
"{base_url}vmc/reverse-proxy/api/orgs/{org_id}/sddcs/{sddc_id}/"
"policy/api/v1/infra/{tier}/{tier_id}/locale-services/{locale_service_id}/"
"ipsec-vpn-services/{service_id}/sessions/{session_id}/statistics"
)
api_url = api_url.format(
base_url=api_url_base,
org_id=org_id,
sddc_id=sddc_id,
tier=tier,
tier_id=tier_id,
locale_service_id=locale_service_id,
service_id=service_id,
session_id=session_id,
)
params = vmc_request._filter_kwargs(
allowed_kwargs=["enforcement_point_path"], enforcement_point_path=enforcement_point_path
)
return vmc_request.call_api(
method=vmc_constants.GET_REQUEST_METHOD,
url=api_url,
refresh_key=refresh_key,
authorization_host=authorization_host,
description="vmc_vpn_statistics.get_ipsec_statistics",
verify_ssl=verify_ssl,
cert=cert,
params=params,
)
[docs]def get_ipsec_sessions(
hostname,
refresh_key,
authorization_host,
org_id,
sddc_id,
locale_service_id,
service_id,
tier0_id=None,
tier1_id=None,
verify_ssl=True,
cert=None,
cursor=None,
page_size=None,
sort_by=None,
sort_ascending=None,
):
"""
Retrieves ipsec session from Given SDDC
this also include l2vpn sessions
CLI Example:
.. code-block:: bash
salt vm_minion vmc_vpn_statistics.get_ipsec_sessions hostname=nsxt-manager.local ...
hostname
The host name of NSX-T manager
refresh_key
refresh_key to get access token
authorization_host
hostname to get access token
org_id
org_id of the SDDC
sddc_id
sddc_id from which public ips should be retrieved
locale_service_id
id of locale service for example default
service_id
id of service for example default
Enter one of the tier0 or tier1 id
tier0_id
id of tier0 for example vmc
tier1_id is currently not supported
id of tier1
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.
cursor
(Optional) Opaque cursor to be used for getting next page of records (supplied by current result page)
page_size
(Optional) Maximum number of results to return in this page. Default page size is 1000.
sort_by
(Optional) Field by which records are sorted
sort_ascending
(Optional) Boolean value to sort result in ascending order. Enabled by default.
"""
log.info("Retrieving ipsec sessions for SDDC %s", sddc_id)
if tier0_id and tier1_id:
log.error(vmc_constants.VPN_ERROR_SPECIFY_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ONE}
elif not (tier0_id or tier1_id):
log.error(vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE}
if tier0_id:
tier = "tier-0s"
tier_id = tier0_id
else:
tier = "tier-1s"
tier_id = tier1_id
api_url_base = vmc_request.set_base_url(hostname)
api_url = (
"{base_url}vmc/reverse-proxy/api/orgs/{org_id}/sddcs/{sddc_id}/"
"policy/api/v1/infra/{tier}/{tier_id}/locale-services/{locale_service_id}/"
"ipsec-vpn-services/{service_id}/sessions"
)
api_url = api_url.format(
base_url=api_url_base,
org_id=org_id,
sddc_id=sddc_id,
tier=tier,
tier_id=tier_id,
locale_service_id=locale_service_id,
service_id=service_id,
)
params = vmc_request._filter_kwargs(
allowed_kwargs=["cursor", "page_size", "sort_ascending", "sort_by"],
cursor=cursor,
page_size=page_size,
sort_by=sort_by,
sort_ascending=sort_ascending,
)
return vmc_request.call_api(
method=vmc_constants.GET_REQUEST_METHOD,
url=api_url,
refresh_key=refresh_key,
authorization_host=authorization_host,
description="vmc_vpn_statistics.get_ipsec_sessions",
verify_ssl=verify_ssl,
cert=cert,
params=params,
)
[docs]def get_l2vpn_statistics(
hostname,
refresh_key,
authorization_host,
org_id,
sddc_id,
locale_service_id,
service_id,
session_id,
tier0_id=None,
tier1_id=None,
verify_ssl=True,
cert=None,
enforcement_point_path=None,
source=None,
):
"""
Retrieves L2VPN Statistics from Given SDDC
CLI Example:
.. code-block:: bash
salt vm_minion vmc_vpn_statistics.get_l2vpn_statistics hostname=nsxt-manager.local ...
hostname
The host name of NSX-T manager
refresh_key
refresh_key to get access token
authorization_host
hostname to get access token
org_id
org_id of the SDDC
sddc_id
sddc_id from which ipsec statistics should be retrieved
locale_service_id
id of locale service for example default
service_id
id of service for example default
session_id
id of session
Enter one of the tier0 or tier1 id
tier0_id
id of tier0 for example vmc
tier1_id is currently not supported
id of tier1
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.
enforcement_point_path
(Optional) String Path of the enforcement point
source
(Optional) valid options are realtime, cached
"""
log.info("Retrieving l2vpn statistics for SDDC %s", sddc_id)
if tier0_id and tier1_id:
log.error(vmc_constants.VPN_ERROR_SPECIFY_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ONE}
elif not (tier0_id or tier1_id):
log.error(vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE}
if tier0_id:
tier = "tier-0s"
tier_id = tier0_id
else:
tier = "tier-1s"
tier_id = tier1_id
api_url_base = vmc_request.set_base_url(hostname)
api_url = (
"{base_url}vmc/reverse-proxy/api/orgs/{org_id}/sddcs/{sddc_id}/"
"policy/api/v1/infra/{tier}/{tier_id}/locale-services/{locale_service_id}/"
"l2vpn-services/{service_id}/sessions/{session_id}/statistics"
)
api_url = api_url.format(
base_url=api_url_base,
org_id=org_id,
sddc_id=sddc_id,
tier=tier,
tier_id=tier_id,
locale_service_id=locale_service_id,
service_id=service_id,
session_id=session_id,
)
params = vmc_request._filter_kwargs(
allowed_kwargs=["enforcement_point_path", "source"],
enforcement_point_path=enforcement_point_path,
source=source,
)
return vmc_request.call_api(
method=vmc_constants.GET_REQUEST_METHOD,
url=api_url,
refresh_key=refresh_key,
authorization_host=authorization_host,
description="vmc_vpn_statistics.get_l2vpn_statistics",
verify_ssl=verify_ssl,
cert=cert,
params=params,
)
[docs]def get_l2vpn_sessions(
hostname,
refresh_key,
authorization_host,
org_id,
sddc_id,
locale_service_id,
service_id,
tier0_id=None,
tier1_id=None,
verify_ssl=True,
cert=None,
cursor=None,
page_size=None,
sort_by=None,
sort_ascending=None,
):
"""
Retrieves l2vpn session from Given SDDC
CLI Example:
.. code-block:: bash
salt vm_minion vmc_vpn_statistics.get_l2vpn_sessions hostname=nsxt-manager.local ...
hostname
The host name of NSX-T manager
refresh_key
refresh_key to get access token
authorization_host
hostname to get access token
org_id
org_id of the SDDC
sddc_id
sddc_id from which public ips should be retrieved
locale_service_id
id of locale service for example default
service_id
id of service for example default
Enter one of the tier0 or tier1 id
tier0_id
id of tier0 for example vmc
tier1_id is currently not supported
id of tier1
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.
cursor
(Optional) Opaque cursor to be used for getting next page of records (supplied by current result page)
page_size
(Optional) Maximum number of results to return in this page. Default page size is 1000.
sort_by
(Optional) Field by which records are sorted
sort_ascending
(Optional) Boolean value to sort result in ascending order. Enabled by default.
"""
log.info("Retrieving l2vpn sessions for SDDC %s", sddc_id)
if tier0_id and tier1_id:
log.error(vmc_constants.VPN_ERROR_SPECIFY_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ONE}
elif not (tier0_id or tier1_id):
log.error(vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE)
return {"error": vmc_constants.VPN_ERROR_SPECIFY_ATLEAST_ONE}
if tier0_id:
tier = "tier-0s"
tier_id = tier0_id
else:
tier = "tier-1s"
tier_id = tier1_id
api_url_base = vmc_request.set_base_url(hostname)
api_url = (
"{base_url}vmc/reverse-proxy/api/orgs/{org_id}/sddcs/{sddc_id}/"
"policy/api/v1/infra/{tier}/{tier_id}/locale-services/{locale_service_id}/"
"l2vpn-services/{service_id}/sessions"
)
api_url = api_url.format(
base_url=api_url_base,
org_id=org_id,
sddc_id=sddc_id,
tier=tier,
tier_id=tier_id,
locale_service_id=locale_service_id,
service_id=service_id,
)
params = vmc_request._filter_kwargs(
allowed_kwargs=["cursor", "page_size", "sort_ascending", "sort_by"],
cursor=cursor,
page_size=page_size,
sort_by=sort_by,
sort_ascending=sort_ascending,
)
return vmc_request.call_api(
method=vmc_constants.GET_REQUEST_METHOD,
url=api_url,
refresh_key=refresh_key,
authorization_host=authorization_host,
description="vmc_vpn_statistics.get_l2vpn_sessions",
verify_ssl=verify_ssl,
cert=cert,
params=params,
)