Skip to content

Commit 2363755

Browse files
authored
Merge pull request #214 from manofcolombia/master
Added support for s2s tunnel health endpoints
2 parents c8abfbb + 850e308 commit 2363755

File tree

9 files changed

+208
-1
lines changed

9 files changed

+208
-1
lines changed

fmcapi/api_objects/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@
110110
from .policy_services import ConnectionProfiles
111111
from .policy_services import DynamicAccessPolicies
112112
from .object_services import TimeRanges
113+
from .health import TunnelStatuses
114+
from .health import TunnelDetails
115+
from .health import TunnelSummaries
113116

114117
logging.debug("In the api_objects __init__.py file.")
115118

@@ -218,4 +221,7 @@
218221
"ConnectionProfiles",
219222
"DynamicAccessPolicies",
220223
"TimeRanges",
224+
"TunnelStatuses",
225+
"TunnelDetails",
226+
"TunnelSummaries",
221227
]

fmcapi/api_objects/health/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import logging
44
from .terminateravpnsessions import TerminateRAVPNSessions
5+
from .tunnelstatuses import TunnelStatuses
6+
from .tunneldetails import TunnelDetails
7+
from .tunnelsummaries import TunnelSummaries
58

69
logging.debug("In the health __init__.py file.")
710

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from fmcapi.api_objects.apiclasstemplate import APIClassTemplate
2+
import logging
3+
4+
5+
class TunnelDetails(APIClassTemplate):
6+
"""The TunnelDetails Object in the FMC."""
7+
8+
FIRST_SUPPORTED_FMC_VERSION = "7.3"
9+
REQUIRED_FOR_GET = ["container_uuid"]
10+
VALID_JSON_DATA = [
11+
"type",
12+
"peerA",
13+
"peerB",
14+
]
15+
16+
VALID_FOR_KWARGS = VALID_JSON_DATA + ["container_uuid"]
17+
18+
URL_SUFFIX = f"/health/tunnelstatuses"
19+
20+
def __init__(self, fmc, **kwargs):
21+
"""
22+
Initialize TunnelDetails object.
23+
24+
:param fmc (object): FMC object
25+
:param **kwargs: Any other values passed during instantiation.
26+
:return: requests response
27+
"""
28+
super().__init__(fmc, **kwargs)
29+
logging.debug("In __init__() for TunnelDetails class.")
30+
self.parse_kwargs(**kwargs)
31+
URL_CONTAINER_SUFFIX = f"/{self.container_uuid}/tunneldetails"
32+
self.URL = self.URL + URL_CONTAINER_SUFFIX
33+
34+
def delete(self, **kwargs):
35+
"""DELETE method for API for TunnelDetails not supported."""
36+
logging.info("DELETE method for API for TunnelDetails not supported.")
37+
pass
38+
39+
def put(self):
40+
"""PUT method for API for TunnelDetails not supported."""
41+
logging.info("PUT method for API for TunnelDetails not supported.")
42+
pass
43+
44+
def post(self, **kwargs):
45+
"""POST method for API for TunnelDetails not supported."""
46+
logging.info("POST method for API for TunnelDetails not supported.")
47+
pass
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from fmcapi.api_objects.apiclasstemplate import APIClassTemplate
2+
import logging
3+
4+
5+
class TunnelStatuses(APIClassTemplate):
6+
"""The TunnelStatuses Object in the FMC."""
7+
8+
FIRST_SUPPORTED_FMC_VERSION = "7.3"
9+
VALID_JSON_DATA = [
10+
"id",
11+
"type",
12+
"state",
13+
"lastChange",
14+
"vpnTopology",
15+
"peerA",
16+
"peerB",
17+
]
18+
VALID_GET_FILTERS = [
19+
"vpnTopologyId", # vpnTopologyId: uuid of vpn topo
20+
"deviceId", # deviceId: uuid of device
21+
"status", # status: TUNNEL_UP|TUNNEL_DOWN|UNKNOWN
22+
"deployedStatus", # deployedStatus: Deployed|Configured|Both
23+
"sortBy", # sortBy: :|<|> Topology|Device|Status|LastChange (sortBy<Device == sort by device in ascending order)
24+
]
25+
VALID_FOR_KWARGS = VALID_JSON_DATA + VALID_GET_FILTERS + []
26+
27+
URL_SUFFIX = "/health/tunnelstatuses"
28+
29+
def __init__(self, fmc, **kwargs):
30+
"""
31+
Initialize TunnelStatuses object.
32+
33+
:param fmc (object): FMC object
34+
:param **kwargs: Any other values passed during instantiation.
35+
:return: requests response
36+
"""
37+
super().__init__(fmc, **kwargs)
38+
logging.debug("In __init__() for TunnelStatuses class.")
39+
self.parse_kwargs(**kwargs)
40+
41+
def delete(self, **kwargs):
42+
"""DELETE method for API for TunnelStatuses not supported."""
43+
logging.info("DELETE method for API for TunnelStatuses not supported.")
44+
pass
45+
46+
def put(self):
47+
"""PUT method for API for TunnelStatuses not supported."""
48+
logging.info("PUT method for API for TunnelStatuses not supported.")
49+
pass
50+
51+
def post(self, **kwargs):
52+
"""POST method for API for TunnelStatuses not supported."""
53+
logging.info("POST method for API for TunnelStatuses not supported.")
54+
pass
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from fmcapi.api_objects.apiclasstemplate import APIClassTemplate
2+
import logging
3+
4+
5+
class TunnelSummaries(APIClassTemplate):
6+
"""The TunnelSummaries Object in the FMC."""
7+
8+
FIRST_SUPPORTED_FMC_VERSION = "7.3"
9+
VALID_JSON_DATA = [
10+
"tunnelCount",
11+
"tunnelUpCount",
12+
"tunnelDownCount",
13+
"tunnelUnknownCount",
14+
"type",
15+
]
16+
VALID_GET_FILTERS = [
17+
"vpnTopologyId", # vpnTopologyId: uuid of vpn topo
18+
"deviceId", # deviceId: uuid of device
19+
"groupBy", # Topology|Device
20+
]
21+
VALID_FOR_KWARGS = VALID_JSON_DATA + VALID_GET_FILTERS + []
22+
23+
URL_SUFFIX = "/health/tunnelsummaries"
24+
25+
def __init__(self, fmc, **kwargs):
26+
"""
27+
Initialize TunnelSummaries object.
28+
29+
:param fmc (object): FMC object
30+
:param **kwargs: Any other values passed during instantiation.
31+
:return: requests response
32+
"""
33+
super().__init__(fmc, **kwargs)
34+
logging.debug("In __init__() for TunnelSummaries class.")
35+
self.parse_kwargs(**kwargs)
36+
37+
def delete(self, **kwargs):
38+
"""DELETE method for API for TunnelSummaries not supported."""
39+
logging.info("DELETE method for API for TunnelSummaries not supported.")
40+
pass
41+
42+
def put(self):
43+
"""PUT method for API for TunnelSummaries not supported."""
44+
logging.info("PUT method for API for TunnelSummaries not supported.")
45+
pass
46+
47+
def post(self, **kwargs):
48+
"""POST method for API for TunnelSummaries not supported."""
49+
logging.info("POST method for API for TunnelSummaries not supported.")
50+
pass

