Cleanup plugin links upon a cluster reset

Currently plugin links survive cluster reset and there is no way to get
rid of them. Cluster reset seems like a reasonable place to get rid of
them.

Change-Id: Id88c54b34a162881c6662ee1acb6090d4fee3fae
Closes-Bug: #1578700
This commit is contained in:
Georgy Kibardin 2016-06-29 17:34:44 +03:00
parent 058d9e42a1
commit 8e73412a2d
3 changed files with 42 additions and 0 deletions

View File

@ -42,3 +42,7 @@ class ClusterPluginLinkCollection(NailgunCollection):
def create_with_cluster_id(cls, data, cluster_id):
data['cluster_id'] = cluster_id
return cls.create(data)
@classmethod
def delete_by_cluster_id(cls, cluster_id):
cls.filter_by(None, cluster_id=cluster_id).delete()

View File

@ -919,6 +919,9 @@ class ResetEnvironmentTaskManager(TaskManager):
for node in nodes:
objects.Node.reset_vms_created_state(node)
objects.ClusterPluginLinkCollection.delete_by_cluster_id(
self.cluster.id)
db().commit()
supertask = Task(

View File

@ -85,6 +85,41 @@ class TestResetEnvironment(BaseIntegrationTest):
1
)
@fake_tasks(
override_state={"progress": 100, "status": "ready"},
recover_nodes=False,
ia_nodes_count=1
)
def test_environment_reset_cleans_up_plugin_links(self):
cluster_db = self.env.create(
cluster_kwargs={},
nodes_kwargs=[
{"name": "First",
"pending_addition": True},
{"name": "Second",
"roles": ["compute"],
"pending_addition": True}
]
)
self.app.post(
reverse('ClusterPluginLinkCollectionHandler',
kwargs={'cluster_id': cluster_db.id}),
jsonutils.dumps({
'title': 'simple link',
'description': 'simple description',
'url': 'http://example.com',
}),
headers=self.default_headers
)
self.env.launch_deployment()
self.env.reset_environment()
response = self.app.get(
reverse('ClusterPluginLinkCollectionHandler',
kwargs={'cluster_id': cluster_db.id}),
headers=self.default_headers)
self.assertEqual(response.status_int, 200)
self.assertEqual(response.json, [])
@fake_tasks(
override_state={"progress": 100, "status": "ready"},
recover_nodes=False,