Skip to content

Commit

Permalink
Misc improvements (#52)
Browse files Browse the repository at this point in the history
* RD: Added device-view.html for viewing and editing device details. Fixed and improved devices.html. Modified DeviceManagementController so that the '/monitor/device' endpoint returns the devices of the current user, and also plain users can retrieve info for the devices they own.

* RD: Moved 'metrics' section side-by-side to 'device info' section in device-view.html, for better viewing

* RD: changed mongo db name to 'resource_discovery' in application.yml

* RD: Minor GUI improvements

* RD: Added DeviceMonitorService to watch the status updates from EMS. Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.

* RD: Created AbstractMonitorService (to factor out common topic monitoring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.

* RD: Added banner

* RD: Added DeviceMetricsMonitorService and DeviceMetrics classes. Updated Device class to store device metrics received from EMS

* RD: Updated application.yml

* RD: Added device metrics display in device-view.html. Added (EMS) device status in devices.html

* RD: Updated device-view.html to display device metrics

* RD: Modified Device in monitoring subsystem to not have its credentials serialized (and returned to browser). Also updated the affected code

* RD: Added check for a request's device IP address being in use (in another request or a registered device)

* RD: various minor code improvements

* RD: Added better error reporting in request-edit.html

* RD: Various small GUI improvements and a fix

* RD: Fixed registration Device in order toString() not to print credentials. Fixed RegistrationRequest in order to have its 'messages' and 'history' fields copied by BeanUtils. Fixed 2 bugs in RegistrationRequestProcessor and added a few more logs.

* RD: Minor change in device-view.html to move 'count-' metrics to the end of the device metrics list

* RD: Changed monitoring Device to not serialize credentials

* RD: Code cleanup in RegistrationRequestProcessor

* RD: Improved GUI (added page shortcuts at top-right)

* RD: Implementing re-onboarding, off-boarding, and request-for-info (device status and metrics) [WIP]

* RD: Added DeviceLifeCycleRequestService and DeviceLifeCycleResponseService classes for handling reinstall and uninstall actions (via EMS broker). Moved LC request event sending from DeviceManagementService to DeviceLifeCycleRequestService. Updated ResourceDiscoveryProperties with settings for DeviceLifeCycleRequest/ResponseService's.

* RD: Added device archiving and unarchiving in GUI

* RD: Implemented DeviceProcessor to periodically archive off-boarded devices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties  and in GUI.

* RD: Changed devices.html to always display 'Archive' button to Admin users

* RD: Added archived-device-view.html, renamed archived-view.html to archived-request-view.html. Updated archived.html

* RD: Fixed DeviceManagementController to allow plain users (device owners) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.

* RD: Extended DeviceProcessor to check for suspect and failed devices. Added SUSPECT and FAILED statues in DeviceStatus (and in devices.html and archived.html for colouring). Added relevant settings in ResourceDiscoveryProperties. Fixed a few naming errors.

* RD: Added shortcuts (top-right corner) to all detail pages

* RD: Minor change in index.html (grayed out settings image)

* RD: Improved AbstractMonitorService (reuse of single connection, better logs). Updated affected code.

* RD: Minor code (mostly logging) and GUI improvements

* RD: Added 'UnknownDeviceRegistrationService' class to monitor for unknown devices (based on IP address and reference in messages received from EMS), and registering them to RD. Added NODE_DETAILS in REQUEST_TYPE enum for messages sent to/received from EMS about acquiring detailed node info (including credentials). Added 'deviceInfoRequestsTopic' and 'deviceInfoReportsTopic' settings in ResourceDiscoveryProperties.

* RD: Added prompting admin to provide device credentials when un-archiving a previously archived request or device.

* RD: Moved REQUEST_TYPE enum to 'common' package and updated code

* RD: Changed authentication to use BCrypt-encrypted passwords

* RD: Moved message broker communication code to BrokerUtil class, and updated using classes accordingly. Implemented EncryptionUtil for encrypting and decrypting broker messages [TO BE TESTED]. Few minor code improvements.

* RD: Minor code tidy up

* RD: Added support for SSL connections to ActiveMQ broker in BrokerUtil. Added the needed settings in ResourceDiscoveryProperties and application.yml

* RD: Fixed issue where UnknownDeviceRegistrationService registers a device before RegistrationRequestProcessor does

* RD: Modified pom.xml to build an image named 'eu.nebulous.resource-discovery' and tagged with current project version

* RD: Added 'DeviceLocation' class and 'location' field in both 'Device' classes. Also updated all 4 details pages to include Location (name, lat, lon). Fixed the Restore button of the modal dialog in archived.html to display 'Restore Request' or 'Restore Device' depending on the restore type.

* RD: Added StatusController to report current application status (currently returns 'OK')

* RD: Fixed a few minor issues:
* Fixed 'spring.web.resources.static-locations'
* Changed Docker image name to 'resource-discovery'
* Set BPE_LANG value to C.UTF-8 in order to render banner correctly

* RD: Changes in pom.xml and application.yml:
* Changed groupId in pom.xml to 'eu.nebulous.resource-management', and artifactId to 'resource-discovery'
* Corrected service name and description
* Set 'imageName' property to derive from artifactId
* Fixed application.yml to use '@project.version@' placeholder for app version

* RD: Renamed 'management' module to 'resource-discovery'

* RD:
* Commented out Buildpacks related settings in pom.xml
* Added Dockerfile, run.sh (entrypoint script) and .dockerignore

* RD: Modified base images in Dockerfile

* RD: Modified Dockerfile in order to both compile the app and build the Docker image

* RD: Improved Dockerfile

* RD: Improved Dockerfile

* RD: Upgraded SB version to SB 3.2.1 and JRE to version 21. Updated dependency to their latest versions. Modified model classes to avoid Lombok SuperBuilder warnings.

* RD: Fixed Dockerfile

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* EMS: Added K8sNetdataCollector [WIP]

* RD: Added 'port' in forms and models

* RD: Added two TODOs

* RD: Deactivated UnknownDeviceRegistrationService

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Increased logging to debug setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Modified logging to debug the setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Correction of syntactic error I94a6fdb4612de192c24511445f1236cdce94b000

* Addition of needed configuration properties I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Updates on the topic and the payload format used to communicate with SAL for the registration of a device
I94a6fdb4612de192c24511445f1236cdce94b000

* Allow setting and using a custom broker port
I94a6fdb4612de192c24511445f1236cdce94b000

* Pass a default port to the configuration of the Resource discovery server
I94a6fdb4612de192c24511445f1236cdce94b000

* Log debugging information related to the port of the NebulOuS broker
I94a6fdb4612de192c24511445f1236cdce94b000

* Publishing of the appropriate message to the broker
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Removed truststore settings from application.yml. Upgraded to SB 3.2.4 and fixed pom.xml

* RD: Fixed banner.txt

* RD: Modified application.yml

* RD: Added temp. debug messages

* RD: Added temp. debug messages 2

* Revert "RD: Added temp. debug messages 2"

This reverts commit 738f6048a8b88b4cfc7410db2146c7d7855c03bd.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c207dd900689c94fe5b608a0a03db8fc80.

* RD: Modified SALRegistrationService to run SAL registration in dedicated worker thread, and interrupt registration if it takes too long. Added related settings and assigned defaults.

* RD: Added temp. log messages

* Revert "RD: Added temp. log messages"

This reverts commit 2dae6582de0359a4f33b0d8c066b1b55ecad2227.

* RD: Updated DeviceMetricsMonitorService to match metric events to device using first the IP address and the client Id (stored in Device.StatusUpdate)

* Improvements on edge device data propagation
I94a6fdb4612de192c24511445f1236cdce94b000

* Integration of changes performed in commit e3bd3852 but accidentally overriden
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Updated Dockerfile

* RD: Updated run.sh and added wait_for_mongodb.sh

* RD: Improved wait_for_mongodb.sh script

* Various Improvements
Addition of the port attribute in the registration of an edge device
Modification of the edge device registration to allow for more dynamic registration json field population
I94a6fdb4612de192c24511445f1236cdce94b000

* Attempt to fix a problem when publishing to the broker to register information to SAL or notify the SLO Violation detector
I94a6fdb4612de192c24511445f1236cdce94b000

* Miscellaneous improvements

Updated the registration of architecture/jar files for each edge device registered

Preliminary work to support 'Compromised state'

* RD: Added API Key authentication

* RD: Upgraded SB to 3.2.10, and Lombok, commons-lang3 dependencies to their latest versions. Improved Dockerfile.

* RD: Code improvements (esp. wrt @PreAuthorize annotations)

* RD: Made SALRegistrationService service conditionally enabled (by 'discovery.sal-registration.enabled' property). Its uses were updated accordingly.

* RD: Updated RegistrationRequestService (and its uses) to take authenticated user into consideration during checks of requests and devices sent from GUI. Also added checks for the device data provided.

* RD: Added 'Device.ref' field and added its initialization. Ref field will be populated with a unique device reference following the Nebulous naming convention (including app id).

* RD: Updated GUI pages to include the new 'ref' field. A few more improvements were introduced.

* Use device reference instead of name to register to SAL

* Improvements in device registration and component communication with the broker

* Small improvements in device registration

* Small improvement in getting device registration details

* Small improvement in getting device registration details

* RD: Fix in SALRegistrationService class

* RD: Fixed fontawesome cdn url

* Initial deregistration support

* RD: Made device on-boarding authorization configurable (MANUAL, ALWAYS_AUTHORIZE, and ALWAYS_REJECT)

* RD: Updated RegistrationRequestProcessor to include Device Ref in onboarding request to EMS

* Improvements in the handling of AMQP connections

* Addition of provider field, miscellaneous improvements

- Addition of provider field in device registration
- Small improvements the Synchronous Broker publisher

* Minor logging improvements

* Deregistration process improvement

* Stopping the device lost publisher

* Refactoring to use the original Connector class instead of ExtendedConnector

* Minor logging improvement

* Only try to stop the connector if it has been previously initialized

* Miscellaneous improvements

Implementation of edge device/byon hourly cost (price) field
Only try to stop the connector if it has been previously initialized

* Password improvements

Removal of plaintext passwords and replacement with environmental variable values

* Debugging message commit

* Work on Deregistration support

* Added more logging statements to debug device registration (work by ipatini)

* Fix parsing the json response of SAL

* Changes to avoid stopping the connector

* Sal response parsing improvement and other improvements (#35)

* Debugging message (#32)

* RD: Added device-view.html for viewing and editing device details. Fixed and improved devices.html. Modified DeviceManagementController so that the '/monitor/device' endpoint returns the devices of the current user, and also plain users can retrieve info for the devices they own.

* RD: Moved 'metrics' section side-by-side to 'device info' section in device-view.html, for better viewing

* RD: changed mongo db name to 'resource_discovery' in application.yml

* RD: Minor GUI improvements

* RD: Added DeviceMonitorService to watch the status updates from EMS. Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.

* RD: Created AbstractMonitorService (to factor out common topic monitoring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.

* RD: Added banner

* RD: Added DeviceMetricsMonitorService and DeviceMetrics classes. Updated Device class to store device metrics received from EMS

* RD: Updated application.yml

* RD: Added device metrics display in device-view.html. Added (EMS) device status in devices.html

* RD: Updated device-view.html to display device metrics

* RD: Modified Device in monitoring subsystem to not have its credentials serialized (and returned to browser). Also updated the affected code

* RD: Added check for a request's device IP address being in use (in another request or a registered device)

* RD: various minor code improvements

* RD: Added better error reporting in request-edit.html

* RD: Various small GUI improvements and a fix

* RD: Fixed registration Device in order toString() not to print credentials. Fixed RegistrationRequest in order to have its 'messages' and 'history' fields copied by BeanUtils. Fixed 2 bugs in RegistrationRequestProcessor and added a few more logs.

* RD: Minor change in device-view.html to move 'count-' metrics to the end of the device metrics list

* RD: Changed monitoring Device to not serialize credentials

* RD: Code cleanup in RegistrationRequestProcessor

* RD: Improved GUI (added page shortcuts at top-right)

* RD: Implementing re-onboarding, off-boarding, and request-for-info (device status and metrics) [WIP]

* RD: Added DeviceLifeCycleRequestService and DeviceLifeCycleResponseService classes for handling reinstall and uninstall actions (via EMS broker). Moved LC request event sending from DeviceManagementService to DeviceLifeCycleRequestService. Updated ResourceDiscoveryProperties with settings for DeviceLifeCycleRequest/ResponseService's.

* RD: Added device archiving and unarchiving in GUI

* RD: Implemented DeviceProcessor to periodically archive off-boarded devices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties  and in GUI.

* RD: Changed devices.html to always display 'Archive' button to Admin users

* RD: Added archived-device-view.html, renamed archived-view.html to archived-request-view.html. Updated archived.html

* RD: Fixed DeviceManagementController to allow plain users (device owners) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.

* RD: Extended DeviceProcessor to check for suspect and failed devices. Added SUSPECT and FAILED statues in DeviceStatus (and in devices.html and archived.html for colouring). Added relevant settings in ResourceDiscoveryProperties. Fixed a few naming errors.

* RD: Added shortcuts (top-right corner) to all detail pages

* RD: Minor change in index.html (grayed out settings image)

* RD: Improved AbstractMonitorService (reuse of single connection, better logs). Updated affected code.

* RD: Minor code (mostly logging) and GUI improvements

* RD: Added 'UnknownDeviceRegistrationService' class to monitor for unknown devices (based on IP address and reference in messages received from EMS), and registering them to RD. Added NODE_DETAILS in REQUEST_TYPE enum for messages sent to/received from EMS about acquiring detailed node info (including credentials). Added 'deviceInfoRequestsTopic' and 'deviceInfoReportsTopic' settings in ResourceDiscoveryProperties.

* RD: Added prompting admin to provide device credentials when un-archiving a previously archived request or device.

* RD: Moved REQUEST_TYPE enum to 'common' package and updated code

* RD: Changed authentication to use BCrypt-encrypted passwords

* RD: Moved message broker communication code to BrokerUtil class, and updated using classes accordingly. Implemented EncryptionUtil for encrypting and decrypting broker messages [TO BE TESTED]. Few minor code improvements.

* RD: Minor code tidy up

* RD: Added support for SSL connections to ActiveMQ broker in BrokerUtil. Added the needed settings in ResourceDiscoveryProperties and application.yml

* RD: Fixed issue where UnknownDeviceRegistrationService registers a device before RegistrationRequestProcessor does

* RD: Modified pom.xml to build an image named 'eu.nebulous.resource-discovery' and tagged with current project version

* RD: Added 'DeviceLocation' class and 'location' field in both 'Device' classes. Also updated all 4 details pages to include Location (name, lat, lon). Fixed the Restore button of the modal dialog in archived.html to display 'Restore Request' or 'Restore Device' depending on the restore type.

* RD: Added StatusController to report current application status (currently returns 'OK')

* RD: Fixed a few minor issues:
* Fixed 'spring.web.resources.static-locations'
* Changed Docker image name to 'resource-discovery'
* Set BPE_LANG value to C.UTF-8 in order to render banner correctly

* RD: Changes in pom.xml and application.yml:
* Changed groupId in pom.xml to 'eu.nebulous.resource-management', and artifactId to 'resource-discovery'
* Corrected service name and description
* Set 'imageName' property to derive from artifactId
* Fixed application.yml to use '@project.version@' placeholder for app version

* RD: Renamed 'management' module to 'resource-discovery'

* RD:
* Commented out Buildpacks related settings in pom.xml
* Added Dockerfile, run.sh (entrypoint script) and .dockerignore

* RD: Modified base images in Dockerfile

* RD: Modified Dockerfile in order to both compile the app and build the Docker image

* RD: Improved Dockerfile

* RD: Improved Dockerfile

* RD: Upgraded SB version to SB 3.2.1 and JRE to version 21. Updated dependency to their latest versions. Modified model classes to avoid Lombok SuperBuilder warnings.

* RD: Fixed Dockerfile

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* EMS: Added K8sNetdataCollector [WIP]

* RD: Added 'port' in forms and models

* RD: Added two TODOs

* RD: Deactivated UnknownDeviceRegistrationService

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Increased logging to debug setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Modified logging to debug the setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Correction of syntactic error I94a6fdb4612de192c24511445f1236cdce94b000

* Addition of needed configuration properties I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Updates on the topic and the payload format used to communicate with SAL for the registration of a device
I94a6fdb4612de192c24511445f1236cdce94b000

* Allow setting and using a custom broker port
I94a6fdb4612de192c24511445f1236cdce94b000

* Pass a default port to the configuration of the Resource discovery server
I94a6fdb4612de192c24511445f1236cdce94b000

* Log debugging information related to the port of the NebulOuS broker
I94a6fdb4612de192c24511445f1236cdce94b000

* Publishing of the appropriate message to the broker
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Removed truststore settings from application.yml. Upgraded to SB 3.2.4 and fixed pom.xml

* RD: Fixed banner.txt

* RD: Modified application.yml

* RD: Added temp. debug messages

* RD: Added temp. debug messages 2

* Revert "RD: Added temp. debug messages 2"

This reverts commit 738f6048a8b88b4cfc7410db2146c7d7855c03bd.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c207dd900689c94fe5b608a0a03db8fc80.

* RD: Modified SALRegistrationService to run SAL registration in dedicated worker thread, and interrupt registration if it takes too long. Added related settings and assigned defaults.

* RD: Added temp. log messages

* Revert "RD: Added temp. log messages"

This reverts commit 2dae6582de0359a4f33b0d8c066b1b55ecad2227.

* RD: Updated DeviceMetricsMonitorService to match metric events to device using first the IP address and the client Id (stored in Device.StatusUpdate)

* Improvements on edge device data propagation
I94a6fdb4612de192c24511445f1236cdce94b000

* Integration of changes performed in commit e3bd3852 but accidentally overriden
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Updated Dockerfile

* RD: Updated run.sh and added wait_for_mongodb.sh

* RD: Improved wait_for_mongodb.sh script

* Various Improvements
Addition of the port attribute in the registration of an edge device
Modification of the edge device registration to allow for more dynamic registration json field population
I94a6fdb4612de192c24511445f1236cdce94b000

* Attempt to fix a problem when publishing to the broker to register information to SAL or notify the SLO Violation detector
I94a6fdb4612de192c24511445f1236cdce94b000

* Miscellaneous improvements

Updated the registration of architecture/jar files for each edge device registered

Preliminary work to support 'Compromised state'

* RD: Added API Key authentication

* RD: Upgraded SB to 3.2.10, and Lombok, commons-lang3 dependencies to their latest versions. Improved Dockerfile.

* RD: Code improvements (esp. wrt @PreAuthorize annotations)

* RD: Made SALRegistrationService service conditionally enabled (by 'discovery.sal-registration.enabled' property). Its uses were updated accordingly.

* RD: Updated RegistrationRequestService (and its uses) to take authenticated user into consideration during checks of requests and devices sent from GUI. Also added checks for the device data provided.

* RD: Added 'Device.ref' field and added its initialization. Ref field will be populated with a unique device reference following the Nebulous naming convention (including app id).

* RD: Updated GUI pages to include the new 'ref' field. A few more improvements were introduced.

* Use device reference instead of name to register to SAL

* Improvements in device registration and component communication with the broker

* Small improvements in device registration

* Small improvement in getting device registration details

* Small improvement in getting device registration details

* RD: Fix in SALRegistrationService class

* RD: Fixed fontawesome cdn url

* Initial deregistration support

* RD: Made device on-boarding authorization configurable (MANUAL, ALWAYS_AUTHORIZE, and ALWAYS_REJECT)

* RD: Updated RegistrationRequestProcessor to include Device Ref in onboarding request to EMS

* Improvements in the handling of AMQP connections

* Addition of provider field, miscellaneous improvements

- Addition of provider field in device registration
- Small improvements the Synchronous Broker publisher

* Minor logging improvements

* Deregistration process improvement

* Stopping the device lost publisher

* Refactoring to use the original Connector class instead of ExtendedConnector

* Minor logging improvement

* Only try to stop the connector if it has been previously initialized

* Miscellaneous improvements

Implementation of edge device/byon hourly cost (price) field
Only try to stop the connector if it has been previously initialized

* Password improvements

Removal of plaintext passwords and replacement with environmental variable values

* Debugging message commit

---------

Co-authored-by: ipatini <[email protected]>
Co-authored-by: Andreas Tsagkaropoulos <[email protected]>

* Logging improvements (#33)

* RD: Added device-view.html for viewing and editing device details. Fixed and improved devices.html. Modified DeviceManagementController so that the '/monitor/device' endpoint returns the devices of the current user, and also plain users can retrieve info for the devices they own.

* RD: Moved 'metrics' section side-by-side to 'device info' section in device-view.html, for better viewing

* RD: changed mongo db name to 'resource_discovery' in application.yml

* RD: Minor GUI improvements

* RD: Added DeviceMonitorService to watch the status updates from EMS. Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.

* RD: Created AbstractMonitorService (to factor out common topic monitoring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.

* RD: Added banner

* RD: Added DeviceMetricsMonitorService and DeviceMetrics classes. Updated Device class to store device metrics received from EMS

* RD: Updated application.yml

* RD: Added device metrics display in device-view.html. Added (EMS) device status in devices.html

* RD: Updated device-view.html to display device metrics

* RD: Modified Device in monitoring subsystem to not have its credentials serialized (and returned to browser). Also updated the affected code

* RD: Added check for a request's device IP address being in use (in another request or a registered device)

* RD: various minor code improvements

* RD: Added better error reporting in request-edit.html

* RD: Various small GUI improvements and a fix

* RD: Fixed registration Device in order toString() not to print credentials. Fixed RegistrationRequest in order to have its 'messages' and 'history' fields copied by BeanUtils. Fixed 2 bugs in RegistrationRequestProcessor and added a few more logs.

* RD: Minor change in device-view.html to move 'count-' metrics to the end of the device metrics list

* RD: Changed monitoring Device to not serialize credentials

* RD: Code cleanup in RegistrationRequestProcessor

* RD: Improved GUI (added page shortcuts at top-right)

* RD: Implementing re-onboarding, off-boarding, and request-for-info (device status and metrics) [WIP]

* RD: Added DeviceLifeCycleRequestService and DeviceLifeCycleResponseService classes for handling reinstall and uninstall actions (via EMS broker). Moved LC request event sending from DeviceManagementService to DeviceLifeCycleRequestService. Updated ResourceDiscoveryProperties with settings for DeviceLifeCycleRequest/ResponseService's.

* RD: Added device archiving and unarchiving in GUI

* RD: Implemented DeviceProcessor to periodically archive off-boarded devices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties  and in GUI.

* RD: Changed devices.html to always display 'Archive' button to Admin users

* RD: Added archived-device-view.html, renamed archived-view.html to archived-request-view.html. Updated archived.html

* RD: Fixed DeviceManagementController to allow plain users (device owners) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.

* RD: Extended DeviceProcessor to check for suspect and failed devices. Added SUSPECT and FAILED statues in DeviceStatus (and in devices.html and archived.html for colouring). Added relevant settings in ResourceDiscoveryProperties. Fixed a few naming errors.

* RD: Added shortcuts (top-right corner) to all detail pages

* RD: Minor change in index.html (grayed out settings image)

* RD: Improved AbstractMonitorService (reuse of single connection, better logs). Updated affected code.

* RD: Minor code (mostly logging) and GUI improvements

* RD: Added 'UnknownDeviceRegistrationService' class to monitor for unknown devices (based on IP address and reference in messages received from EMS), and registering them to RD. Added NODE_DETAILS in REQUEST_TYPE enum for messages sent to/received from EMS about acquiring detailed node info (including credentials). Added 'deviceInfoRequestsTopic' and 'deviceInfoReportsTopic' settings in ResourceDiscoveryProperties.

* RD: Added prompting admin to provide device credentials when un-archiving a previously archived request or device.

* RD: Moved REQUEST_TYPE enum to 'common' package and updated code

* RD: Changed authentication to use BCrypt-encrypted passwords

* RD: Moved message broker communication code to BrokerUtil class, and updated using classes accordingly. Implemented EncryptionUtil for encrypting and decrypting broker messages [TO BE TESTED]. Few minor code improvements.

* RD: Minor code tidy up

* RD: Added support for SSL connections to ActiveMQ broker in BrokerUtil. Added the needed settings in ResourceDiscoveryProperties and application.yml

* RD: Fixed issue where UnknownDeviceRegistrationService registers a device before RegistrationRequestProcessor does

* RD: Modified pom.xml to build an image named 'eu.nebulous.resource-discovery' and tagged with current project version

* RD: Added 'DeviceLocation' class and 'location' field in both 'Device' classes. Also updated all 4 details pages to include Location (name, lat, lon). Fixed the Restore button of the modal dialog in archived.html to display 'Restore Request' or 'Restore Device' depending on the restore type.

* RD: Added StatusController to report current application status (currently returns 'OK')

* RD: Fixed a few minor issues:
* Fixed 'spring.web.resources.static-locations'
* Changed Docker image name to 'resource-discovery'
* Set BPE_LANG value to C.UTF-8 in order to render banner correctly

* RD: Changes in pom.xml and application.yml:
* Changed groupId in pom.xml to 'eu.nebulous.resource-management', and artifactId to 'resource-discovery'
* Corrected service name and description
* Set 'imageName' property to derive from artifactId
* Fixed application.yml to use '@project.version@' placeholder for app version

* RD: Renamed 'management' module to 'resource-discovery'

* RD:
* Commented out Buildpacks related settings in pom.xml
* Added Dockerfile, run.sh (entrypoint script) and .dockerignore

* RD: Modified base images in Dockerfile

* RD: Modified Dockerfile in order to both compile the app and build the Docker image

* RD: Improved Dockerfile

* RD: Improved Dockerfile

* RD: Upgraded SB version to SB 3.2.1 and JRE to version 21. Updated dependency to their latest versions. Modified model classes to avoid Lombok SuperBuilder warnings.

* RD: Fixed Dockerfile

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* EMS: Added K8sNetdataCollector [WIP]

* RD: Added 'port' in forms and models

* RD: Added two TODOs

* RD: Deactivated UnknownDeviceRegistrationService

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Increased logging to debug setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Modified logging to debug the setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Correction of syntactic error I94a6fdb4612de192c24511445f1236cdce94b000

* Addition of needed configuration properties I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Updates on the topic and the payload format used to communicate with SAL for the registration of a device
I94a6fdb4612de192c24511445f1236cdce94b000

* Allow setting and using a custom broker port
I94a6fdb4612de192c24511445f1236cdce94b000

* Pass a default port to the configuration of the Resource discovery server
I94a6fdb4612de192c24511445f1236cdce94b000

* Log debugging information related to the port of the NebulOuS broker
I94a6fdb4612de192c24511445f1236cdce94b000

* Publishing of the appropriate message to the broker
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Removed truststore settings from application.yml. Upgraded to SB 3.2.4 and fixed pom.xml

* RD: Fixed banner.txt

* RD: Modified application.yml

* RD: Added temp. debug messages

* RD: Added temp. debug messages 2

* Revert "RD: Added temp. debug messages 2"

This reverts commit 738f6048a8b88b4cfc7410db2146c7d7855c03bd.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c207dd900689c94fe5b608a0a03db8fc80.

* RD: Modified SALRegistrationService to run SAL registration in dedicated worker thread, and interrupt registration if it takes too long. Added related settings and assigned defaults.

* RD: Added temp. log messages

* Revert "RD: Added temp. log messages"

This reverts commit 2dae6582de0359a4f33b0d8c066b1b55ecad2227.

* RD: Updated DeviceMetricsMonitorService to match metric events to device using first the IP address and the client Id (stored in Device.StatusUpdate)

* Improvements on edge device data propagation
I94a6fdb4612de192c24511445f1236cdce94b000

* Integration of changes performed in commit e3bd3852 but accidentally overriden
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Updated Dockerfile

* RD: Updated run.sh and added wait_for_mongodb.sh

* RD: Improved wait_for_mongodb.sh script

* Various Improvements
Addition of the port attribute in the registration of an edge device
Modification of the edge device registration to allow for more dynamic registration json field population
I94a6fdb4612de192c24511445f1236cdce94b000

* Attempt to fix a problem when publishing to the broker to register information to SAL or notify the SLO Violation detector
I94a6fdb4612de192c24511445f1236cdce94b000

* Miscellaneous improvements

Updated the registration of architecture/jar files for each edge device registered

Preliminary work to support 'Compromised state'

* RD: Added API Key authentication

* RD: Upgraded SB to 3.2.10, and Lombok, commons-lang3 dependencies to their latest versions. Improved Dockerfile.

* RD: Code improvements (esp. wrt @PreAuthorize annotations)

* RD: Made SALRegistrationService service conditionally enabled (by 'discovery.sal-registration.enabled' property). Its uses were updated accordingly.

* RD: Updated RegistrationRequestService (and its uses) to take authenticated user into consideration during checks of requests and devices sent from GUI. Also added checks for the device data provided.

* RD: Added 'Device.ref' field and added its initialization. Ref field will be populated with a unique device reference following the Nebulous naming convention (including app id).

* RD: Updated GUI pages to include the new 'ref' field. A few more improvements were introduced.

* Use device reference instead of name to register to SAL

* Improvements in device registration and component communication with the broker

* Small improvements in device registration

* Small improvement in getting device registration details

* Small improvement in getting device registration details

* RD: Fix in SALRegistrationService class

* RD: Fixed fontawesome cdn url

* Initial deregistration support

* RD: Made device on-boarding authorization configurable (MANUAL, ALWAYS_AUTHORIZE, and ALWAYS_REJECT)

* RD: Updated RegistrationRequestProcessor to include Device Ref in onboarding request to EMS

* Improvements in the handling of AMQP connections

* Addition of provider field, miscellaneous improvements

- Addition of provider field in device registration
- Small improvements the Synchronous Broker publisher

* Minor logging improvements

* Deregistration process improvement

* Stopping the device lost publisher

* Refactoring to use the original Connector class instead of ExtendedConnector

* Minor logging improvement

* Only try to stop the connector if it has been previously initialized

* Miscellaneous improvements

Implementation of edge device/byon hourly cost (price) field
Only try to stop the connector if it has been previously initialized

* Password improvements

Removal of plaintext passwords and replacement with environmental variable values

* Debugging message commit

* Work on Deregistration support

* Added more logging statements to debug device registration (work by ipatini)

---------

Co-authored-by: ipatini <[email protected]>
Co-authored-by: Andreas Tsagkaropoulos <[email protected]>

* Sal response parsing improvement (#34)

* RD: Added device-view.html for viewing and editing device details. Fixed and improved devices.html. Modified DeviceManagementController so that the '/monitor/device' endpoint returns the devices of the current user, and also plain users can retrieve info for the devices they own.

* RD: Moved 'metrics' section side-by-side to 'device info' section in device-view.html, for better viewing

* RD: changed mongo db name to 'resource_discovery' in application.yml

* RD: Minor GUI improvements

* RD: Added DeviceMonitorService to watch the status updates from EMS. Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.

* RD: Created AbstractMonitorService (to factor out common topic monitoring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.

* RD: Added banner

* RD: Added DeviceMetricsMonitorService and DeviceMetrics classes. Updated Device class to store device metrics received from EMS

* RD: Updated application.yml

* RD: Added device metrics display in device-view.html. Added (EMS) device status in devices.html

* RD: Updated device-view.html to display device metrics

* RD: Modified Device in monitoring subsystem to not have its credentials serialized (and returned to browser). Also updated the affected code

* RD: Added check for a request's device IP address being in use (in another request or a registered device)

* RD: various minor code improvements

* RD: Added better error reporting in request-edit.html

* RD: Various small GUI improvements and a fix

* RD: Fixed registration Device in order toString() not to print credentials. Fixed RegistrationRequest in order to have its 'messages' and 'history' fields copied by BeanUtils. Fixed 2 bugs in RegistrationRequestProcessor and added a few more logs.

* RD: Minor change in device-view.html to move 'count-' metrics to the end of the device metrics list

* RD: Changed monitoring Device to not serialize credentials

* RD: Code cleanup in RegistrationRequestProcessor

* RD: Improved GUI (added page shortcuts at top-right)

* RD: Implementing re-onboarding, off-boarding, and request-for-info (device status and metrics) [WIP]

* RD: Added DeviceLifeCycleRequestService and DeviceLifeCycleResponseService classes for handling reinstall and uninstall actions (via EMS broker). Moved LC request event sending from DeviceManagementService to DeviceLifeCycleRequestService. Updated ResourceDiscoveryProperties with settings for DeviceLifeCycleRequest/ResponseService's.

* RD: Added device archiving and unarchiving in GUI

* RD: Implemented DeviceProcessor to periodically archive off-boarded devices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties  and in GUI.

* RD: Changed devices.html to always display 'Archive' button to Admin users

* RD: Added archived-device-view.html, renamed archived-view.html to archived-request-view.html. Updated archived.html

* RD: Fixed DeviceManagementController to allow plain users (device owners) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.

* RD: Extended DeviceProcessor to check for suspect and failed devices. Added SUSPECT and FAILED statues in DeviceStatus (and in devices.html and archived.html for colouring). Added relevant settings in ResourceDiscoveryProperties. Fixed a few naming errors.

* RD: Added shortcuts (top-right corner) to all detail pages

* RD: Minor change in index.html (grayed out settings image)

* RD: Improved AbstractMonitorService (reuse of single connection, better logs). Updated affected code.

* RD: Minor code (mostly logging) and GUI improvements

* RD: Added 'UnknownDeviceRegistrationService' class to monitor for unknown devices (based on IP address and reference in messages received from EMS), and registering them to RD. Added NODE_DETAILS in REQUEST_TYPE enum for messages sent to/received from EMS about acquiring detailed node info (including credentials). Added 'deviceInfoRequestsTopic' and 'deviceInfoReportsTopic' settings in ResourceDiscoveryProperties.

* RD: Added prompting admin to provide device credentials when un-archiving a previously archived request or device.

* RD: Moved REQUEST_TYPE enum to 'common' package and updated code

* RD: Changed authentication to use BCrypt-encrypted passwords

* RD: Moved message broker communication code to BrokerUtil class, and updated using classes accordingly. Implemented EncryptionUtil for encrypting and decrypting broker messages [TO BE TESTED]. Few minor code improvements.

* RD: Minor code tidy up

* RD: Added support for SSL connections to ActiveMQ broker in BrokerUtil. Added the needed settings in ResourceDiscoveryProperties and application.yml

* RD: Fixed issue where UnknownDeviceRegistrationService registers a device before RegistrationRequestProcessor does

* RD: Modified pom.xml to build an image named 'eu.nebulous.resource-discovery' and tagged with current project version

* RD: Added 'DeviceLocation' class and 'location' field in both 'Device' classes. Also updated all 4 details pages to include Location (name, lat, lon). Fixed the Restore button of the modal dialog in archived.html to display 'Restore Request' or 'Restore Device' depending on the restore type.

* RD: Added StatusController to report current application status (currently returns 'OK')

* RD: Fixed a few minor issues:
* Fixed 'spring.web.resources.static-locations'
* Changed Docker image name to 'resource-discovery'
* Set BPE_LANG value to C.UTF-8 in order to render banner correctly

* RD: Changes in pom.xml and application.yml:
* Changed groupId in pom.xml to 'eu.nebulous.resource-management', and artifactId to 'resource-discovery'
* Corrected service name and description
* Set 'imageName' property to derive from artifactId
* Fixed application.yml to use '@project.version@' placeholder for app version

* RD: Renamed 'management' module to 'resource-discovery'

* RD:
* Commented out Buildpacks related settings in pom.xml
* Added Dockerfile, run.sh (entrypoint script) and .dockerignore

* RD: Modified base images in Dockerfile

* RD: Modified Dockerfile in order to both compile the app and build the Docker image

* RD: Improved Dockerfile

* RD: Improved Dockerfile

* RD: Upgraded SB version to SB 3.2.1 and JRE to version 21. Updated dependency to their latest versions. Modified model classes to avoid Lombok SuperBuilder warnings.

* RD: Fixed Dockerfile

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* EMS: Added K8sNetdataCollector [WIP]

* RD: Added 'port' in forms and models

* RD: Added two TODOs

* RD: Deactivated UnknownDeviceRegistrationService

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Increased logging to debug setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Modified logging to debug the setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Correction of syntactic error I94a6fdb4612de192c24511445f1236cdce94b000

* Addition of needed configuration properties I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Updates on the topic and the payload format used to communicate with SAL for the registration of a device
I94a6fdb4612de192c24511445f1236cdce94b000

* Allow setting and using a custom broker port
I94a6fdb4612de192c24511445f1236cdce94b000

* Pass a default port to the configuration of the Resource discovery server
I94a6fdb4612de192c24511445f1236cdce94b000

* Log debugging information related to the port of the NebulOuS broker
I94a6fdb4612de192c24511445f1236cdce94b000

* Publishing of the appropriate message to the broker
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Removed truststore settings from application.yml. Upgraded to SB 3.2.4 and fixed pom.xml

* RD: Fixed banner.txt

* RD: Modified application.yml

* RD: Added temp. debug messages

* RD: Added temp. debug messages 2

* Revert "RD: Added temp. debug messages 2"

This reverts commit 738f6048a8b88b4cfc7410db2146c7d7855c03bd.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c207dd900689c94fe5b608a0a03db8fc80.

* RD: Modified SALRegistrationService to run SAL registration in dedicated worker thread, and interrupt registration if it takes too long. Added related settings and assigned defaults.

* RD: Added temp. log messages

* Revert "RD: Added temp. log messages"

This reverts commit 2dae6582de0359a4f33b0d8c066b1b55ecad2227.

* RD: Updated DeviceMetricsMonitorService to match metric events to device using first the IP address and the client Id (stored in Device.StatusUpdate)

* Improvements on edge device data propagation
I94a6fdb4612de192c24511445f1236cdce94b000

* Integration of changes performed in commit e3bd3852 but accidentally overriden
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Updated Dockerfile

* RD: Updated run.sh and added wait_for_mongodb.sh

* RD: Improved wait_for_mongodb.sh script

* Various Improvements
Addition of the port attribute in the registration of an edge device
Modification of the edge device registration to allow for more dynamic registration json field population
I94a6fdb4612de192c24511445f1236cdce94b000

* Attempt to fix a problem when publishing to the broker to register information to SAL or notify the SLO Violation detector
I94a6fdb4612de192c24511445f1236cdce94b000

* Miscellaneous improvements

Updated the registration of architecture/jar files for each edge device registered

Preliminary work to support 'Compromised state'

* RD: Added API Key authentication

* RD: Upgraded SB to 3.2.10, and Lombok, commons-lang3 dependencies to their latest versions. Improved Dockerfile.

* RD: Code improvements (esp. wrt @PreAuthorize annotations)

* RD: Made SALRegistrationService service conditionally enabled (by 'discovery.sal-registration.enabled' property). Its uses were updated accordingly.

* RD: Updated RegistrationRequestService (and its uses) to take authenticated user into consideration during checks of requests and devices sent from GUI. Also added checks for the device data provided.

* RD: Added 'Device.ref' field and added its initialization. Ref field will be populated with a unique device reference following the Nebulous naming convention (including app id).

* RD: Updated GUI pages to include the new 'ref' field. A few more improvements were introduced.

* Use device reference instead of name to register to SAL

* Improvements in device registration and component communication with the broker

* Small improvements in device registration

* Small improvement in getting device registration details

* Small improvement in getting device registration details

* RD: Fix in SALRegistrationService class

* RD: Fixed fontawesome cdn url

* Initial deregistration support

* RD: Made device on-boarding authorization configurable (MANUAL, ALWAYS_AUTHORIZE, and ALWAYS_REJECT)

* RD: Updated RegistrationRequestProcessor to include Device Ref in onboarding request to EMS

* Improvements in the handling of AMQP connections

* Addition of provider field, miscellaneous improvements

- Addition of provider field in device registration
- Small improvements the Synchronous Broker publisher

* Minor logging improvements

* Deregistration process improvement

* Stopping the device lost publisher

* Refactoring to use the original Connector class instead of ExtendedConnector

* Minor logging improvement

* Only try to stop the connector if it has been previously initialized

* Miscellaneous improvements

Implementation of edge device/byon hourly cost (price) field
Only try to stop the connector if it has been previously initialized

* Password improvements

Removal of plaintext passwords and replacement with environmental variable values

* Debugging message commit

* Work on Deregistration support

* Added more logging statements to debug device registration (work by ipatini)

* Fix parsing the json response of SAL

---------

Co-authored-by: ipatini <[email protected]>
Co-authored-by: Andreas Tsagkaropoulos <[email protected]>

* Avoid publish connector stop (#36)

* RD: Added device-view.html for viewing and editing device details. Fixed and improved devices.html. Modified DeviceManagementController so that the '/monitor/device' endpoint returns the devices of the current user, and also plain users can retrieve info for the devices they own.

* RD: Moved 'metrics' section side-by-side to 'device info' section in device-view.html, for better viewing

* RD: changed mongo db name to 'resource_discovery' in application.yml

* RD: Minor GUI improvements

* RD: Added DeviceMonitorService to watch the status updates from EMS. Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.

* RD: Created AbstractMonitorService (to factor out common topic monitoring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.

* RD: Added banner

* RD: Added DeviceMetricsMonitorService and DeviceMetrics classes. Updated Device class to store device metrics received from EMS

* RD: Updated application.yml

* RD: Added device metrics display in device-view.html. Added (EMS) device status in devices.html

* RD: Updated device-view.html to display device metrics

* RD: Modified Device in monitoring subsystem to not have its credentials serialized (and returned to browser). Also updated the affected code

* RD: Added check for a request's device IP address being in use (in another request or a registered device)

* RD: various minor code improvements

* RD: Added better error reporting in request-edit.html

* RD: Various small GUI improvements and a fix

* RD: Fixed registration Device in order toString() not to print credentials. Fixed RegistrationRequest in order to have its 'messages' and 'history' fields copied by BeanUtils. Fixed 2 bugs in RegistrationRequestProcessor and added a few more logs.

* RD: Minor change in device-view.html to move 'count-' metrics to the end of the device metrics list

* RD: Changed monitoring Device to not serialize credentials

* RD: Code cleanup in RegistrationRequestProcessor

* RD: Improved GUI (added page shortcuts at top-right)

* RD: Implementing re-onboarding, off-boarding, and request-for-info (device status and metrics) [WIP]

* RD: Added DeviceLifeCycleRequestService and DeviceLifeCycleResponseService classes for handling reinstall and uninstall actions (via EMS broker). Moved LC request event sending from DeviceManagementService to DeviceLifeCycleRequestService. Updated ResourceDiscoveryProperties with settings for DeviceLifeCycleRequest/ResponseService's.

* RD: Added device archiving and unarchiving in GUI

* RD: Implemented DeviceProcessor to periodically archive off-boarded devices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties  and in GUI.

* RD: Changed devices.html to always display 'Archive' button to Admin users

* RD: Added archived-device-view.html, renamed archived-view.html to archived-request-view.html. Updated archived.html

* RD: Fixed DeviceManagementController to allow plain users (device owners) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.

* RD: Extended DeviceProcessor to check for suspect and failed devices. Added SUSPECT and FAILED statues in DeviceStatus (and in devices.html and archived.html for colouring). Added relevant settings in ResourceDiscoveryProperties. Fixed a few naming errors.

* RD: Added shortcuts (top-right corner) to all detail pages

* RD: Minor change in index.html (grayed out settings image)

* RD: Improved AbstractMonitorService (reuse of single connection, better logs). Updated affected code.

* RD: Minor code (mostly logging) and GUI improvements

* RD: Added 'UnknownDeviceRegistrationService' class to monitor for unknown devices (based on IP address and reference in messages received from EMS), and registering them to RD. Added NODE_DETAILS in REQUEST_TYPE enum for messages sent to/received from EMS about acquiring detailed node info (including credentials). Added 'deviceInfoRequestsTopic' and 'deviceInfoReportsTopic' settings in ResourceDiscoveryProperties.

* RD: Added prompting admin to provide device credentials when un-archiving a previously archived request or device.

* RD: Moved REQUEST_TYPE enum to 'common' package and updated code

* RD: Changed authentication to use BCrypt-encrypted passwords

* RD: Moved message broker communication code to BrokerUtil class, and updated using classes accordingly. Implemented EncryptionUtil for encrypting and decrypting broker messages [TO BE TESTED]. Few minor code improvements.

* RD: Minor code tidy up

* RD: Added support for SSL connections to ActiveMQ broker in BrokerUtil. Added the needed settings in ResourceDiscoveryProperties and application.yml

* RD: Fixed issue where UnknownDeviceRegistrationService registers a device before RegistrationRequestProcessor does

* RD: Modified pom.xml to build an image named 'eu.nebulous.resource-discovery' and tagged with current project version

* RD: Added 'DeviceLocation' class and 'location' field in both 'Device' classes. Also updated all 4 details pages to include Location (name, lat, lon). Fixed the Restore button of the modal dialog in archived.html to display 'Restore Request' or 'Restore Device' depending on the restore type.

* RD: Added StatusController to report current application status (currently returns 'OK')

* RD: Fixed a few minor issues:
* Fixed 'spring.web.resources.static-locations'
* Changed Docker image name to 'resource-discovery'
* Set BPE_LANG value to C.UTF-8 in order to render banner correctly

* RD: Changes in pom.xml and application.yml:
* Changed groupId in pom.xml to 'eu.nebulous.resource-management', and artifactId to 'resource-discovery'
* Corrected service name and description
* Set 'imageName' property to derive from artifactId
* Fixed application.yml to use '@project.version@' placeholder for app version

* RD: Renamed 'management' module to 'resource-discovery'

* RD:
* Commented out Buildpacks related settings in pom.xml
* Added Dockerfile, run.sh (entrypoint script) and .dockerignore

* RD: Modified base images in Dockerfile

* RD: Modified Dockerfile in order to both compile the app and build the Docker image

* RD: Improved Dockerfile

* RD: Improved Dockerfile

* RD: Upgraded SB version to SB 3.2.1 and JRE to version 21. Updated dependency to their latest versions. Modified model classes to avoid Lombok SuperBuilder warnings.

* RD: Fixed Dockerfile

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* EMS: Added K8sNetdataCollector [WIP]

* RD: Added 'port' in forms and models

* RD: Added two TODOs

* RD: Deactivated UnknownDeviceRegistrationService

* Initial changes to support registration and deregistration of edge devices to SAL

Introduction of Broker publisher and subscriber utilities
Introduction of new device registration service

I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Improvement in the initialization of SALRegistrationService
I94a6fdb4612de192c24511445f1236cdce94b000

* Increased logging to debug setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Modified logging to debug the setting of processorProperties I94a6fdb4612de192c24511445f1236cdce94b000

* Correction of syntactic error I94a6fdb4612de192c24511445f1236cdce94b000

* Addition of needed configuration properties I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Testing of alternative initialization of SAL registration service I94a6fdb4612de192c24511445f1236cdce94b000

* Updates on the topic and the payload format used to communicate with SAL for the registration of a device
I94a6fdb4612de192c24511445f1236cdce94b000

* Allow setting and using a custom broker port
I94a6fdb4612de192c24511445f1236cdce94b000

* Pass a default port to the configuration of the Resource discovery server
I94a6fdb4612de192c24511445f1236cdce94b000

* Log debugging information related to the port of the NebulOuS broker
I94a6fdb4612de192c24511445f1236cdce94b000

* Publishing of the appropriate message to the broker
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Removed truststore settings from application.yml. Upgraded to SB 3.2.4 and fixed pom.xml

* RD: Fixed banner.txt

* RD: Modified application.yml

* RD: Added temp. debug messages

* RD: Added temp. debug messages 2

* Revert "RD: Added temp. debug messages 2"

This reverts commit 738f6048a8b88b4cfc7410db2146c7d7855c03bd.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c207dd900689c94fe5b608a0a03db8fc80.

* RD: Modified SALRegistrationService to run SAL registration in dedicated worker thread, and interrupt registration if it takes too long. Added related settings and assigned defaults.

* RD: Added temp. log messages

* Revert "RD: Added temp. log messages"

This reverts commit 2dae6582de0359a4f33b0d8c066b1b55ecad2227.

* RD: Updated DeviceMetricsMonitorService to match metric events to device using first the IP address and the client Id (stored in Device.StatusUpdate)

* Improvements on edge device data propagation
I94a6fdb4612de192c24511445f1236cdce94b000

* Integration of changes performed in commit e3bd3852 but accidentally overriden
I94a6fdb4612de192c24511445f1236cdce94b000

* RD: Updated Dockerfile

* RD: Updated run.sh and added wait_for_mongodb.sh

* RD: Improved wait_for_mongodb.sh script

* Various Improvements
Addition of the port attribute in the registration of an edge device
Modification of the edge device registration to allow for more dynamic registration json field population
I94a6fdb4612de192c24511445f1236cdce94b000

* Attempt to fix a problem when publishing to the broker to register information to SAL or notify the SLO Violation detector
I94a6fdb4612de192c24511445f1236cdce94b000

* Miscellaneous improvements

Updated the registration of architecture/jar files for each edge device registered

Preliminary work to support 'Compromised state'

* RD: Added API Key authentication

* RD: Upgraded SB to 3.2.10, and Lombok, commons-lang3 dependencies to their latest versions. Improved Dockerfile.

* RD: Code improvements (esp. wrt @PreAuthorize annotations)

* RD: Made SALRegistrationService service conditionally enabled (by 'discovery.sal-registration.enabled' property). Its uses were updated accordingly.

* RD: Updated RegistrationRequestService (and its uses) to take authenticated user into consideration during checks of requests and devices sent from GUI. Also added checks for the device data provided.

* RD: Added 'Device.ref' field and added its initialization. Ref field will be populated with a unique device reference following the Nebulous naming convention (including app id).

* RD: Updated GUI pages to include the new 'ref' field. A few more improvements were introduced.

* Use device reference instead of name to register to SAL

* Improvements in device registration and component communication with the broker

* Small improvements in devic…
  • Loading branch information
5 people authored Dec 5, 2024
1 parent 8bdfd81 commit 68b77f0
Showing 1 changed file with 8 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ private static void register_devices(String request_body_file, String sessionID,

((JSONObject) ((JSONArray) json.get("ipAddresses")).get(0)).put("value", internal_ip_address + counter);
((JSONObject) json.get("nodeProperties")).put("disk", new Random().nextInt(1, 101));
((JSONObject) json.get("nodeProperties")).put("memory", new Random().nextInt(1, 17));
((JSONObject) json.get("nodeProperties")).put("ram", new Random().nextInt(1, 17));
((JSONObject) json.get("nodeProperties")).put("providerId", String.valueOf(new Random().nextInt(1, 21)));
((JSONObject) json.get("nodeProperties")).put("numberOfCores", new Random().nextInt(1, 17));
((JSONObject) json.get("nodeProperties")).put("cores", new Random().nextInt(1, 17));

String[] country_choices = {"Greece", "Poland", "France"};
String[] city_choices = {"Athens", "Warsaw", "Nice"};
Expand All @@ -119,9 +119,9 @@ private static void register_devices(String request_body_file, String sessionID,
((JSONObject) ((JSONArray) json.get("ipAddresses")).get(0)).put("value", internal_ip_address);
((JSONObject) ((JSONArray) json.get("ipAddresses")).get(1)).put("value", external_ip_address);
((JSONObject) json.get("nodeProperties")).put("disk", disk_gb);
((JSONObject) json.get("nodeProperties")).put("memory", ram_gb);
((JSONObject) json.get("nodeProperties")).put("ram", ram_gb);
((JSONObject) json.get("nodeProperties")).put("providerId", provider_id);
((JSONObject) json.get("nodeProperties")).put("numberOfCores", cpu_cores);
((JSONObject) json.get("nodeProperties")).put("cores", cpu_cores);
((JSONObject) ((JSONObject) json.get("nodeProperties")).get("geoLocation")).put("country", country_name);
((JSONObject) ((JSONObject) json.get("nodeProperties")).get("geoLocation")).put("city", city_name);
((JSONObject) ((JSONObject) json.get("nodeProperties")).get("geoLocation")).put("latitude", new Random().nextFloat(-90, 90));
Expand Down Expand Up @@ -182,8 +182,8 @@ public static String get_device_registration_json(String internal_ip_address, St
geoLocation.put("longitude", device_latitude);

nodeProperties.put("providerId", provider_id);
nodeProperties.put("numberOfCores", cpu_cores);
nodeProperties.put("memory", ram_gb);
nodeProperties.put("cores", cpu_cores);
nodeProperties.put("ram", ram_gb);
nodeProperties.put("disk", disk_gb);
nodeProperties.put("price", price);
nodeProperties.put("operatingSystem", operatingSystem);
Expand All @@ -209,9 +209,9 @@ public static String get_device_registration_json(String internal_ip_address, St
//((JSONObject) ((JSONArray) root_json_object.get("ipAddresses")).get(0)).put("value", internal_ip_address);
//((JSONObject) ((JSONArray) root_json_object.get("ipAddresses")).get(1)).put("value", external_ip_address);
//((JSONObject) root_json_object.get("nodeProperties")).put("disk", disk_gb);
//((JSONObject) root_json_object.get("nodeProperties")).put("memory", ram_gb);
//((JSONObject) root_json_object.get("nodeProperties")).put("ram", ram_gb);
//((JSONObject) root_json_object.get("nodeProperties")).put("providerId", provider_id);
//((JSONObject) root_json_object.get("nodeProperties")).put("numberOfCores", cpu_cores);
//((JSONObject) root_json_object.get("nodeProperties")).put("cores", cpu_cores);
//((JSONObject) ((JSONObject) root_json_object.get("nodeProperties")).get("geoLocation")).put("country", country_name);
//((JSONObject) ((JSONObject) root_json_object.get("nodeProperties")).get("geoLocation")).put("city", city_name);
//((JSONObject) ((JSONObject) root_json_object.get("nodeProperties")).get("geoLocation")).put("latitude", new Random().nextFloat(-90, 90));
Expand Down

0 comments on commit 68b77f0

Please sign in to comment.