Limitations¶
Not yet checked on a real server¶
The plugin is pre-release. Every feature is tested against an in-memory fake Windows server and against the real
PowerShell scripts run with stub cmdlets, but some cmdlets and property names have not been run against a real
Windows DHCP server yet. They are marked # unverified: in the code. The open questions include:
- whether option values of every user and vendor class are read at each level, and policy option values;
- where Windows returns the class data (IPv4 and DHCPv6), and how it reports an unlimited lease time;
- the property names returned for scope settings (offer delay, BOOTP limit, activate policies, superscope), policies, failover relationships, DHCPv6 scopes, leases and exclusion ranges;
- DHCPv6 T1 and T2 defaults, DHCPv6 reservation and class updates;
- superscope removal (whole and partial), MAC filter removal, and vendor option definitions;
- failover replication after a push, and removing a scope that is in a relationship, which need two servers.
The lab tests that settle them are written (see Development). Until they have run, try the plugin on a lab server before a production one, and use Dry run before turning Sync enabled on.
Scope of v1¶
- DHCP only. DNS records, DHCP server roles and features, and server-wide settings beyond those listed in How objects map are out of scope. The DHCP Server role must already be installed.
- No authorization in Active Directory. The plugin does not authorize DHCP servers.
- Leases are read only and not stored. No lease history, no IP address updates from leases, at most 5000 leases shown per read.
- DHCPv6 is limited to scopes, reservations, user classes and values of sys4's standard DHCPv6 definitions. DHCPv6 vendor classes, custom option definitions and exclusion ranges are left alone. See DHCPv6.
- Failover is IPv4 only, as on Windows.
Windows rules the plugin will not work around¶
Some changes are only possible on Windows by removing an object with everything in it. The plugin refuses them rather than delete data: a scope's subnet mask, an option definition's type or array flag, removing a policy condition, a failover relationship's partner or authentication. A dry run does not catch these: the push fails on them. Make them on Windows by hand, then import. See Push.
netbox-plugin-dhcp¶
- netbox-plugin-dhcp is beta, so the plugin pins
>=0.2,<0.3and follows its releases. - Its names are unique across servers, hence the
<server>/<scope id>naming of imported objects. - It stores option values as one comma-separated string: commas inside a value are escaped as
\,, which sys4 only accepts in string options, and values with leading or trailing spaces cannot be stored (they are skipped). - A shared network needs a covering prefix; superscopes wider than a /8 are refused.
- Deleting a shared network in NetBox deletes its subnets, and so, on the next push, their scopes on Windows.
NetBox and branching¶
- NetBox 4.7 only (the plugin declares
max_version = 4.7.99). - netbox-branching creates merged objects with a raw save, so sys4's own
save()side effects are not replayed on merge. Imports avoid depending on them. - An empty merge sends no signal, so it queues no push.
- Edits made directly in main push without approval, even with change control.
Operations¶
- The worker's database connection must not go through pgbouncer in transaction mode (advisory locks).
- Reading a large server takes one PowerShell call per scope and per reservation list; a push or an import of a server with thousands of scopes takes minutes.