Implement delete segment

Added delete segment functionality.
Also added test cases that actually not covering
the line of code but tested the delete segment functionally.

Partial-Implements: blueprint masakari-dashboard

Change-Id: Iabf59e92be9de09d2d2fde48fea403b7cd2bcd26
This commit is contained in:
nirajsingh 2018-01-30 16:21:43 +05:30
parent c429554def
commit 30d318803f
3 changed files with 53 additions and 1 deletions

View File

@ -110,3 +110,9 @@ def segment_create(request, data):
def get_segment(request, segment_id):
"""Returns segment by id"""
return openstack_connection(request).get_segment(segment_id)
@handle_errors(_("Unable to delete segment"), [])
def segment_delete(request, segment_id, ignore_missing=True):
return openstack_connection(request).delete_segment(
segment_id, ignore_missing)

View File

@ -14,6 +14,9 @@
# under the License.
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from masakaridashboard.api import api
from horizon import tables
@ -37,6 +40,27 @@ class SegmentFilterAction(tables.FilterAction):
filter_choices = SEGMENT_FILTER_CHOICES
class DeleteSegment(tables.DeleteAction):
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Delete Segment",
u"Delete Segments",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Deleted Segment",
u"Deleted Segments",
count
)
def delete(self, request, segment_uuid):
api.segment_delete(request, segment_uuid, ignore_missing=True)
class FailoverSegmentTable(tables.DataTable):
name = tables.WrappingColumn('name', verbose_name=_("Name"), truncate=40)
@ -55,4 +79,4 @@ class FailoverSegmentTable(tables.DataTable):
class Meta(object):
name = "failover_segment"
verbose_name = _("FailoverSegment")
table_actions = (CreateSegment, SegmentFilterAction)
table_actions = (DeleteSegment, CreateSegment, SegmentFilterAction)

View File

@ -149,3 +149,25 @@ class SegmentTest(test.TestCase):
url=url, has_more=True, has_prev=False)
segments = res.context['failover_segment_table'].data
self.assertItemsEqual(segments, expected_segments)
def test_delete_ok(self):
segment = self.masakari_segment.list()[0]
data = {'object_ids': [segment.uuid],
'action': 'failover_segment__delete'}
with mock.patch(
'masakaridashboard.api.api.get_segment_list',
return_value=(self.masakari_segment.list(), True, True)
), mock.patch(
'masakaridashboard.api.api.segment_delete',
return_value=None
) as mocked_delete:
res = self.client.post(INDEX_URL, data)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
mocked_delete.assert_called_once_with(
mock.ANY,
segment.uuid,
ignore_missing=True
)