EDP Review 30.07.2019

Project overview

EDP (Environment Discovery Project) is an application that was designed to support the project for an external client, Innovative Interfaces, Inc. The application helps compare configurations defining the state of different servers to identify differences between them.

Features implemented

  • Basic infrastructure: sources, reports, servers, connections, event log
  • Reports acquisition
  • Reports comparison
  • SSH sources: ability to download files and execute ssh commands
  • Lots of different iii-specific parsers
  • RelaxNG validators for specific xml-parsers
  • Common parsers:
    • .properties file parser
    • .ini file parser
    • .xml file parser
    • two-column sql output parser
  • User role system: privileges, roles, users, registration
    • admin can create sources, servers, connections
    • users can create reports, compare servers
  • Secret storage:
    • encrypted credentials storage system
    • secrets are stored in RDBMS symmetrically encrypted
    • primary symmetric key is stored in java keystore
  • Optional settings: description and link for a setting could be saved on demand
  • Feedback sending facility

Demo plan

  1. Admin login
  2. App overview: sources, servers, connections
  3. Add a server/connection
  4. Add a SSH sources: printenv, psql (?)
  5. Login as user 1
  6. Compare two servers: save as a private and public reports
  7. Show report comparison, search filters.
  8. Saving a setting with link and description
  9. Show report history
  10. Show event log
  11. Show the list of saved settings
  12. Registration/activation of user 2
  13. Show visible reports in history
  14. Add a report from user 2
  15. Show saved setting in report view/comparison
  16. Feedback system

Future plans

  • Move comparison pagination onto backend
  • Value sources - diff comparison
  • JDBC connection and SQL source type
  • Multivalue [SQL] sources: multiple values per key
  • User/role administration system
  • Parameterized sources: parameters per server. E.g.
    • using different SSH command line parameters for different servers
    • using different SQL parameters for different servers
  • Dynamic parsers
  • Groovy DSL for dynamic parsers: for plain text files, for XML, for SQL ResultSets
  • Automated acceptance tests
  • Source file backup
  • ? Automatic (scheduled) report creation
  • ?? REST connection and JSON source type, parsers
  • ?? Spring Cloud connection type
  • ?? Settings synchronization
Select a repo