primitive 0.2.60__tar.gz → 0.2.63__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 (117) hide show
  1. {primitive-0.2.60 → primitive-0.2.63}/PKG-INFO +1 -1
  2. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/__about__.py +1 -1
  3. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/exec/actions.py +4 -0
  4. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/graphql/queries.py +4 -4
  5. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/provisioning/actions.py +14 -5
  6. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/provisioning/graphql/queries.py +1 -1
  7. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/graphql/queries.py +1 -1
  8. {primitive-0.2.60 → primitive-0.2.63}/.git-hooks/pre-commit +0 -0
  9. {primitive-0.2.60 → primitive-0.2.63}/.gitattributes +0 -0
  10. {primitive-0.2.60 → primitive-0.2.63}/.github/workflows/lint.yml +0 -0
  11. {primitive-0.2.60 → primitive-0.2.63}/.github/workflows/publish.yml +0 -0
  12. {primitive-0.2.60 → primitive-0.2.63}/.github/workflows/pyright.yml +0 -0
  13. {primitive-0.2.60 → primitive-0.2.63}/.gitignore +0 -0
  14. {primitive-0.2.60 → primitive-0.2.63}/.vscode/extensions.json +0 -0
  15. {primitive-0.2.60 → primitive-0.2.63}/.vscode/settings.json +0 -0
  16. {primitive-0.2.60 → primitive-0.2.63}/LICENSE.txt +0 -0
  17. {primitive-0.2.60 → primitive-0.2.63}/Makefile +0 -0
  18. {primitive-0.2.60 → primitive-0.2.63}/README.md +0 -0
  19. {primitive-0.2.60 → primitive-0.2.63}/linux setup.md +0 -0
  20. {primitive-0.2.60 → primitive-0.2.63}/pyproject.toml +0 -0
  21. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/__init__.py +0 -0
  22. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/agent/__init__.py +0 -0
  23. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/agent/actions.py +0 -0
  24. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/agent/commands.py +0 -0
  25. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/agent/runner.py +0 -0
  26. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/agent/uploader.py +0 -0
  27. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/auth/__init__.py +0 -0
  28. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/auth/actions.py +0 -0
  29. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/auth/commands.py +0 -0
  30. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/auth/graphql/__init__.py +0 -0
  31. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/auth/graphql/queries.py +0 -0
  32. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/cli.py +0 -0
  33. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/client.py +0 -0
  34. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/__init__.py +0 -0
  35. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/actions.py +0 -0
  36. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/commands.py +0 -0
  37. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/launch_agents.py +0 -0
  38. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/launch_service.py +0 -0
  39. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/daemons/ui.py +0 -0
  40. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/exec/__init__.py +0 -0
  41. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/exec/commands.py +0 -0
  42. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/exec/interactive.py +0 -0
  43. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/__init__.py +0 -0
  44. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/actions.py +0 -0
  45. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/commands.py +0 -0
  46. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/graphql/__init__.py +0 -0
  47. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/graphql/fragments.py +0 -0
  48. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/graphql/mutations.py +0 -0
  49. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/graphql/queries.py +0 -0
  50. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/files/ui.py +0 -0
  51. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/git/__init__.py +0 -0
  52. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/git/actions.py +0 -0
  53. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/git/commands.py +0 -0
  54. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/git/graphql/__init__.py +0 -0
  55. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/git/graphql/queries.py +0 -0
  56. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/graphql/__init__.py +0 -0
  57. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/graphql/relay.py +0 -0
  58. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/graphql/sdk.py +0 -0
  59. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/graphql/utility_fragments.py +0 -0
  60. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/__init__.py +0 -0
  61. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/actions.py +0 -0
  62. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/android.py +0 -0
  63. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/commands.py +0 -0
  64. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/graphql/__init__.py +0 -0
  65. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/graphql/fragments.py +0 -0
  66. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/graphql/mutations.py +0 -0
  67. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/graphql/queries.py +0 -0
  68. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/hardware/ui.py +0 -0
  69. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/__init__.py +0 -0
  70. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/actions.py +0 -0
  71. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/commands.py +0 -0
  72. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/graphql/__init__.py +0 -0
  73. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/graphql/fragments.py +0 -0
  74. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/jobs/graphql/mutations.py +0 -0
  75. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/messaging/__init__.py +0 -0
  76. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/messaging/provider.py +0 -0
  77. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/monitor/actions.py +0 -0
  78. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/monitor/commands.py +0 -0
  79. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/__init__.py +0 -0
  80. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/actions.py +0 -0
  81. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/commands.py +0 -0
  82. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/graphql/__init__.py +0 -0
  83. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/graphql/fragments.py +0 -0
  84. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/graphql/mutations.py +0 -0
  85. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/organizations/graphql/queries.py +0 -0
  86. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/__init__.py +0 -0
  87. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/actions.py +0 -0
  88. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/commands.py +0 -0
  89. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/graphql/__init__.py +0 -0
  90. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/graphql/fragments.py +0 -0
  91. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/graphql/mutations.py +0 -0
  92. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/projects/graphql/queries.py +0 -0
  93. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/provisioning/__init__.py +0 -0
  94. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/provisioning/graphql/__init__.py +0 -0
  95. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/__init__.py +0 -0
  96. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/actions.py +0 -0
  97. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/commands.py +0 -0
  98. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/graphql/__init__.py +0 -0
  99. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/graphql/fragments.py +0 -0
  100. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/reservations/graphql/mutations.py +0 -0
  101. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/__init__.py +0 -0
  102. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/actions.py +0 -0
  103. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/auth.py +0 -0
  104. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/cache.py +0 -0
  105. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/chunk_size.py +0 -0
  106. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/config.py +0 -0
  107. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/daemons.py +0 -0
  108. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/exceptions.py +0 -0
  109. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/logging.py +0 -0
  110. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/memory_size.py +0 -0
  111. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/printer.py +0 -0
  112. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/psutil.py +0 -0
  113. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/shell.py +0 -0
  114. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/text.py +0 -0
  115. {primitive-0.2.60 → primitive-0.2.63}/src/primitive/utils/x509.py +0 -0
  116. {primitive-0.2.60 → primitive-0.2.63}/tests/__init__.py +0 -0
  117. {primitive-0.2.60 → primitive-0.2.63}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: primitive
