girder-worker 0.10.2.dev4__tar.gz → 0.10.2.dev8__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 (76) hide show
  1. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/PKG-INFO +1 -1
  2. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/transforms/__init__.py +11 -5
  3. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/transforms/girder.py +27 -0
  4. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/PKG-INFO +1 -1
  5. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/.circleci/config.yml +0 -0
  6. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/.codecov.yml +0 -0
  7. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/.coveragerc.pytest +0 -0
  8. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/.dockerignore +0 -0
  9. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/.gitignore +0 -0
  10. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/CHANGELOG.rst +0 -0
  11. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/CONTRIBUTING.md +0 -0
  12. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/Dockerfile +0 -0
  13. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/HACKING.md +0 -0
  14. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/LICENSE +0 -0
  15. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/MANIFEST.in +0 -0
  16. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/NOTICE +0 -0
  17. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/README.rst +0 -0
  18. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/TRANSITION.md +0 -0
  19. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/docker-compose.yml +0 -0
  20. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/docker-entrypoint.sh +0 -0
  21. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/docker.env +0 -0
  22. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/.gitignore +0 -0
  23. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/__init__.py +0 -0
  24. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/__main__.py +0 -0
  25. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/_test_plugins/__init__.py +0 -0
  26. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/_test_plugins/plugins.py +0 -0
  27. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/_test_plugins/tasks.py +0 -0
  28. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/app.py +0 -0
  29. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/celeryconfig.py +0 -0
  30. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/configure.py +0 -0
  31. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/context/__init__.py +0 -0
  32. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/context/girder_context.py +0 -0
  33. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/context/nongirder_context.py +0 -0
  34. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/__init__.py +0 -0
  35. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/io/__init__.py +0 -0
  36. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/io/girder.py +0 -0
  37. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/nvidia.py +0 -0
  38. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/stream_adapter.py +0 -0
  39. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/tasks/__init__.py +0 -0
  40. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/docker/utils.py +0 -0
  41. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/entrypoint.py +0 -0
  42. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/__init__.py +0 -0
  43. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/api/__init__.py +0 -0
  44. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/api/worker.py +0 -0
  45. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/celery.py +0 -0
  46. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/constants.py +0 -0
  47. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/event_handlers.py +0 -0
  48. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/status.py +0 -0
  49. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/utils.py +0 -0
  50. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/JobStatus.js +0 -0
  51. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/main.js +0 -0
  52. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/package.json +0 -0
  53. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/routes.js +0 -0
  54. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/stylesheets/jobDetailsWidget.styl +0 -0
  55. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/stylesheets/taskStatusView.styl +0 -0
  56. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/templates/configView.pug +0 -0
  57. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/templates/taskStatusView.pug +0 -0
  58. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/views/ConfigView.js +0 -0
  59. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/girder_plugin/web_client/views/taskStatusView.js +0 -0
  60. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/log_utils.py +0 -0
  61. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/task.py +0 -0
  62. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/utils.py +0 -0
  63. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker/worker.dist.cfg +0 -0
  64. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/SOURCES.txt +0 -0
  65. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/dependency_links.txt +0 -0
  66. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/entry_points.txt +0 -0
  67. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/not-zip-safe +0 -0
  68. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/requires.txt +0 -0
  69. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/girder_worker.egg-info/top_level.txt +0 -0
  70. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/requirements-dev.in +0 -0
  71. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/requirements.in +0 -0
  72. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/requirements.txt +0 -0
  73. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/scripts/install_requirements.py +0 -0
  74. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/setup.cfg +0 -0
  75. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/setup.py +0 -0
  76. {girder-worker-0.10.2.dev4 → girder-worker-0.10.2.dev8}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: girder-worker
3
- Version: 0.10.2.dev4
3
+ Version: 0.10.2.dev8
4
4
  Summary: Batch execution engine built on celery.
5
5
  Home-page: https://github.com/girder/girder_worker
6
6
  Author: Kitware, Inc.
@@ -1,12 +1,12 @@
1
- import sys
2
- import uuid
1
+ import abc
3
2
  import os
3
+ import stat
4
+ import sys
4
5
  import tempfile
5
- import abc
6
+ import uuid
6
7
 
