0.1.7
Added
-
Forward Predict, as five new groups of unpublished operations: 50 in all,
described from Forward's server source and verified against a live instance
of the current build. Requested by the change-demo integration, which had
been reaching them through a raw request helper.client.change_setscovers the rehearsal loop with a handle per change set:
create against a base snapshot, stage device commands as plain text, validate,
commit,predict_and_wait()for the processed predicted snapshot, checks, and
delete.client.snapshot_diffscompares two snapshots: subnet connectivity
withwait_for_subnet_connectivity()for the asynchronous computation,
vulnerability and routing-loop counts, their bidirectional views, a file
summary, andcounts()for every per-area count at once.
client.firewall_predictholds the structured security-rule edits PAN-OS
needs, since CLI-driven Predict does not work there.client.webhooksand
client.configurationround it out, withconfig_value()to read a
configuration response whatever its key.The traps a consumer met while working around these are encoded rather than
documented:noteis required on predict and commit, the bulk delete key is
changeSetIds, the create body carries nonetworkIdbecause Forward
rejects unknown properties, and the first connectivity read after a
prediction returns zeros that mean "not finished". See the new "Rehearsing a
change" page for the ones a signature cannot carry, including the global
configuration route reporting a default that the org route contradicts.Two claims in the consumer's notes were wrong and are corrected here: the
create body must not carrynetworkId, and an omitted webhook network list
is a 400 rather than a server crash. -
HAND_WRITTEN_TAGSis now one list, on the operation definitions module,
read by the service generator and the coverage test alike, so the two cannot
disagree about which groups are generated.
Fixed
-
The unpublished-endpoints page said the NQE execution request's sort and
filter fields were absent from the published description. They are in it. -
nqe.repo.publishno longer raises when nothing has changed. Forward
terminates its rejection with a full stop,User has no changes at the following paths: /a/q1, /a/q2., and the parser kept it, so the last path read
as/a/q2.and matched nothing. The caller then stripped every path but that
one and retried a commit Forward refused for the same reason, and the second
refusal escaped. Re-running an idempotent publisher with nothing to publish is
the normal case in a pipeline, and it reported failure. A single-path commit
was affected too, since that path is also the last one.A second refusal of the stripped set is now also read as a no-op rather than
raising, so a message this parser cannot read cannot turn a no-op into an
error again. Found by reading Forward's own source, which builds that string,
and confirmed on an instance of the current build: re-publishing a committed
query's own source returns a report with it skipped, commits nothing and
leaves no draft behind.
Changed
-
latest_processedandlatest_processed_idexclude predicted snapshots.
Forward creates and processes one for every Predict run, so on a network using
Predict the newest processed snapshot is very often a prediction rather than a
state the network was ever in, and basing a change set on one predicts a
change against a change. Passinclude_predicted=Truefor the old behaviour.The filter excludes
PREDICTrather than requiringCOLLECTION. A reprocessed
snapshot reportsREPROCESSand is real collected data, and on one live
network 20 of 43 processed snapshots were reprocessed; requiringCOLLECTION
would skip those and select the previous collection, which during a rehearsal
is the snapshot taken while the change was still applied. Reported by the
change-demo integration, which had hit exactly that.Confirmed against a Predict-enabled instance: on a network there, 4 of 5
processed snapshots were predictions, so the previous default picked one four
times in five.