osism 0.20251003.0__tar.gz → 0.20251012.0__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 (154) hide show
  1. osism-0.20251012.0/ChangeLog +7 -0
  2. {osism-0.20251003.0 → osism-0.20251012.0}/Containerfile +1 -1
  3. {osism-0.20251003.0 → osism-0.20251012.0}/Dockerfile +1 -1
  4. {osism-0.20251003.0/osism.egg-info → osism-0.20251012.0}/PKG-INFO +2 -2
  5. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/apply.py +65 -34
  6. osism-0.20251012.0/osism/commands/manage.py +1238 -0
  7. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/server.py +97 -2
  8. osism-0.20251012.0/osism/commands/stress.py +213 -0
  9. {osism-0.20251003.0 → osism-0.20251012.0}/osism/data/__init__.py +34 -0
  10. {osism-0.20251003.0 → osism-0.20251012.0}/osism/data/enums.py +54 -4
  11. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/__init__.py +23 -4
  12. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/openstack.py +80 -0
  13. {osism-0.20251003.0 → osism-0.20251012.0/osism.egg-info}/PKG-INFO +2 -2
  14. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/SOURCES.txt +1 -0
  15. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/entry_points.txt +4 -0
  16. osism-0.20251012.0/osism.egg-info/pbr.json +1 -0
  17. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/requires.txt +1 -1
  18. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.ansible.txt +1 -1
  19. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.yml +1 -1
  20. {osism-0.20251003.0 → osism-0.20251012.0}/setup.cfg +4 -0
  21. osism-0.20251003.0/ChangeLog +0 -7
  22. osism-0.20251003.0/osism/commands/manage.py +0 -514
  23. osism-0.20251003.0/osism.egg-info/pbr.json +0 -1
  24. {osism-0.20251003.0 → osism-0.20251012.0}/.flake8 +0 -0
  25. {osism-0.20251003.0 → osism-0.20251012.0}/.github/renovate.json +0 -0
  26. {osism-0.20251003.0 → osism-0.20251012.0}/.github/workflows/publish.yml +0 -0
  27. {osism-0.20251003.0 → osism-0.20251012.0}/.hadolint.yaml +0 -0
  28. {osism-0.20251003.0 → osism-0.20251012.0}/.zuul.yaml +0 -0
  29. {osism-0.20251003.0 → osism-0.20251012.0}/AUTHORS +0 -0
  30. {osism-0.20251003.0 → osism-0.20251012.0}/LICENSE +0 -0
  31. {osism-0.20251003.0 → osism-0.20251012.0}/Pipfile +0 -0
  32. {osism-0.20251003.0 → osism-0.20251012.0}/Pipfile.lock +0 -0
  33. {osism-0.20251003.0 → osism-0.20251012.0}/README.md +0 -0
  34. {osism-0.20251003.0 → osism-0.20251012.0}/files/change.sh +0 -0
  35. {osism-0.20251003.0 → osism-0.20251012.0}/files/cleanup-ansible-collections.sh +0 -0
  36. {osism-0.20251003.0 → osism-0.20251012.0}/files/clustershell/clush.conf +0 -0
  37. {osism-0.20251003.0 → osism-0.20251012.0}/files/clustershell/groups.conf +0 -0
  38. {osism-0.20251003.0 → osism-0.20251012.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
  39. {osism-0.20251003.0 → osism-0.20251012.0}/files/data/flavors.yaml +0 -0
  40. {osism-0.20251003.0 → osism-0.20251012.0}/files/netbox-manager/settings.toml +0 -0
  41. {osism-0.20251003.0 → osism-0.20251012.0}/files/redfishMockupCreate.py +0 -0
  42. {osism-0.20251003.0 → osism-0.20251012.0}/files/run-ansible-console.sh +0 -0
  43. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/config_db.json +0 -0
  44. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS4625-54T.ini +0 -0
  45. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS5835-54T.ini +0 -0
  46. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS5835-54X.ini +0 -0
  47. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS7326-56X.ini +0 -0
  48. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS7726-32X.ini +0 -0
  49. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS9716-32D.ini +0 -0
  50. {osism-0.20251003.0 → osism-0.20251012.0}/files/sonic/port_config/Accton-AS9726-32D.ini +0 -0
  51. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/.dockerignore +0 -0
  52. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/.gitignore +0 -0
  53. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/Containerfile +0 -0
  54. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/Dockerfile +0 -0
  55. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/api/config/route.ts +0 -0
  56. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/api/health/route.ts +0 -0
  57. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/components/ConnectionStatus.tsx +0 -0
  58. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/components/EventsFilters.tsx +0 -0
  59. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/components/EventsList.tsx +0 -0
  60. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/events/page.tsx +0 -0
  61. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/favicon.ico +0 -0
  62. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/globals.css +0 -0
  63. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/layout.tsx +0 -0
  64. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/nodes/page.tsx +0 -0
  65. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/page.tsx +0 -0
  66. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/app/services/page.tsx +0 -0
  67. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/components.json +0 -0
  68. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/eslint.config.mjs +0 -0
  69. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/lib/api.ts +0 -0
  70. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/lib/hooks/useWebSocket.ts +0 -0
  71. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/lib/types.ts +0 -0
  72. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/lib/utils.ts +0 -0
  73. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/next.config.ts +0 -0
  74. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/package-lock.json +0 -0
  75. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/package.json +0 -0
  76. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/postcss.config.mjs +0 -0
  77. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/public/file.svg +0 -0
  78. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/public/globe.svg +0 -0
  79. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/public/next.svg +0 -0
  80. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/public/vercel.svg +0 -0
  81. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/public/window.svg +0 -0
  82. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/tailwind.config.ts +0 -0
  83. {osism-0.20251003.0 → osism-0.20251012.0}/frontend/tsconfig.json +0 -0
  84. {osism-0.20251003.0 → osism-0.20251012.0}/osism/__init__.py +0 -0
  85. {osism-0.20251003.0 → osism-0.20251012.0}/osism/__main__.py +0 -0
  86. {osism-0.20251003.0 → osism-0.20251012.0}/osism/api.py +0 -0
  87. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/__init__.py +0 -0
  88. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/baremetal.py +0 -0
  89. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/compose.py +0 -0
  90. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/compute.py +0 -0
  91. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/configuration.py +0 -0
  92. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/console.py +0 -0
  93. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/container.py +0 -0
  94. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/get.py +0 -0
  95. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/lock.py +0 -0
  96. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/log.py +0 -0
  97. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/netbox.py +0 -0
  98. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/noset.py +0 -0
  99. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/reconciler.py +0 -0
  100. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/redfish.py +0 -0
  101. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/service.py +0 -0
  102. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/set.py +0 -0
  103. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/sonic.py +0 -0
  104. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/status.py +0 -0
  105. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/sync.py +0 -0
  106. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/task.py +0 -0
  107. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/validate.py +0 -0
  108. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/vault.py +0 -0
  109. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/volume.py +0 -0
  110. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/wait.py +0 -0
  111. {osism-0.20251003.0 → osism-0.20251012.0}/osism/commands/worker.py +0 -0
  112. {osism-0.20251003.0 → osism-0.20251012.0}/osism/data/playbooks.py +0 -0
  113. {osism-0.20251003.0 → osism-0.20251012.0}/osism/main.py +0 -0
  114. {osism-0.20251003.0 → osism-0.20251012.0}/osism/services/__init__.py +0 -0
  115. {osism-0.20251003.0 → osism-0.20251012.0}/osism/services/event_bridge.py +0 -0
  116. {osism-0.20251003.0 → osism-0.20251012.0}/osism/services/listener.py +0 -0
  117. {osism-0.20251003.0 → osism-0.20251012.0}/osism/services/websocket_manager.py +0 -0
  118. {osism-0.20251003.0 → osism-0.20251012.0}/osism/settings.py +0 -0
  119. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/ansible.py +0 -0
  120. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/ceph.py +0 -0
  121. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/__init__.py +0 -0
  122. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/config.py +0 -0
  123. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/ironic.py +0 -0
  124. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/netbox.py +0 -0
  125. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/redfish.py +0 -0
  126. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/__init__.py +0 -0
  127. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/bgp.py +0 -0
  128. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/cache.py +0 -0
  129. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/config_generator.py +0 -0
  130. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/connections.py +0 -0
  131. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/constants.py +0 -0
  132. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/device.py +0 -0
  133. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/exporter.py +0 -0
  134. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/interface.py +0 -0
  135. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/sonic/sync.py +0 -0
  136. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor/utils.py +0 -0
  137. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/conductor.py +0 -0
  138. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/kolla.py +0 -0
  139. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/kubernetes.py +0 -0
  140. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/netbox.py +0 -0
  141. {osism-0.20251003.0 → osism-0.20251012.0}/osism/tasks/reconciler.py +0 -0
  142. {osism-0.20251003.0 → osism-0.20251012.0}/osism/utils/__init__.py +0 -0
  143. {osism-0.20251003.0 → osism-0.20251012.0}/osism/utils/ssh.py +0 -0
  144. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/dependency_links.txt +0 -0
  145. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/not-zip-safe +0 -0
  146. {osism-0.20251003.0 → osism-0.20251012.0}/osism.egg-info/top_level.txt +0 -0
  147. {osism-0.20251003.0 → osism-0.20251012.0}/playbooks/build.yml +0 -0
  148. {osism-0.20251003.0 → osism-0.20251012.0}/playbooks/pre.yml +0 -0
  149. {osism-0.20251003.0 → osism-0.20251012.0}/playbooks/test-setup.yml +0 -0
  150. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.netbox-manager.txt +0 -0
  151. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.openstack-flavor-manager.txt +0 -0
  152. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.openstack-image-manager.txt +0 -0
  153. {osism-0.20251003.0 → osism-0.20251012.0}/requirements.txt +0 -0
  154. {osism-0.20251003.0 → osism-0.20251012.0}/setup.py +0 -0
@@ -0,0 +1,7 @@
1
+ CHANGES
2
+ =======
3
+
4
+ v0.20251012.0
5
+ -------------
6
+
7
+ * Add manage project create and sync commands (#1750)
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.8.23 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.8.23 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osism
3
- Version: 0.20251003.0
3
+ Version: 0.20251012.0
4
4
  Summary: OSISM manager interface
5
5
  Home-page: https://github.com/osism/python-osism
6
6
  Author: OSISM GmbH
@@ -58,7 +58,7 @@ Requires-Dist: watchdog==6.0.0
58
58
  Requires-Dist: websockets==15.0.1
59
59
  Provides-Extra: ansible
60
60
  Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
61
- Requires-Dist: ansible-core==2.19.2; extra == "ansible"
61
+ Requires-Dist: ansible-core==2.19.3; extra == "ansible"
62
62
  Provides-Extra: openstack-image-manager
63
63
  Requires-Dist: openstack-image-manager==0.20250912.0; extra == "openstack-image-manager"
64
64
  Dynamic: author
@@ -92,6 +92,13 @@ class Run(Command):
92
92
  help="Dry run, do not initiate tasks (for collections only)",
93
93
  action="store_true",
94
94
  )
95
+ parser.add_argument(
96
+ "--show-tree",
97
+ dest="show_tree",
98
+ default=False,
99
+ help="Show only the execution tree for collections without additional output",
100
+ action="store_true",
101
+ )
95
102
  parser.add_argument("role", nargs="?", type=str, help="Role to be applied")
96
103
  parser.add_argument(
97
104
  "arguments", nargs=argparse.REMAINDER, help="Other arguments for Ansible"
@@ -141,6 +148,7 @@ class Run(Command):
141
148
  task_timeout,
142
149
  retry,
143
150
  dry_run,
151
+ show_tree,
144
152
  ):
145
153
  g = []
146
154
  for item in data:
@@ -149,7 +157,10 @@ class Run(Command):
149
157
  # e.g. "loadbalancer"
150
158
  logger.info(f"A [{counter}] {'-' * (counter + 1)} {item[0]}")
151
159
 
152
- if dry_run:
160
+ if show_tree:
161
+ # Only show the tree, don't create tasks
162
+ pt = None
163
+ elif dry_run:
153
164
  pt = ansible.noop.si()
154
165
  else:
155
166
  pt = self._prepare_task(
@@ -182,17 +193,23 @@ class Run(Command):
182
193
  task_timeout,
183
194
  retry,
184
195
  dry_run,
196
+ show_tree,
185
197
  )
186
- g.append(chain(pt, st))
198
+ if not show_tree:
199
+ g.append(chain(pt, st))
187
200
  else:
188
- g.append(pt)
201
+ if not show_tree:
202
+ g.append(pt)
189
203
  for inner_item in item[1:]:
190
204
  if type(inner_item) == list:
191
205
  logger.info(
192
206
  f"B [{counter}] {'-' * (counter + 1)} {inner_item[0]}"
193
207
  )
194
208
 
195
- if dry_run:
209
+ if show_tree:
210
+ # Only show the tree, don't create tasks
211
+ pt = None
212
+ elif dry_run:
196
213
  pt = ansible.noop.si()
197
214
  else:
198
215
  pt = self._prepare_task(
@@ -225,45 +242,50 @@ class Run(Command):
225
242
  task_timeout,
226
243
  retry,
227
244
  dry_run,
245
+ show_tree,
228
246
  )
229
- g.append(chain(pt, st))
247
+ if not show_tree:
248
+ g.append(chain(pt, st))
230
249
  else:
231
- g.append(pt)
250
+ if not show_tree:
251
+ g.append(pt)
232
252
  else:
233
253
  logger.info(
234
254
  f"C [{counter}] {'-' * (counter + 1)} {inner_item}"
235
255
  )
236
- g.append(
237
- self._prepare_task(
238
- arguments,
239
- environment,
240
- overwrite,
241
- sub,
242
- inner_item,
243
- action,
244
- wait,
245
- format,
246
- timeout,
247
- task_timeout,
256
+ if not show_tree:
257
+ g.append(
258
+ self._prepare_task(
259
+ arguments,
260
+ environment,
261
+ overwrite,
262
+ sub,
263
+ inner_item,
264
+ action,
265
+ wait,
266
+ format,
267
+ timeout,
268
+ task_timeout,
269
+ )
248
270
  )
249
- )
250
271
  # e.g. "common"
251
272
  else:
252
273
  logger.info(f"D [{counter}] {'-' * (counter + 1)} {item}")
253
- g.append(
254
- self._prepare_task(
255
- arguments,
256
- environment,
257
- overwrite,
258
- sub,
259
- item,
260
- action,
261
- wait,
262
- format,
263
- timeout,
264
- task_timeout,
274
+ if not show_tree:
275
+ g.append(
276
+ self._prepare_task(
277
+ arguments,
278
+ environment,
279
+ overwrite,
280
+ sub,
281
+ item,
282
+ action,
283
+ wait,
284
+ format,
285
+ timeout,
286
+ task_timeout,
287
+ )
265
288
  )
266
- )
267
289
 
268
290
  if g:
269
291
  return group(g)
@@ -282,9 +304,12 @@ class Run(Command):
282
304
  task_timeout,
283
305
  retry,
284
306
  dry_run,
307
+ show_tree,
285
308
  ):
286
309
  if dry_run:
287
310
  logger.info(f"Dry run for collection {collection}. No tasks are scheduled.")
311
+ elif show_tree:
312
+ logger.info(f"Showing execution tree for collection {collection}")
288
313
  else:
289
314
  logger.info(f"Collection {collection} is prepared for execution")
290
315
 
@@ -303,10 +328,14 @@ class Run(Command):
303
328
  task_timeout,
304
329
  retry,
305
330
  dry_run,
331
+ show_tree,
306
332
  )
307
- if t:
333
+
334
+ # Only apply tasks if not in show_tree mode
335
+ if t and not show_tree:
308
336
  t.apply_async()
309
- if not dry_run:
337
+
338
+ if not dry_run and not show_tree:
310
339
  logger.info(
311
340
  f"All tasks of the collection {collection} are prepared for execution"
312
341
  )
@@ -467,6 +496,7 @@ class Run(Command):
467
496
  task_timeout = parsed_args.task_timeout
468
497
  wait = not parsed_args.no_wait
469
498
  dry_run = parsed_args.dry_run
499
+ show_tree = parsed_args.show_tree
470
500
 
471
501
  rc = 0
472
502
 
@@ -496,6 +526,7 @@ class Run(Command):
496
526
  task_timeout,
497
527
  retry,
498
528
  dry_run,
529
+ show_tree,
499
530
  )
500
531
  if rc != 0:
501
532
  outer_break = True