Skip to content

Commit

Permalink
Refactor test for service groups
Browse files Browse the repository at this point in the history
  • Loading branch information
mohierf committed Sep 12, 2016
1 parent 7b2d163 commit 9da76c6
Show file tree
Hide file tree
Showing 8 changed files with 119 additions and 175 deletions.
5 changes: 4 additions & 1 deletion alignak/objects/itemgroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ def add_string_member(self, member):
:type member: str
:return: None
"""
# Avoid empty elements in lists ...
if not member:
return
add_fun = list.extend if isinstance(member, list) else list.append
if not hasattr(self, "members"):
self.members = []
Expand Down Expand Up @@ -168,7 +171,7 @@ def is_correct(self):

if self.unknown_members:
for member in self.unknown_members:
logger.error("[itemgroup::%s] as %s, got unknown member %s",
logger.error("[itemgroup::%s] as %s, got unknown member '%s'",
self.get_name(), self.__class__.my_type, member)
res = False

Expand Down
35 changes: 17 additions & 18 deletions alignak/objects/servicegroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
This module provide Servicegroup and Servicegroups classes used to group services
"""

from alignak.property import StringProp
from alignak.property import StringProp, ListProp
from alignak.log import logger

from .itemgroup import Itemgroup, Itemgroups
Expand All @@ -69,7 +69,8 @@ class Servicegroup(Itemgroup):
'uuid': StringProp(default='', fill_brok=['full_status']),
'servicegroup_name': StringProp(fill_brok=['full_status']),
'alias': StringProp(fill_brok=['full_status']),
'servicegroup_members': StringProp(fill_brok=['full_status']),
'servicegroup_members': ListProp(default=[], fill_brok=['full_status'],
merging='join', split_on_coma=True),
'notes': StringProp(default='', fill_brok=['full_status']),
'notes_url': StringProp(default='', fill_brok=['full_status']),
'action_url': StringProp(default='', fill_brok=['full_status']),
Expand Down Expand Up @@ -106,20 +107,16 @@ def get_name(self):

def get_servicegroup_members(self):
"""
Get list of members of this servicegroup
Get list of groups members of this servicegroup
:return: list of services (members)
:return: list of services
:rtype: list | str
"""
# # TODO: a Servicegroup instance should always have its servicegroup_members defined.
# if hasattr(self, 'servicegroup_members'):
# sg_members = [m.strip() for m in self.servicegroup_members.split(',')]
# if len(sg_members) == 1 and not sg_members[0]:
# return []
# return sg_members
# else:
# return []
return self.servicegroup_members
if hasattr(self, 'servicegroup_members'):
print("SG groups members: " % self.servicegroup_members)
return self.servicegroup_members
else:
return []

def get_services_by_explosion(self, servicegroups):
"""
Expand Down Expand Up @@ -154,6 +151,7 @@ def get_services_by_explosion(self, servicegroups):
if servicegroup is not None:
value = servicegroup.get_services_by_explosion(servicegroups)
if value is not None:
print("SG string member: %s" % value)
self.add_string_member(value)

if hasattr(self, 'members'):
Expand Down Expand Up @@ -258,22 +256,23 @@ def explode(self):
:return: None
"""
# We do not want a same hg to be explode again and again
# We do not want a same service group to be exploded again and again
# so we tag it
for servicegroup in self:
for servicegroup in self.items.values():
servicegroup.already_explode = False

for servicegroup in self:
for servicegroup in self.items.values():
print("SG: %s" % servicegroup)
if hasattr(servicegroup, 'servicegroup_members') and not \
servicegroup.already_explode:
# get_services_by_explosion is a recursive
# function, so we must tag hg so we do not loop
for sg2 in self:
for sg2 in self.items.values():
sg2.rec_tag = False
servicegroup.get_services_by_explosion(self)

# We clean the tags
for servicegroup in self:
for servicegroup in self.items.values():
try:
del servicegroup.rec_tag
except AttributeError:
Expand Down
55 changes: 0 additions & 55 deletions test/_old/etc/alignak_servicegroups_generated.cfg

This file was deleted.

80 changes: 0 additions & 80 deletions test/_old/test_servicegroups.py

This file was deleted.

2 changes: 1 addition & 1 deletion test/cfg/servicegroup/alignak_servicegroup_members.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ cfg_dir=../default
define servicegroup {
servicegroup_name allservices_and_groups
members test_host_0,test_ok_0
; servicegroup_members servicegroup_01, servicegroup_02, servicegroup_03, servicegroup_04
servicegroup_members servicegroup_01, servicegroup_02, servicegroup_03, servicegroup_04
}
57 changes: 57 additions & 0 deletions test/cfg/servicegroup/alignak_servicegroups_generated.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
cfg_dir=../default

define host {
host_name fake host
alias fake host
address 192.168.50.43
business_impact 4
icon_image_alt Linux
icon_image base/linux40.gif
statusmap_image base/linux40.gd2
check_command _echo
check_period 24x7
notification_period 24x7
#use Template_Host_Generic
use generic-host
contact_groups
check_interval 1555
retry_interval 1555
}

define service{
host_name fake host
service_description fake svc1
use generic-service
check_command _echo
check_interval 5
retry_interval 5
}

define service{
host_name fake host
service_description fake svc2
use generic-service
check_command _echo
check_interval 5
retry_interval 5
}

define service{
host_name fake host
service_description fake svc3
use generic-service
check_command _echo
servicegroups MYSVCGP, MYSVCGP2
check_interval 5
retry_interval 5
}

define service{
host_name fake host
service_description fake svc4
use generic-service
check_command _echo
servicegroups MYSVCGP3,MYSVCGP4
check_interval 5
retry_interval 5
}
2 changes: 1 addition & 1 deletion test/test_hostgroup.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ def test_members_hostgroup(self):
'allhosts', 'allhosts_and_groups', 'up', 'hostgroup_01'
])

print("List hostgroup groups:")
self.assertEqual(len(hg.get_hostgroup_members()), 4)
print("List hostgroup groups:")
for group in hg.get_hostgroup_members():
print("Group: %s" % group)
self.assertIn(group, [
Expand Down
Loading

0 comments on commit 9da76c6

Please sign in to comment.