def get_ticket(self): """Return a dictionnary with GLPI ticket's attributes.""" if self.glpi : ticket_info = GLPI_Manager.get_ticket(ticket_id=self.glpi) else : ticket_info = dict() return ticket_info
def create_ticket(self): """ Create a GLPI ticket and add ticket number to self.glpi. """ R = self.get_reference() # Creation du 1er contenu du ticket content = "Descriptif : "+ self.message +"\nImpact :\nDate et heure : " +str(self.date)+ u"\nV\xe9rification : " item = self.element.glpi_id if item is None : item = 0 if not R : category = 1 recipient = source = 0 urgency = impact = 3 else : category = R.glpi_category.glpi_id recipient = R.glpi_dst_group.glpi_id source = R.glpi_source urgency = R.glpi_urgency.glpi_id impact = R.glpi_impact.glpi_id ticket = { 'type':1, 'category': category, 'title': self.element.name+' '+self.message, 'content':content, 'recipient': recipient, 'group':9, 'source': source, #'itemtype' : self.element.host_type, #'item' : item, 'urgency':urgency, 'impact':impact, } ticket_info = GLPI_Manager.create_ticket(ticket) # Sauvegarde dans BDD self.glpi = ticket_info['id'] self.save() return ticket_info['id']
def setUp(self): management.call_command('loaddata', 'test_host.json', database='default', verbosity=0) management.call_command('loaddata', 'test_reference.json', database='default', verbosity=0) self.manager = GLPI_Manager()
class GLPI_Manager_TestCase(unittest.TestCase): """ """ def setUp(self): management.call_command('loaddata', 'test_host.json', database='default', verbosity=0) management.call_command('loaddata', 'test_reference.json', database='default', verbosity=0) self.manager = GLPI_Manager() def test_objects_management(self): """ Tests to manage computers, do cris eation, listing, get and delete. """ glpi_status = self.manager.is_on() # Create a computer and try to find in list of them computer = self.manager.create(computer=[{'name':'Test'}])['computer'][0] computers = self.manager.list('computer') self.assertIn((computer['id'],computer['name']), [ (c['id'],c.get('name','')) for c in computers ]) # Try to get it self.assertEqual(computer, self.manager.get('computer', computer['id'])) # Try to delete it and don't find it in list self.manager.delete(computer=[computer['id']]) computers = self.manager.list('computer') self.assertNotIn((computer['id'],computer['name']), [ (c['id'],c.get('name','')) for c in computers ]) def test_ticket_management(self): from os.path import join from base64 import b64encode E = create_event(create_alert()) E.create_ticket() # Try to add a picture to a document b64doc = b64encode(open(join(settings.BASEDIR, '../sendim/tests/python.png'), 'r').read()) doc = b64doc self.manager.add_ticket_document(E.glpi, doc, 'python.png') # Try to add a follow-up self.manager.add_follow_up(E.glpi, 'Test follow-up') # Try to get the ticket and find added info ticket = self.manager.get_ticket(E.glpi) self.assertEqual(ticket['documents'][0]['filename'], 'python.png') self.assertEqual(ticket['followups'][0]['content'], 'Test follow-up')
def handle(self, *args, **options) : try : for host in GLPI_Manager.list('computer') : try : if 'name' in host : H = Host.objects.create( name=host['name'], glpi_id=host['id'], host_type='computer' ) logger.info('Add computer : "'+H.name +'"') except IntegrityError : logger.warning('Computer "' +host['name']+ '" already exists') for host in GLPI_Manager.list('networkequipment') : try : if 'name' in host : H = Host.objects.create( name=host['name'], glpi_id=host['id'], host_type='networkequipment' ) logger.info('Add computer : "'+H.name +'"') except IntegrityError : logger.warning('Computer "' +host['name']+ '" already exists') for user in GLPI_Manager.list('user') : try: GU = GlpiUser.objects.create( name=user['name'].encode('latin-1').decode('utf-8'), glpi_id=user['id'] ) logger.info('Add GLPI user : '******'User "' +user['name']+ '" already exists') for group in GLPI_Manager.list('group') : try: GG = GlpiGroup.objects.create( name=group['name'].encode('latin-1').decode('utf-8'), glpi_id=group['id'] ) logger.info('Add GLPI group : '+GG.name) except IntegrityError : logger.warning('Group "' +group['name']+ '" already exists') for supplier in GLPI_Manager.list('supplier') : try: S = GlpiSupplier.objects.create( name=supplier['name'].encode('latin-1').decode('utf-8'), glpi_id=user['id'] ) logger.info('Add GLPI supplier : "' +supplier['name']+ '"') except IntegrityError : logger.warning('Supplier "' +supplier['name']+ '" already exists') for category in GLPI_Manager.list('ITILCategory') : try: C = GlpiCategory.objects.create( name=category['name'].encode('latin-1').decode('utf-8'), glpi_id=user['id'] ) logger.info('Add GLPI ITIL category : "' +category['name']+ '"') except IntegrityError : logger.warning('Category "' +category['name']+ '" already exists') except UnableToConnectGLPI, e : logger.info('Impossible to connect to GLPI : '+str(e.message))
def glpi_get(self, glpi_id): """Get object from GLPI.""" from sendim.glpi_manager import GLPI_Manager GLPI_Manager = GLPI_Manager() return GLPI_Manager.get(self.type, glpi_id)
def glpi_list(self): """List objects from GLPI.""" from sendim.glpi_manager import GLPI_Manager GLPI_Manager = GLPI_Manager() return GLPI_Manager.list(self.type)
def add_follow_up(self,content): """ Add a content to the event's ticket. """ if self.glpi : GLPI_Manager.add_follow_up(self.glpi,content)