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 `__