I've created a library for python3 that brings the data you need very very easily. (install via pip install itoptop
):
from itoptop import Itop
url = 'https://itop_server_name/webservices/rest.php'
ver = '1.3'
usr = 'user'
pwd = 'password'
itop = Itop(url, ver, usr, pwd)
ticket = Itop.schema('Ticket')
query_all = {}
query_from_steve = {'caller_name': 'Steve'}
all_tickets = ticket.find(query_all)
tickets_from_steve = ticket.find(query_from_steve)
If you need specific fields from iTop:
team_name_field = ['team_name']
team_name_from_all_tickets = ticket.find(query_all, team_name_field)
date_fields = ['start_date', 'end_date']
tickets_datefields_from_steve = ticket.find({query_from_steve, date_fields)
To save this in csv:
def to_csv(dics, filename, keys=None):
"""
Create a CSV from a dictionary list
:param dics: dictionary list
:param filename: output filename
:param keys: Optional, subset of keys. Default is all keys.
:return: None
"""
if not keys:
keys = sorted(set().union(*(d.keys() for d in dics)))
import csv
with open(filename, 'w') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(dics)
to_csv(all_tickets, 'all_tickets.csv')
If you need import csv to iTop:
def csv(filename):
"""
Read CSV and make a dictionary list
:param filename: csv
:return: dictionary list
"""
import csv
return list(csv.DictReader(open(filename)))
all_tickets = csv('all_tickets.csv')
ticket.insert(all_tickets)
If you need update a specific field:
update_org_id = {'org_id' = 1}
ticket.update(query_from_steve, update_org_id)