====== EMS NOVA Development Details ====== Updated by Dylan Fennelly 02/03/2023 ===== 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: * https://bitbucket.org/errigal/ems-nova/branch/dev * https://bitbucket.org/errigal/elastic-replicator/branch/master * https://bitbucket.org/errigal/mdc-translator/branch/master * https://bitbucket.org/errigal/idms-proxy/branch/master * https://bitbucket.org/errigal/userprofile/branch/master * https://bitbucket.org/errigal/rdf_orchestrator/branch/master * https://bitbucket.org/errigal/rdf_agent/branch/master * https://bitbucket.org/errigal/rdf_tracker/branch/master * See also: [[onboarding:elastic-replicator:start|Elastic Replicator (Elastic Replicator)]] * See also: [[onboarding:proxy:start|IDMS Proxy]] ===== Architecture ===== {{ :onboarding:nova:r_d-architecture_-_ems_nova.drawio.png?800 |}} ===== Project Documents ===== For further information see nova requirements documentation[[https://drive.google.com/drive/u/0/folders/1HtHWiQMPSpIhOBnmPDFtKRPipdIHVtlb|here]] ===== Local Dev App Urls ===== * http://localhost:4230/ ===== 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 install'' command 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 ''proxyConfig'' must 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 [[https://bitbucket.org/errigal/ems-nova/src/master/README.md|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. {{ :onboarding:nova:novapermissions.drawio.png?600 |}} 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 - [[onboarding:nova:mdctranslatoruiconfig|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 === https://jenkins.errigal.com:8443/job/ems-nova/ ===== 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 === System Overview - Host Tree === {{ :onboarding:nova:screenshot_2022-10-11_at_11.27.25.png?400 |}} === System Overview - Derived Tree Builder === {{ :onboarding:nova:screenshot_2022-10-11_at_11.27.40.png?400 |}}}} === System Overview - Header and Map === {{ :onboarding:nova:screenshot_2022-10-11_at_11.27.48.png?400 |}} === System Overview - Charts === {{ :onboarding:nova:screenshot_2022-10-11_at_11.28.00.png?400 |}} === Device Overview - Tree === {{ :onboarding:nova:screenshot_2022-10-11_at_11.52.33.png?400 |}} === Device Overview -Header / Alarm, Ticket, Asset Info, Map === {{ :onboarding:nova:screenshot_2022-10-11_at_11.52.38.png?400 |}} === Device Overview - Parameters === {{ :onboarding:nova:screenshot_2022-10-11_at_12.08.45.png?400 |}} {{ :onboarding:nova:screenshot_2022-10-11_at_12.09.48.png?400 |}} === Device Overview - Charts === {{ :onboarding:nova:screenshot_2022-10-11_at_12.07.00.png?400 |}} {{ :onboarding:nova:screenshot_2022-10-11_at_11.52.46.png?400 |}} ----