edge-containers-cli 4.3.0__tar.gz → 4.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/PKG-INFO +1 -1
  2. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/_version.py +2 -2
  3. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/demo_commands.py +11 -2
  4. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/monitor.py +53 -47
  5. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/PKG-INFO +1 -1
  6. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.copier-answers.yml +0 -0
  7. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.devcontainer/devcontainer.json +0 -0
  8. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/CONTRIBUTING.md +0 -0
  9. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  10. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/ISSUE_TEMPLATE/issue.md +0 -0
  11. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -0
  12. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/actions/install_requirements/action.yml +0 -0
  13. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/dependabot.yml +0 -0
  14. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/pages/index.html +0 -0
  15. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/pages/make_switcher.py +0 -0
  16. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_check.yml +0 -0
  17. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_dist.yml +0 -0
  18. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_pypi.yml +0 -0
  19. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_release.yml +0 -0
  20. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_test.yml +0 -0
  21. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/_tox.yml +0 -0
  22. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.github/workflows/ci.yml +0 -0
  23. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.gitignore +0 -0
  24. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.pre-commit-config.yaml +0 -0
  25. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.vscode/extensions.json +0 -0
  26. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.vscode/launch.json +0 -0
  27. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.vscode/settings.json +0 -0
  28. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/.vscode/tasks.json +0 -0
  29. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/Dockerfile +0 -0
  30. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/LICENSE +0 -0
  31. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/README.md +0 -0
  32. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/conf.py +0 -0
  33. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/explanations/decisions/0001-record-architecture-decisions.rst +0 -0
  34. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/explanations/decisions/0002-switched-to-pip-skeleton.rst +0 -0
  35. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/explanations/decisions.rst +0 -0
  36. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/build-docs.rst +0 -0
  37. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/contribute.rst +0 -0
  38. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/lint.rst +0 -0
  39. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/make-release.rst +0 -0
  40. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/pin-requirements.rst +0 -0
  41. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/run-tests.rst +0 -0
  42. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/static-analysis.rst +0 -0
  43. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/test-container.rst +0 -0
  44. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/how-to/update-tools.rst +0 -0
  45. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/index.rst +0 -0
  46. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/reference/standards.rst +0 -0
  47. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/developer/tutorials/dev-install.rst +0 -0
  48. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/genindex.rst +0 -0
  49. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/images/dls-favicon.ico +0 -0
  50. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/images/dls-logo.svg +0 -0
  51. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/images/ec-logs.png +0 -0
  52. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/images/ec-web.png +0 -0
  53. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/index.rst +0 -0
  54. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/user/explanations/docs-structure.rst +0 -0
  55. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/user/how-to/run-container.rst +0 -0
  56. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/user/index.rst +0 -0
  57. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/user/reference/api.rst +0 -0
  58. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/docs/user/tutorials/installation.rst +0 -0
  59. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/pyproject.toml +0 -0
  60. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/setup.cfg +0 -0
  61. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/__init__.py +0 -0
  62. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/__main__.py +0 -0
  63. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/autocomplete.py +0 -0
  64. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/backend.py +0 -0
  65. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cli.py +0 -0
  66. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/__init__.py +0 -0
  67. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/argo_commands.py +0 -0
  68. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/commands.py +0 -0
  69. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/helm.py +0 -0
  70. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/k8s_commands.py +0 -0
  71. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/cmds/monitor.tcss +0 -0
  72. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/definitions.py +0 -0
  73. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/git.py +0 -0
  74. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/globals.py +0 -0
  75. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/logging.py +0 -0
  76. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/shell.py +0 -0
  77. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli/utils.py +0 -0
  78. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/SOURCES.txt +0 -0
  79. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/dependency_links.txt +0 -0
  80. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/entry_points.txt +0 -0
  81. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/requires.txt +0 -0
  82. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/src/edge_containers_cli.egg-info/top_level.txt +0 -0
  83. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/__init__.py +0 -0
  84. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/conftest.py +0 -0
  85. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/argocd.yaml +0 -0
  86. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-deployment/apps/values.yaml +0 -0
  87. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-01/Chart.yaml +0 -0
  88. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-01/config/ioc.db +0 -0
  89. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-01/config/ioc.yaml +0 -0
  90. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-01/templates/configmap.yaml +0 -0
  91. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-01/values.yaml +0 -0
  92. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-02/Chart.yaml +0 -0
  93. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/bl01t-ea-test-02/values.yaml +0 -0
  94. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/dls-aravis/Chart.yaml +0 -0
  95. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/dls-aravis/config/ioc.yaml +0 -0
  96. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/dls-aravis/templates/configmap.yaml +0 -0
  97. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/dls-aravis/values.yaml +0 -0
  98. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/bl01t-services/services/values.yaml +0 -0
  99. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/cli.yaml +0 -0
  100. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/k8s.yaml +0 -0
  101. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/data/yaml.yaml +0 -0
  102. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/test_argocd.py +0 -0
  103. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/test_cli.py +0 -0
  104. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/test_demo.py +0 -0
  105. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/test_k8s.py +0 -0
  106. {edge_containers_cli-4.3.0 → edge_containers_cli-4.3.1}/tests/test_unit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: edge-containers-cli
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Summary: CLI for deploying and managing epics containers IOCs and services
5
5
  Author-email: Giles Knap <giles.knap@gmail.com>
