Skip to content

Commit a9563c0

Browse files
authored
Merge pull request #63 from Komalis/feat/rework-sync
fix: issue with sync not being done correctly
2 parents 8704d4f + 8e981c4 commit a9563c0

File tree

4 files changed

+33
-15
lines changed

4 files changed

+33
-15
lines changed

easyecs/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ def action_dev(
314314

315315
for event_handler in event_handlers:
316316
event_handler.synchronize()
317-
time.sleep(1)
317+
time.sleep(0.1)
318318

319319
found_tty = execute_command(
320320
ecs_manifest,

easyecs/command/__init__.py

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from hashlib import md5
12
import json
23
import os
34
import subprocess
@@ -91,8 +92,11 @@ def run_sync_thread(parsed_containers, ecs_manifest):
9192
if len(container.volumes) > 0:
9293
observer = Observer()
9394
container_name = container.name
94-
port = parsed_containers[container_name].get("netcat_port", None)
9595
for volume in container.volumes:
96+
md5_volume = md5(volume.encode("utf-8")).hexdigest()
97+
port = parsed_containers[container_name].get(
98+
f"netcat_port_{md5_volume}", None
99+
)
96100
_from, _ = volume.split(":")
97101
event_handler = SynchronizeEventHandler(volume, port)
98102
event_handlers.append(event_handler)
@@ -172,8 +176,11 @@ def run_nc_command(
172176
for container in containers:
173177
if len(container.volumes) > 0:
174178
for volume in container.volumes:
179+
md5_volume = md5(volume.encode("utf-8")).hexdigest()
175180
random_port = generate_random_port()
176-
parsed_containers[container_name]["netcat_port"] = random_port
181+
parsed_containers[container_name][
182+
f"netcat_port_{md5_volume}"
183+
] = random_port
177184
port_forward(
178185
parsed_containers,
179186
container_name,
@@ -184,15 +191,28 @@ def run_nc_command(
184191
)
185192
client = boto3.client("ssm")
186193
target = parsed_containers.get(container_name)["ssm_target"]
187-
command_server = [
188-
f"bash -c 'while true; do nc -v -l {random_port} >"
189-
f" /tmp/{random_port}.tar.gz.tmp; cp /tmp/{random_port}.tar.gz.tmp"
190-
f" /tmp/{random_port}.copy.tar.gz; fc=$(cat"
191-
f" /tmp/{random_port}.copy.tar.gz | tar -ztf - | head -c1); if ["
192-
f" $fc = . ]; then cat /tmp/{random_port}.copy.tar.gz | tar -xzf -;"
193-
f" else cat /tmp/{random_port}.copy.tar.gz | tar -xzf - -C /; fi;"
194-
" done'"
195-
]
194+
command_server = [f"""
195+
bash -c '
196+
set -x
197+
set -u
198+
while true
199+
do
200+
RANDOM_PORT={random_port}
201+
RANDOM_NUMBER=$RANDOM
202+
nc -v -l ${{RANDOM_PORT}} > /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.tar.gz.tmp
203+
cp /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.tar.gz.tmp /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz
204+
rm /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.tar.gz.tmp
205+
fc=$(cat /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz | tar -ztf - | head -c1)
206+
if [ $fc = . ]
207+
then
208+
cat /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz | tar -xzf -
209+
else
210+
# cat /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz | tar -xzf - -C /
211+
tar -xzf /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz -C /
212+
fi
213+
rm /tmp/${{RANDOM_PORT}}.${{RANDOM_NUMBER}}.copy.tar.gz
214+
done'
215+
"""] # noqa
196216
parameters_nc_server = {"command": command_server}
197217
ssm_nc_server = client.start_session(
198218
Target=target,

easyecs/helpers/common.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import os
33
import random
44
import re
5-
import time
65
from typing import Dict
76
import boto3
87
import socket
@@ -84,6 +83,5 @@ def generate_random_port():
8483
random_port = random.randint(1024, 65535)
8584
while is_port_in_use(random_port):
8685
random_port = random.randint(1024, 65535)
87-
time.sleep(0.1)
8886
random_port = str(random_port)
8987
return random_port

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "easyecs"
3-
version = "0.18.1"
3+
version = "0.19.0"
44
description = ""
55
authors = ["BONVARLET Benjamin <benjaminbonvarlet96@gmail.com>"]
66
readme = "README.md"

0 commit comments

Comments
 (0)