3
- Version: 0.2.60
3
+ Version: 0.2.63
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.60"
4
+ __version__ = "0.2.63"
@@ -69,6 +69,10 @@ class Exec(BaseAction):
69
69
  ssh_client = SSHClient()
70
70
  ssh_client.load_system_host_keys()
71
71
 
72
+ # if a failure case happens where the server is only accepting passwords
73
+ # ensure that `PubkeyAuthentication yes` is set in your ssh config
74
+ # this file is typically located at `/etc/ssh/sshd_config`
75
+
72
76
  ssh_client.connect(
73
77
  hostname=ssh_hostname,
74
78
  username=ssh_username,
@@ -74,7 +74,7 @@ query jobRuns(
74
74
  job_run_query = (
75
75
  job_run_fragment
76
76
  + """
77
- query jobRun($id: GlobalID!) {
77
+ query jobRun($id: ID!) {
78
78
  jobRun(id: $id) {
79
79
  ...JobRunFragment
80
80
  }
@@ -83,7 +83,7 @@ query jobRun($id: GlobalID!) {
83
83
  )
84
84
 
85
85
  github_app_token_for_job_run_query = """
86
- query ghAppTokenForJobRun($jobRunId: GlobalID!) {
86
+ query ghAppTokenForJobRun($jobRunId: ID!) {
87
87
  ghAppTokenForJobRun(jobRunId: $jobRunId)
88
88
  }
89
89
  """
@@ -91,7 +91,7 @@ query ghAppTokenForJobRun($jobRunId: GlobalID!) {
91
91
  job_run_status_query = (
92
92
  job_run_status_fragment
93
93
  + """
94
- query jobRun($id: GlobalID!) {
94
+ query jobRun($id: ID!) {
95
95
  jobRun(id: $id) {
96
96
  ...JobRunStatusFragment
97
97
  }
@@ -101,7 +101,7 @@ query jobRun($id: GlobalID!) {
101
101
 
102
102
 
103
103
  job_secrets_for_job_run_query = """
104
- query jobSecretsForJobRun($jobRunId: GlobalID!) {
104
+ query jobSecretsForJobRun($jobRunId: ID!) {
105
105
  jobSecretsForJobRun(jobRunId: $jobRunId)
106
106
  }
107
107
  """
@@ -8,7 +8,8 @@ from ..utils.auth import guard
8
8
  from .graphql.queries import authorized_keys_query
9
9
 
10
10
  HOME_DIRECTORY = Path.home()
11
- AUTHORIZED_KEYS_FILEPATH = Path(HOME_DIRECTORY / ".ssh" / "authorized_keys")
11
+ SSH_DIR = Path(HOME_DIRECTORY / ".ssh")
12
+ AUTHORIZED_KEYS_FILEPATH = SSH_DIR.joinpath("authorized_keys")
12
13
 
13
14
 
14
15
  class Provisioning(BaseAction):
@@ -24,8 +25,16 @@ class Provisioning(BaseAction):
24
25
  return result.data["authorizedKeys"]
25
26
 
26
27
  def add_reservation_authorized_keys(self, reservation_id: str) -> None:
27
- AUTHORIZED_KEYS_BACKUP_FILEPATH = Path(
28
- HOME_DIRECTORY / ".ssh" / f"authorized_keys.bak-{reservation_id}"
28
+ if SSH_DIR.exists() is False:
29
+ SSH_DIR.mkdir(parents=True, exist_ok=True)
30
+ SSH_DIR.chmod(0o700)
31
+
32
+ if AUTHORIZED_KEYS_FILEPATH.exists() is False:
33
+ AUTHORIZED_KEYS_FILEPATH.touch()
34
+ AUTHORIZED_KEYS_FILEPATH.chmod(0o600)
35
+
36
+ AUTHORIZED_KEYS_BACKUP_FILEPATH = SSH_DIR.joinpath(
37
+ f"authorized_keys.bak-{reservation_id}"
29
38
  )
30
39
 
31
40
  if AUTHORIZED_KEYS_FILEPATH.exists():
@@ -47,8 +56,8 @@ class Provisioning(BaseAction):
47
56
  # self.primitive.sshd.reload()
48
57
 
49
58
  def remove_reservation_authorized_keys(self, reservation_id: str) -> None:
50
- AUTHORIZED_KEYS_BACKUP_FILEPATH = Path(
51
- HOME_DIRECTORY / ".ssh" / f"authorized_keys.bak-{reservation_id}"
59
+ AUTHORIZED_KEYS_BACKUP_FILEPATH = SSH_DIR.joinpath(
60
+ f"authorized_keys.bak-{reservation_id}"
52
61
  )
53
62
 
54
63
  if AUTHORIZED_KEYS_BACKUP_FILEPATH.exists():
@@ -1,5 +1,5 @@
1
1
  authorized_keys_query = """
2
- query authorizedKeys($reservationId: GlobalID!) {
2
+ query authorizedKeys($reservationId: ID!) {
3
3
  authorizedKeys(reservationId: $reservationId)
4
4
  }
5
5
  """
@@ -38,7 +38,7 @@ query reservations(
38
38
  reservation_query = (
39
39
  reservation_fragment
40
40
  + """
41
- query reservation($id: GlobalID!) {
41
+ query reservation($id: ID!) {
42
42
  reservation(id: $id) {
43
43
  ...ReservationFragment
44
44
  }
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