+1, good idea! 2014-11-04 15:15 GMT+08:00 Eli Qiao <ta...@linux.vnet.ibm.com>:
> hello all: > in current _init_instance function in compute manager, > there's flood 'and' 'or' logic, to check the vm_state and task_state when > initialize a instance during service list, > this lead hard to read and hard to maintain, so I propose a new way to > handle this. > > we can create a vm_state_table, by look up the table we can find the > action we need to do for the instance, > from this table , you can clearly see what vm_state and task_state should > take the action. > > for example: > {vm_states list :{task_states list: action}}, > > each entry stands for an action, > and we walk though the tuple > so the table should be like this: > > vm_state_table = ( > {vm_states.SOFT_DELETE :{'ALL': ACTION_NONE}}, > {vm_states.ERROR: {('NOT_IN',[task_states.RESIZE_MIGRATING, > > task_states.DELETING]): ACTION_NONE}}, > {vm_states.DELETED: {'ALL': _complete_partial_deletion}}, > {vm_states.BUILDING: {'ALL': ACTION_ERROR}}, > {'ALL': {('IN',[task_states.SCHEDULING, > task_states.BLOCK_DEVICE_MAPPING, > task_states.NETWORKING, > task_states.SPAWNING)]: ACTION_ERROR}}, > {('IN',[vm_states.ACTIVE, vm_states.STOPPED]: {('IN', > [task_states.REBUILDING, > > task_states.REBUILD_BLOCK_DEVICE_MAPPING, > > task_states.REBUILD_SPAWNING]): ACTION_ERROR}}, > {('NOT_IN',[vm_states.ERROR]): {('IN', > [task_states.IMAGE_SNAPSHOT_PENDING, > > task_states.IMAGE_PENDING_UPLOAD, > > task_states.IMAGE_UPLOADING, > > task_states.IMAGE_SNAPSHOT]): _post_interrupted_snapshot_cleanup}} > ) > > what do you think, do we need a bp for this? > > -- > Thanks, > Eli (Li Yong) Qiao > > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > >
_______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev