mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-06-23 04:10:25 +00:00
5adf0349a3
* Fix bug in agent service and state The commit fixes a bug in the agent service and state files. Previously, the condition to check the state in the agent service was incorrect. It was checking the state directly instead of using the GetState() method. This has been fixed by using the GetState() method to check the state. Additionally, a new GetState() method has been added to the StateMachine struct in the state file. This method retrieves the current state by acquiring a lock and returning the state value. The changes have been tested and verified to resolve the bug and improve the accuracy of state checking in the agent service. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix bug in agent state machine The bug in the agent state machine caused an error when attempting an invalid transition. This commit fixes the bug by properly locking and unlocking the state machine before and after transitioning to the next state. Additionally, the logger now correctly logs the current and next state during a valid transition. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix race condition in state machine The commit fixes a race condition in the state machine implementation in the `Start` method. The race condition occurs when multiple goroutines try to access and modify the state concurrently. To fix this, a mutex lock and unlock are added around the critical sections of code to ensure exclusive access to the state variable. This prevents race conditions and ensures the state transitions are executed correctly. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix race condition in StateMachine.Start() The StateMachine.Start() method was experiencing a race condition when multiple events were being processed concurrently. This was caused by not properly locking and unlocking the state machine before and after updating the state. This commit fixes the issue by adding proper locking and unlocking around the state update operation. Additionally, the logging statement has been updated to include the previous and next states for better debugging. Signed-off-by: SammyOina <sammyoina@gmail.com> * add magistrala dep Signed-off-by: SammyOina <sammyoina@gmail.com> * remove mainflux Signed-off-by: SammyOina <sammyoina@gmail.com> * Add Docker environment variables for Nats, RabbitMQ, Message Broker, and Jaeger. The commit message should be: "Add Docker environment variables for Nats, RabbitMQ, Message Broker, and Jaeger" Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix Makefile to properly set DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE The Makefile has been updated to fix an issue with setting the DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE variables. The USER_REPO variable is now used to generate the DOCKER_PROJECT name following the Docker Compose guidelines. Additionally, the COCOS_MESSAGE_BROKER_TYPE variable is now properly set to "nats" if it is empty. This ensures that the correct values are used when compiling and installing the service. Summary: Fix Makefile to properly set DOCKER_PROJECT and COCOS_MESSAGE_BROKER_TYPE Details: - Update USER_REPO variable to generate DOCKER_PROJECT name - Set COCOS_MESSAGE_BROKER_TYPE to "nats" if empty Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix notification topic in agent service and update NATS ports in Docker environment variables The agent service's notification topic was incorrectly set to "channels.manager" instead of "agent". This commit fixes the issue by updating the notification topic. Additionally, the NATS ports in the Docker environment variables were incorrect. The COCOS_NATS_PORT and COCOS_NATS_HTTP_PORT have been updated to the correct values. These changes ensure that the agent service uses the correct notification topic and the NATS ports are properly configured. Signed-off-by: SammyOina <sammyoina@gmail.com> * Add Dockerfiles for production and development environments This commit adds two new Dockerfiles, one for the production environment and one for the development environment. The production Dockerfile sets up the necessary dependencies and builds the application, while the development Dockerfile simply copies the built application. Both Dockerfiles include the necessary SSL certificates for the application to work properly. Signed-off-by: SammyOina <sammyoina@gmail.com> * Refactor Makefile and add new targets for building Docker images The Makefile has been refactored to include new targets for building Docker images. The `make_docker` and `make_docker_dev` functions have been defined to handle the Docker build process. The `dockers` and `dockers_dev` targets have been added to build the Docker images for all services and development environments respectively. This commit introduces changes to the Makefile to improve the build process and provide support for Docker images. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix makefile to generate Docker images for services - Added DOCKERS and DOCKERS_DEV variables to generate Docker images for services - Updated the dockers target to include DOCKERS - Updated the dockers_dev target to include DOCKERS_DEV - Updated the $(DOCKERS) and $(DOCKERS_DEV) targets to call the respective make_docker and make_docker_dev functions Signed-off-by: SammyOina <sammyoina@gmail.com> * Refactor Makefile and Dockerfile The Makefile has been refactored to remove unnecessary sed commands and improve code readability. The changes include: - Removed sed commands related to changing the broker in docker-compose.yml for nats and rabbitmq profiles. - Removed the eer target from the Makefile. The Dockerfile has been modified to include the WORKDIR directive. These changes improve the maintainability and readability of the codebase. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix NATS URL in .env file and add Manager configuration in docker-compose.yml The NATS URL in the .env file was updated to use the correct hostname for the broker. Additionally, the Manager configuration was added to the docker-compose.yml file. This commit fixes the NATS URL in the .env file and adds the necessary Manager configuration to the docker-compose.yml file. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix incorrect host and port values in Makefile and .env The commit updates the host and port values in the Makefile and .env files to fix incorrect values. The host and port values are updated to "cocos-manager" and "7003" respectively. This ensures that the correct host and port are used for the Manager HTTP and gRPC services. This commit resolves the issue with the incorrect host and port values and ensures that the Manager services are configured correctly. Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix Dockerfile and docker-compose.yml configurations The Dockerfile and docker-compose.yml configurations have been fixed to address the following issues: - Removed unnecessary COPY commands in the Dockerfile. - Removed the "privileged" flag in the docker-compose.yml file. These changes ensure that the Docker image is built correctly and the container is launched with the appropriate configurations. Signed-off-by: SammyOina <sammyoina@gmail.com> * remove manual assignment Signed-off-by: SammyOina <sammyoina@gmail.com> * update protoc CI Signed-off-by: SammyOina <sammyoina@gmail.com> * add paths Signed-off-by: SammyOina <sammyoina@gmail.com> * remove profiles Signed-off-by: SammyOina <sammyoina@gmail.com> * restore default config Signed-off-by: SammyOina <sammyoina@gmail.com> * Fix Docker project name in Makefile Signed-off-by: SammyOina <sammyoina@gmail.com> --------- Signed-off-by: SammyOina <sammyoina@gmail.com>
94 lines
2.7 KiB
Makefile
94 lines
2.7 KiB
Makefile
BUILD_DIR = build
|
|
SERVICES = manager agent cli
|
|
CGO_ENABLED ?= 0
|
|
GOARCH ?= amd64
|
|
VERSION ?= $(shell git describe --abbrev=0 --tags --always)
|
|
COMMIT ?= $(shell git rev-parse HEAD)
|
|
TIME ?= $(shell date +%F_%T)
|
|
CLI_SOURCE = ./cmd/cli/main.go
|
|
CLI_BIN = ${BUILD_DIR}/cocos-cli
|
|
DOCKERS = $(addprefix docker_,$(SERVICES))
|
|
DOCKERS_DEV = $(addprefix docker_dev_,$(SERVICES))
|
|
|
|
USER_REPO ?= $(shell git remote get-url origin | sed -e 's/.*\/\([^/]*\)\/\([^/]*\).*/\1_\2/' )
|
|
empty:=
|
|
space:= $(empty) $(empty)
|
|
MESSAGE_BROKER_TYPE ?= $(if $(COCOS_MESSAGE_BROKER_TYPE),$(COCOS_MESSAGE_BROKER_TYPE),nats)
|
|
|
|
define compile_service
|
|
CGO_ENABLED=$(CGO_ENABLED) GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) \
|
|
go build -tags $(MESSAGE_BROKER_TYPE) -ldflags "-s -w \
|
|
-X 'github.com/absmach/magistrala.BuildTime=$(TIME)' \
|
|
-X 'github.com/absmach/magistrala.Version=$(VERSION)' \
|
|
-X 'github.com/absmach/magistrala.Commit=$(COMMIT)'" \
|
|
-o ${BUILD_DIR}/cocos-$(1) cmd/$(1)/main.go
|
|
endef
|
|
|
|
define make_docker
|
|
$(eval svc=$(subst docker_,,$(1)))
|
|
|
|
docker build \
|
|
--no-cache \
|
|
--build-arg SVC=$(svc) \
|
|
--build-arg GOARCH=$(GOARCH) \
|
|
--build-arg GOARM=$(GOARM) \
|
|
--build-arg VERSION=$(VERSION) \
|
|
--build-arg COMMIT=$(COMMIT) \
|
|
--build-arg TIME=$(TIME) \
|
|
--tag=cocos-ai/$(svc) \
|
|
-f docker/Dockerfile .
|
|
endef
|
|
|
|
define make_docker_dev
|
|
$(eval svc=$(subst docker_dev_,,$(1)))
|
|
|
|
docker build \
|
|
--no-cache \
|
|
--build-arg SVC=$(svc) \
|
|
--tag=cocos-ai/$(svc) \
|
|
-f docker/Dockerfile.dev ./build
|
|
endef
|
|
|
|
.PHONY: all $(SERVICES) dockers dockers_dev
|
|
|
|
all: $(SERVICES)
|
|
|
|
$(DOCKERS):
|
|
$(call make_docker,$(@),$(GOARCH))
|
|
|
|
$(DOCKERS_DEV):
|
|
$(call make_docker_dev,$(@))
|
|
|
|
dockers: $(DOCKERS)
|
|
dockers_dev: $(DOCKERS_DEV)
|
|
|
|
$(SERVICES):
|
|
$(call compile_service,$(@))
|
|
|
|
|
|
install-cli: cli
|
|
cp ${CLI_BIN} ~/.local/bin/cocos-cli
|
|
|
|
protoc:
|
|
protoc -I. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative agent/agent.proto
|
|
protoc -I. --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative manager/manager.proto
|
|
|
|
define edit_docker_config
|
|
sed -i "s/COCOS_MESSAGE_BROKER_TYPE=.*/COCOS_MESSAGE_BROKER_TYPE=$(1)/" docker/.env
|
|
sed -i "s,file: .*.yml,file: $(1).yml," docker/brokers/docker-compose.yml
|
|
sed -i "s,COCOS_MESSAGE_BROKER_URL=.*,COCOS_MESSAGE_BROKER_URL=$$\{COCOS_$(shell echo ${MESSAGE_BROKER_TYPE} | tr 'a-z' 'A-Z')_URL\}," docker/.env
|
|
endef
|
|
|
|
change_config:
|
|
ifeq ($(MESSAGE_BROKER_TYPE),nats)
|
|
sed -i "s,COCOS_NATS_URL=.*,COCOS_NATS_URL=nats://broker:$$\{COCOS_NATS_PORT}," docker/.env
|
|
$(call edit_docker_config,nats)
|
|
else ifeq ($(MESSAGE_BROKER_TYPE),rabbitmq)
|
|
$(call edit_docker_config,rabbitmq)
|
|
else
|
|
$(error Invalid COCOS_MESSAGE_BROKER_TYPE $(MESSAGE_BROKER_TYPE))
|
|
endif
|
|
|
|
run: change_config
|
|
docker compose -f docker/docker-compose.yml -p cocos up
|