Exemple #1
0
    class TestOTRSAPI(TestCase):
        def setUp(self):
            self.c = GenericTicketConnector(OTRS_SERVER, OTRS_WEBSERVICE)
            self.c.register_credentials(OTRS_LOGIN, OTRS_PASSWORD)

        def test_session_create(self):
            sessid = self.c.session_create(user_login = OTRS_LOGIN,
                                           password   = OTRS_PASSWORD)
            self.assertEqual(len(sessid), 32)

        def test_ticket_get(self):
            t = self.c.ticket_get(32)
            self.assertEqual(t.TicketID, 32)
            self.assertEqual(t.StateType, 'closed')

        def test_ticket_get_with_articles(self):
            t = self.c.ticket_get(32, get_articles=True)
            self.assertEqual(t.TicketID, 32)
            self.assertEqual(t.StateType, 'closed')
            articles = t.articles()
            self.assertIsInstance(articles, (list, tuple))
            self.assertIsInstance(articles[0], Article)
            self.assertEqual(articles[0].SenderType, 'customer')

        def test_ticket_search(self):
            t_list = self.c.ticket_search(CustomerID=9)
            self.assertIsInstance(t_list, list)
            self.assertIn(32, t_list)

        def test_ticket_create(self):
            t = Ticket(State='new', Priority='3 normal', Queue='Support',
                       Title='Problem test', CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest', Body='bla', Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)
            self.assertIsInstance(t_id, int)
            self.assertIsInstance(t_number, int)
            self.assertTrue(len(str(t_number)) >= 12)

        def test_ticket_update_attrs_by_id(self):
            t = Ticket(State='new', Priority='3 normal', Queue='Support',
                       Title='Problem test', CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest', Body='bla', Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            t = Ticket(Title='Foubar')
            upd_tid, upd_tnumber = self.c.ticket_update(ticket_id=t_id, ticket=t)
            self.assertIsInstance(upd_tid, int)
            self.assertIsInstance(upd_tnumber, int)
            self.assertTrue(len(str(upd_tnumber)) >= 12)

            self.assertEqual(upd_tid, t_id)
            self.assertEqual(upd_tnumber, t_number)

            upd_t = self.c.ticket_get(t_id)
            self.assertEqual(upd_t.Title, 'Foubar')
            self.assertEqual(upd_t.Queue, 'Support')

        def test_ticket_update_attrs_by_number(self):
            t = Ticket(State='new', Priority='3 normal', Queue='Support',
                       Title='Problem test', CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest', Body='bla', Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            t = Ticket(Title='Foubar')
            upd_tid, upd_tnumber = self.c.ticket_update(ticket_number=t_number,
                                                        ticket=t)
            self.assertIsInstance(upd_tid, int)
            self.assertIsInstance(upd_tnumber, int)
            self.assertTrue(len(str(upd_tnumber)) >= 12)

            self.assertEqual(upd_tid, t_id)
            self.assertEqual(upd_tnumber, t_number)

            upd_t = self.c.ticket_get(t_id)
            self.assertEqual(upd_t.Title, 'Foubar')
            self.assertEqual(upd_t.Queue, 'Support')

        def test_ticket_update_new_article(self):
            t = Ticket(State='new', Priority='3 normal', Queue='Support',
                       Title='Problem test', CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest', Body='bla', Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            a2 = Article(Subject='UnitTest2', Body='bla', Charset='UTF8',
                         MimeType='text/plain')

            a3 = Article(Subject='UnitTest3', Body='bla', Charset='UTF8',
                         MimeType='text/plain')

            self.c.ticket_update(t_id, article=a2)
            self.c.ticket_update(t_id, article=a3)

            t_upd = self.c.ticket_get(t_id, get_articles=True)
            arts_upd = t_upd.articles()
            self.assertIsInstance(arts_upd, list)
            self.assertEqual(len(arts_upd), 4)
            self.assertEqual(arts_upd[0].Subject, 'UnitTest')
            # article 1 is an auto response
            self.assertEqual(arts_upd[2].Subject, 'UnitTest2')
            self.assertEqual(arts_upd[3].Subject, 'UnitTest3')
Exemple #2
0
 def setUp(self):
     self.c = GenericTicketConnector(OTRS_SERVER, OTRS_WEBSERVICE)
     self.c.register_credentials(OTRS_LOGIN, OTRS_PASSWORD)
Exemple #3
0
    class TestOTRSAPI(TestCase):
        def setUp(self):
            self.c = GenericTicketConnector(OTRS_SERVER, OTRS_WEBSERVICE)
            self.c.register_credentials(OTRS_LOGIN, OTRS_PASSWORD)

        def test_session_create(self):
            sessid = self.c.session_create(user_login=OTRS_LOGIN,
                                           password=OTRS_PASSWORD)
            self.assertEqual(len(sessid), 32)

        def test_ticket_get(self):
            t = self.c.ticket_get(32)
            self.assertEqual(t.TicketID, 32)
            self.assertEqual(t.StateType, 'closed')

        def test_ticket_get_with_articles(self):
            t = self.c.ticket_get(32, get_articles=True)
            self.assertEqual(t.TicketID, 32)
            self.assertEqual(t.StateType, 'closed')
            articles = t.articles()
            self.assertIsInstance(articles, (list, tuple))
            self.assertIsInstance(articles[0], Article)
            self.assertEqual(articles[0].SenderType, 'customer')

        def test_ticket_search(self):
            t_list = self.c.ticket_search(CustomerID=9)
            self.assertIsInstance(t_list, list)
            self.assertIn(32, t_list)

        def test_ticket_create(self):
            t = Ticket(State='new',
                       Priority='3 normal',
                       Queue='Support',
                       Title='Problem test',
                       CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest',
                        Body='bla',
                        Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)
            self.assertIsInstance(t_id, int)
            self.assertIsInstance(t_number, int)
            self.assertTrue(len(str(t_number)) >= 12)

        def test_ticket_update_attrs_by_id(self):
            t = Ticket(State='new',
                       Priority='3 normal',
                       Queue='Support',
                       Title='Problem test',
                       CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest',
                        Body='bla',
                        Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            t = Ticket(Title='Foubar')
            upd_tid, upd_tnumber = self.c.ticket_update(ticket_id=t_id,
                                                        ticket=t)
            self.assertIsInstance(upd_tid, int)
            self.assertIsInstance(upd_tnumber, int)
            self.assertTrue(len(str(upd_tnumber)) >= 12)

            self.assertEqual(upd_tid, t_id)
            self.assertEqual(upd_tnumber, t_number)

            upd_t = self.c.ticket_get(t_id)
            self.assertEqual(upd_t.Title, 'Foubar')
            self.assertEqual(upd_t.Queue, 'Support')

        def test_ticket_update_attrs_by_number(self):
            t = Ticket(State='new',
                       Priority='3 normal',
                       Queue='Support',
                       Title='Problem test',
                       CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest',
                        Body='bla',
                        Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            t = Ticket(Title='Foubar')
            upd_tid, upd_tnumber = self.c.ticket_update(ticket_number=t_number,
                                                        ticket=t)
            self.assertIsInstance(upd_tid, int)
            self.assertIsInstance(upd_tnumber, int)
            self.assertTrue(len(str(upd_tnumber)) >= 12)

            self.assertEqual(upd_tid, t_id)
            self.assertEqual(upd_tnumber, t_number)

            upd_t = self.c.ticket_get(t_id)
            self.assertEqual(upd_t.Title, 'Foubar')
            self.assertEqual(upd_t.Queue, 'Support')

        def test_ticket_update_new_article(self):
            t = Ticket(State='new',
                       Priority='3 normal',
                       Queue='Support',
                       Title='Problem test',
                       CustomerUser='******',
                       Type='Divers')
            a = Article(Subject='UnitTest',
                        Body='bla',
                        Charset='UTF8',
                        MimeType='text/plain')
            t_id, t_number = self.c.ticket_create(t, a)

            a2 = Article(Subject='UnitTest2',
                         Body='bla',
                         Charset='UTF8',
                         MimeType='text/plain')

            a3 = Article(Subject='UnitTest3',
                         Body='bla',
                         Charset='UTF8',
                         MimeType='text/plain')

            self.c.ticket_update(t_id, article=a2)
            self.c.ticket_update(t_id, article=a3)

            t_upd = self.c.ticket_get(t_id, get_articles=True)
            arts_upd = t_upd.articles()
            self.assertIsInstance(arts_upd, list)
            self.assertEqual(len(arts_upd), 4)
            self.assertEqual(arts_upd[0].Subject, 'UnitTest')
            # article 1 is an auto response
            self.assertEqual(arts_upd[2].Subject, 'UnitTest2')
            self.assertEqual(arts_upd[3].Subject, 'UnitTest3')
Exemple #4
0
 def setUp(self):
     self.c = GenericTicketConnector(OTRS_SERVER, OTRS_WEBSERVICE)
     self.c.register_credentials(OTRS_LOGIN, OTRS_PASSWORD)
parser = argparse.ArgumentParser(description='Close OTRS tickets created by zenotrs-create-ticket.py where the events have closed but the tickets remain open due to malfunction, such as temporary loss of connectivity between Zenoss and OTRS')
parser.add_argument('otrsurl', help="URL of OTRS server (ex. http://otrs.mycompany.com)")
parser.add_argument('otrsuser', help="Username of OTRS user")
parser.add_argument('otrspass', help="Password of OTRS user")
parser.add_argument('zenossurl', help="URL of Zenoss server (ex. http://zenoss.mycompany.com:8080)")
parser.add_argument('zenossuser', help="Username of Zenoss user")
parser.add_argument('zenosspass', help="Password of Zenoss user")
parser.add_argument("--queue", help="OTRS Queue for Ticket", required=True)
parser.add_argument("--ownerid", help="OTRS Owner ID number for Ticket", required=True)
parser.add_argument("--type", help="OTRS Type of Ticket", required=True)
parser.add_argument("--eventfield", help="OTRS Dynamic Field for storing Zenoss Event ID", required=True)
args = parser.parse_args()

server_uri = args.otrsurl
webservice_name = 'GenericTicketConnector'
client = GenericTicketConnector(server_uri, webservice_name)

client.user_session_register(args.otrsuser,args.otrspass)

zenoss = Zenoss(args.zenossurl, args.zenossuser, args.zenosspass)

t_ids = client.ticket_search(Queues=args.queue, OwnerIDs=args.ownerid, Types=args.type, States='new')
for t_id in t_ids:
      ticket = client.ticket_get(t_id,get_dynamic_fields=True)
      for dfield in ticket.dynamicfields():
            if dfield.Name == args.eventfield:
               eventState = zenoss.get_event_detail(dfield.Value)['event'][0]['eventState']
               print "Open Ticket #" + str(t_id) + ", event " + dfield.Value + ": Current Zenoss event state is " + eventState
               if (eventState != 'New') and (eventState != 'Acknowledged') and (eventState != 'Suppressed'):
                  a = Article(Subject='Clearing orphaned ticket', Body='Orphaned ticket detected, event closed, ticket should have been auto-closed but was not for some reason. Closing ticket.', Charset='UTF8', MimeType='text/plain', TimeUnit='1')
parser.add_argument("--eventid", help="Zenoss Event ID (GUID)", required=True)
parser.add_argument("--device", help='Device event is related to', required=True)
parser.add_argument("--component", help='Component the event is related to', required=True)
parser.add_argument("--severity", help='Zenoss severity for event', required=True)
parser.add_argument("--time", help='Time of event(Zenoss)', required=True)
parser.add_argument("--summary", help='Event summary', required=True)
parser.add_argument("--message", help='Event message body', required=True)
parser.add_argument("--eventurl", help="URL to view event detail in Zenoss", required=True)
parser.add_argument("--ackurl", help="URL to acknowledge event in Zenoss", required=True)
parser.add_argument("--closeurl", help="URL to clear event in Zenoss", required=True)
parser.add_argument("--eventsurl", help="URL to view all events for device in Zenoss", required=True)
args = parser.parse_args()

server_uri = args.otrsurl
webservice_name = 'GenericTicketConnector'
client = GenericTicketConnector(server_uri, webservice_name)

client.user_session_register(args.otrsuser,args.otrspass)

subject = "[zenoss] " + args.device + " " + args.summary
body = "Summary: " + args.summary + "\n" \
     + "Device: " + args.device + "\n" \
     + "Component: " + args.component + "\n" \
     + "Severity: " + args.severity + "\n" \
     + "Time: " + args.time + "\n\n" \
     + "Message: \n\n" \
     + args.message + "\n\n\n" \
     + "Event Detail: " + args.eventurl + "\n" \
     + "Acknowledge: " + args.ackurl + "\n" \
     + "Close: " + args.closeurl + "\n" \
     + "Device Events: " + args.eventsurl
Exemple #7
0
# -*- coding: utf-8 -*-
# @author: Janssen Lima - [email protected]
# ATEN??O: C?digo n?o est? funcional. Em desenvolvimento

from otrs.client import GenericTicketConnector
from otrs.objects import Ticket, Article, DynamicField

server_uri = 'http://localhost/'
webservice_name = 'IntegraZabbix'
client = GenericTicketConnector(server_uri, webservice_name)
user_login = '******'
password = '******'

client.user_session_register(user_login, password)

pega_ticket = client.ticket_search(State=1)

print len(pega_ticket)

pega_ticket = client.ticket_search(Body='<inserir_texto_procura>')

for tickets in pega_ticket:
    print "Ticket: ",tickets


pega_fechados = client.ticket_search(State='new')

df_searchId = DynamicField(Name='ZabbixIdTrigger', Value="13563", Operator='Like')
df_searchState = DynamicField(Name='ZabbixStateTrigger', Value="PROBLEM", Operator='Like')

busca_df=client.ticket_search(Queues='Zabbix', dynamic_fields=[df_searchId, df_searchState])
Exemple #8
0
#!/usr/bin/env python

from otrs.client import GenericTicketConnector
from otrs.objects import Ticket, Article, DynamicField, Attachment

import yaml
config = yaml.safe_load(open("config.yml"))

server_uri = config['server']
webservice_name = 'GenericTicketConnector'
client = GenericTicketConnector(server_uri, webservice_name)

# user session
client.user_session_register(config['username'], config['password'])

# returns all tickets in queue Support
tickets = client.ticket_search(
    Queues = 'Support Queue',
    From = '{{term}}',
    To = '{{term}}',
    Cc = '{{term}}',
    Subject = '{{term}}',
    Body = '{{term}}',
    ContentSearch = 'OR',
    FullTextIndex = 1
)

print tickets
parser.add_argument("--eventfield", help="OTRS Dynamic Field for storing Zenoss Event ID", required=True)
parser.add_argument("--eventid", help="Zenoss Event ID (GUID)", required=True)
parser.add_argument("--device", help='Device event is related to', required=True)
parser.add_argument("--component", help='Component the event is related to', required=True)
parser.add_argument("--severity", help='Zenoss severity for event', required=True)
parser.add_argument("--clearid", help='Zenoss explanation for why event was cleared (ex. aging)', required=True)
parser.add_argument("--statechange", help='Time event cleared(Zenoss)', required=True)
parser.add_argument("--clearsummary", help='Summary for clear event', required=True)
parser.add_argument("--summary", help='Summary for original event', required=True)
parser.add_argument("--message", help='Event message body', required=True)
parser.add_argument("--reopenurl", help="URL to reopen event in Zenoss", required=True)
args = parser.parse_args()

server_uri = args.otrsurl
webservice_name = 'GenericTicketConnector'
client = GenericTicketConnector(server_uri, webservice_name)

client.user_session_register(args.otrsuser,args.otrspass)

# clearsummary may have extra quotation marks around it when called by zenoss

clearsummary = args.clearsummary
if clearsummary.startswith('"') and clearsummary.endswith('"'):
   clearsummary = clearsummary[1:-1]

subject = "[zenoss] CLEAR: " + args.device + " " + clearsummary
body = "Event: " + args.summary + "\n" \
     + "Cleared by: " + args.clearid + "\n" \
     + "Clear Summary: " + clearsummary + "\n" \
     + "At: " + args.statechange + "\n" \
     + "Device: " + args.device + "\n" \