NGI CZ:RT GGUS Integration
NGI CZ RT/GGUS integration
As a part of NGI_CZ creation we have implemented an interface between NGI CZ RequestTracker (RT) and GGUS to allow for seamless integration of the NGI Request Tracker and the Global Grid User Support system. The interface is currently deployed and working.
The interface RT - GGUS has currently the following capabilities:
Ticket creation: once a ticket reaches the ggus queue in RT it is parsed and created in the GGUS using the GGUS WS. GGUS Ticket ID is returned as a reference and kept with the ticket in RT. In the opposite direction submitting a new ticket in the GGUS and assigning the ticket to NGI_CZ triggers passing of the ticket to NGI CZ RT using the CZRTforGGUS WS. The RT ticket ID is returned to GGUS for further reference.
Ticket modifications: each new correspondence associated with some ticket in the ggus queue RT triggers a modification of the ticket in GGUS. Ticket modification processes just the correspondence and not the comments made in the RT system. Likewise updates to public diary of steps are being sent as new correspondence of the respective ticket in RT.
Status updates: Status updates are passed from RT to GGUS and vice versa. There is quite a simple mapping of the ticket states as both RT and GGUS are using the ticket states in a similar way. We have made the following decisions on equivalent RT and GGUS states:
GGUS -> RT
- Open states
- GGUS new = RT new
- GGUS assigned = RT open
- assigned to a support unit but not yet accepted
- GGUS in progress = RT open
- ticket accepted and working on it
- GGUS waiting for reply = RT stalled
- waiting for reply from user or an expert (originally this was translated to feedback status in RT 3.6.x)
- GGUS on hold = RT stalled
- working on ticket; solution needs some time (e.g. waiting for a bug fix)
- GGUS reopened = RT open
- set by user if he is not satisfied with the provided solution
- Terminal states
- GGUS solved = RT resolved
- solution provided; updates are still possible
- GGUS unsolved = RT rejected
- no solution available; updates are still possible
- GGUS verified = RT resolved
- set by user if he's satisfied with the solution; updates are not possible any longer
- GGUS solved = RT resolved
RT -> GGUS
- RT new = GGUS new
- RT open = GGUS in progress
- RT stalled = GGUS on hold
- RT feedback = GGUS waiting for reply
- (RT feedback is no longer a valid status in RT 3.8)
- RT resolved = GGUS solved
- RT rejected = GGUS unsolved
- RT deleted - no matching status in GGUS, not sent to GGUS
Equivalent tickets in RT and GGUS are linked through the GGUSTicketID. The link has also been implemented in the RT web user interface for all tickets in the ggus queue.
- Handling of ticket attachments between RT and GGUS is not implemented as of now.
- It is not settled whether to send comments made to tickets in RT to GGUS and likewise whether to send updates to private diary of steps from GGUS to RT.
NGI CZ RT/GGUS interface implementation
The RT - GGUS interface consists of two parts. One part are perl scrips invoked when a new ticket comes to the above mentioned queue, any ticket in that queue is modified or changed its status. These scrips call the OpCreate and TicketModify methods of the Grid_HelpDesk web service. The OpCreate method is used to post a new ticket while the TicketModify method is used to add correspondence to the GGUS ticket diary of steps or change the GGUS ticket status. Both OpCreate and TicketModify return a GGUSTicketID of respective ticket in GGUS when their call was successful. The GGUSTicketID is then stored as a custom field in respective RT ticket and further used for reference its GGUS counterpart.
OpCreate parameters mapping
GHD_Description = $TicketDescription GHD_Diary_Of_Steps = $TicketCorrespondence GHD_Origin_ID = $RTTicketID GHD_Responsible_Unit = 'TPM' GHD_Short_Description = $TicketSubject GHD_Last_Modifier = 'ngicz' GHD_Last_Login = 'ngicz' GHD_Origin_SG = 'NGI_CZ' GHD_XML_Short_Description = $TicketSubject
$TicketDescription is basically a first correspondece associated with the ticket in RT (i.e. usually the problem report). $TicketCorrespondence is concatenated string of all correspondence added to the ticket in RT. Note that $TicketCorrespondence should be empty for OpCreate. $TicketID is an ID of the ticket in RT. $TicketSubject is the subject of the ticket.
TicketModify parameters mapping
GHD_Diary_Of_Steps = $TicketCorrespondence GHD_Request-ID = $TicketGGUSId GHD_Last_Modifier = 'ngicz' GHD_Last_Login = 'ngicz'
When using TicketModify to pass the status change of ticket in RT to GGUS, the following parameters are used:
GHD_Status = $GGUSStatus GHD_Request-ID = $TicketGGUSId GHD_Last_Modifier = 'ngicz' GHD_Last_Login = 'ngicz'
If the ticket in RT is labeled as solved the following parameter is also passed:
GHD_Short_Solution = 'This ticket was marked as resolved in NGI_CZ RT system.'
The other part is a CZRTforGGUS web service which does the GGUS -> RT interface on the RT side. CZRTforGGUS web service currently offers TicketCreate and TicketModify method.
TicketCreate method parameters
_IN GGUSTicketId $string GGUS Ticket ID _IN ShortDescription $string Short description (will be used as Subject in the RT) _IN Description $string Description (will be used as Message in the RT) _IN Requestor $string Requestor (will be prepended to the Message in the RT) _IN ResposibleUnit $string ResponsibleUnit (will be used to sort the ticket into respective queue in the RT) _RETURN $int Ticket ID in the RT system _RETURN $string Ticket originator for the GGUS system (assigned to ngicz)
TicketModify method parameters
_IN RTTicketId $string RT Ticket ID (Origin-ID in the GGUS) _IN GGUSTicketStatus $string GGUS Ticket Status (used to pass the status changes between GGUS and RT) _IN Description $string Description (will be used as New correspondence in the RT) _IN Requestor $string Requestor (will be prepended to the correspondence in the RT) _IN ResposibleUnit $string ResponsibleUnit (not actually used for TicketModify) _RETURN $int Ticket ID in the RT system _RETURN $string Ticket originator for the GGUS system (assigned to ngicz)
Both parts of the interface are based on SOAP:Lite library.