Package com.eqixiac.equinix.design.plan
package com.eqixiac.equinix.design.plan
The deployment-plan lifecycle: plan as data, drift detection, idempotent and resumable reconcile,
and safe rollback.
- Plan as data. A
DeploymentPlanis immutable and round-trips through JSON (PlanJson). Every planned resource carries a logical key derived from the design;PlanStepsorders them by dependency. The plan id is a hash of its desired state; the document records theDesignSpecfingerprint it came from. - Marking. Resources are found again by name within the plan's project, and connections by
the
additionalInfomarker the API persists (PlanMarker). - Drift.
LiveStateReaderreads live state (read-only);DriftDetectorclassifies each planned resource asMISSING,PRESENT_MATCHINGorPRESENT_DIFFERENT(with the fields) and lists marked live resources that are not in the plan. - Reconcile.
PlanExecutorcreates only what is missing, in dependency order, saving aCheckpointto aCheckpointStoreafter every step; a re-run of a completed plan is a no-op. Updates are opt-in and limited to patchable fields. - Failure and rollback. One
FailurePolicyfor every step;PlanRollbackwaits for asynchronous connection deletes before deleting a Cloud Router and reports orphans with their uuids.
Fabric Interconnects (Fabric One) and native multicloud links are plan elements the SDK never
creates: they appear as NOT_EXECUTABLE steps with the reason.
-
ClassDescriptionThe progress of one plan's execution: every step known to exist, by logical key.Where reconcile keeps its
Checkpoints.A step recorded in aCheckpoint: the resource exists (or its create was accepted) under this uuid.Compares a plan with aLiveStatesnapshot.How a planned resource compares with what is live.How a plan is executed or reconciled.What execution does when a create step fails: a Cloud Router, connection or routing-protocol create that is rejected, a pre-flight dry-run that is rejected (HTTP 4xx validation), or a resource that lands in a terminal failure state or does not reachPROVISIONEDwithin the timeout.One field that differs between the plan and the live resource.ACheckpointStorethat keeps one JSON file per deployment in a directory (<deployment>.checkpoint.json, the name reduced to file-safe characters).ACheckpointStoreheld in memory: survives an aborted run, not a crashed JVM.A connection as read from Fabric: the fields drift detection compares.A Cloud Router as read from Fabric: the fields drift detection compares.A routing protocol as read from Fabric.A snapshot of the live Fabric resources relevant to one plan, asLiveStateReaderread them (or as a test builds them).Reads the live Fabric resources relevant to a plan.A resource a rollback could not remove.A plan compared with live state: oneResourceDriftper planned element, the live resources that carry the plan's marker but are not in it, and notes on anything that could not be read.Executes and reconciles deployment plans.Reads and writes aDeploymentPlanas JSON and computes its content identity.How resources created from a plan are marked so drift detection and reconcile can find them again.Tears down resources a run created, in an order that cannot strand a billable Cloud Router.One element of a plan in its uniform, dependency-ordered form: whatPlanSteps.of(DeploymentPlan)derives from aDeploymentPlanfor execution, reconcile, drift detection and checkpoints.Derives the dependency-orderedPlanSteps of a plan: Cloud Routers, then provider connections (a redundancy group's PRIMARY before its SECONDARY), then backbone links, then routing protocols (DIRECT before BGP on the same connection, as Fabric requires), then the elements the SDK does not create (Interconnects and native multicloud links).A resource a rollback deleted and confirmed gone (DEPROVISIONEDor HTTP 404).The drift verdict for one planned resource.The kinds of element a deployment plan holds, in the order they are created.What a rollback removed and what it had to leave behind.What execution or reconcile did with one plan step.The result of one plan step in an execution or reconcile run.A live resource that carries the plan's marker (its deployment name inadditionalInfo, or the plan's name prefix) but matches no planned resource: left over from an earlier version of the plan, or created by hand.