-
Added support for FMC 7.2.0 api calls (incomplete)
- object.anyconnectpackage.create(...)
- object.anyconnectpackage.update(...)
- object.anyconnectpackage.delete(...)
- object.anyconnectprofile.create(...)
- object.anyconnectprofile.update(...)
- object.anyconnectprofile.delete(...)
- object.certenrollment.create(...)
- object.certenrollment.update(...)
- object.certenrollment.delete(...)
- object.certificatemap.create(...)
- object.certificatemap.update(...)
- object.certificatemap.delete(...)
- object.grouppolicy.create(...)
- object.grouppolicy.update(...)
- object.grouppolicy.delete(...)
- object.hostscanpackage.create(...)
- object.hostscanpackage.update(...)
- object.hostscanpackage.delete(...)
- object.ipv4addresspool.create(...)
- object.ipv4addresspool.update(...)
- object.ipv4addresspool.delete(...)
- object.ipv6addresspool.create(...)
- object.ipv6addresspool.update(...)
- object.ipv6addresspool.delete(...)
- object.radiusservergroup.create(...)
- object.radiusservergroup.update(...)
- object.radiusservergroup.delete(...)
- object.ssoserver.create(...)
- object.ssoserver.update(...)
- object.ssoserver.delete(...)
- policy.ravpn.create(...)
- policy.ravpn.update(...)
- policy.ravpn.delete(...)
- policy.ravpn.addressassignmentsettings.update(...)
- policy.ravpn.certificatemapsettings.update(...)
- policy.ravpn.connectionprofile.create(...)
- policy.ravpn.connectionprofile.update(...)
- policy.ravpn.connectionprofile.delete(...)
-
Added support for FMC 7.1.0 api calls
- chassis.get(...)
- chassis.networkmodule.update(...)
- chassis.networkmodule.get(...)
- chassis.interface.get(...)
- chassis.interface.evaluate_operation(...)
- chassis.operational.sync_networkmodule(...)
- chassis.operational.breakout_interfaces(...)
- chassis.operational.join_interfaces(...)
- cluster.ftddevicecluster.operational.command(...)
- cluster.ftddevicecluster.readiness_check(...)
- device.devicerecord.routing.policybasedroute.create(...)
- device.devicerecord.routing.policybasedroute.get(...)
- device.devicerecord.routing.policybasedroute.update(...)
- device.devicerecord.routing.policybasedroute.delete(...)
- health.tunnelstatus.get(...)
- health.tunnelsummary.get(...)
- netmap.host.create(...)
- netmap.host.get(...)
- netmap.host.delete(...)
- netmap.vulnerability.create(...)
- netmap.vulnerability.get(...)
- netmap.vulnerability.delete(...)
- object.aspathlist.create(...)
- object.aspathlist.update(...)
- object.aspathlist.delete(...)
- object.expandedcommunitylist.create(...)
- object.expandedcommunitylist.update(...)
- object.expandedcommunitylist.delete(...)
- object.standardcommunitylist.create(...)
- object.standardcommunitylist.create(...)
- object.standardcommunitylist.create(...)
- object.standardaccesslist.create(...)
- object.standardaccesslist.update(...)
- object.standardaccesslist.delete(...)
- object.extendedaccesslist.create(...)
- object.extendedaccesslist.update(...)
- object.extendedaccesslist.delete(...)
- object.ipv4prefixlist.create(...)
- object.ipv4prefixlist.update(...)
- object.ipv4prefixlist.delete(...)
- object.ipv6prefixlist.create(...)
- object.ipv6prefixlist.update(...)
- object.ipv6prefixlist.delete(...)
- object.policylist.create(...)
- object.policylist.update(...)
- object.policylist.delete(...)
- object.routemap.create(...)
- object.routemap.update(...)
- object.routemap.delete(...)
- troubleshoot.packettracer.file.create(...)
- troubleshoot.packettracer.file.get(...)
- troubleshoot.packettracer.file.delete(...)
- troubleshoot.packettracer.file.details.get(...)
- troubleshoot.packettracer.trace(...)
- troubleshoot.packettracer.pcaptrace(...)
- update.revert(...)
- user.duoconfig.get(...)
- user.duoconfig.update(...)
-
Added support for pre 7.1 api calls that were still missing
- cluster.ftddevicecluster.create(...)
- cluster.ftddevicecluster.update(...)
- cluster.ftddevicecluster.delete(...)
- device.devicerecord.routing.virtualrouter.ipv4staticroute.create(...)
- device.devicerecord.routing.virtualrouter.ipv4staticroute.get(...)
- device.devicerecord.routing.virtualrouter.ipv4staticroute.update(...)
- device.devicerecord.routing.virtualrouter.ipv4staticroute.delete(...)
- device.devicerecord.routing.virtualrouter.ipv6staticroute.create(...)
- device.devicerecord.routing.virtualrouter.ipv6staticroute.get(...)
- device.devicerecord.routing.virtualrouter.ipv6staticroute.update(...)
- device.devicerecord.routing.virtualrouter.ipv6staticroute.delete(...)
- device.devicerecord.routing.virtualrouter.ospfv2route.get(...)
- device.devicerecord.routing.virtualrouter.ospfv2interface.get(...)
- device.devicerecord.routing.virtualrouter.ospfv3route.get(...)
- device.devicerecord.routing.virtualrouter.ospfv3interface.get(...)
- missing filtering support for health.alert
- missing filtering support for health.metric
- incorrect api endpoint for object.dynamicobject (#57, #64). thanks @dheule for providing a fix
- missing refs in devicerecord for physicalinterface (#61)
- incorrect api endpoint for object.continent (#60)
- uuid check issues with object.applicationcategory (#59)
- removed incorrect delete calls for device.devicerecord.redundantinterface
- removed incorrect delete calls for device.devicerecord.subinterface
- removed incorrect delete calls for device.devicerecord.virtualswitch
- removed incorrect delete calls for device.devicerecord.virtualtunnelinterface
- removed incorrect delete calls for device.devicerecord.vlaninterface
- requests were not retried when authentication token was refreshed (#53)
accesspolicy.category
exposed incorrect param before_category (#54)- various devicerecord update calls incorrectly overrode the update function causing update calls to fail
- boolean filter values were not parsed correctly resulted in incorrect filters being passed to FMC API
- added missing filter operations to
policy.accesspolicy.operational.hitcounts
get
operation
- Added support for FMC 7.0.0 api calls
- GET integration.fmchastatus
- GET integration.securexconfig
- GET object.anyconnectcustomattribute
- GET object.anyconnectpackage
- GET object.anyconnectprofile
- CREATE, UPDATE, DELETE object.applicationfilter
- GET object.certificatemap
- CREATE, UPDATE, DELETE object.dnsservergroup
- CREATE, GET, UPDATE, DELETE object.dynamicobject
- CREATE, UPDATE, DELETE object.geolocation
- GET object.grouppolicy
- GET object.hostscanpackage
- CREATE, GET, UPDATE, DELETE object.intrusionrule
- CREATE, GET, UPDATE, DELETE object.intrusionrulegroup
- GET object.ipv4addresspool
- GET object.ipv6addresspool
- CREATE, GET, UPDATE, DELETE object.localrealmuser
- GET object.radiusservergroup
- CREATE, GET, UPDATE, DELETE object.realm
- GET object.sidnsfeed
- GET object.sidnslist
- GET object.sinetworkfeed
- GET object.sinetworklist
- GET object.sinkhole
- GET object.ssoserver
- GET bject.usage
- GET policy.accesspolicy.securityintelligencepolicy
- GET policy.dnspolicy
- GET policy.dnspolicy.allowdnsrule
- GET policy.dnspolicy.blockdnsrule
- GET policy.dynamicaccesspolicy
- GET policy.identitypolicy
- CREATE, UPDATE, DELETE policy.intrusionpolicy
- GET, UPDATE policy.intrusionpolicy.intrusionrulegroup
- GET, UPDATE policy.intrusionpolicy.intrusionrule
- CREATE, GET, UPDATE, DELETE policy.networkanalysispolicy
- GET, UPDATE, DELETE policy.networkanalysispolicy.inspectorconfig
- GET, UPDATE, DELETE policy.networkanalysispolicy.inspectoroverrideconfig
- GET policy.ravpn
- GET policy.ravpn.addressassignmensettings
- GET policy.ravpn.certificatemapsettings
- GET policy.ravpn.connectionprofile
- Authentication refresh failed due to incorrect object reference in utils.py
- Bulk create/update failed due to bulk param not being set automatically for some resources
- RateLimiter error was not handled correctly leading to retry operations not being tried
ChildResource
missing uuid by name lookup functionality (#45)- Custom params causing container lookup by name to fail (#45)
job.taskstatuses
accessibility fromfmc
object (#47)- Incorrect Namespace references in
update
,upgradepackage
anddeployabledevices
Resources (#46)
- Fixed issue with container name resolution that caused incorrect params to be passed to GET_BY_ID operations
- Fixed an issue where HTTPErrors where incorrectly raised, causing confusing exceptions
- Added dry_mode switch to FMC object. When using dry_mode PUT, POST and DELETE
- Operations are not executed and only logged to FireREST logger
- Added missing
Override
reference to host object
- Added
Override
resource to all objects that support object overrides
- Fixed an issue where simplejson installation cause FireREST to be unusable due to requests library using simplejson instead of built-in json library causing simplejson exception to be thrown instead of json.DecodeError exception
1.0.0 is a major overhaul of the existing FireREST codebase. I decided to
refactor the whole project to provide a more structured way to interact with
FMC. Before 1.0.0 all calls to FMC were provided by a Client
object which was
replaced by FMC
that provides a hierarchical access to all resources on FMC.
- Replaced
Client
object withFMC
- Provide structured access to api objects. e.g.
fmc.policy.accesspolicy.get
- Provide more granular error handling using custom exceptions
- Filtering options to all supported api calls
- Various s2svpn related operations that missed string interpolation
- Health alert api calls for 6.7.0
- Additional id_by_name operations
- Better logging for requests
- Reauth was not triggered correctly when authentication failed
- ResourceNotFound exception for 404 errors
- Additional api calls
- S2svpn
- vlaninterfaces
- interfaceevents
- devicecopyrequests
- virtualrouter
- inlinesets
- prefilterpolicy
- prefilterpolicy rules
- accesspolicy defaultaction
- device metrics
- device commands
- Issue with incorrect default id values
- Added additional unit tests for id_by_name operations
- Merged and enhanced hitcount implementation by @arnydo (#29)
- Issue with id_by_name helper functions caused by incorrect cache impl (#28)
- Nissing interface_id param for interface PUT operations (#30)
- Added various tests for better qa
- Correctly sanitize payloads for put operations
- Corrected cache_result condition that did not match correctly
- Missing conversion from dict to json in _request helper
- Api call for getting audit records (#24)
- Incorrect base api calls by removing positional args (#23)
- Dependency version pinning to minimum required software versions
- KeyError that occured when get request was launched that yielded an empty result (no items)
- Incorrect function call that caused getter for obj overrides to fail
- Added version pinning for all dependencies
- Added tox integration for testing new releases
- Added cache option for costly getbyid operations using cache flag
- Added sessions so tcp connections are being reused for subsequent api calls
- Added better error handling and better retrying for rate limiting exception
- Added prefilterpolicy related crud operations
- Added minimum version requirements to api calls
- Rewrote tests with pytest instead of unittest
- Restructured project and moved default, exceptions and utils into their own files
- Renamed accesscontrolpolicy related crud operations
- #19
- Changelog for new software releases
- Api calls for hapair monitoredinterfaces (read, update)
- Helper function to get primary device id from hapair
- Expandable option for get_depoyable_deployable_devices
- Default paging change from 25 to 100
- Getbyid operations fails due to incorrect limit param
- Api calls for ftd ipv4/ipv6 static routing fails due to incorrect URLs
- Update ftd sub interface fails due to missing param