6
6
  License: Apache License
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '4.3.0'
21
- __version_tuple__ = version_tuple = (4, 3, 0)
20
+ __version__ = version = '4.3.1'
21
+ __version_tuple__ = version_tuple = (4, 3, 1)
@@ -10,7 +10,12 @@ from random import randrange, seed
10
10
 
11
11
  import polars
12
12
 
13
- from edge_containers_cli.cmds.commands import CommandError, Commands, ServicesDataFrame
13
+ from edge_containers_cli.cmds.commands import (
14
+ CommandError,
15
+ Commands,
16
+ ServicesDataFrame,
17
+ ServicesSchema,
18
+ )
14
19
  from edge_containers_cli.definitions import ECContext
15
20
  from edge_containers_cli.globals import TIME_FORMAT
16
21
 
@@ -33,7 +38,11 @@ sample_data = {
33
38
  for cnt in range(NUM_SERVICES)
34
39
  ],
35
40
  }
36
- sample_ServicesDataFrame = ServicesDataFrame(polars.from_dict(sample_data))
41
+
42
+ if NUM_SERVICES == 0:
43
+ sample_ServicesDataFrame = polars.DataFrame(schema=ServicesSchema)
44
+ else:
45
+ sample_ServicesDataFrame = ServicesDataFrame(polars.from_dict(sample_data))
37
46
 
38
47
 
39
48
  def demo_wrapper():
@@ -455,52 +455,57 @@ class MonitorApp(App):
455
455
  """Provide another way of exiting the app along with CTRL+C."""
456
456
  self.exit()
457
457
 
458
- def _get_highlighted_cell(self, col_key: str) -> str:
458
+ def _get_highlighted_cell(self, col_key: str) -> str | None:
459
459
  table = self.get_widget_by_id("body_table")
460
460
  assert isinstance(table, DataTable)
461
461
  # Fetches hightlighted row ID (integer)
462
462
  row = table.cursor_row
463
- ioc_row = table.ordered_rows[row]
464
- col_keys = [ord_col.key.value for ord_col in table.ordered_columns]
465
- col_i = col_keys.index(col_key)
466
- ioc_col = table.ordered_columns[col_i]
467
- cell: str | SortableText = table.get_cell(ioc_row.key, ioc_col.key)
468
- # SortableText inherits __str__() from Text
469
- return str(cell)
470
-
471
- def _get_service_name(self) -> str:
472
- service_name = self._get_highlighted_cell("name")
473
- return service_name
463
+ if table.ordered_rows:
464
+ ioc_row = table.ordered_rows[row]
465
+ col_keys = [ord_col.key.value for ord_col in table.ordered_columns]
466
+ col_i = col_keys.index(col_key)
467
+ ioc_col = table.ordered_columns[col_i]
468
+ cell: str | SortableText = table.get_cell(ioc_row.key, ioc_col.key)
469
+ # SortableText inherits __str__() from Text
470
+ return str(cell)
471
+
472
+ def _get_service_name(self) -> str | None:
473
+ if service_name := self._get_highlighted_cell("name"):
474
+ return service_name
474
475
 
