User Tools

Site Tools


development:applications:ticketer_light_gateway

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'" 

Jenkins Build

development/applications/ticketer_light_gateway.txt · Last modified: 2022/10/03 15:04 by 10.91.110.100