assert(start_action);
}
+ // image state may get purged in execute_policy_action()
+ bool pending_action = image_state.transition.action_type != ACTION_TYPE_NONE;
if (finish_policy_action) {
execute_policy_action(global_image_id, &image_state, *finish_policy_action);
}
- return (image_state.transition.action_type != ACTION_TYPE_NONE);
+ return pending_action;
}
void Policy::execute_policy_action(
{{STATE_ASSOCIATING, ACTION_TYPE_ACQUIRE}, {ACTION_TYPE_NONE, {}, {},
{STATE_ASSOCIATED}}},
- {{STATE_DISSOCIATING, ACTION_TYPE_NONE}, {ACTION_TYPE_RELEASE, {}, {},
- {}}},
+ {{STATE_DISSOCIATING, ACTION_TYPE_NONE}, {ACTION_TYPE_RELEASE, {},
+ {POLICY_ACTION_UNMAP}, {}}},
{{STATE_DISSOCIATING, ACTION_TYPE_RELEASE}, {ACTION_TYPE_MAP_REMOVE, {},
- {POLICY_ACTION_UNMAP}, {}}},
+ {POLICY_ACTION_REMOVE}, {}}},
{{STATE_DISSOCIATING, ACTION_TYPE_MAP_REMOVE}, {ACTION_TYPE_NONE, {},
- {POLICY_ACTION_REMOVE},
- {STATE_UNASSOCIATED}}},
+ {}, {STATE_UNASSOCIATED}}},
{{STATE_SHUFFLING, ACTION_TYPE_NONE}, {ACTION_TYPE_RELEASE, {},
{POLICY_ACTION_UNMAP}, {}}},