475
476
  def _do_confirmed_action(self, action: str, command: Callable):
476
- service_name = self._get_service_name()
477
- table = self.query_one(IocTable)
477
+ if service_name := self._get_service_name():
478
+ table = self.query_one(IocTable)
478
479
 
479
- def do_task(command, service_name):
480
- def _do_task():
481
- table.update_indicator_threadsafe(service_name, emoji.road_works)
482
- command(service_name)
483
- table.update_indicator_threadsafe(service_name, emoji.none)
484
- self.busy_services.remove(service_name)
485
-
486
- return _do_task
487
-
488
- def after_dismiss_callback(start: bool | None) -> None:
489
- """Called when ConfirmScreen is dismissed."""
490
- if start:
491
- if service_name in self.busy_services:
492
- log.info(f"Skipped {action}: {service_name} is busy")
493
- return None
494
- else:
495
- log.info(f"Scheduled: {action} {service_name}")
496
- self.busy_services.add(service_name)
497
- table.update_indicator_threadsafe(service_name, emoji.hour_glass)
498
- self._queue.put(do_task(command, service_name))
499
-
500
- self.push_screen(
501
- ConfirmScreen(service_name, action),
502
- after_dismiss_callback,
503
- )
480
+ def do_task(command, service_name):
481
+ def _do_task():
482
+ table.update_indicator_threadsafe(service_name, emoji.road_works)
483
+ command(service_name)
484
+ table.update_indicator_threadsafe(service_name, emoji.none)
485
+ self.busy_services.remove(service_name)
486
+
487
+ return _do_task
488
+
489
+ def after_dismiss_callback(start: bool | None) -> None:
490
+ """Called when ConfirmScreen is dismissed."""
491
+ if start:
492
+ if service_name in self.busy_services:
493
+ log.info(f"Skipped {action}: {service_name} is busy")
494
+ return None
495
+ else:
496
+ log.info(f"Scheduled: {action} {service_name}")
497
+ self.busy_services.add(service_name)
498
+ table.update_indicator_threadsafe(
499
+ service_name, emoji.hour_glass
500
+ )
501
+ self._queue.put(do_task(command, service_name))
502
+
503
+ self.push_screen(
504
+ ConfirmScreen(service_name, action),
505
+ after_dismiss_callback,
506
+ )
507
+ else:
508
+ log.info(f"No services available to perform: '{action}'")
504
509
 
505
510
  def action_start_ioc(self) -> None:
506
511
  """Start the IOC that is currently highlighted."""
@@ -516,16 +521,17 @@ class MonitorApp(App):
516
521
 
517
522
  def action_ioc_logs(self) -> None:
518
523
  """Display the logs of the IOC that is currently highlighted."""
519
- service_name = self._get_service_name()
520
-
521
- # Convert to corresponding bool
522
- ready = self._get_highlighted_cell("ready") == emoji.check_mark
524
+ if service_name := self._get_service_name():
525
+ # Convert to corresponding bool
526
+ ready = self._get_highlighted_cell("ready") == emoji.check_mark
523
527
 
524
- if ready:
525
- command = self.commands._get_logs # noqa: SLF001
526
- self.push_screen(LogsScreen(command, service_name))
528
+ if ready:
529
+ command = self.commands._get_logs # noqa: SLF001
530
+ self.push_screen(LogsScreen(command, service_name))
531
+ else:
532
+ log.info(f"Ignore request for logs - {service_name} not ready")
527
533
  else:
528
- log.info(f"Ignore request for logs - {service_name} not ready")
534
+ log.info("No services available to perform: 'logs'")
529
535
 
530
536
  def action_sort(self, col_name: str = "") -> None:
531
537
  """An action to sort the table rows by column heading."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: edge-containers-cli
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Summary: CLI for deploying and managing epics containers IOCs and services
5
5
  Author-email: Giles Knap <giles.knap@gmail.com>
6
6
  License: Apache License