primitive 0.2.43__tar.gz → 0.2.45__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 (113) hide show
  1. {primitive-0.2.43 → primitive-0.2.45}/PKG-INFO +1 -1
  2. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/__about__.py +1 -1
  3. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/agent/actions.py +12 -6
  4. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/graphql/fragments.py +1 -0
  5. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/monitor/actions.py +4 -1
  6. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/actions.py +1 -2
  7. {primitive-0.2.43 → primitive-0.2.45}/.git-hooks/pre-commit +0 -0
  8. {primitive-0.2.43 → primitive-0.2.45}/.gitattributes +0 -0
  9. {primitive-0.2.43 → primitive-0.2.45}/.github/workflows/lint.yml +0 -0
  10. {primitive-0.2.43 → primitive-0.2.45}/.github/workflows/publish.yml +0 -0
  11. {primitive-0.2.43 → primitive-0.2.45}/.github/workflows/pyright.yml +0 -0
  12. {primitive-0.2.43 → primitive-0.2.45}/.gitignore +0 -0
  13. {primitive-0.2.43 → primitive-0.2.45}/.vscode/extensions.json +0 -0
  14. {primitive-0.2.43 → primitive-0.2.45}/.vscode/settings.json +0 -0
  15. {primitive-0.2.43 → primitive-0.2.45}/LICENSE.txt +0 -0
  16. {primitive-0.2.43 → primitive-0.2.45}/Makefile +0 -0
  17. {primitive-0.2.43 → primitive-0.2.45}/README.md +0 -0
  18. {primitive-0.2.43 → primitive-0.2.45}/linux setup.md +0 -0
  19. {primitive-0.2.43 → primitive-0.2.45}/pyproject.toml +0 -0
  20. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/__init__.py +0 -0
  21. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/agent/__init__.py +0 -0
  22. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/agent/commands.py +0 -0
  23. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/agent/runner.py +0 -0
  24. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/agent/uploader.py +0 -0
  25. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/auth/__init__.py +0 -0
  26. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/auth/actions.py +0 -0
  27. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/auth/commands.py +0 -0
  28. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/auth/graphql/__init__.py +0 -0
  29. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/auth/graphql/queries.py +0 -0
  30. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/cli.py +0 -0
  31. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/client.py +0 -0
  32. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/__init__.py +0 -0
  33. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/actions.py +0 -0
  34. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/commands.py +0 -0
  35. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/launch_agents.py +0 -0
  36. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/launch_service.py +0 -0
  37. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/daemons/ui.py +0 -0
  38. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/exec/__init__.py +0 -0
  39. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/exec/actions.py +0 -0
  40. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/exec/commands.py +0 -0
  41. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/exec/interactive.py +0 -0
  42. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/__init__.py +0 -0
  43. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/actions.py +0 -0
  44. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/commands.py +0 -0
  45. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/graphql/__init__.py +0 -0
  46. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/graphql/fragments.py +0 -0
  47. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/graphql/mutations.py +0 -0
  48. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/files/graphql/queries.py +0 -0
  49. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/git/__init__.py +0 -0
  50. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/git/actions.py +0 -0
  51. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/git/commands.py +0 -0
  52. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/git/graphql/__init__.py +0 -0
  53. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/git/graphql/queries.py +0 -0
  54. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/graphql/__init__.py +0 -0
  55. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/graphql/relay.py +0 -0
  56. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/graphql/sdk.py +0 -0
  57. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/graphql/utility_fragments.py +0 -0
  58. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/__init__.py +0 -0
  59. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/actions.py +0 -0
  60. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/android.py +0 -0
  61. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/commands.py +0 -0
  62. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/graphql/__init__.py +0 -0
  63. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/graphql/mutations.py +0 -0
  64. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/graphql/queries.py +0 -0
  65. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/hardware/ui.py +0 -0
  66. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/__init__.py +0 -0
  67. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/actions.py +0 -0
  68. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/commands.py +0 -0
  69. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/graphql/__init__.py +0 -0
  70. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/graphql/fragments.py +0 -0
  71. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/graphql/mutations.py +0 -0
  72. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/jobs/graphql/queries.py +0 -0
  73. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/monitor/commands.py +0 -0
  74. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/__init__.py +0 -0
  75. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/actions.py +0 -0
  76. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/commands.py +0 -0
  77. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/graphql/__init__.py +0 -0
  78. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/graphql/fragments.py +0 -0
  79. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/graphql/mutations.py +0 -0
  80. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/organizations/graphql/queries.py +0 -0
  81. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/__init__.py +0 -0
  82. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/actions.py +0 -0
  83. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/commands.py +0 -0
  84. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/graphql/__init__.py +0 -0
  85. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/graphql/fragments.py +0 -0
  86. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/graphql/mutations.py +0 -0
  87. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/projects/graphql/queries.py +0 -0
  88. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/provisioning/__init__.py +0 -0
  89. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/provisioning/actions.py +0 -0
  90. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/provisioning/graphql/__init__.py +0 -0
  91. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/provisioning/graphql/queries.py +0 -0
  92. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/__init__.py +0 -0
  93. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/commands.py +0 -0
  94. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/graphql/__init__.py +0 -0
  95. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/graphql/fragments.py +0 -0
  96. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/graphql/mutations.py +0 -0
  97. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/reservations/graphql/queries.py +0 -0
  98. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/__init__.py +0 -0
  99. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/actions.py +0 -0
  100. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/auth.py +0 -0
  101. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/cache.py +0 -0
  102. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/chunk_size.py +0 -0
  103. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/config.py +0 -0
  104. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/daemons.py +0 -0
  105. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/exceptions.py +0 -0
  106. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/logging.py +0 -0
  107. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/memory_size.py +0 -0
  108. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/printer.py +0 -0
  109. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/psutil.py +0 -0
  110. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/shell.py +0 -0
  111. {primitive-0.2.43 → primitive-0.2.45}/src/primitive/utils/text.py +0 -0
  112. {primitive-0.2.43 → primitive-0.2.45}/tests/__init__.py +0 -0
  113. {primitive-0.2.43 → primitive-0.2.45}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: primitive
