User Tools
This is an old revision of the document!
Table of Contents
Ticketer Light Gateway
Updated by Anna Dowling 03/10/2022
Overview
The ticketer light gateway application is utilised as a api gateway for the ticketer-light project to bridge the gap between ticketer business logic and exposing a more generalised api layer. It provides data integration points for tickets within Errigal's network access. Currently this is a service oriented application with no front end capabilities.
Repo: https://bitbucket.org/errigal/ticketer-light-gateway/branch/master
Local Dev App Urls
Project Documents
Apis / Data Accessed
API endpoints for core Ticket Areas including (using spring-webflux for REST instead of graphql due to underlying business logic):
- Form
- Attachment
- Contact Details
- Email
- Running Log
- Ticket History
- Ticket Updates
- User Data for Ticketer
- Visbility
- Workflow
Graphql Query API endpoints for core Ticket Areas:
type Query {
tickets(criteria: TicketSearchCriteria): [Ticket]
ticketForms(ticketId: ID): [Form]
allForms: [Form]
allFormGroups: [FormGroup]
relatedTickets(ticketId: ID, networkId: ID, visibilities: String!): [Ticket]
users(homeMarket: String): [User]
workflows(active: Boolean, published: Boolean, mockUp: Boolean): [Workflow]
previousStatus(ticketId: ID!): TicketStatus
nextStatuses(workflowId: ID!, statusName: String!): [GNode]
allStatusesForWorkflow(workflowId: ID!): [GNode]
allStatuses: [GNode]
visibilities: [Visibility]
ticketTypes: [TicketType]
ticketPriorities: [TicketPriorityEntry]
hubs: [NetworkElement]
nodesOfHub(hubId: ID!): [NetworkElement]
hubsOfVisibility(visibility: String!): [NetworkElement]
networkIdentifiersOfVisibility(visibility: String!): [NetworkIdentifier]
ofnTicketDeviceDetails(ticketIds: String!): [OFNDevice]
ofnTicketFaultDetails(ticketIds: String!): [OFNFault]
}
Graphql Object types:
Ticket TicketStatus Workflow GNode NetworkIdentifier User Form KeyValue FormGroup Visibility Region TicketType TicketPriorityConfig TicketPriorityConfigEntry NetworkElement OFNFault OFNDevice
Architecture
Development Configuration
Project can be pointed at local or server deployed version of all api endpoints listed above. See src/main/resources/application.properties for environment configuration for local dev.
Deployment
The ticketer-light-gateway is deployed to the server handlers in /var/spring-boot/ and is load balanced. Its environment specific variables are passed via the application.properties file to the app at runtime.
Current Config Fields Are:
# Build Info
jenkins.build.identifier=ticketer-light-gateway » ticketer-light-gateway-feature-branches » REL-4.1.0 REL-4.1.0.1
jenkins.build.branch=REL-4.1.0
jenkins.build.number=1
jenkins.build.time=2022-07-26 19:11:38
deployment.time=2022-08-08 15:30:19
spring.main.allow-bean-definition-overriding=true
# General logging settings
spring.application.name=ticketer-light-gateway
logging.file.max-history=5
logging.file.max-size=10MB
logging.file.name=/home/scotty/logs/spring-boot/ticketer-light-gateway.log
# Server settings
server.port=8210
server.servlet.context-path=/ticketer-light-gateway
spring.webflux.base-path=/ticketer-light-gateway
allowedOrigins=https://qanova.errigal.com
# DB Settings
spring.r2dbc.url=r2dbc:mysql://10.91.130.211:3306/ticketer?useUnicode=yes&characterEncoding=UTF-8
spring.r2dbc.username=root
spring.r2dbc.password==T7g(?(HHL
#spring.jpa.show-sql=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
graphql.mapping=/ticketer-light-gateway/graphql
graphql.servlet.actuator-metrics=true
graphql.annotations.base-package=com.errigal.ticketerlightgateway.model
auth.jwt.jwksUrlPath=https://qanova.errigal.com
userprofile.uri=https://qanova.errigal.com/userprofile
userprofile.clientId=0f59ca3a-353c-11eb-b954-0242ac110002
userprofile.clientSecret=jwha8WbRaTPZMW7mbhhEyl4iB1hAKa+xhGC/mObCXP48m2504MpRkPK5U3EumBSD
ticketer.url=https://qanova.errigal.com/Ticketer
#for OFN email
spring.codec.max-in-memory-size=10MB
#Metrics related configurations
management.endpoint.metrics.enabled=true
management.metrics.tags.application=${spring.application.name}
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
#Key for jwt decryption
com.errigal.userprofile.key=OO8qfrtYIqAX1EhU
Ansible Playbooks
ansible-playbook -i ../env-configuration/nova/hosts.ini --diff --vault-id @prompt ticketer-light-gateway.yml --extra-vars "jenkins_build_name='ticketer-light-gateway-feature-branches/job/branchName' appFileExtension='.jar' jenkins_job_build_num=buildNumber actions='upload,stop,deploy,configure,start'"
