Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Candidate r1 improvements #44

Merged
merged 177 commits into from
Nov 22, 2024
Merged

Candidate r1 improvements #44

merged 177 commits into from
Nov 22, 2024

Conversation

atsag
Copy link
Contributor

@atsag atsag commented Nov 22, 2024

No description provided.

…xed 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.
…Added DeviceStatusUpdate class used in DeviceMonitorService, and added field statusUpdate in Device class. Restructured and improved ResourceDiscoveryProperties.
…ring code). Renamed DeviceMonitorService to DeviceStatusMonitorService and made it subclass of AbstractMonitorService. Changed DeviceStatusUpdate class to ignore unknown properties during deserialization.
…ted Device class to store device metrics received from EMS
…ls serialized (and returned to browser). Also updated the affected code
…tials. 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.
…rvice 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.
…evices. Added configurable immediate archiving of Success registration requests, and off-boarded devices, and added relevant settings in ResourceDiscoveryProperties and in GUI.
…chived-request-view.html. Updated archived.html
…ers) to access their device info (and archived devices), and control re-installing and off-boarding. Added device colouring based on their status.
… 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.
atsag and others added 28 commits November 20, 2024 13:47
* 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 738f604.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c.

* 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 2dae658.

* 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 e3bd385 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 <ipatini@mail.ntua.gr>
Co-authored-by: Andreas Tsagkaropoulos <atsagkaropoulos@mail.ntua.gr>
* 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 738f604.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c.

* 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 2dae658.

* 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 e3bd385 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 <ipatini@mail.ntua.gr>
Co-authored-by: Andreas Tsagkaropoulos <atsagkaropoulos@mail.ntua.gr>
# Conflicts:
#	resource-discovery/src/main/java/eu/nebulous/resource/discovery/registration/service/SALRegistrationService.java
* 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 738f604.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c.

* 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 2dae658.

* 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 e3bd385 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 <ipatini@mail.ntua.gr>
Co-authored-by: Andreas Tsagkaropoulos <atsagkaropoulos@mail.ntua.gr>
* 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 738f604.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c.

* 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 2dae658.

* 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 e3bd385 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

---------

Co-authored-by: ipatini <ipatini@mail.ntua.gr>
Co-authored-by: Andreas Tsagkaropoulos <atsagkaropoulos@mail.ntua.gr>
 When a device has failed and it has been processed (i.e a message has been sent to the device lost topic) then it should be marked as offboarded to be archived

 Do not create a new connector unless this is required

 Do not use a redundant environmental variable
# Conflicts:
#	resource-discovery/src/main/java/eu/nebulous/resource/discovery/monitor/DeviceProcessor.java
* 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 738f604.

* Revert "RD: Added temp. debug messages"

This reverts commit 31b103c.

* 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 2dae658.

* 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 e3bd385 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

* Avoid starting new connectors, mark device as offboarded

 When a device has failed and it has been processed (i.e a message has been sent to the device lost topic) then it should be marked as offboarded to be archived

 Do not create a new connector unless this is required

 Do not use a redundant environmental variable

---------

Co-authored-by: ipatini <ipatini@mail.ntua.gr>
Co-authored-by: Andreas Tsagkaropoulos <atsagkaropoulos@mail.ntua.gr>
# Conflicts:
#	resource-discovery/src/main/java/eu/nebulous/resource/discovery/common/BrokerUtil.java
@atsag atsag merged commit 6fa5c88 into r1 Nov 22, 2024
1 check passed
@atsag atsag deleted the candidate_r1_improvements branch November 22, 2024 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants