Merge "Enable affinity policy to handle NODE_CREATE"

This commit is contained in:
Jenkins 2016-07-26 03:32:25 +00:00 committed by Gerrit Code Review
commit 141382b0b0
2 changed files with 39 additions and 0 deletions

View File

@ -248,6 +248,8 @@ class AffinityPolicy(base.Policy):
count = pd.get('count', 1)
elif action.action == consts.CLUSTER_SCALE_OUT:
count = action.inputs.get('count', 1)
elif action.action == consts.NODE_CREATE:
count = 1
else: # CLUSTER_RESIZE
db_cluster = co.Cluster.get(action.context, cluster_id)
su.parse_resize_params(action, db_cluster)

View File

@ -539,6 +539,43 @@ class TestAffinityPolicy(base.SenlinTestCase):
x_action.data)
x_action.store.assert_called_once_with(x_action.context)
@mock.patch.object(cpo.ClusterPolicy, 'get')
def test_pre_op_for_node_create(self, mock_cp):
x_action = mock.Mock()
x_action.data = {}
x_action.action = consts.NODE_CREATE
x_binding = mock.Mock()
mock_cp.return_value = x_binding
policy_data = {
'servergroup_id': 'SERVERGROUP_ID',
'inherited_group': False,
}
policy = ap.AffinityPolicy('test-policy', self.spec)
policy.id = 'POLICY_ID'
mock_extract = self.patchobject(policy, '_extract_policy_data',
return_value=policy_data)
# do it
policy.pre_op('CLUSTER_ID', x_action)
mock_cp.assert_called_once_with(x_action.context, 'CLUSTER_ID',
'POLICY_ID')
mock_extract.assert_called_once_with(x_binding.data)
self.assertEqual(
{
'placement': {
'count': 1,
'placements': [
{
'servergroup': 'SERVERGROUP_ID'
}
]
}
},
x_action.data)
x_action.store.assert_called_once_with(x_action.context)
@mock.patch.object(co.Cluster, 'get')
@mock.patch.object(cpo.ClusterPolicy, 'get')
def test_pre_op_use_resize_params(self, mock_cp, mock_cluster):