Documentation ¶
Overview ¶
Package engine implements core engine of Aptomi, which does policy resolution (resolve), diff calculation between states (diff), and state enforcement by applying actions (apply).
Index ¶
- Constants
- Variables
- type PolicyData
- func (policyData *PolicyData) Add(obj lang.Base)
- func (policyData *PolicyData) GetGeneration() runtime.Generation
- func (policyData *PolicyData) GetName() string
- func (policyData *PolicyData) GetNamespace() string
- func (policyData *PolicyData) Remove(obj lang.Base) bool
- func (policyData *PolicyData) SetGeneration(gen runtime.Generation)
- type PolicyDataMetadata
- type Revision
- type RevisionProgress
Constants ¶
const ( // RevisionStatusInProgress represents Revision status with apply in progress RevisionStatusInProgress = "inprogress" // RevisionStatusSuccess represents Revision status with apply successfully finished RevisionStatusSuccess = "success" // RevisionStatusError represents Revision status with apply finished with error RevisionStatusError = "error" )
const RevisionName = "revision"
RevisionName is the name of the only revision that exists in DB (but with many generations)
Variables ¶
var ( // ActionObjects is a list of informational objects for all actions ActionObjects = []*runtime.Info{ component.CreateActionObject, component.UpdateActionObject, component.DeleteActionObject, component.AttachDependencyActionObject, component.DetachDependencyActionObject, component.EndpointsActionObject, global.PostProcessActionObject, } // Objects is the list of informational objects for all objects in the engine Objects = runtime.AppendAll([]*runtime.Info{ PolicyDataObject, RevisionObject, resolve.ComponentInstanceObject, }, ActionObjects) )
var PolicyDataKey = runtime.KeyFromParts(runtime.SystemNS, PolicyDataObject.Kind, runtime.EmptyName)
PolicyDataKey is the default key for the policy object (there is only one policy exists but with multiple generations)
var PolicyDataObject = &runtime.Info{ Kind: "policy", Storable: true, Versioned: true, Constructor: func() runtime.Object { return &PolicyData{} }, }
PolicyDataObject is an informational data structure with Kind and Constructor for PolicyData
var RevisionKey = runtime.KeyFromParts(runtime.SystemNS, RevisionObject.Kind, runtime.EmptyName)
RevisionKey is the default key for the Revision object (there is only one Revision exists but with multiple generations)
var RevisionObject = &runtime.Info{ Kind: "revision", Storable: true, Versioned: true, Constructor: func() runtime.Object { return &Revision{} }, }
RevisionObject is Info for Revision
Functions ¶
This section is empty.
Types ¶
type PolicyData ¶
type PolicyData struct { runtime.TypeKind `yaml:",inline"` Metadata PolicyDataMetadata // Objects stores all policy objects in map: namespace -> kind -> name -> generation Objects map[string]map[string]map[string]runtime.Generation }
PolicyData is a struct which contains references to a generation for each object included into the policy
func (*PolicyData) Add ¶
func (policyData *PolicyData) Add(obj lang.Base)
Add adds an object to PolicyData
func (*PolicyData) GetGeneration ¶
func (policyData *PolicyData) GetGeneration() runtime.Generation
GetGeneration returns PolicyData generation
func (*PolicyData) GetName ¶
func (policyData *PolicyData) GetName() string
GetName returns PolicyData name
func (*PolicyData) GetNamespace ¶
func (policyData *PolicyData) GetNamespace() string
GetNamespace returns PolicyData namespace
func (*PolicyData) Remove ¶
func (policyData *PolicyData) Remove(obj lang.Base) bool
Remove deletes an object from PolicyData
func (*PolicyData) SetGeneration ¶
func (policyData *PolicyData) SetGeneration(gen runtime.Generation)
SetGeneration sets PolicyData generation
type PolicyDataMetadata ¶
type PolicyDataMetadata struct { Generation runtime.Generation UpdatedAt time.Time UpdatedBy string }
PolicyDataMetadata is the metadata for PolicyData object that includes generation
type Revision ¶
type Revision struct { runtime.TypeKind `yaml:",inline"` Metadata runtime.GenerationMetadata // Policy represents generation of the corresponding policy Policy runtime.Generation Status string Progress RevisionProgress AppliedAt time.Time }
Revision is a "milestone" in applying
func (*Revision) GetGeneration ¶
func (revision *Revision) GetGeneration() runtime.Generation
GetGeneration returns Revision generation
func (*Revision) GetNamespace ¶
GetNamespace returns Revision namespace
func (*Revision) SetGeneration ¶
func (revision *Revision) SetGeneration(gen runtime.Generation)
SetGeneration returns Revision generation
type RevisionProgress ¶
RevisionProgress represents revision applying progress
Directories ¶
Path | Synopsis |
---|---|
Package actual defines a state updater, which reacts to changes in actual state done by engine applier.
|
Package actual defines a state updater, which reacts to changes in actual state done by engine applier. |
Package apply implements state enforcer, which executes a list of actions to move from actual state to desired state, performing actual deployment of services and configuration of the underlying cloud components.
|
Package apply implements state enforcer, which executes a list of actions to move from actual state to desired state, performing actual deployment of services and configuration of the underlying cloud components. |
action
Package action defines a base action (actions get born a result of policy diff calculation), as well as context which gets passed to all actions during apply phase.
|
Package action defines a base action (actions get born a result of policy diff calculation), as well as context which gets passed to all actions during apply phase. |
action/component
Package component defines all component-specific actions, which get generated by the policy diff when component changes occur for specific component instances.
|
Package component defines all component-specific actions, which get generated by the policy diff when component changes occur for specific component instances. |
action/global
Package global defines a global post-processing action, which gets generated by the policy diff only once after processing all component instances.
|
Package global defines a global post-processing action, which gets generated by the policy diff only once after processing all component instances. |
Package diff allows Aptomi to determine the difference between actual state (running on the cloud) and desired state (that Aptomi wants to enforce), generating a list of actions to reconcile the difference.
|
Package diff allows Aptomi to determine the difference between actual state (running on the cloud) and desired state (that Aptomi wants to enforce), generating a list of actions to reconcile the difference. |
Package progress implements progress indicators, which are used during state enforcement while running actions and plugins to estimate progress and show completion percentage to the user.
|
Package progress implements progress indicators, which are used during state enforcement while running actions and plugins to estimate progress and show completion percentage to the user. |
Package resolve is a heart of Aptomi that performs policy resolution, taking policy and service consumption intents as input, producing a set of components to be instantiated in the cloud (desired state) as output, along with their discovery parameters, code parameters, and component instance graph.
|
Package resolve is a heart of Aptomi that performs policy resolution, taking policy and service consumption intents as input, producing a set of components to be instantiated in the cloud (desired state) as output, along with their discovery parameters, code parameters, and component instance graph. |