3
- Version: 0.2.43
3
+ Version: 0.2.45
4
4
  Project-URL: Documentation, https://github.com//primitivecorp/primitive-cli#readme
5
5
  Project-URL: Issues, https://github.com//primitivecorp/primitive-cli/issues
6
6
  Project-URL: Source, https://github.com//primitivecorp/primitive-cli
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Dylan Stein <dylan@primitive.tech>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.2.43"
4
+ __version__ = "0.2.45"
@@ -96,7 +96,14 @@ class Agent(BaseAction):
96
96
  job_run_status = job_run_data.get("jobRun", {}).get("status", None)
97
97
 
98
98
  while job_run_status != "in_progress":
99
- if job_run_status == "pending":
99
+ if job_run_status == "request_completed":
100
+ logger.error(
101
+ f"JobRun {job_run_data.get('name')} is already completed. Exiting."
102
+ )
103
+ if RUNNING_IN_CONTAINER:
104
+ logger.info("Running in container, exiting after job run")
105
+ return
106
+ elif job_run_status == "pending":
100
107
  # we are setting to request_in_progress here which puts a started_at time on the JobRun in the API's database
101
108
  # any time spent pulling Git repositories, setting up, etc, counts as compute time
102
109
  self.primitive.jobs.job_run_update(
@@ -111,12 +118,11 @@ class Agent(BaseAction):
111
118
  job_run_data = job_run_result.data.get("jobRun", {})
112
119
  job_run_status = job_run_data.get("status", None)
113
120
 
114
- runner = Runner(
115
- primitive=self.primitive,
116
- job_run=job_run_data,
117
- )
118
-
119
121
  try:
122
+ runner = Runner(
123
+ primitive=self.primitive,
124
+ job_run=job_run_data,
125
+ )
120
126
  runner.setup()
121
127
  except Exception as exception:
122
128
  logger.exception(
@@ -24,6 +24,7 @@ fragment HardwareFragment on Hardware {
24
24
  pk
25
25
  status
26
26
  reservationNumber
27
+ reason
27
28
  createdBy {
28
29
  username
29
30
  }
@@ -115,6 +115,9 @@ class Monitor(BaseAction):
115
115
  and (active_reservation_id is not None)
116
116
  and (previous_reservation_id == active_reservation_id)
117
117
  ):
118
+ logger.info(
119
+ f"Reason: {active_reservation_data.get('reason', '')}"
120
+ )
118
121
  self.primitive.provisioning.add_reservation_authorized_keys(
119
122
  reservation_id=active_reservation_id
120
123
  )
@@ -127,7 +130,7 @@ class Monitor(BaseAction):
127
130
  reservation_id=active_reservation_id
128
131
  )
129
132
  )
130
- job_run_id = job_run_data.get("id")
133
+ job_run_id = job_run_data.get("id", None)
131
134
 
132
135
  # Golden state for normal reservation
133
136
  if not job_run_id and active_reservation_id:
@@ -189,14 +189,13 @@ class Reservations(BaseAction):
189
189
  )
190
190
 
191
191
  while job_runs_for_reservation is None or job_runs_for_reservation.data is None:
192
- logger.error("Error fetching job runs.")
193
192
  sleep_amount = 5
194
193
  logger.info(f"Error fetching job runs... [sleeping {sleep_amount} seconds]")
195
194
  sleep(sleep_amount)
196
195
  continue
197
196
 
198
197
  if not job_runs_for_reservation.data["jobRuns"]["edges"]:
199
- logger.error("No job runs found for the given reservation ID.")
198
+ logger.info("No job runs found for the given reservation ID.")
200
199
  return {}
201
200
 
202
201
  return job_runs_for_reservation.data["jobRuns"]["edges"][0]["node"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes