Skip to content

Commit

Permalink
Merge pull request open-horizon-services#30 from adhishreekadam/Issue-26
Browse files Browse the repository at this point in the history
bug fix: Apple Silicon Mac updates
  • Loading branch information
t-fine authored Jul 29, 2024
2 parents fa9d1e6 + e4ae131 commit e698b24
Show file tree
Hide file tree
Showing 7 changed files with 246 additions and 92 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ RUN pip3 install --upgrade pip
RUN pip3 install Flask

# Dev tools (can be removed for production)
# RUN apt update && apt install -y vim curl jq
# RUN apt-get -y update && apt-get -y install vim curl jq

# Copy in the source file
COPY ./web-hello.py /
Expand Down
135 changes: 100 additions & 35 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,45 +1,62 @@
# Extremely simple HTTP server that responds on port 8000 with a hello message.
# Extremely simple HTTP server that responds on port 8000 with a hello message in HTML format.

DOCKER_HUB_ID ?= ibmosquito
SERVICE_NAME ?= web-hello-python
SERVICE_VERSION ?= 1.0.0
PATTERN_NAME ?= pattern-web-hello-python
ARCH ?= amd64
MATCH ?= "Hello"
TIME_OUT ?= 30

# The Open Horizon Exchange's organization ID namespace where you will be publishing files
HZN_ORG_ID ?= examples

export SERVICE_NAME ?= web-hello-python
PATTERN_NAME ?= pattern-web-helloworld-python
DEPLOYMENT_POLICY_NAME ?= deployment-policy-web-helloworld-python
NODE_POLICY_NAME ?= node-policy-web-helloworld-python
export SERVICE_VERSION ?= 1.0.0
export SERVICE_CONTAINER := $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION)
ARCH ?= amd64

# Detect Operating System running Make
OS := $(shell uname -s)

# Leave blank for open DockerHub containers
# CONTAINER_CREDS:=-r "registry.wherever.com:myid:mypw"
CONTAINER_CREDS ?=

default: build run

build:
docker build -t $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION) .
docker build -t $(SERVICE_CONTAINER) .

dev: stop build
docker run -it -v `pwd`:/outside \
--name ${SERVICE_NAME} \
-p 8000:8000 \
$(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION) /bin/bash
$(SERVICE_CONTAINER) /bin/bash

run: stop
docker run -d \
--name ${SERVICE_NAME} \
--restart unless-stopped \
-p 8000:8000 \
$(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION)
$(SERVICE_CONTAINER)

check-syft:
@echo "=================="
@echo "Generating SBoM syft-output file..."
@echo "=================="
syft $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION) > syft-output
syft $(SERVICE_CONTAINER) > syft-output
cat syft-output

check:
@echo "=================="
@echo "SERVICE DEFINITION"
@echo "=================="
@cat service.json | envsubst
@echo ""

# add SBOM for the source code
check-grype:
grype $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION) > grype-output
grype $(SERVICE_CONTAINER) > grype-output
cat grype-output

sbom-policy-gen:
Expand All @@ -48,33 +65,48 @@ sbom-policy-gen:
@echo "=================="
./sbom-property-gen.sh

publish-service-policy:
hzn exchange service addpolicy -f service.policy.json $(HZN_ORG_ID)/$(SERVICE_NAME)_$(SERVICE_VERSION)_$(ARCH)

publish-deployment-policy:
hzn exchange deployment addpolicy -f deployment.policy.json $(HZN_ORG_ID)/policy-$(SERVICE_NAME)_$(SERVICE_VERSION)

test: run
test:
@echo "=================="
@echo "Testing $(SERVICE_NAME)..."
@echo "=================="
./serviceTest.sh $(SERVICE_NAME) $(MATCH) $(TIME_OUT) && \
{ docker rm -f ${SERVICE_NAME} >/dev/null; \
echo "*** Service test succeeded! ***"; } || \
{ docker rm -f ${SERVICE_NAME} >/dev/null; \
echo "*** Service test failed! ***"; \
false ;}

@curl -sS http://127.0.0.1:8000

push:
docker push $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION)
docker push $(SERVICE_CONTAINER)

