Additions/comments inline below.

Thanks,
Unmesh G.
From: Murugan, Visnusaran
Sent: Thursday, September 18, 2014 1:46 PM
To: openstack-dev@lists.openstack.org
Subject: [openstack-dev] [heat] Persist graph for convergence

Hi All,

Below is the model proposal for persisting ResourceGraph.

Column name

Type

Constraint

resource_id

varchar(36)

NOT NULL ForeignKey resource.id

needed_by

varchar(36)

NULL ForeignKey resource.id

stack_id

varchar(36)

NOT NULL ForeignKey stack.id

retry_count

Integer

Default (0)

observed_ready

Boolean

Default False



Create cycle:

1.       Persist graph
[Unmesh] - So, it is a pre-requisite to persist all the resources of a stack 
(in the resource table) to be able to persist a graph (i.e step #0).

2.       Mark desired states for all resources in the stack. (table: resources)
[Unmesh] - This I believe should be done as a part of persisting a stack's 
resources (in step #0).

3.       Initiate stack create by calculating leaf nodes (All 
observed_ready=False nodes in resource_id column but not in needed_by column)

4.       Post create resource jobs to engine worker

5.       Engine worker upon task initiation posts observe task to 
convergence-observer and complete tack execution (return true)

6.       Mark observed_ready upon receiving resource completion notification 
from observer. Repeat step 3 through 6 till all nodes (resources) are marked 
observed_ready.
[Unmesh] - In case resource creation fails, the worker will increment 
retry_count and try creating the resource for a maximum of 'action_retry_limit' 
configured value.

7.       If not more nodes, then mark stack create complete and return happy

Update cycle:

1.       Persist new graph for new stack created

2.       Mark desired state for all resources in both old and new stacks.

3.       Perform steps 3 to 6

4.       Delete old stack, garbage collect unwanted resources

5.       Mark stack update complete and return happy.


Clint had in fact proposed to have a "version Integer default(0)". To achieve 
this I feel Table:Stack should also have versioning instead of creating a 
backup_stack.

Currently backup and nested stack relation is achieved using owner_id. In case 
if update, versioning makes more sense instead on creating a backup stack and 
setting owner_id as current stack.

-Vishnu





_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to