unit_tests/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
from .dynamicaccesspolicies import test__dynamicaccesspolicies
8080
from .timeranges import test__timeranges
8181
from .fqdns import test__fqdns
82+
from .tunnelstatuses import test__tunnelstatuses
83+
from .tunneldetails import test__tunneldetails
84+
from .tunnelsummaries import test__tunnelsummaries
8285

8386
logging.debug("In the unit-tests __init__.py file.")
8487

@@ -161,5 +164,8 @@
161164
"test__connectionprofiles",
162165
"test__dynamicaccesspolicies",
163166
"test__timeranges",
164-
"test__fqdns"
167+
"test__fqdns",
168+
"test__tunnelstatuses",
169+
"test__tunneldetails",
170+
"test__tunnelsummaries",
165171
]

unit_tests/tunneldetails.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import logging
2+
import fmcapi
3+
4+
5+
def test__tunneldetails(fmc):
6+
logging.info("Test TunnelDetails. Get TunnelDetails.")
7+
8+
obj1 = fmcapi.TunnelDetails(fmc=fmc, container_uuid="40A6B737-FDDC-0ed3-0000-000000000297") # Tunnel uuid not topology uuid
9+
tunnel_details = obj1.get()
10+
del obj1
11+
12+
logging.info("Test TunnelDetails done.\n")

unit_tests/tunnelstatuses.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import logging
2+
import fmcapi
3+
4+
5+
def test__tunnelstatuses(fmc):
6+
logging.info("Test TunnelStatuses. Get TunnelStatuses.")
7+
8+
obj1 = fmcapi.TunnelStatuses(fmc=fmc)
9+
all_tunnel_statuses = obj1.get()
10+
del(obj1)
11+
12+
obj2 = fmcapi.TunnelStatuses(fmc=fmc)
13+
obj2.id = "40A6B737-FDDC-0ed3-0000-000000000297"
14+
id_tunnel_status = obj2.get()
15+
del(obj2)
16+
17+
logging.info("Test TunnelStatuses done.\n")

unit_tests/tunnelsummaries.py

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import logging
2+
import fmcapi
3+
4+
5+
def test__tunnelsummaries(fmc):
6+
logging.info("Test TunnelSummaries. Get TunnelSummaries.")
7+
8+
obj1 = fmcapi.TunnelSummaries(fmc=fmc)
9+
tunnel_summaries = obj1.get()
10+
del obj1
11+
12+
logging.info("Test TunnelSummaries done.\n")

0 commit comments

Comments
 (0)