publish: publish-service publish-service-policy publish-deployment-policy

remove: remove-deployment-policy remove-service-policy remove-service

publish-service:
@ARCH=$(ARCH) \
SERVICE_NAME="$(SERVICE_NAME)" \
SERVICE_VERSION="$(SERVICE_VERSION)"\
SERVICE_CONTAINER="$(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION)" \
hzn exchange service publish -O $(CONTAINER_CREDS) -f service.json --pull-image
@echo "=================="
@echo "PUBLISHING SERVICE"
@echo "=================="
@hzn exchange service publish -O $(CONTAINER_CREDS) --json-file=service.json --pull-image
@echo ""

remove-service:
@echo "=================="
@echo "REMOVING SERVICE"
@echo "=================="
@hzn exchange service remove -f $(HZN_ORG_ID)/$(SERVICE_NAME)_$(SERVICE_VERSION)_$(ARCH)
@echo ""


publish-service-policy:
@echo "========================="
@echo "PUBLISHING SERVICE POLICY"
@echo "========================="
@hzn exchange service addpolicy -f service.policy.json $(HZN_ORG_ID)/$(SERVICE_NAME)_$(SERVICE_VERSION)_$(ARCH)
@echo ""

remove-service-policy:
@echo "======================="
@echo "REMOVING SERVICE POLICY"
@echo "======================="
@hzn exchange service removepolicy -f $(HZN_ORG_ID)/$(SERVICE_NAME)_$(SERVICE_VERSION)_$(ARCH)
@echo ""

publish-pattern:
@ARCH=$(ARCH) \
Expand All @@ -83,19 +115,52 @@ publish-pattern:
PATTERN_NAME="$(PATTERN_NAME)" \
hzn exchange pattern publish -f pattern.json

publish-deployment-policy:
@echo "============================"
@echo "PUBLISHING DEPLOYMENT POLICY"
@echo "============================"
@hzn exchange deployment addpolicy -f deployment.policy.json $(HZN_ORG_ID)/policy-$(SERVICE_NAME)_$(SERVICE_VERSION)
@echo ""

remove-deployment-policy:
@echo "=========================="
@echo "REMOVING DEPLOYMENT POLICY"
@echo "=========================="
@hzn exchange deployment removepolicy -f $(HZN_ORG_ID)/policy-$(SERVICE_NAME)_$(SERVICE_VERSION)
@echo ""


stop:
@docker rm -f ${SERVICE_NAME} >/dev/null 2>&1 || :

clean:
@docker rmi -f $(DOCKER_HUB_ID)/$(SERVICE_NAME):$(SERVICE_VERSION) >/dev/null 2>&1 || :
@docker rmi -f $(SERVICE_CONTAINER) >/dev/null 2>&1 || :

agent-run: agent-stop
@hzn register --pattern "${HZN_ORG_ID}/$(PATTERN_NAME)"
agent-run:
@echo "================"
@echo "REGISTERING NODE"
@echo "================"
@hzn register --policy=node.policy.json
@watch hzn agreement list

agent-run-pattern:
@hzn register --pattern "${HZN_ORG_ID}/$(PATTERN_NAME)"

agent-stop:
@hzn unregister -f

deploy-check:
@hzn deploycheck all -t device -B deployment.policy.json --service-pol=service.policy.json --node-pol=node.policy.json

.PHONY: build dev run push publish-service publish-pattern test stop clean agent-run agent-stop
@hzn deploycheck all -t device -B deployment.policy.json --service=service.json --service-pol=service.policy.json --node-pol=node.policy.json

log:
@echo "========="
@echo "EVENT LOG"
@echo "========="
@hzn eventlog list
@echo ""
@echo "==========="
@echo "SERVICE LOG"
@echo "==========="
@hzn service log -f $(SERVICE_NAME)

.PHONY: default build dev run test check push publish remove publish-service remove-service publish-service-policy remove-service-policy publish-pattern publish-deployment-policy remove-deployment-policy stop clean agent-run agent-run-pattern agent-stop deploy-check log
Loading

0 comments on commit e698b24

Please sign in to comment.