Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Infoblox NetworkView support, implement data load filtering, add DNS and fixed address records. #442

Merged
merged 132 commits into from
Jun 26, 2024

Conversation

progala
Copy link
Contributor

@progala progala commented Apr 29, 2024

Added

  • Added SSOTConfig model and view for exposing configurations of individual integrations.
  • Infoblox integration - added Namespace, DnsARecord, DnsHostRecord and DnsPTRRecord diffsync models.
  • Infoblox integration - modified Network and IPAddress models to support namespaces and creation of additional IP Address record types.
  • Infoblox integration - synchronization jobs have a new mandatory field called Config. This field specifies which Infoblox Config to use with the job.
  • Infoblox integration - Full support for Infoblox network views and Nautobot namespace has been added. Multiple network views/namespaces and their IP objects can now be safely loaded. This allows for importing overlapping prefixes from Infoblox that are assigned to corresponding Namespaces in Nautobot.
  • Infoblox integration - added support for excluding extensible attributes and custom fields from sync.
  • Infoblox integration - added configuration setting that specifies the mapping between network view and DNS view. This is required to correctly create DNS records in Infoblox.
  • Infoblox integration - added support for specifying a subset of IP Prefixes and IP Addresses loaded for synchronization.
  • Infoblox integration - added support for creating Infoblox IP Addresses as either Host or A records. An optional PTR record can be created alongside A record.
  • Infoblox integration - added support for updating Infoblox Fixed Address, and DNS Host, A, and PTR records.
  • Infoblox integration - added support for creating/updating IP Addresses in Infoblox as Fixed Address of type RESERVED or MAC_ADDRESS.
  • Infoblox integration - added support for specifying record types that can be deleted in Infoblox and Nautobot.
  • Infoblox integration - added multiple new methods in the Infoblox client for dealing with fixed addresses, DNS A, Host and PTR records, network views, DNS views and authoritative zones.
  • Infoblox integration - added the following custom fields to support new functionality: mac_address, fixed_address_comment, dns_a_record_comment, dns_host_record_comment, dns_ptr_record_comment.
  • Infoblox integration - added check for the minimum version of Nautobot. This release requires Nautobot 2.1 or greater.

Changed

  • Infoblox integration - configuration is no longer defined in nautobot_config.py. Configuration is now defined in the SSOT Infoblox Config object. This can be set up in UI or using Django ORM.

    • The existing configuration is taken from nautobot_config.py will be automatically migrated to the SSOT Infoblox Config object named InfobloxConfigDefault.
    • Configuration of the Infoblox instance is now recorded in the ExternalIntegration object. The existing configuration will be automatically migrated to the instance named DefaultInfobloxInstance.
    • Credentials are now defined in the Secrets Group. The migrated configuration expects the username to come from the NAUTOBOT_SSOT_INFOBLOX_USERNAME env var and the password to come from the NAUTOBOT_SSOT_INFOBLOX_PASSWORD env var. To use a different method of providing credentials modify secrets attached to the InfobloxSSOTDefaultSecretGroup SecretsGroup.
  • Default behavior when loading prefixes has changed. Previously all prefixes from all Infoblox network views were loaded by default, with duplicate prefixes removed. This process was non-deterministic and resulted in all Infoblox prefixes assigned to the "Global" namespace in Nautobot. Infoblox integration now enforces the use of the infoblox_sync_filters setting, defined in the Infoblox Config, with the default value set to [{"network_view": "default"}]. This default setting results in loading all of the prefixes from the Infoblox network view "default" only and assigning them to the "Global" namespace in Infoblox. See Infoblox sync filter documentation for details on how to define filters.

  • Infoblox integration - standardized and improved error handling in the Infoblox client.

Removed

  • Infoblox integration - environmental variables used to configure the integration have been deprecated.

Fixed

  • The Infoblox client logging level now honors the debug job option.

Housekeeping

  • Increased test coverage.

Copy link
Contributor

@jdrew82 jdrew82 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some things I noticed and issues to address. Thanks for submitting this! Also, can you ensure we get test fixtures for all the new API calls and also update any existing that are missing data, like for IPv6 addresses?

@jdrew82
Copy link
Contributor

jdrew82 commented May 2, 2024

This should close #171.

@progala progala marked this pull request as ready for review May 20, 2024 14:52
@progala progala requested review from qduk and a team as code owners May 20, 2024 14:52
progala added 25 commits May 20, 2024 18:49
- Add custom exception raised when loading fails.
- Fix prefix/ip address filtering bug.
- Get config from the SSOTInfobloxConfig object.
- Add excluded attributes logic.
- Add support for adding IP as a/ptr record.
- Fix bug in loading filtered prefixes/ip addresses.
- Don't allow changes to Network View in Infoblox.
Copy link
Contributor

@jdrew82 jdrew82 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. I think we mostly just need some documentation added around some of these changes and the tests fixed and we should be g2g.

@progala progala changed the title [WIP] Add Infoblox NetworkView support, implement data load filtering, add dns and fixed address records. Add Infoblox NetworkView support, implement data load filtering, add DNS and fixed address records. Jun 17, 2024
Copy link
Contributor

@jdrew82 jdrew82 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few more tweaks but looks good overall.

Copy link
Contributor

@jdrew82 jdrew82 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Copy link
Contributor

@qduk qduk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very small nitpicks! Super awesome work Przemek. You're the man!

progala and others added 3 commits June 26, 2024 14:28
Co-authored-by: Adam Byczkowski <38091261+qduk@users.noreply.github.com>
Co-authored-by: Adam Byczkowski <38091261+qduk@users.noreply.github.com>
@jdrew82 jdrew82 merged commit 613bca9 into nautobot:develop Jun 26, 2024
16 checks passed
@jdrew82 jdrew82 mentioned this pull request Jul 16, 2024
@smk4664 smk4664 added the type: feature Introduction of substantial new functionality to the application label Feb 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
integration: infoblox Issues/PRs for Infoblox integration type: enhancement New feature or request type: feature Introduction of substantial new functionality to the application
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants