VERSION := 0.1.1

.PHONY: build-image
build-image:
	docker build -t gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:latest .

.PHONY: run-docker
run-docker:
	docker run -it -p 8000:8000 gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:latest

.PHONY: push-image
push-image:
	docker push gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:latest

.PHONY: run
run:
	nameko run service:HTTPService --config config.yaml

.PHONY: install-prometheus-k8s
install-prometheus-k8s:
	@echo "Installing Prometheus on k8s"
	@kubectl create namespace monitoring
	@helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
	@helm repo update
	@helm install kube-state-metrics prometheus-community/kube-state-metrics -n monitoring
	@helm install prometheus-node-exporter prometheus-community/prometheus-node-exporter -n monitoring
	@echo "List of pods and services created by Prometheus on k8s"
	kubectl get pods -n monitoring
	kubectl get svc -n monitoring

.PHONY: export-ports
export-ports:
	@echo "Expose kube-state-metrics service on k8s"
	kubectl expose service kube-state-metrics -n monitoring --type=NodePort --target-port=8080 --name=kube-state-metrics-np
	@echo "Prometheus service exposed on k8s"
	kubectl get svc kube-state-metrics-np -n monitoring
	@echo "Expose prometheus-node-exporter service on k8s"
	kubectl expose service prometheus-node-exporter -n monitoring --type=NodePort --target-port=9100 --name=prometheus-node-exporter-np
	@echo "Prometheus service exposed on k8s"
	kubectl get svc prometheus-node-exporter-np -n monitoring

.PHONY: remove-prometheus-k8s
remove-prometheus-k8s:
	@helm uninstall kube-state-metrics -n monitoring
	@helm uninstall prometheus-node-exporter -n monitoring
	@kubectl delete namespace monitoring

.PHONY: deploy-to-k8s
deploy-to-k8s:
	@kubectl apply -n nameko-prometheus -f k8s.yaml

.PHONY: remove-from-k8s
remove-from-k8s:
	@kubectl delete -f k8s.yaml

.PHONY: release
release: build-image push-image
	@echo "Releasing version $(VERSION)"
	@git add Makefile
	@git commit -sm "chore: release $(VERSION)"
	@git tag $(VERSION)
	@git push origin $(VERSION)
	@docker tag gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:latest gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:$(VERSION)
	@docker push gitea.rodneyosodo.com/rodneyosodo/nameko-prometheus:$(VERSION)
	@echo "Release done"

.PHONY: run-docker-monitoring
run-docker-monitoring:
	docker compose -f docker-compose-monitoring.yaml up
