From b5418f6e387635c1f45b5dac3227f28805c1fac3 Mon Sep 17 00:00:00 2001 From: flavien peyre Date: Tue, 18 Aug 2015 10:48:07 -0400 Subject: [PATCH] Improve init.py for the demo Change-Id: Icffad63263f740d22d9803a84bd1e1f0699fb7f5 --- surveil/api/storage/mongodb/config/contact.py | 14 +-- .../api/storage/mongodb/config/timeperiod.py | 2 +- surveil/cmd/init.py | 93 +++++++++++++++++++ .../controllers/v2/config/test_timeperiods.py | 9 +- 4 files changed, 107 insertions(+), 11 deletions(-) diff --git a/surveil/api/storage/mongodb/config/contact.py b/surveil/api/storage/mongodb/config/contact.py index 0064b8c..266fef8 100644 --- a/surveil/api/storage/mongodb/config/contact.py +++ b/surveil/api/storage/mongodb/config/contact.py @@ -18,8 +18,8 @@ import mongoengine class Contact(mongoengine.Document): meta = {'collection': 'contacts'} contact_name = mongoengine.StringField(unique=True) - host_notifications_enabled = mongoengine.StringField() - service_notifications_enabled = mongoengine.StringField() + host_notifications_enabled = mongoengine.IntField() + service_notifications_enabled = mongoengine.IntField() host_notification_period = mongoengine.StringField() service_notification_period = mongoengine.StringField() host_notification_options = mongoengine.ListField() @@ -28,8 +28,8 @@ class Contact(mongoengine.Document): service_notification_commands = mongoengine.ListField() email = mongoengine.StringField() pager = mongoengine.StringField() - can_submit_commands = mongoengine.StringField() - is_admin = mongoengine.StringField() - retain_status_information = mongoengine.StringField() - retain_nonstatus_information = mongoengine.StringField() - min_business_impact = mongoengine.StringField() + can_submit_commands = mongoengine.IntField() + is_admin = mongoengine.IntField() + retain_status_information = mongoengine.IntField() + retain_nonstatus_information = mongoengine.IntField() + min_business_impact = mongoengine.IntField() \ No newline at end of file diff --git a/surveil/api/storage/mongodb/config/timeperiod.py b/surveil/api/storage/mongodb/config/timeperiod.py index ebedf25..4158dfa 100644 --- a/surveil/api/storage/mongodb/config/timeperiod.py +++ b/surveil/api/storage/mongodb/config/timeperiod.py @@ -18,6 +18,6 @@ import mongoengine class TimePeriod(mongoengine.Document): meta = {'collection': 'timeperiods'} timeperiod_name = mongoengine.StringField() - exclude = mongoengine.StringField() + exclude = mongoengine.ListField() periods = mongoengine.DictField() alias = mongoengine.StringField() diff --git a/surveil/cmd/init.py b/surveil/cmd/init.py index 75fed0c..4772331 100644 --- a/surveil/cmd/init.py +++ b/surveil/cmd/init.py @@ -265,6 +265,99 @@ def main(): service_description="iamadownservice" ) + cli_surveil.config.businessimpactmodulations.create( + business_impact_modulation_name="demoBIM", + business_impact=42, + modulation_period="24x7" + ) + + cli_surveil.config.checkmodulations.create( + checkmodulation_name="demoCheckModulation", + check_command="42", + check_period="24x7" + ) + + cli_surveil.config.commands.create( + command_name="demoCommand", + command_line="ls --all", + module_type="active" + ) + + cli_surveil.config.contacts.create( + contact_name="demoContact", + host_notifications_enabled=1, + service_notifications_enabled=0, + host_notification_period="24x6", + service_notification_period="12x7", + host_notification_options=["mail", "sms"], + service_notification_options=["mail"], + host_notification_commands=["sms admin"], + service_notification_commands=["send mail to admin"], + email="surveil.demo@gmail.com", + pager="12", + can_submit_commands=1, + is_admin=0, + retain_status_information=1, + retain_nonstatus_information=365, + min_business_impact=24 + ) + + cli_surveil.config.contactgroups.create( + contactgroup_name="BDFL", + members=["demoContact"], + alias="group Alias", + contactgroup_members=["Linus", "Richard"] + ) + + cli_surveil.config.hostgroups.create( + hostgroup_name="OpenStack01", + members=['sw-iwebcore-01', 'srv-monitoring-01'], + alias="group Alias", + hostgroup_members=["AWS01", "Azure01"], + notes="notes", + notes_url="http://....notes.com", + action_url="mail" + ) + + cli_surveil.config.macromodulations.create( + macromodulation_name="Demo macroModulation", + modulation_period="24x7", + macro={"Linus": "Linux", "Richard": "Gnu"} + ) + + cli_surveil.config.notificationways.create( + notificationway_name="Demo motificationway", + host_notification_period="24x7", + service_notification_period="12x7", + host_notification_options=["mail", "sms"], + service_notification_options=["mail"], + host_notification_commands=["sms admin"], + service_notification_commands=["send mail to admin"], + min_business_impact="24" + ) + + cli_surveil.config.realms.create( + realm_name="Mordor", + realm_members=["Frodon", "Gandalf", "Sauron"], + default=42 + ) + + cli_surveil.config.servicegroups.create( + servicegroup_name="check Openstack", + members=["check-ws-arbiter"], + alias="group Alias", + servicegroup_members=["check Keystone", "check Nova"], + notes="notes", + notes_url="http://....notes.com", + action_url="mail" + ) + + cli_surveil.config.timeperiods.create( + timeperiod_name="Demo TimePeriod", + exclude=["24x7", "11x12"], + periods={"day": "demo", "night": "demoNight"}, + alias="aliasGroup" + ) # Reload the shinken config cli_surveil.config.reload_config() diff --git a/surveil/tests/api/controllers/v2/config/test_timeperiods.py b/surveil/tests/api/controllers/v2/config/test_timeperiods.py index 902f3e3..8525101 100644 --- a/surveil/tests/api/controllers/v2/config/test_timeperiods.py +++ b/surveil/tests/api/controllers/v2/config/test_timeperiods.py @@ -49,10 +49,12 @@ class TestTimePeriodsController(functionalTest.FunctionalTest): self.assert_count_equal_backport( json.loads(response.body.decode()), [ - {'timeperiod_name': 'misc-single-days', + {'exclude': [], + 'timeperiod_name': 'misc-single-days', 'periods': {'day 2': '00:00-24:00', '1999-01-28': '00:00-24:00'}}, - {'timeperiod_name': 'nonworkhours', + {'exclude': [], + 'timeperiod_name': 'nonworkhours', 'periods': {'sunday': '00:00-24:00', 'monday': '00:00-09:00,17:00-24:00'}} ] @@ -64,7 +66,8 @@ class TestTimePeriodsController(functionalTest.FunctionalTest): self.assertEqual( json.loads(response.body.decode()), - {'timeperiod_name': 'nonworkhours', + {'exclude': [], + 'timeperiod_name': 'nonworkhours', 'periods': {'sunday': '00:00-24:00', 'monday': '00:00-09:00,17:00-24:00'}} )