Files
cocos/agent
Sammy Kerata Oina 997fb3bf48 COCOS-83 - Add hash verification for datasets and algorithms (#84)
* Add hash verification for datasets and algorithms

Enhanced data integrity checking by incorporating hash fields in Dataset and Algorithm structures, and modified the corresponding service logic to validate these hashes during processing. The update includes SHA-3 for hash computation, replacing the former SHA-256 usage, and ensures the provided data matches the expected hash from the manifest to prevent processing malformed or corrupted data.

- Introduce `Hash` field to both Dataset and Algorithm structs to store the expected hash value.
- Implement SHA-3 hashing within service methods that process the data, ensuring consistency with newly added `Hash` fields.
- Add error handling for hash mismatches, preventing further processing and alerting to potential data integrity issues.
- Update Protocol Buffers serialization to accommodate the new hash fields for gRPC communication.
- Modify manager service's Run method to pass the hash information when creating agent configurations.

Go module dependencies were updated to include the new SHA-3 package and upgrade Go version to 1.21.6 for improved stability and compatibility.

Signed-off-by: SammyOina <sammyoina@gmail.com>

* Remove identifiers from protobuf and related code

The protobuf definitions and related service handling code have been revised to drop specific identifier fields (`AlgorithmID` and `DatasetID`) to simplify API responses and internal function signatures. These removals streamline the overall data flow between components, reduce unnecessary data transmission, and lead to an aligned server-client expectation where identifiers are no longer a part of the response payload. Consequently, these changes simplify the logic within various functions and client commands, reinforcing encapsulation by ensuring that internal identifiers do not need to be managed or exposed unnecessarily.

Signed-off-by: SammyOina <sammyoina@gmail.com>

* fix lint

Signed-off-by: SammyOina <sammyoina@gmail.com>

---------

Signed-off-by: SammyOina <sammyoina@gmail.com>
2024-02-19 15:31:35 +01:00
..
2023-11-24 18:59:42 +01:00

Agent

Agent service provides a barebones HTTP and gRPC API and Service interface implementation for the development of the agent service.

Configuration

The service is configured using the environment variables from the following table. Note that any unset variables will be replaced with their default values.

Variable Description Default
AGENT_LOG_LEVEL Log level for agent service (debug, info, warn, error) info
AGENT_GRPC_HOST Agent service gRPC host ""
AGENT_GRPC_PORT Agent service gRPC port 7002
AGENT_GRPC_SERVER_CERT Path to gRPC server certificate in pem format ""
AGENT_GRPC_SERVER_KEY Path to gRPC server key in pem format ""
AGENT_GRPC_SERVER_CA_CERTS Path to gRPC server CA certificate ""
AGENT_GRPC_CLIENT_CA_CERTS Path to gRPC client CA certificate ""
COCOS_NOTIFICATION_SERVER_URL Server to receive notification events from agent. http:/localhost:9000

Deployment

To start the service outside of the container, execute the following shell script:

# download the latest version of the service
go get github.com/ultravioletrs/cocos

cd $GOPATH/src/github.com/ultravioletrs/cocos

# compile the agent
make agent

# set the environment variables and run the service
./build/cocos-agent

Usage

For more information about service capabilities and its usage, please check out the README documentation.