Skip to content

Commit

Permalink
Improv docker control
Browse files Browse the repository at this point in the history
  • Loading branch information
rbonghi committed Jan 23, 2025
1 parent 785c72b commit da1ba8e
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 34 deletions.
6 changes: 3 additions & 3 deletions src/nanosaur/docker.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def create_simple(platform, params: Params, args) -> bool:
return True


def docker_start(platform, params: Params, args):
def docker_robot_start(platform, params: Params, args):
"""Start the docker container."""

if not docker.compose.is_installed():
Expand Down Expand Up @@ -137,7 +137,7 @@ def docker_simulator_start(platform, params: Params, args):
return False


def docker_stop(platform, params: Params, args):
def docker_robot_stop(platform, params: Params, args):
"""Stop the docker container."""

if not docker.compose.is_installed():
Expand All @@ -154,7 +154,7 @@ def docker_stop(platform, params: Params, args):
# Create a DockerClient object with the docker-compose file
nanosaur_compose = DockerClient(compose_files=[docker_compose_path])
if len(nanosaur_compose.compose.ps()) > 0:
nanosaur_compose.compose.down()
nanosaur_compose.compose.down(volumes=True)
print(TerminalFormatter.color_text(f"robot {robot.name} stopped", color='green'))
else:
print(TerminalFormatter.color_text(f"The robot {robot.name} is not running.", color='red'))
Expand Down
13 changes: 9 additions & 4 deletions src/nanosaur/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
from inquirer.themes import GreenPassion
from jtop import jtop, JtopException

from nanosaur.docker import create_simple
from nanosaur.docker import create_simple, docker_simulator_start, docker_robot_start, docker_robot_stop
from nanosaur.workspace import workspaces_info, parser_workspace_menu, create_developer_workspace, create_maintainer_workspace, get_workspaces_path
from nanosaur.robot import parser_robot_menu, robot_start, robot_stop
from nanosaur.robot import parser_robot_menu
from nanosaur.simulation import parser_simulation_menu
from nanosaur.swarm import parser_swarm_menu
from nanosaur.prompt_colors import TerminalFormatter
Expand Down Expand Up @@ -126,14 +126,19 @@ def install(platform, params: Params, args):
params['mode'] = install_type


def nanosaur_wake_up(platform, params: Params, args):
args.detach = True
return docker_robot_start(platform, params, args)


def robot_control(params, subparsers):
robot = RobotList.get_robot(params).name
robot_name = TerminalFormatter.color_text(robot, color='green', bold=True)
parser_wakeup = subparsers.add_parser('wake-up', help=f"Start {robot_name} (same as 'nanosaur robot start')")
parser_wakeup.set_defaults(func=robot_start)
parser_wakeup.set_defaults(func=nanosaur_wake_up)
# Subcommand: shutdown
parser_shutdown = subparsers.add_parser('shutdown', help="Shutdown the robot (same as 'nanosaur robot stop')")
parser_shutdown.set_defaults(func=robot_stop)
parser_shutdown.set_defaults(func=docker_robot_stop)


def main():
Expand Down
29 changes: 2 additions & 27 deletions src/nanosaur/robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,42 +79,17 @@ def parser_robot_menu(subparsers: argparse._SubParsersAction, params: Params) ->
'--build', action='store_true', help="Rebuild docker before starting")
parser_robot_start.add_argument(
'--detach', action='store_true', help="Run the robot in detached mode")
parser_robot_start.set_defaults(func=robot_start)
parser_robot_start.set_defaults(func=docker.docker_robot_start)
# Add robot stop subcommand
parser_robot_stop = robot_subparsers.add_parser('stop', help="Deactivate the robot")
parser_robot_stop.set_defaults(func=robot_stop)
parser_robot_stop.set_defaults(func=docker.docker_robot_stop)

# Add robot config subcommand
parser_config = add_robot_config_subcommands(robot_subparsers, params)

return parser_robot, parser_config


def robot_start(platform, params: Params, args):
device_type = "robot" if platform['Machine'] == 'jetson' else "desktop"
# Check the device type
if device_type == "desktop":
# Start the robot simulation
docker.docker_start(platform, params, args)
elif device_type == "robot":
print(TerminalFormatter.color_text("Not yet implemented", color='yellow'))
else:
print(TerminalFormatter.color_text("Unknown device type", color='red'))
return True


def robot_stop(platform, params: Params, args):
device_type = "robot" if platform['Machine'] == 'jetson' else "desktop"
# Check the device type
if device_type == "desktop":
docker.docker_stop(platform, params, args)
elif device_type == "robot":
print(TerminalFormatter.color_text("Not yet implemented", color='yellow'))
else:
print(TerminalFormatter.color_text("Unknown device type", color='red'))
return True


def robot_set_name(platform, params: Params, args):
"""Configure the robot name."""
robot = RobotList.get_robot(params)
Expand Down

0 comments on commit da1ba8e

Please sign in to comment.