Add 'is_enabled' attr to segment

Implements: blueprint enable-to-segment
Change-Id: I378d98cc17afbfa9e56deb79ae479117dd231a7b
This commit is contained in:
Radosław Piliszek 2021-03-24 08:58:40 +00:00
parent 1a6d07c683
commit fce116082b
7 changed files with 66 additions and 19 deletions

View File

@ -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)

View File

@ -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

View File

@ -13,6 +13,8 @@
<dd>{{ segment.recovery_method }}</dd>
<dt>{% trans "Service Type" %}</dt>
<dd>{{ segment.service_type }}</dd>
<dt>{% trans "Enabled" %}</dt>
<dd>{{ segment.is_enabled|yesno|capfirst }}</dd>
<dt>{% trans "Created at" %}</dt>
<dd>{{ segment.created_at|parse_isotime }}</dd>
<dt>{% trans "Updated at" %}</dt>

View File

@ -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(),

View File

@ -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):

View File

@ -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)

View File

@ -0,0 +1,5 @@
---
features:
- |
Adds support for API microversion 1.2 with ``enabled`` flag for segments.
`Blueprint enable-to-segment <https://blueprints.launchpad.net/masakari/+spec/enable-to-segment>`__