primitive 0.2.68__py3-none-any.whl → 0.2.72__py3-none-any.whl
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.
Potentially problematic release.
This version of primitive might be problematic. Click here for more details.
- primitive/__about__.py +1 -1
- primitive/agent/actions.py +8 -5
- primitive/agent/pxe.py +71 -0
- primitive/agent/runner.py +56 -45
- primitive/cli.py +2 -0
- primitive/client.py +2 -0
- primitive/files/actions.py +23 -1
- primitive/hardware/actions.py +202 -2
- primitive/hardware/commands.py +13 -2
- primitive/messaging/provider.py +1 -0
- primitive/monitor/actions.py +11 -6
- primitive/network/actions.py +89 -44
- primitive/network/commands.py +17 -6
- primitive/network/ssh.py +53 -12
- primitive/network/ui.py +9 -3
- primitive/operating_systems/__init__.py +0 -0
- primitive/operating_systems/actions.py +473 -0
- primitive/operating_systems/commands.py +246 -0
- primitive/operating_systems/graphql/__init__.py +0 -0
- primitive/operating_systems/graphql/mutations.py +32 -0
- primitive/operating_systems/graphql/queries.py +36 -0
- primitive/organizations/actions.py +6 -0
- primitive/utils/cache.py +11 -0
- primitive/utils/checksums.py +44 -0
- {primitive-0.2.68.dist-info → primitive-0.2.72.dist-info}/METADATA +1 -1
- {primitive-0.2.68.dist-info → primitive-0.2.72.dist-info}/RECORD +29 -21
- {primitive-0.2.68.dist-info → primitive-0.2.72.dist-info}/WHEEL +0 -0
- {primitive-0.2.68.dist-info → primitive-0.2.72.dist-info}/entry_points.txt +0 -0
- {primitive-0.2.68.dist-info → primitive-0.2.72.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import click
|
|
2
|
+
import typing
|
|
3
|
+
from loguru import logger
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
if typing.TYPE_CHECKING:
|
|
7
|
+
from ..client import Primitive
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@click.group("operating-systems")
|
|
11
|
+
@click.pass_context
|
|
12
|
+
def cli(context):
|
|
13
|
+
"Operating Systems"
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@cli.command("list")
|
|
18
|
+
@click.option(
|
|
19
|
+
"--organization-slug",
|
|
20
|
+
help="Organization slug to list operating systems for",
|
|
21
|
+
required=False,
|
|
22
|
+
)
|
|
23
|
+
@click.pass_context
|
|
24
|
+
def operating_systems_list_command(context, organization_slug):
|
|
25
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
26
|
+
|
|
27
|
+
organization = (
|
|
28
|
+
primitive.organizations.get_organization(slug=organization_slug)
|
|
29
|
+
if organization_slug
|
|
30
|
+
else primitive.organizations.get_default_organization()
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if not organization:
|
|
34
|
+
if organization_slug:
|
|
35
|
+
logger.error(f"No organization found with slug {organization_slug}")
|
|
36
|
+
else:
|
|
37
|
+
logger.error("Failed to fetch default organization")
|
|
38
|
+
|
|
39
|
+
operating_systems = primitive.operating_systems.list(
|
|
40
|
+
organization_id=organization["id"]
|
|
41
|
+
)
|
|
42
|
+
operating_system_slugs = [
|
|
43
|
+
operating_system["slug"] for operating_system in operating_systems
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
newline = "\n"
|
|
47
|
+
logger.info(
|
|
48
|
+
f"Operating systems: {newline}- {f'{newline}- '.join(operating_system_slugs)}"
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@cli.command("create")
|
|
53
|
+
@click.option("--slug", help="Slug for created operating system", required=True)
|
|
54
|
+
@click.option(
|
|
55
|
+
"--iso-file", help="Path to operating system iso file to upload", required=True
|
|
56
|
+
)
|
|
57
|
+
@click.option(
|
|
58
|
+
"--checksum-file",
|
|
59
|
+
help="Path to operating system checksum file to upload",
|
|
60
|
+
required=True,
|
|
61
|
+
)
|
|
62
|
+
@click.option(
|
|
63
|
+
"--checksum-file-type", help="The type of the checksum file", required=True
|
|
64
|
+
)
|
|
65
|
+
@click.option(
|
|
66
|
+
"--organization-slug",
|
|
67
|
+
help="Organization to create the operating system in",
|
|
68
|
+
required=False,
|
|
69
|
+
)
|
|
70
|
+
@click.pass_context
|
|
71
|
+
def create_command(
|
|
72
|
+
context, slug, iso_file, checksum_file, checksum_file_type, organization_slug
|
|
73
|
+
):
|
|
74
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
75
|
+
|
|
76
|
+
organization = (
|
|
77
|
+
primitive.organizations.get_organization(slug=organization_slug)
|
|
78
|
+
if organization_slug
|
|
79
|
+
else primitive.organizations.get_default_organization()
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
if not organization:
|
|
83
|
+
if organization_slug:
|
|
84
|
+
logger.error(f"No organization found with slug {organization_slug}")
|
|
85
|
+
return
|
|
86
|
+
else:
|
|
87
|
+
logger.error("Failed to fetch default organization")
|
|
88
|
+
return
|
|
89
|
+
|
|
90
|
+
try:
|
|
91
|
+
primitive.operating_systems.create(
|
|
92
|
+
slug=slug,
|
|
93
|
+
iso_file=iso_file,
|
|
94
|
+
checksum_file=checksum_file,
|
|
95
|
+
checksum_file_type=checksum_file_type,
|
|
96
|
+
organization_id=organization["id"],
|
|
97
|
+
)
|
|
98
|
+
except Exception as error:
|
|
99
|
+
logger.error(error)
|
|
100
|
+
return
|
|
101
|
+
|
|
102
|
+
logger.success("Operating system created in primitive.")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@cli.command("download")
|
|
106
|
+
@click.option("--id", help="Operating system ID", required=False)
|
|
107
|
+
@click.option("--slug", help="Operating system slug", required=False)
|
|
108
|
+
@click.option("--organization-slug", help="Organization slug", required=False)
|
|
109
|
+
@click.option(
|
|
110
|
+
"--directory",
|
|
111
|
+
help="Directory to download the operating system files to",
|
|
112
|
+
required=False,
|
|
113
|
+
)
|
|
114
|
+
@click.pass_context
|
|
115
|
+
def download(context, id, slug, organization_slug, directory):
|
|
116
|
+
if not (id or slug):
|
|
117
|
+
raise click.UsageError("You must provide either --id or --slug.")
|
|
118
|
+
if id and slug:
|
|
119
|
+
raise click.UsageError("You can only specify one of --id or --slug.")
|
|
120
|
+
|
|
121
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
122
|
+
|
|
123
|
+
organization = (
|
|
124
|
+
primitive.organizations.get_organization(slug=organization_slug)
|
|
125
|
+
if organization_slug
|
|
126
|
+
else primitive.organizations.get_default_organization()
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
if not organization:
|
|
130
|
+
if organization_slug:
|
|
131
|
+
logger.error(f"No organization found with slug {organization_slug}")
|
|
132
|
+
return
|
|
133
|
+
else:
|
|
134
|
+
logger.error("Failed to fetch default organization")
|
|
135
|
+
return
|
|
136
|
+
|
|
137
|
+
try:
|
|
138
|
+
operating_system_directory = primitive.operating_systems.download(
|
|
139
|
+
id=id, slug=slug, organization_id=organization["id"], directory=directory
|
|
140
|
+
)
|
|
141
|
+
except Exception as error:
|
|
142
|
+
logger.error(error)
|
|
143
|
+
return
|
|
144
|
+
|
|
145
|
+
logger.success(
|
|
146
|
+
f"Successfully downloaded operating system to {operating_system_directory}"
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@cli.group("remotes")
|
|
151
|
+
@click.pass_context
|
|
152
|
+
def remotes(context):
|
|
153
|
+
"Remotes"
|
|
154
|
+
pass
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
@remotes.command("download")
|
|
158
|
+
@click.pass_context
|
|
159
|
+
@click.argument("operating-system")
|
|
160
|
+
@click.option(
|
|
161
|
+
"--directory",
|
|
162
|
+
help="Directory to download the operating system files to",
|
|
163
|
+
required=False,
|
|
164
|
+
)
|
|
165
|
+
def operating_system_remotes_download_command(
|
|
166
|
+
context, operating_system, directory=None
|
|
167
|
+
):
|
|
168
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
169
|
+
|
|
170
|
+
try:
|
|
171
|
+
primitive.operating_systems.download_remote(
|
|
172
|
+
remote_operating_system_name=operating_system, directory=directory
|
|
173
|
+
)
|
|
174
|
+
except Exception as error:
|
|
175
|
+
logger.error(error)
|
|
176
|
+
return
|
|
177
|
+
|
|
178
|
+
logger.success(f"Successfully downloaded operating system files to {directory}")
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@remotes.command("mirror")
|
|
182
|
+
@click.pass_context
|
|
183
|
+
@click.argument("operating-system")
|
|
184
|
+
@click.option("--slug", help="Slug of the operating system", required=False)
|
|
185
|
+
@click.option(
|
|
186
|
+
"--organization-slug",
|
|
187
|
+
help="Slug of the organization to upload the operating system to",
|
|
188
|
+
required=False,
|
|
189
|
+
)
|
|
190
|
+
@click.option(
|
|
191
|
+
"--directory",
|
|
192
|
+
help="Directory to download the operating system files to",
|
|
193
|
+
required=False,
|
|
194
|
+
)
|
|
195
|
+
def operating_system_mirror_command(
|
|
196
|
+
context, operating_system, slug=None, organization_slug=None, directory=None
|
|
197
|
+
):
|
|
198
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
199
|
+
|
|
200
|
+
organization = (
|
|
201
|
+
primitive.organizations.get_organization(slug=organization_slug)
|
|
202
|
+
if organization_slug
|
|
203
|
+
else primitive.organizations.get_default_organization()
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
if not organization:
|
|
207
|
+
if organization_slug:
|
|
208
|
+
logger.error(f"No organization found with slug {organization_slug}.")
|
|
209
|
+
return
|
|
210
|
+
else:
|
|
211
|
+
logger.error("Failed to fetch default organization.")
|
|
212
|
+
return
|
|
213
|
+
|
|
214
|
+
try:
|
|
215
|
+
iso_file_path, checksum_file_path = primitive.operating_systems.download_remote(
|
|
216
|
+
operating_system, directory=directory
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
checksum_file_type = primitive.operating_systems.get_remote_info(
|
|
220
|
+
operating_system
|
|
221
|
+
)["checksum_file_type"]
|
|
222
|
+
|
|
223
|
+
primitive.operating_systems.create(
|
|
224
|
+
slug=slug if slug else operating_system,
|
|
225
|
+
iso_file=iso_file_path,
|
|
226
|
+
checksum_file=checksum_file_path,
|
|
227
|
+
checksum_file_type=checksum_file_type.value,
|
|
228
|
+
organization_id=organization["id"],
|
|
229
|
+
)
|
|
230
|
+
except Exception as error:
|
|
231
|
+
logger.error(error)
|
|
232
|
+
return
|
|
233
|
+
|
|
234
|
+
logger.success("Successfully mirrored operating system")
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
@remotes.command("list")
|
|
238
|
+
@click.pass_context
|
|
239
|
+
def remote_operating_systems_list_command(context):
|
|
240
|
+
primitive: Primitive = context.obj.get("PRIMITIVE")
|
|
241
|
+
remotes_list = primitive.operating_systems.list_remotes()
|
|
242
|
+
remote_slugs = [remote["slug"] for remote in remotes_list]
|
|
243
|
+
newline = "\n"
|
|
244
|
+
logger.info(
|
|
245
|
+
f"Remote operating systems: {newline}- {f'{newline}- '.join(remote_slugs)}"
|
|
246
|
+
)
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from primitive.graphql.utility_fragments import operation_info_fragment
|
|
2
|
+
|
|
3
|
+
operating_system_create_mutation = (
|
|
4
|
+
operation_info_fragment
|
|
5
|
+
+ """
|
|
6
|
+
mutation operatingSystemCreate($input: OperatingSystemInput!) {
|
|
7
|
+
operatingSystemCreate(input: $input) {
|
|
8
|
+
... on OperatingSystem {
|
|
9
|
+
id
|
|
10
|
+
pk
|
|
11
|
+
createdAt
|
|
12
|
+
updatedAt
|
|
13
|
+
slug
|
|
14
|
+
organization {
|
|
15
|
+
id
|
|
16
|
+
slug
|
|
17
|
+
}
|
|
18
|
+
isoFile {
|
|
19
|
+
id
|
|
20
|
+
fileName
|
|
21
|
+
}
|
|
22
|
+
checksumFile {
|
|
23
|
+
id
|
|
24
|
+
fileName
|
|
25
|
+
}
|
|
26
|
+
checksumFileType
|
|
27
|
+
}
|
|
28
|
+
...OperationInfoFragment
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
"""
|
|
32
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
operating_system_list_query = """
|
|
2
|
+
query operatingSystemList(
|
|
3
|
+
$filters: OperatingSystemFilters
|
|
4
|
+
) {
|
|
5
|
+
operatingSystemList(
|
|
6
|
+
filters: $filters
|
|
7
|
+
) {
|
|
8
|
+
totalCount
|
|
9
|
+
edges {
|
|
10
|
+
cursor
|
|
11
|
+
node {
|
|
12
|
+
... on OperatingSystem {
|
|
13
|
+
id
|
|
14
|
+
pk
|
|
15
|
+
createdAt
|
|
16
|
+
updatedAt
|
|
17
|
+
slug
|
|
18
|
+
organization {
|
|
19
|
+
id
|
|
20
|
+
slug
|
|
21
|
+
}
|
|
22
|
+
isoFile {
|
|
23
|
+
id
|
|
24
|
+
fileName
|
|
25
|
+
}
|
|
26
|
+
checksumFile {
|
|
27
|
+
id
|
|
28
|
+
fileName
|
|
29
|
+
}
|
|
30
|
+
checksumFileType
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
"""
|
|
@@ -67,3 +67,9 @@ class Organizations(BaseAction):
|
|
|
67
67
|
)
|
|
68
68
|
organizations = [edge["node"] for edge in result.data["organizations"]["edges"]]
|
|
69
69
|
return organizations[0]
|
|
70
|
+
|
|
71
|
+
@guard
|
|
72
|
+
def get_default_organization(self):
|
|
73
|
+
whoami_result = self.primitive.auth.whoami()
|
|
74
|
+
default_organization = whoami_result.data["whoami"]["defaultOrganization"]
|
|
75
|
+
return default_organization
|
primitive/utils/cache.py
CHANGED
|
@@ -67,3 +67,14 @@ def get_deps_cache() -> Path:
|
|
|
67
67
|
deps_dir.mkdir(parents=True, exist_ok=True)
|
|
68
68
|
|
|
69
69
|
return deps_dir
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def get_operating_systems_cache() -> Path:
|
|
73
|
+
cache_dir = get_cache_dir()
|
|
74
|
+
|
|
75
|
+
deps_dir = cache_dir / "operating-systems"
|
|
76
|
+
|
|
77
|
+
if not deps_dir.exists():
|
|
78
|
+
deps_dir.mkdir(parents=True, exist_ok=True)
|
|
79
|
+
|
|
80
|
+
return deps_dir
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import hashlib
|
|
2
|
+
import re
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from loguru import logger
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def calculate_sha256(file_path: str) -> str:
|
|
9
|
+
file_path = Path(file_path)
|
|
10
|
+
|
|
11
|
+
if not file_path.exists():
|
|
12
|
+
logger.error(f"File '{file_path}' does not exist.")
|
|
13
|
+
raise FileNotFoundError(file_path)
|
|
14
|
+
|
|
15
|
+
sha256_hash = hashlib.sha256()
|
|
16
|
+
with file_path.open("rb") as f:
|
|
17
|
+
for byte_block in iter(lambda: f.read(8192), b""):
|
|
18
|
+
sha256_hash.update(byte_block)
|
|
19
|
+
return sha256_hash.hexdigest()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ChecksumNotFoundInFile(Exception):
|
|
23
|
+
pass
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def get_checksum_from_file(checksum_file_path: str, file_name: str) -> str | None:
|
|
27
|
+
checksum_file_path = Path(checksum_file_path)
|
|
28
|
+
|
|
29
|
+
if not checksum_file_path.exists():
|
|
30
|
+
logger.error(f"File '{checksum_file_path}' does not exist.")
|
|
31
|
+
raise FileNotFoundError(checksum_file_path)
|
|
32
|
+
|
|
33
|
+
with checksum_file_path.open("r") as f:
|
|
34
|
+
for line in f:
|
|
35
|
+
match = re.match(r"^([a-fA-F0-9]{64})\s+\*?(.*)$", line.strip())
|
|
36
|
+
if match:
|
|
37
|
+
sha256_hash, current_file_name = match.groups()
|
|
38
|
+
if current_file_name == file_name:
|
|
39
|
+
return sha256_hash
|
|
40
|
+
|
|
41
|
+
logger.error(
|
|
42
|
+
f"No matching checksum entry found for {file_name} in {checksum_file_path}."
|
|
43
|
+
)
|
|
44
|
+
raise ChecksumNotFoundInFile(checksum_file_path)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: primitive
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.72
|
|
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,11 +1,12 @@
|
|
|
1
|
-
primitive/__about__.py,sha256=
|
|
1
|
+
primitive/__about__.py,sha256=pYIjjw7lxGTZ015Ir3hYhbZnOjU5lRO-cLrPQE5MBpw,130
|
|
2
2
|
primitive/__init__.py,sha256=bwKdgggKNVssJFVPfKSxqFMz4IxSr54WWbmiZqTMPNI,106
|
|
3
|
-
primitive/cli.py,sha256=
|
|
4
|
-
primitive/client.py,sha256=
|
|
3
|
+
primitive/cli.py,sha256=ga1TcPKyUkGNGZ76CjIQqTKWn1r9di5k_uRbLljY07w,2745
|
|
4
|
+
primitive/client.py,sha256=EyXLOFwKUT_ZB3at5m4hbdtjgaKVVFoiDdE0bP0_JfI,3966
|
|
5
5
|
primitive/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
primitive/agent/actions.py,sha256=
|
|
6
|
+
primitive/agent/actions.py,sha256=SnYJQKOQgzGL2-zopWT2ioy9w7OP9pqAbS3itMq-614,9528
|
|
7
7
|
primitive/agent/commands.py,sha256=o847pK7v7EWQGG67tky6a33qtwoutX6LZrP2FIS_NOk,388
|
|
8
|
-
primitive/agent/
|
|
8
|
+
primitive/agent/pxe.py,sha256=XTu9Plj2mlmlL6YjcDqlfS_IGBK4i7aGKhTL-k_wnBU,2542
|
|
9
|
+
primitive/agent/runner.py,sha256=nel7NiqWoIh5HFdoor9YIsPpMBJPHsevg3XtAHrKvc0,16619
|
|
9
10
|
primitive/agent/uploader.py,sha256=DT_Nzt5eOTm_uRcYKm1sjBBaQZzp5iNZ_uN5XktfQ30,3382
|
|
10
11
|
primitive/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
12
|
primitive/auth/actions.py,sha256=9NIEXJ1BNJutJs6AMMSjMN_ziONUAUhY_xHwojYJCLA,942
|
|
@@ -23,7 +24,7 @@ primitive/exec/actions.py,sha256=rcAMP7hxJZhQUwx-orduCUratzMwVRknX14QSyQLdcA,434
|
|
|
23
24
|
primitive/exec/commands.py,sha256=66LO2kkJC-ynNZQpUCXv4Ol15QoacdSZAHblePDcmLo,510
|
|
24
25
|
primitive/exec/interactive.py,sha256=TscY6s2ZysijidKPheq6y-fCErUVLS0zcdTW8XyFWGI,2435
|
|
25
26
|
primitive/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
primitive/files/actions.py,sha256=
|
|
27
|
+
primitive/files/actions.py,sha256=56I4tbGjXH117uZLghu2vgz6-ziM-UzZmCYpQndo1bg,15705
|
|
27
28
|
primitive/files/commands.py,sha256=-U0ArpZXDWltmkELG2SYIOLbaiMC6Zv24X9zZ29aqCE,3021
|
|
28
29
|
primitive/files/ui.py,sha256=lYnfu6gnZ5f-C28wps_egVDz8tdjL5P4361uxpSyfvY,919
|
|
29
30
|
primitive/files/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -40,9 +41,9 @@ primitive/graphql/relay.py,sha256=bmij2AjdpURQ6GGVCxwWhauF-r_SxuAU2oJ4sDbLxpI,72
|
|
|
40
41
|
primitive/graphql/sdk.py,sha256=dE4TD8KiTKw3Y0uiw5XrIcuZGqexE47eSlPaPD6jDGo,1545
|
|
41
42
|
primitive/graphql/utility_fragments.py,sha256=uIjwILC4QtWNyO5vu77VjQf_p0jvP3A9q_6zRq91zqs,303
|
|
42
43
|
primitive/hardware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
-
primitive/hardware/actions.py,sha256=
|
|
44
|
+
primitive/hardware/actions.py,sha256=WdI7dd7TJen6xF8h63kH8PbCXydJfHlFF56QZdAgh5w,44645
|
|
44
45
|
primitive/hardware/android.py,sha256=tu7pBPxWFrIwb_mm5CEdFFf1_veNDOKjOCQg13i_Lh4,2758
|
|
45
|
-
primitive/hardware/commands.py,sha256=
|
|
46
|
+
primitive/hardware/commands.py,sha256=ZAbrqGuK4c4aCYPySaTUt51qFsf_F3Zsb0KaLfeVnmA,5045
|
|
46
47
|
primitive/hardware/ui.py,sha256=12rucuZ2s-w5R4bKyxON5dEbrdDnVf5sbj3K_nbdo44,2473
|
|
47
48
|
primitive/hardware/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
49
|
primitive/hardware/graphql/fragments.py,sha256=FRPAKB3KBfVxVm69HeYCxvvrdkW-O8CR46Inbk3wgc8,481
|
|
@@ -56,17 +57,23 @@ primitive/jobs/graphql/fragments.py,sha256=I-Ly0TGARt_TdenLQ7877pGLWBzono_IMj7NC
|
|
|
56
57
|
primitive/jobs/graphql/mutations.py,sha256=8ASvCmwQh7cMeeiykOdYaYVryG8FRIuVF6v_J8JJZuw,219
|
|
57
58
|
primitive/jobs/graphql/queries.py,sha256=57B5mSnAYjNEFFk1P69odON0fqkf7FyhsA316pcxb6g,1712
|
|
58
59
|
primitive/messaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
-
primitive/messaging/provider.py,sha256=
|
|
60
|
-
primitive/monitor/actions.py,sha256=
|
|
60
|
+
primitive/messaging/provider.py,sha256=BCkhRq_F6jKqf26x-9Da3ebCqgpjwxynRHIu7I7iFeQ,4432
|
|
61
|
+
primitive/monitor/actions.py,sha256=Ky4KPNJc5c0LaxZkDs8-7pP2bQ6xNBFxmNf8eAmi7ag,11079
|
|
61
62
|
primitive/monitor/commands.py,sha256=VDlEL_Qpm_ysHxug7VpI0cVAZ0ny6AS91Y58D7F1zkU,409
|
|
62
63
|
primitive/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
primitive/network/actions.py,sha256=
|
|
64
|
-
primitive/network/commands.py,sha256=
|
|
64
|
+
primitive/network/actions.py,sha256=iw6X5zKdsFCQ8vAw_glEI6sdtVUeXdauW33PjsKL_QU,18874
|
|
65
|
+
primitive/network/commands.py,sha256=wVszHkmmY85dwlEJR726vqx6rDcfD4XtAptgiHf5p4U,1361
|
|
65
66
|
primitive/network/redfish.py,sha256=uOtAS_Dwc4I4bnWKNSTCQ_xsj5LTtRzW5v2P_fWaSJM,4248
|
|
66
|
-
primitive/network/ssh.py,sha256=
|
|
67
|
-
primitive/network/ui.py,sha256
|
|
67
|
+
primitive/network/ssh.py,sha256=evtZFWFsKfuN4MeFtPpvzjBM1a5Q0O06rxd6ZkSzoJo,4377
|
|
68
|
+
primitive/network/ui.py,sha256=-AV6OD1O3_nsTrgS-W49R6LfDN0vmXmz0Dli_S--LxE,685
|
|
69
|
+
primitive/operating_systems/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
primitive/operating_systems/actions.py,sha256=SNeYC4QgG0H-ybmIQaAXhDj6c9yYG6BgIQfzU2wm8hY,16993
|
|
71
|
+
primitive/operating_systems/commands.py,sha256=4qG3Ggf-sqLa0Cr6MErpjd6TOoc5_bE5tgJ8LigKKnw,7288
|
|
72
|
+
primitive/operating_systems/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
primitive/operating_systems/graphql/mutations.py,sha256=L2ZeWEfBK22QAv2AsfDQWHKcwH5SWvMvcmOOftiEM7w,699
|
|
74
|
+
primitive/operating_systems/graphql/queries.py,sha256=TJzcYbFP4SowsFJb8Wv8Q1r5_gCZRKbobEzniu9LWFk,738
|
|
68
75
|
primitive/organizations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
-
primitive/organizations/actions.py,sha256=
|
|
76
|
+
primitive/organizations/actions.py,sha256=jkuAUoQexh4antNQd-0JWsAzCFy-e9yQeBc1JlaqqfU,2087
|
|
70
77
|
primitive/organizations/commands.py,sha256=_dwgVEJCqMa5VgB_7P1wLPFc0AuT1p9dtyR9JRr4kpw,487
|
|
71
78
|
primitive/organizations/graphql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
79
|
primitive/organizations/graphql/fragments.py,sha256=a1qKq4FZB5qze0XTo1fOUeGAscIasjn_Ig4gA2_vStY,142
|
|
@@ -93,7 +100,8 @@ primitive/reservations/graphql/queries.py,sha256=BP7ON6QfChZRlY_YTyUbxM_tEPSfJqc
|
|
|
93
100
|
primitive/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
101
|
primitive/utils/actions.py,sha256=Gm84YgXFSpilpYqjG5nxcQTdRSp3waN7ZorzIzMBLtc,208
|
|
95
102
|
primitive/utils/auth.py,sha256=uBIZNPF2CpbaPV2UMi6eWVUKghV6WIm-pG3-UM29bNs,1465
|
|
96
|
-
primitive/utils/cache.py,sha256=
|
|
103
|
+
primitive/utils/cache.py,sha256=61FwFdUXBGGDT5ezM0dUDFDcWPoCKcUFDcesuKNu0ew,1804
|
|
104
|
+
primitive/utils/checksums.py,sha256=KoSdD6TaW70O67DfbFAoT9BAr7zN4txYg7P8xJC19F4,1333
|
|
97
105
|
primitive/utils/chunk_size.py,sha256=PAuVuirUTA9oRXyjo1c6MWxo31WVBRkWMuWw-AS58Bw,2914
|
|
98
106
|
primitive/utils/config.py,sha256=DlFM5Nglo22WPtbpZSVtH7NX-PTMaKYlcrUE7GPRG4c,1058
|
|
99
107
|
primitive/utils/daemons.py,sha256=mSoSHitiGfS4KYAEK9sKsiv_YcACHKgY3qISnDpUUIE,1086
|
|
@@ -105,8 +113,8 @@ primitive/utils/psutil.py,sha256=xa7ef435UL37jyjmUPbEqCO2ayQMpCs0HCrxVEvLcuM,763
|
|
|
105
113
|
primitive/utils/shell.py,sha256=Z4zxmOaSyGCrS0D6I436iQci-ewHLt4UxVg1CD9Serc,2171
|
|
106
114
|
primitive/utils/text.py,sha256=XiESMnlhjQ534xE2hMNf08WehE1SKaYFRNih0MmnK0k,829
|
|
107
115
|
primitive/utils/x509.py,sha256=HwHRPqakTHWd40ny-9O_yNknSL1Cxo50O0UCjXHFq04,3796
|
|
108
|
-
primitive-0.2.
|
|
109
|
-
primitive-0.2.
|
|
110
|
-
primitive-0.2.
|
|
111
|
-
primitive-0.2.
|
|
112
|
-
primitive-0.2.
|
|
116
|
+
primitive-0.2.72.dist-info/METADATA,sha256=L8m-fkO2D2xT8U2iUqr62x_NCoIvG8Rv3Em-RSlFAlY,3569
|
|
117
|
+
primitive-0.2.72.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
118
|
+
primitive-0.2.72.dist-info/entry_points.txt,sha256=p1K8DMCWka5FqLlqP1sPek5Uovy9jq8u51gUsP-z334,48
|
|
119
|
+
primitive-0.2.72.dist-info/licenses/LICENSE.txt,sha256=B8kmQMJ2sxYygjCLBk770uacaMci4mPSoJJ8WoDBY_c,1098
|
|
120
|
+
primitive-0.2.72.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|