From fce116082b50ec037d818d3fb61a11cb57cd4771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Piliszek?= Date: Wed, 24 Mar 2021 08:58:40 +0000 Subject: [PATCH] Add 'is_enabled' attr to segment Implements: blueprint enable-to-segment Change-Id: I378d98cc17afbfa9e56deb79ae479117dd231a7b --- masakaridashboard/segments/forms.py | 18 ++++++++-- masakaridashboard/segments/tables.py | 5 +++ .../templates/segments/_detail_overview.html | 2 ++ masakaridashboard/segments/tests.py | 11 +++++-- masakaridashboard/segments/views.py | 11 ++++--- .../test/test_data/masakari_data.py | 33 ++++++++++++++----- ...nt-enable-to-segment-efdff66078dab752.yaml | 5 +++ 7 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 releasenotes/notes/blueprint-enable-to-segment-efdff66078dab752.yaml diff --git a/masakaridashboard/segments/forms.py b/masakaridashboard/segments/forms.py index d8ca1b5..c747ff4 100644 --- a/masakaridashboard/segments/forms.py +++ b/masakaridashboard/segments/forms.py @@ -50,6 +50,11 @@ class CreateSegmentForm(forms.SelfHandlingForm): description = forms.CharField( label=_("Description"), widget=forms.Textarea( attrs={'rows': 4}), required=False) + is_enabled = forms.BooleanField( + label=_("Enabled"), + required=False, + initial=True, + ) def __init__(self, *args, **kwargs): super(CreateSegmentForm, self).__init__(*args, **kwargs) @@ -91,12 +96,19 @@ class UpdateForm(forms.SelfHandlingForm): attrs={'width': "100%", 'cols': "80", 'rows': "5", }), required=False ) + is_enabled = forms.BooleanField( + label=_("Enabled"), + required=False, + ) def handle(self, request, data): try: - fields_to_update = {'name': data['name'], - 'recovery_method': data['recovery_method'], - 'description': data['description']} + fields_to_update = { + 'name': data['name'], + 'recovery_method': data['recovery_method'], + 'description': data['description'], + 'is_enabled': data['is_enabled'], + } api.segment_update(request, data['uuid'], fields_to_update) msg = _('Successfully updated segment.') messages.success(request, msg) diff --git a/masakaridashboard/segments/tables.py b/masakaridashboard/segments/tables.py index 603ff10..c1f79ea 100644 --- a/masakaridashboard/segments/tables.py +++ b/masakaridashboard/segments/tables.py @@ -13,6 +13,7 @@ # License for the specific language governing permissions and limitations # under the License. +from django.template import defaultfilters as filters from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ungettext_lazy @@ -45,6 +46,7 @@ class CreateSegment(tables.LinkAction): SEGMENT_FILTER_CHOICES = ( ('recovery_method', _("Recovery Method ="), True), ('service_type', _("Service Type ="), True), + ('is_enabled', _("Enabled ="), True, _('e.g. Yes/No')), ) @@ -100,6 +102,9 @@ class FailoverSegmentTable(tables.DataTable): description = tables.WrappingColumn( 'description', verbose_name=_("Description"), truncate=40) + is_enabled = tables.Column('is_enabled', verbose_name=_('Enabled'), + status=True, + filters=(filters.yesno, filters.capfirst)) def get_object_id(self, datum): return datum.uuid diff --git a/masakaridashboard/segments/templates/segments/_detail_overview.html b/masakaridashboard/segments/templates/segments/_detail_overview.html index 31ed05a..76aec6c 100644 --- a/masakaridashboard/segments/templates/segments/_detail_overview.html +++ b/masakaridashboard/segments/templates/segments/_detail_overview.html @@ -13,6 +13,8 @@
{{ segment.recovery_method }}
{% trans "Service Type" %}
{{ segment.service_type }}
+
{% trans "Enabled" %}
+
{{ segment.is_enabled|yesno|capfirst }}
{% trans "Created at" %}
{{ segment.created_at|parse_isotime }}
{% trans "Updated at" %}
diff --git a/masakaridashboard/segments/tests.py b/masakaridashboard/segments/tests.py index 899bcf4..35f9b9c 100644 --- a/masakaridashboard/segments/tests.py +++ b/masakaridashboard/segments/tests.py @@ -55,7 +55,8 @@ class SegmentTest(test.TestCase): 'name': segment.name, 'recovery_method': segment.recovery_method, 'service_type': segment.service_type, - 'description': segment.description + 'description': segment.description, + 'is_enabled': segment.is_enabled, } with mock.patch('masakaridashboard.api.api.segment_create', return_value=segment) as mocked_create: @@ -199,7 +200,9 @@ class SegmentTest(test.TestCase): 'uuid': segment_obj.uuid, 'name': segment_obj.name, 'recovery_method': segment_obj.recovery_method, - 'description': segment_obj.description} + 'description': segment_obj.description, + 'is_enabled': segment_obj.is_enabled, + } with mock.patch( 'masakaridashboard.api.api.get_segment', @@ -213,7 +216,9 @@ class SegmentTest(test.TestCase): data_to_update = { 'name': segment_obj.name, 'recovery_method': segment_obj.recovery_method, - 'description': segment_obj.description} + 'description': segment_obj.description, + 'is_enabled': segment_obj.is_enabled, + } mocked_update.assert_called_once_with( helpers.IsHttpRequest(), diff --git a/masakaridashboard/segments/views.py b/masakaridashboard/segments/views.py index 11a3385..b0db0cb 100644 --- a/masakaridashboard/segments/views.py +++ b/masakaridashboard/segments/views.py @@ -171,10 +171,13 @@ class UpdateView(forms.ModalFormView): def get_initial(self, **kwargs): segment = self.get_object() - return {'uuid': self.kwargs['segment_id'], - 'name': segment.name, - 'recovery_method': segment.recovery_method, - 'description': segment.description} + return { + 'uuid': self.kwargs['segment_id'], + 'name': segment.name, + 'recovery_method': segment.recovery_method, + 'description': segment.description, + 'is_enabled': segment.is_enabled, + } class AddHostView(forms.ModalFormView): diff --git a/masakaridashboard/test/test_data/masakari_data.py b/masakaridashboard/test/test_data/masakari_data.py index 3224311..2f996af 100644 --- a/masakaridashboard/test/test_data/masakari_data.py +++ b/masakaridashboard/test/test_data/masakari_data.py @@ -32,15 +32,30 @@ def data(TEST): TEST.masakari_segment = test_data_utils.TestDataContainer() - segment1 = segment.Segment(uuid=uuidsentinel.segment1, name='test', - recovery_method='auto', - service_type='service', description='demo') - segment2 = segment.Segment(uuid=uuidsentinel.segment2, - name='test2', recovery_method='auto', - service_type='service', description='demo') - segment3 = segment.Segment(uuid=uuidsentinel.segment3, name='test3', - recovery_method='auto', - service_type='service', description='demo') + segment1 = segment.Segment( + uuid=uuidsentinel.segment1, + name='test', + recovery_method='auto', + service_type='service', + description='demo', + is_enabled=True, + ) + segment2 = segment.Segment( + uuid=uuidsentinel.segment2, + name='test2', + recovery_method='auto', + service_type='service', + description='demo', + is_enabled=False, + ) + segment3 = segment.Segment( + uuid=uuidsentinel.segment3, + name='test3', + recovery_method='auto', + service_type='service', + description='demo', + is_enabled=True, + ) TEST.masakari_segment.add(segment1) TEST.masakari_segment.add(segment2) diff --git a/releasenotes/notes/blueprint-enable-to-segment-efdff66078dab752.yaml b/releasenotes/notes/blueprint-enable-to-segment-efdff66078dab752.yaml new file mode 100644 index 0000000..db9a4ce --- /dev/null +++ b/releasenotes/notes/blueprint-enable-to-segment-efdff66078dab752.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Adds support for API microversion 1.2 with ``enabled`` flag for segments. + `Blueprint enable-to-segment `__