Ejemplo n.º 1
0
	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
Ejemplo n.º 2
0
	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']
Ejemplo n.º 3
0
	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()
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
    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))
Ejemplo n.º 6
0
	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)
Ejemplo n.º 7
0
	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)
Ejemplo n.º 8
0
	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)