User Tools
This is an old revision of the document!
Table of Contents
EMS NOVA Development Details
Updated by Anna Dowling 04/10/2022
Overview
The purpose of the EMS Nova project is to bring the look and feel as well as the technology stack of the existing ems application up to date. The EMS is one of Errigals main, heavily used applications, yet the application display could be considered quite outdated. The applications front end technology stack is currently a mixture of grails gsp controllers and GWT. These are old technologies which are no longer favoured. As well as the age of them, they are also quite limiting when it comes to implementing more complex or detailed front end features.
EMS Nova application uses a number of services:
- ems-nova for the Angular frontend
- idms-proxy for middle-ware and backend data
- user profile for authentication
- MDC for interfacing with discovery data via idms-proxy apis
- mdc-translator for Ui parameter translation mappings for rendering ui components for discovered data
- elastic-replicator for data replication for alarm, ticket and device data into elastic-search and event notifications for real time front end updates.
- elastic-search for data storage - queried via idms-proxy
Repo:
- See also: Elastic Replicator (Elastic Replicator)
- See also: IDMS Proxy
Architecture
Project Documents
For further information see nova requirements documentationhere
Local Dev App Urls
Development Configuration
To run a local instance of EMS Nova,
- Clone the EMS Nova repository from BitBucket using Git: https://bitbucket.org/errigal/ems-nova/src/master/ (Note: Permissions may need to be granted to your BitBucket account to access the repository)
- Open the project in an IDE. In the terminal, run the
npm installcommand to install Node dependencies. - In
src/config/config.json, certain API endpoints must be changed:
- Under
authConfig, the “redirectUri” field must be set to“http://localhost:4230/callback”. - If a local version of IDMS Proxy is being run, the “proxyApiUrl” field of
proxyConfigmust be changed to“http://localhost:8080” - If a specific environment's applications are required, the URLs of all non-local applications must additionally be changed. The general format for these URLs is
“https://environment.errigal.com/application/path”
To run the development server, execute the ng serve command in the terminal. After the command executes, an instance of the EMS Nova application will be opened on http://localhost:4230/
For further information on application configuration for local development, see README.MD
Deployment
The ems-nova is deployed to the load balancer server in /var/www/html/ems-nova. Its environment specific variables are passed via the config/config.json file to the app at runtime.
Current Config Fields Are:
{
"deployment": {
"build": {
"identifier": "ems-nova » ems-nova-feature-branches » REL-4.1.0 REL-4.1.0.4",
"branch": "REL-4.1.0",
"number": "4",
"buildTime": "2022-08-11 17:28:55",
"deploymentTime": "2022-08-17 16:12:17"
}
},
"authConfig": {
"contextPath": "ems-nova",
"userProfileUrl": "https://nova.errigal.com/userprofile",
"redirectUri": "https://nova.errigal.com/ems-nova/callback",
"clientId": "bfcb7b00-8c6d-4a1c-b5f6-0353416301fd"
},
"snmpConfig": {
"emsUrl": "https://nova.errigal.com/SnmpManager/errigalEMS",
"snmpManagerUrl": "https://nova.errigal.com/SnmpManager"
},
"proxyConfig": {
"proxyApiUrl": "https://nova.errigal.com/idms-proxy/api/v0",
"sseEndPoint": "/replicator/sse",
"refreshIntervalMs": 300000
},
"ticketerConfig": {
"ticketerUrl": "https://nova.errigal.com/ticketer-light",
"ignoredTicketStatuses": ["Closed", "Alarm Resolved", "Alarm Resolved - Auto Closed", "Alarm Clear Received", "OEM Support Ticket Resolved", "PM Completed", "Work Completed", "PM Completed - Requires Attention", "PM Completed - Failed", "Info Provided Ticket Close", "Deleted"]
},
"hostTreeConfig": {
"hostTreeFilterBounds": 3
},
"hotJarConfig": {
"hotJarEnabled": true,
"hotJarSiteId": 2914835,
"hotJarSnippetVersion": 6
},
"mapConfig": {
"googleMapsAPIKey": "AIzaSyA706_ucy_2gp6tDklZF72f_Lw3ipZK3zY"
},
"analytics": {
"analyticsKey": "UA-158352259-10"
},
"commonHeaderConfig": {
"headerUrl": "https://nova.errigal.com/errigal-common-header/",
"config": "nova",
"version": "2.0",
"css": "style.css",
"suiteName": "IDMS - Demo Instance -",
"appName": "EMS Nova"
},
"tableauConfig": [
{
"name": "Ticket Dashboard",
"url": "https://reports.noc-in-a-box.com/#/site/ExteNetQA/views/ExteNetTicketsv1_1/StoryTkts?:iid=1",
"image": "ticketDashboardIcon.svg"
},
{
"name": "Outage Dashboard",
"url": "https://reports.noc-in-a-box.com/#/site/ExteNetQA/views/Outagesv1_0/StoryOutage?:iid=3",
"image": "outageDashboardIcon.svg"
},
{
"name": "MTTR Dashboard",
"url": "https://reports.noc-in-a-box.com/#/site/ExteNetQA/views/ExteNetTicketDurations/TktsDurDash?:iid=1",
"image": "mttrDashboardIcon.svg"
}
]
}
Permissions
Permissions are retrieved from userprofile for the current user on authentication. These are leverage to control what the use has authorization to access within the application. The below diagram outlines the permissions data storage model and retrieval touchpoints.
Permissions can be set via userprofile on the SnmpManager profile associated with a user. To understand what permissions map to what area in the ems-nova front end a string search of the code will show the validation on individual ui components e.g. derived-tree. PLEASE NOTE: If multiple of the same permission are assigned nova will default to the lowest access permission type (e.g FULL and VIEW = VIEW. See also ems_nova.CheckPermissionsDirective, ems_nova.PermissionService. Current full list of current permissions is as follows:
- DERIVED_TREE - CREATE
- DERIVED_TREE - DELETE
- DERIVED_TREE - FULL
- DERIVED_TREE - MODIFY
- DERIVED_TREE - VIEW
- DEVICE_ALARM - FULL
- DEVICE_ALARM - VIEW
- DEVICE_ALARM_SYNC - FULL
- DEVICE_ALL_PARAMETERS - VIEW
- DEVICE_ALL_PARAMETERS_SYNC - FULL
- DEVICE_CONFIG - FULL
- DEVICE_INFO - FULL
- DEVICE_INFO - VIEW
- DEVICE_REBOOT - FULL
- DEVICE_THRESHOLD - FULL
- DEVICE_THRESHOLD - VIEW
- DEVICE_TICKET - FULL
- DEVICE_TICKET - VIEW
- VIEW_DEVICE_IN_LEGACY_EMS - VIEW
MDC Translator Parameter Ui Configuration
* MDC Translator Ui Configuration - MDC Translator Ui Configuration (used to specify technology specific parameters for display on the device overview page)
Build / Deploy
Ansible Playbooks
ansible-playbook -i ../env-configuration/nova/hosts.ini --diff --vault-id @prompt ems-nova.yml --extra-vars "jenkins_build_name='ems-nova-feature-branches/job/jobName' appFileExtension='.jar' jenkins_job_build_num=buildNumber actions='upload,configure,deploy'"
Jenkins Build
Screens
Below are some of the main screens associated with the application. For more in depth review of the UI please visit any existing environment e.g. https://qanova.errigal.com/ems-nova/home











