diff --git a/Makefile b/Makefile index b09dcb8..d36dea9 100644 --- a/Makefile +++ b/Makefile @@ -6,12 +6,3 @@ build: run: go run main.go -set_virtualenv: - virtualenv p2p-rendering - -install_docker_requirements: - source p2p-rendering/bin/activate && pip install -r server/docker/requirements.txt - - -dockerproc: - ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose -f server/docker/dockprom/docker-compose.yml up -d \ No newline at end of file diff --git a/p2p/README b/p2p/README new file mode 100644 index 0000000..a0fdc76 --- /dev/null +++ b/p2p/README @@ -0,0 +1,3 @@ +P2P module +=========== +This part we will implement a UDP hole punching \ No newline at end of file diff --git a/server/docker/Makefile b/server/docker/Makefile new file mode 100644 index 0000000..c522e6b --- /dev/null +++ b/server/docker/Makefile @@ -0,0 +1,12 @@ +SHELL := /bin/bash + +.PHONY: set_virtualenv,install_docker_requirements,dockerproc + +set_virtualenv: + virtualenv env + +install_docker_requirements: + source env/bin/activate && pip install -r requirements.txt + +dockerproc: + ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose -f dockprom/docker-compose.yml up -d \ No newline at end of file diff --git a/server/docker/README b/server/docker/README new file mode 100644 index 0000000..af4eac9 --- /dev/null +++ b/server/docker/README @@ -0,0 +1,6 @@ +Docker Module P2P-rendering-computation +======================================== + +This module is incharge to spin up docker contaianers , create +SSH server and VNC server. This module is implemented using +python. \ No newline at end of file diff --git a/server/docker/docker_vm.py b/server/docker/docker_vm.py index 4c0fc8f..7269d7e 100644 --- a/server/docker/docker_vm.py +++ b/server/docker/docker_vm.py @@ -1,7 +1,14 @@ +''' +The follwing file is a docker module to interact with the p2p +system computation/redering system. + +Functionality +1. --createvm: Creates a ubuntu virtualmachine using docker settings and takes name as the parameter +''' #!/usr/bin/env python3 ''' -FUTURE RELEASE TO BE CONVERTED TO GO LANG +TODO: FUTURE RELEASE TO BE CONVERTED TO GO LANG ''' import click @@ -14,7 +21,7 @@ import os # ----------------------------------------------- CLI flags -------------------------------------------------------- @click.command() -@click.option("--createvm", is_flag=True, help="Creates docker default VM") +@click.option("--createvm", help="Creates docker default VM") # ------------------------------------------------------------------------------------------------------------------- # -------------------------------------- Actions when flags are called ---------------------------------------------- @@ -23,8 +30,8 @@ def main(createvm): # creates docker virtual machine if createvm: - name = str(uuid.uuid4()) - build_run_contianer(name) + #name = str(uuid.uuid4()) + build_run_contianer(createvm) else: ctx = click.get_current_context() @@ -45,24 +52,32 @@ def build_run_contianer(name): vnc_free_port = str(get_free_tcp_port()) # Check if image is already exists (If already exists then delete and rebuild) + ''' + Note: + Since system dependant functionality is being used here. The + Error handleing is yet to be implemented. + ''' try: client.images.get(tag_name) - print("------ Image exists (Running Docker container " + name + ") --------") + #print("------ Image exists (Running Docker container " + name + ") --------") # Run the docker continer # Running interactive version until log files for results are created - os.system("docker run -d=true --name="+ name +" --restart=always -p 6901:6901 -p "+ free_port +":22 -v=/opt/data:/data "+ tag_name +" /start") + os.system("docker run -d=true --name="+ name +" --restart=always -p "+ vnc_free_port +":6901 -p "+ free_port +":22 -v=/opt/data:/data "+ tag_name +" /start > /dev/null") except: - print("------ Image does not exists (building " + name + " and running image) ---------") + #print("------ Image does not exists (building " + name + " and running image) ---------") # client.images.build(path=framework_image_path,tag=tag_name,rm=True) os.system("docker build -t " + tag_name + " " + image_path) - print("------ Running Docker contianer " + name + " ---------") + #print("------ Running Docker contianer " + name + " ---------") # Run the docker continer # Running interactive version until log files for results are created - os.system("docker run -d=true --name="+ name +" --restart=always -p 6901:6901 -p "+ free_port +":22 -v=/opt/data:/data "+ tag_name +" /start") + os.system("docker run -d=true --name="+ name +" --restart=always -p "+ vnc_free_port +":6901 -p "+ free_port +":22 -v=/opt/data:/data "+ tag_name +" /start > /dev/null") + + result = {"ssh_port":free_port,"vnc_port":vnc_free_port,"id": name} + print(result) # ------------------------------------------------------------------------------------------------------------------- # ------------------------------------------ Get free TCP port ------------------------------------------------------ diff --git a/server/docker/requirements.txt b/server/docker/requirements.txt index 6bdc9c9..cf56a0e 100644 --- a/server/docker/requirements.txt +++ b/server/docker/requirements.txt @@ -1,2 +1,3 @@ +docker click -docker \ No newline at end of file +pymake diff --git a/server/server.go b/server/server.go index 0d4314f..eac1cda 100644 --- a/server/server.go +++ b/server/server.go @@ -4,7 +4,6 @@ import ( "github.com/gin-gonic/gin" "net/http" "fmt" - docker "git.sr.ht/~akilan1999/p2p-rendering-computation/server/docker" ) func Server() {