@@ -6,20 +6,40 @@ FLAKE ?= flake8
66NAME = arl
77IMG = $(NAME ) _img
88TAG = latest
9+ DOCKER_IMAGE = $(IMG ) :$(TAG )
910DOCKERFILE = Dockerfile
1011DOCKER = docker
11- DOCKER_REPO ?= localhost:5000
12-
13-
14- all : clean nosetests
12+ DOCKER_REPO ?= ""
13+ DOCKER_USER ?= ""
14+ DOCKER_PASSWORD ?= ""
15+ WORKER_MEM ?= 512Mi
16+ WORKER_CPU ?= 500m
17+ WORKER_REPLICAS ?= 1
18+ WORKER_ARL_DATA ?= /arl/data
19+ CURRENT_DIR = $(shell pwd)
20+ JUPYTER_PASSWORD ?= changeme
21+ CONTAINER_EXISTS = $(shell $(DOCKER ) ps -aqf ancestor=itsthenetwork/nfs-server-alpine)
22+ SERVER_DEVICE ?= $(shell ip link | grep BROADCAST | head -1 | awk '{print $$2}' | sed 's/://')
23+ NFS_SERVER ?= "127.0.0.1"
24+
25+ # define overides for above variables in here
26+ -include PrivateRules.mak
27+
28+ checkvars :
29+ @echo " Image: $( DOCKER_IMAGE) "
30+ @echo " Repo: $( DOCKER_REPO) "
31+ @echo " Host net device: $( SERVER_DEVICE) "
32+ @echo " Nfs: $( NFS_SERVER) "
33+
34+ all : clean build nosetests
1535
1636clean :
1737 $(PYTHON ) setup.py clean
1838 rm -rf dist
1939
2040in : inplace # just a shortcut
2141inplace :
22- $(PYTHON ) setup.py install > /dev/null 2>&1 || (echo " '$( PYTHON) setup.py install' failed." ; exit -1)
42+ $(PYTHON ) setup.py build > /dev/null 2>&1 && $( PYTHON ) setup.py install > /dev/null 2>&1 || (echo " '$( PYTHON) setup.py install' failed." ; exit -1)
2343
2444build : in
2545
@@ -39,7 +59,7 @@ nosetests: cleantests
3959
4060nosetests-coverage : inplace cleantests
4161 rm -rf coverage .coverage
42- $(NOSETESTS ) -s -v --with-coverage arl
62+ $(NOSETESTS ) -s -v --with-coverage libs
4363
4464trailing-spaces :
4565 find libs -name " *.py" -exec perl -pi -e ' s/[ \t]*$$//' {} \;
@@ -52,12 +72,12 @@ docs: inplace
5272
5373code-flake :
5474 # flake8 ignore long lines and trailing whitespace
55- $(FLAKE ) --ignore=E501,W293,F401 --builtins=ModuleNotFoundError arl
75+ $(FLAKE ) --ignore=E501,W293,F401 --builtins=ModuleNotFoundError libs
5676
5777code-lint :
5878 $(PYLINT ) --extension-pkg-whitelist=numpy \
5979 --ignored-classes=astropy.units,astropy.constants,HDUList \
60- -E arl / tests/
80+ -E libs / tests/
6181
6282code-analysis : code-flake code-lint
6383
@@ -73,11 +93,55 @@ notebook:
7393 jupyter notebook --no-browser --ip=$$ {IP} --port=8888 examples/arl/
7494
7595docker_build :
76- $(DOCKER ) build -t $(IMG ) -f $(DOCKERFILE ) --build-arg PYTHON=$(PYTHON ) .
96+ $(DOCKER ) build -t $(DOCKER_IMAGE ) -f $(DOCKERFILE ) --build-arg PYTHON=$(PYTHON ) .
7797
7898docker_push : docker_build
79- docker tag $(IMG ) $(DOCKER_REPO ) /$(IMG ) :$(TAG )
80- docker push $(DOCKER_REPO ) /$(IMG ) :$(TAG )
99+ docker tag $(DOCKER_IMAGE ) $(DOCKER_REPO )$(DOCKER_IMAGE )
100+ docker push $(DOCKER_REPO )$(DOCKER_IMAGE )
101+
102+ docker_nfs_arl_data :
103+ ifneq "$(strip $(CONTAINER_EXISTS ) ) " ""
104+ $(DOCKER) rm -f $(CONTAINER_EXISTS)
105+ endif
106+ docker run -d --name nfs --privileged -p 2049:2049 \
107+ -v $(CURRENT_DIR)/:/arl \
108+ -e SHARED_DIRECTORY=/arl itsthenetwork/nfs-server-alpine:latest
109+
110+ k8s_deploy_scheduler :
111+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
112+ envsubst < k8s/k8s-dask-scheduler-deployment.yml | kubectl apply -f -
113+
114+ k8s_delete_scheduler :
115+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
116+ envsubst < k8s/k8s-dask-scheduler-deployment.yml | kubectl delete -f - || true
117+
118+ k8s_deploy_worker :
119+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
120+ WORKER_MEM=$(WORKER_MEM ) WORKER_CPU=$(WORKER_CPU ) \
121+ WORKER_REPLICAS=$(WORKER_REPLICAS ) \
122+ WORKER_ARL_DATA=$(WORKER_ARL_DATA ) \
123+ NFS_SERVER=$(NFS_SERVER ) \
124+ envsubst < k8s/k8s-dask-worker-deployment.yml | kubectl apply -f -
125+
126+ k8s_delete_worker :
127+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
128+ WORKER_MEM=$(WORKER_MEM ) WORKER_CPU=$(WORKER_CPU ) \
129+ WORKER_REPLICAS=$(WORKER_REPLICAS ) \
130+ WORKER_ARL_DATA=$(WORKER_ARL_DATA ) \
131+ NFS_SERVER=$(NFS_SERVER ) \
132+ envsubst < k8s/k8s-dask-worker-deployment.yml | kubectl delete -f - || true
133+
134+ k8s_deploy_notebook :
135+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
136+ WORKER_ARL_DATA=$(WORKER_ARL_DATA ) \
137+ NFS_SERVER=$(NFS_SERVER ) \
138+ envsubst < k8s/k8s-dask-notebook-deployment.yml | kubectl apply -f -
139+
140+ k8s_delete_notebook :
141+ DOCKER_IMAGE=$(DOCKER_REPO )$(DOCKER_IMAGE ) \
142+ WORKER_ARL_DATA=$(WORKER_ARL_DATA ) \
143+ NFS_SERVER=$(NFS_SERVER ) \
144+ envsubst < k8s/k8s-dask-notebook-deployment.yml | kubectl delete -f - || true
81145
82146docker_notebook : docker_build
83147 CTNR=` $( DOCKER) ps -q -f name=$( NAME) _notebook` && \
@@ -86,10 +150,14 @@ docker_notebook: docker_build
86150 IP=` ip a show $$ {DEVICE} | grep ' inet ' | awk ' {print $$2}' | sed ' s/\/.*//' ` && \
87151 echo " Launching at IP: $$ {IP}" && \
88152 $(DOCKER ) run --name $(NAME ) _notebook --hostname $(NAME ) _notebook --volume $$(pwd ) /data:/arl/data -e IP=$$ {IP} \
89- --net =host -p 8888:8888 -p 8787:8787 -p 8788:8788 -p 8789:8789 -d $(IMG )
153+ --net =host -p 8888:8888 -p 8787:8787 -p 8788:8788 -p 8789:8789 -d $(DOCKER_IMAGE )
90154 sleep 3
91155 $(DOCKER) logs $(NAME)_notebook
92156
157+ k8s_deploy : k8s_deploy_scheduler k8s_deploy_worker k8s_deploy_notebook
158+
159+ k8s_delete : k8s_delete_notebook k8s_delete_worker k8s_delete_scheduler
160+
93161docker_tests : docker_build cleantests
94162 rm -f predict_facet_timeslice_graph_wprojection.png pipelines-timings_* .csv
95163 CTNR=` $( DOCKER) ps -q -f name=$( NAME) _tests` && \
@@ -98,7 +166,7 @@ docker_tests: docker_build cleantests
98166 -v /etc/passwd:/etc/passwd:ro --user=$$(id -u ) \
99167 -v $$ {HOME}:$$ {HOME} -w $$ {HOME} \
100168 -e HOME=$$ {HOME} \
101- --net=host -ti $(IMG ) /bin/sh -c " cd /arl && make nosetests"
169+ --net=host -ti $(DOCKER_IMAGE ) /bin/sh -c " cd /arl && make nosetests"
102170
103171docker_pytest : docker_build cleantests
104172 CTNR=` $( DOCKER) ps -q -f name=$( NAME) _tests` && \
@@ -107,7 +175,7 @@ docker_pytest: docker_build cleantests
107175 -v /etc/passwd:/etc/passwd:ro --user=$$(id -u ) \
108176 -v $$ {HOME}:$$ {HOME} -w $$ {HOME} \
109177 -e HOME=$$ {HOME} \
110- --net=host -ti $(IMG ) /bin/sh -c " cd /arl && make pytest"
178+ --net=host -ti $(DOCKER_IMAGE ) /bin/sh -c " cd /arl && make pytest"
111179
112180docker_lint : docker_build
113181 CTNR=` $( DOCKER) ps -q -f name=$( NAME) _lint` && \
@@ -116,7 +184,7 @@ docker_lint: docker_build
116184 -v /etc/passwd:/etc/passwd:ro --user=$$(id -u ) \
117185 -v $$ {HOME}:$$ {HOME} -w $$ {HOME} \
118186 -e HOME=$$ {HOME} \
119- --net=host -ti $(IMG ) /bin/sh -c " cd /arl && make code-analysis"
187+ --net=host -ti $(DOCKER_IMAGE ) /bin/sh -c " cd /arl && make code-analysis"
120188
121189launch_dask :
122190 cd tools && ansible-playbook -i ./inventory ./docker.yml
0 commit comments