diff --git a/.gitignore b/.gitignore index eb22288..4ccd7b3 100644 --- a/.gitignore +++ b/.gitignore @@ -363,4 +363,4 @@ z.sh volumes/ backup/ docker-compose.yaml - +.venv diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..cd671dd --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,91 @@ +SHELL := /bin/bash + +PWD ?= pwd_unknown + +THIS_FILE := $(lastword $(MAKEFILE_LIST)) +export THIS_FILE +TIME := $(shell date +%s) +export TIME + +ifeq ($(docker),) +DOCKER := $(shell which docker) +else +DOCKER := $(docker) +endif +export DOCKER + +ifeq ($(compose),) +DOCKER_COMPOSE := $(shell which docker-compose) +else +DOCKER_COMPOSE := $(compose) +endif +export DOCKER_COMPOSE + + + +PYTHON := $(shell which python) +export PYTHON +PYTHON2 := $(shell which python2) +export PYTHON2 +PYTHON3 := $(shell which python3) +export PYTHON3 + +PIP := $(shell which pip) +export PIP +PIP2 := $(shell which pip2) +export PIP2 +PIP3 := $(shell which pip3) +export PIP3 + +python_version_full := $(wordlist 2,4,$(subst ., ,$(shell python3 --version 2>&1))) +python_version_major := $(word 1,${python_version_full}) +python_version_minor := $(word 2,${python_version_full}) +python_version_patch := $(word 3,${python_version_full}) + +my_cmd.python.3 := $(PYTHON3) some_script.py3 +my_cmd := ${my_cmd.python.${python_version_major}} + +PYTHON_VERSION := ${python_version_major}.${python_version_minor}.${python_version_patch} +PYTHON_VERSION_MAJOR := ${python_version_major} +PYTHON_VERSION_MINOR := ${python_version_minor} + +export python_version_major +export python_version_minor +export python_version_patch +export PYTHON_VERSION + +# PROJECT_NAME defaults to name of the current directory. +ifeq ($(project),) +PROJECT_NAME := $(notdir $(PWD)) +else +PROJECT_NAME := $(project) +endif +export PROJECT_NAME + + + + +.PHONY: venv +venv: + test -d .venv || $(PYTHON3) -m virtualenv .venv + ( \ + source .venv/bin/activate; pip install -r requirements.txt; \ + ); + @echo "To activate (venv)" + @echo "try:" + @echo ". .venv/bin/activate" + @echo "or:" + @echo "make test-venv" +##: test-venv source .venv/bin/activate; pip install -r requirements.txt; +test-venv: + # insert test commands here + test -d .venv || $(PYTHON3) -m virtualenv .venv + ( \ + source .venv/bin/activate; pip install -r requirements.txt; \ + ); +####################### +.PHONY: prune-network +prune-network: + $(DOCKER_COMPOSE) -p $(PROJECT_NAME) down + docker network rm $(PROJECT_NAME)_default 2>/dev/null || echo "retry..." +####################### \ No newline at end of file diff --git a/plebnet_generate.py b/plebnet_generate.py old mode 100644 new mode 100755 index 9100161..5a6c301 --- a/plebnet_generate.py +++ b/plebnet_generate.py @@ -1,9 +1,20 @@ -# Generates docker-compose for n nodes. +#!/usr/bin/env python3 +# Generates docker-compose from command line. +# +# For each service identified at command line, this we identify other dependent services and add them to the config. # + -from omegaconf import OmegaConf import sys +sys.path.append('.') +sys.path.append("/usr/local/lib/python3.7/site-packages") +sys.path.append("/usr/local/lib/python3.8/site-packages") +sys.path.append("/usr/local/lib/python3.9/site-packages") +sys.path.append("/usr/local/lib/python3.10/site-packages") +sys.path.append("/usr/local/lib/python3.11/site-packages") +#print(sys.path) + +from omegaconf import OmegaConf architectures = { "Intel x64": 'x86_64-linux-gnu', @@ -12,8 +23,7 @@ 'ARM64 linux': 'aarch64-linux-gnu', } -from omegaconf import OmegaConf - +# + cli_args = OmegaConf.from_cli() try: @@ -62,7 +72,10 @@ def get_service_values(i, node_counts, **kwargs): for service in list(conf.services): service_nodes = node_counts[service] print(service, service_nodes) - for i in range(service_nodes): + # print(type(service)) + # print(type(service_nodes)) + int_node_count = int(service_nodes) + for i in range(int_node_count): service_values = get_service_values(i, node_counts, TRIPLET=triplet) service_name = '{}-{}'.format(service, str(i)) conf.services[service_name] = get_service( diff --git a/up-generic.sh b/up-generic.sh index b8fd092..303eac6 100755 --- a/up-generic.sh +++ b/up-generic.sh @@ -1,10 +1,9 @@ -#This is for internal testing only : ${TRIPLET:=x86_64-linux-gnu} -: ${bitcoind=1} +: ${bitcoind=5} : ${lnd=1} : ${tor=1} -python plebnet_generate.py TRIPLET=$TRIPLET bitcoind=$bitcoind lnd=$lnd tor=$tor +$(which python3) plebnet_generate.py TRIPLET=$TRIPLET bitcoind=$bitcoind lnd=$lnd tor=$tor #Remove docker-compose down @@ -16,17 +15,18 @@ sudo rm -rf volumes mkdir volumes for (( i=0; i<=$bitcoind-1; i++ )) do - mkdir volumes/bitcoin_datadir_$i + mkdir -p volumes/bitcoin_datadir_$i done for (( i=0; i<=$lnd-1; i++ )) do - mkdir volumes/lnd_datadir_$i + mkdir -p volumes/lnd_datadir_$i done +rm -rf volumes/tor_*dir_* for (( i=0; i<=$tor-1; i++ )) do - mkdir volumes/tor_datadir_$i - mkdir volumes/tor_servicesdir_$i - mkdir volumes/tor_torrcdir_$i + mkdir -p volumes/tor_datadir_$i + mkdir -p volumes/tor_servicesdir_$i + mkdir -p volumes/tor_torrcdir_$i done docker-compose build --build-arg TRIPLET=$TRIPLET