7
8
  from girder_worker_utils.transform import Transform
8
9
 
9
-
10
10
  TEMP_VOLUME_MOUNT_PREFIX = '/mnt/girder_worker'
11
11
 
12
12
 
@@ -130,6 +130,12 @@ class _TemporaryVolumeBase(BindMountVolume):
130
130
  # os.chmod.
131
131
  os.chmod(host_dir, mode)
132
132
  self._host_path = tempfile.mkdtemp(dir=host_dir)
133
+ try:
134
+ # this is permissive as a worker may be running as a different user
135
+ # and could otherwise not read or create files.
136
+ os.chmod(self._host_path, 0o777 | stat.S_ISGID)
137
+ except Exception:
138
+ pass
133
139
  self._container_path = os.path.join(TEMP_VOLUME_MOUNT_PREFIX, uuid.uuid4().hex)
134
140
 
135
141
 
@@ -150,7 +156,7 @@ class TemporaryVolume(_TemporaryVolumeBase, metaclass=_TemporaryVolumeMetaClass)
150
156
  """
151
157
  # Note that this mode is explicitly set with os.chmod. What you
152
158
  # set, is what you get - no os.makedirs umask shenanigans.
153
- def __init__(self, host_dir=None, mode=0o755):
159
+ def __init__(self, host_dir=None, mode=0o777):
154
160
  super().__init__(None, None)
155
161
  self.host_dir = host_dir
156
162
  self._mode = mode
@@ -11,6 +11,30 @@ from girder_worker_utils.transforms.girder_io import (
11
11
  from . import TemporaryVolume, Connect, NamedOutputPipe, _maybe_transform
12
12
 
13
13
 
14
+ def setPermissions(path, dirmode=0o777, filemode=0o644):
15
+ """
16
+ Set permissions on download assets so that workers can have full read
17
+ access to them regardless of user. For directories, they have full general
18
+ access.
19
+ """
20
+ if os.path.isfile(path):
21
+ try:
22
+ os.chmod(path, filemode)
23
+ except Exception:
24
+ pass
25
+ else:
26
+ for dirpath, _, filenames in os.walk(path):
27
+ try:
28
+ os.chmod(dirpath, dirmode)
29
+ except Exception:
30
+ pass
31
+ for filename in filenames:
32
+ try:
33
+ os.chmod(os.path.join(dirpath, filename), filemode)
34
+ except Exception:
35
+ pass
36
+
37
+
14
38
  class ProgressPipe(Transform):
15
39
  """
16
40
  This can be used to stream progress information out of a running docker container as
@@ -98,6 +122,7 @@ class GirderFileIdToVolume(GirderClientTransform):
98
122
  rel_path, self._file_path = self._create_file_path(dir)
99
123
 
100
124
  self.gc.downloadFile(self._file_id, self._file_path)
125
+ setPermissions(self._file_path)
101
126
 
102
127
  # Return the path inside the container
103
128
  return os.path.join(self._volume.container_path, rel_path)
@@ -155,6 +180,7 @@ class GirderFolderIdToVolume(GirderClientTransform):
155
180
  rel_path, self._folder_path = self._create_folder_path(dir)
156
181
 
157
182
  self.gc.downloadFolderRecursive(self._folder_id, self._folder_path)
183
+ setPermissions(self._folder_path)
158
184
 
159
185
  # Return the path inside the container
160
186
  return os.path.join(self._volume.container_path, rel_path)
@@ -201,6 +227,7 @@ class GirderItemIdToVolume(GirderClientTransform):
201
227
  rel_path, self._item_path = self._create_item_path(self._volume.host_path)
202
228
 
203
229
  self.gc.downloadItem(self._item_id, self._item_path)
230
+ setPermissions(self._item_path)
204
231
 
205
232
  # downloadItem always puts the item underneath the dest at its transformed name,
206
233
  # so we find where it placed it with listdir
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: girder-worker
3
- Version: 0.10.2.dev4
3
+ Version: 0.10.2.dev8
4
4
  Summary: Batch execution engine built on celery.
5
5
  Home-page: https://github.com/girder/girder_worker
6
6
  Author: Kitware, Inc.