zosmfrestapi 0.2.0__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.
@@ -0,0 +1,392 @@
1
+ from zosmfrestapi.models.software import (
2
+ CsiEntry,
3
+ Feature,
4
+ Fmid,
5
+ NonSmpeManagedDataset,
6
+ Product,
7
+ SmpeManagedDataset,
8
+ SmpeManagedDatasetZoneDddef,
9
+ SmpeManagedUnixDataset,
10
+ SoftwareInstance,
11
+ SoftwareInstanceWorkflow,
12
+ WorkflowLocation,
13
+ )
14
+
15
+ from .helpers import pdt
16
+
17
+
18
+ def make_swi(
19
+ system="TSTA",
20
+ description="Product A",
21
+ uuid="c66bb092-cf92-4db9-96fd-2073e3b826ae",
22
+ products=[],
23
+ workflows=[],
24
+ ):
25
+ return SoftwareInstance(
26
+ name="HOOLIE",
27
+ system=system,
28
+ description=description,
29
+ globalzone="OSHOOLI.GLOBAL.CSI",
30
+ targetzones=["TGT"],
31
+ categories=["FOO"],
32
+ productinforetrieved=pdt("2026-10-22T16:13:00Z"),
33
+ lastmodified=pdt("2026-10-02T10:35:38Z"),
34
+ modifiedby="FOOBAR",
35
+ created=pdt("2026-10-02T10:35:38Z"),
36
+ createdby="FOOO",
37
+ locked=None,
38
+ lockedby=None,
39
+ uuid=uuid,
40
+ workflows=workflows,
41
+ products=products,
42
+ )
43
+
44
+
45
+ def make_swi_with_product_and_workflow():
46
+ return make_swi(
47
+ products=[make_product()],
48
+ workflows=[
49
+ make_sw_workflow(),
50
+ make_sw_workflow(
51
+ name="Configuration",
52
+ description="Configure the software in your ServerPac order.",
53
+ location="OSHOOLI.WORKFLOW(HOOLSETU)",
54
+ ),
55
+ make_sw_workflow(
56
+ name="Verify_1",
57
+ description="Installation verification for your ServerPac order.",
58
+ location="OSHOOLI.WORKFLOW(HOOLIVP)",
59
+ ),
60
+ ],
61
+ )
62
+
63
+
64
+ def make_new_swi(products=[], workflows=[]):
65
+ return SoftwareInstance(
66
+ name="HOOLIE2",
67
+ system="TSTA",
68
+ globalzone="OSHOOLI.GLOBAL.CSI",
69
+ targetzones=["TGT"],
70
+ products=products,
71
+ workflows=workflows,
72
+ )
73
+
74
+
75
+ def make_new_swi_with_product():
76
+ return make_new_swi(products=[make_product()])
77
+
78
+
79
+ def make_new_swi_with_workflow():
80
+ return make_new_swi(workflows=[make_sw_workflow()])
81
+
82
+
83
+ def make_product():
84
+ return Product(
85
+ prodname="The Box III, Gavin Belson Signature Edition",
86
+ productid="1122-345",
87
+ release="01.03.00",
88
+ vendor="Hooli Software",
89
+ url="http://hooli.xyz",
90
+ features=[
91
+ Feature(
92
+ feature="The Box III, Middle Out Compression",
93
+ fmids=[
94
+ Fmid(
95
+ fmid="HOOMOC3",
96
+ description="The Box III, Middle Out Compression",
97
+ targetzones=[
98
+ "TGT",
99
+ ],
100
+ ),
101
+ ],
102
+ ),
103
+ ],
104
+ )
105
+
106
+
107
+ def make_sw_workflow(
108
+ name="About your order",
109
+ description="Information about your ServerPac order.",
110
+ location="OSHOOLI.WORKFLOW(HOOLWELC)",
111
+ ):
112
+ return SoftwareInstanceWorkflow(
113
+ name=name,
114
+ description=description,
115
+ location=WorkflowLocation(
116
+ smptype=None,
117
+ smpname=None,
118
+ dsname=location,
119
+ path=None,
120
+ ),
121
+ performonhostsystem=True,
122
+ )
123
+
124
+
125
+ def make_swi_datasets():
126
+ return {
127
+ "smpemanageddatasets": [
128
+ SmpeManagedDataset(
129
+ dsname="OSHOOLI.AHOOLBIN",
130
+ volumes=["FOOVOL"],
131
+ dstype="PDS",
132
+ recfm="FB",
133
+ lrecl="80",
134
+ blksize="27920",
135
+ tracks="1",
136
+ used="100",
137
+ extents="1",
138
+ dscategory=["DLIB"],
139
+ zones=["DLIB"],
140
+ zonedddefs=[SmpeManagedDatasetZoneDddef(zone="DLIB", dddefs=["AHOOLBIN"])],
141
+ msgs=None,
142
+ ),
143
+ SmpeManagedDataset(
144
+ dsname="OSHOOLI.AHOOLMOD",
145
+ volumes=["FOOVOL"],
146
+ dstype="PDS",
147
+ recfm="U",
148
+ lrecl="0",
149
+ blksize="32760",
150
+ tracks="1",
151
+ used="100",
152
+ extents="1",
153
+ dscategory=["DLIB"],
154
+ zones=["DLIB"],
155
+ zonedddefs=[SmpeManagedDatasetZoneDddef(zone="DLIB", dddefs=["AHOOLMOD"])],
156
+ msgs=None,
157
+ ),
158
+ SmpeManagedDataset(
159
+ dsname="OSHOOLI.GLOBAL.CSI",
160
+ volumes=["FOOVOL"],
161
+ dstype="VSAM",
162
+ recfm=None,
163
+ lrecl=None,
164
+ blksize=None,
165
+ tracks="2",
166
+ used=None,
167
+ extents=None,
168
+ dscategory=["SMP/E", "DLIB", "TARGET", "GLOBAL"],
169
+ zones=["GLOBAL", "TGT", "DLIB"],
170
+ zonedddefs=None,
171
+ msgs=None,
172
+ ),
173
+ SmpeManagedDataset(
174
+ dsname="OSHOOLI.SHOOLMOD",
175
+ volumes=["FOOVOL"],
176
+ dstype="PDS",
177
+ recfm="U",
178
+ lrecl="0",
179
+ blksize="32760",
180
+ tracks="1",
181
+ used="100",
182
+ extents="1",
183
+ dscategory=["TARGET"],
184
+ zones=["TGT"],
185
+ zonedddefs=[SmpeManagedDatasetZoneDddef(zone="TGT", dddefs=["SHOOLMOD"])],
186
+ msgs=None,
187
+ ),
188
+ SmpeManagedDataset(
189
+ dsname="OSHOOLI.SMPLOG",
190
+ volumes=["FOOVOL"],
191
+ dstype="SEQ",
192
+ recfm="VB",
193
+ lrecl="512",
194
+ blksize="5120",
195
+ tracks="1",
196
+ used="100",
197
+ extents="1",
198
+ dscategory=["SMP/E", "DLIB", "TARGET", "GLOBAL"],
199
+ zones=["DLIB", "GLOBAL", "TGT"],
200
+ zonedddefs=[
201
+ SmpeManagedDatasetZoneDddef(zone="DLIB", dddefs=["SMPLOG"]),
202
+ SmpeManagedDatasetZoneDddef(zone="GLOBAL", dddefs=["SMPLOG"]),
203
+ SmpeManagedDatasetZoneDddef(zone="TGT", dddefs=["SMPLOG"]),
204
+ ],
205
+ msgs=None,
206
+ ),
207
+ SmpeManagedDataset(
208
+ dsname="OSHOOLI.SMPPTS",
209
+ volumes=["FOOVOL"],
210
+ dstype="PDS",
211
+ recfm="FB",
212
+ lrecl="80",
213
+ blksize="27920",
214
+ tracks="1",
215
+ used="100",
216
+ extents="1",
217
+ dscategory=["SMP/E", "DLIB", "TARGET", "GLOBAL"],
218
+ zones=["DLIB", "GLOBAL", "TGT"],
219
+ zonedddefs=[
220
+ SmpeManagedDatasetZoneDddef(zone="DLIB", dddefs=["SMPPTS"]),
221
+ SmpeManagedDatasetZoneDddef(zone="GLOBAL", dddefs=["SMPPTS"]),
222
+ SmpeManagedDatasetZoneDddef(zone="TGT", dddefs=["SMPPTS"]),
223
+ ],
224
+ msgs=None,
225
+ ),
226
+ SmpeManagedDataset(
227
+ dsname="OSHOOLI.SMPSCDS",
228
+ volumes=["FOOVOL"],
229
+ dstype="PDS",
230
+ recfm="FB",
231
+ lrecl="80",
232
+ blksize="27920",
233
+ tracks="1",
234
+ used="100",
235
+ extents="1",
236
+ dscategory=["SMP/E", "TARGET"],
237
+ zones=["TGT"],
238
+ zonedddefs=[SmpeManagedDatasetZoneDddef(zone="TGT", dddefs=["SMPSCDS"])],
239
+ msgs=None,
240
+ ),
241
+ ],
242
+ "smpemanagedunixdatasets": [
243
+ SmpeManagedUnixDataset(
244
+ dsname="OSHOOLI.ZFS",
245
+ unixdirs=["/u/FOO/hooli/usr/lpp/hooli/"],
246
+ volumes=["FOOVOL"],
247
+ dstype="ZFS",
248
+ recfm=None,
249
+ lrecl=None,
250
+ blksize=None,
251
+ tracks="15",
252
+ used=None,
253
+ extents=None,
254
+ dscategory=["TARGET"],
255
+ zones=["TGT"],
256
+ zonedddefs=[SmpeManagedDatasetZoneDddef(zone="TGT", dddefs=["SHOOLDIR"])],
257
+ msgs=None,
258
+ )
259
+ ],
260
+ "nonsmpemanageddatasets": [
261
+ NonSmpeManagedDataset(
262
+ dsname="OSHOOLI.WORKFLOW",
263
+ volumes=["FOOVOL"],
264
+ dstype="PDSE",
265
+ recfm="VB",
266
+ lrecl="256",
267
+ blksize="32760",
268
+ tracks="1",
269
+ used="100",
270
+ extents="1",
271
+ dscategory=["WORKFLOW"],
272
+ unixdirs=None,
273
+ msgs=None,
274
+ )
275
+ ],
276
+ }
277
+
278
+
279
+ def make_csi_entry():
280
+ return CsiEntry(
281
+ entryname="HL00006",
282
+ entrytype="SYSMOD",
283
+ zonename="GLOBAL",
284
+ subentries=[
285
+ {
286
+ "BYPASS": [
287
+ "NO",
288
+ ],
289
+ "VER": None,
290
+ },
291
+ {
292
+ "DELLMOD": [
293
+ "NO",
294
+ ],
295
+ "VER": None,
296
+ },
297
+ {
298
+ "ELEMMOV": [
299
+ "NO",
300
+ ],
301
+ "VER": None,
302
+ },
303
+ {
304
+ "ERROR": [
305
+ "NO",
306
+ ],
307
+ "VER": None,
308
+ },
309
+ {
310
+ "FMID": [
311
+ "HOOMOC3",
312
+ ],
313
+ "VER": "1",
314
+ },
315
+ {
316
+ "SREL": [
317
+ "Z038",
318
+ ],
319
+ "VER": "1",
320
+ },
321
+ {
322
+ "SUPING": [
323
+ "HL00001",
324
+ "HL00002",
325
+ "HL00003",
326
+ "HL00004",
327
+ "HL00005",
328
+ ],
329
+ "VER": "1",
330
+ },
331
+ {
332
+ "HFS": [
333
+ "HOOLMOC",
334
+ ],
335
+ "VER": None,
336
+ },
337
+ {
338
+ "HOLDDATA": [
339
+ "SYSTEM(INT),DOC,HL00006",
340
+ ],
341
+ "VER": None,
342
+ },
343
+ {
344
+ "JCLIN": [
345
+ "NO",
346
+ ],
347
+ "VER": None,
348
+ },
349
+ {
350
+ "PROGRAM": [
351
+ "HOOLMOC",
352
+ ],
353
+ "VER": None,
354
+ },
355
+ {
356
+ "RECDATE": [
357
+ "20304",
358
+ ],
359
+ "VER": None,
360
+ },
361
+ {
362
+ "RECTIME": [
363
+ "13:44:10",
364
+ ],
365
+ "VER": None,
366
+ },
367
+ {
368
+ "REGEN": [
369
+ "NO",
370
+ ],
371
+ "VER": None,
372
+ },
373
+ {
374
+ "RENLMOD": [
375
+ "NO",
376
+ ],
377
+ "VER": None,
378
+ },
379
+ {
380
+ "RESTORE": [
381
+ "NO",
382
+ ],
383
+ "VER": None,
384
+ },
385
+ {
386
+ "SMODTYPE": [
387
+ "PTF",
388
+ ],
389
+ "VER": None,
390
+ },
391
+ ],
392
+ )
@@ -0,0 +1,281 @@
1
+ from zosmfrestapi.models.software_updates import (
2
+ MissingFixcat,
3
+ MissingUpdate,
4
+ MissingUpdateResolver,
5
+ SoftwareUpdate,
6
+ SoftwareUpdateZone,
7
+ UpdateErrorResults,
8
+ UpdateProcess,
9
+ UpdateResult,
10
+ UpdateSelection,
11
+ )
12
+
13
+ from .helpers import pdt
14
+
15
+
16
+ def make_completed_sw_update_proc():
17
+ return UpdateProcess(
18
+ targetzone="TGT",
19
+ selection=UpdateSelection(updates=["UO07777", "UO08888"]),
20
+ notes="",
21
+ processid=58,
22
+ started=pdt("2026-10-28T13:12:56Z"),
23
+ status="COMPLETED",
24
+ step="COMPLETE",
25
+ lastmodified=None,
26
+ completed=pdt("2026-10-28T13:13:47Z"),
27
+ error_results=None,
28
+ updates=[
29
+ UpdateResult(
30
+ fmid="HOOMOC3",
31
+ selectStatus="APPLIED",
32
+ name="UO07777",
33
+ ),
34
+ UpdateResult(
35
+ fmid="HOOMOC3",
36
+ selectStatus="APPLIED",
37
+ name="UO08888",
38
+ ),
39
+ UpdateResult(
40
+ fmid="HOOMOC3",
41
+ selectStatus="APPLIED",
42
+ name="UO09999",
43
+ ),
44
+ ],
45
+ holds=[],
46
+ )
47
+
48
+
49
+ def make_running_sw_update_proc():
50
+ return UpdateProcess(
51
+ targetzone="TGT",
52
+ selection=UpdateSelection(
53
+ updates=[
54
+ "HL00002",
55
+ ],
56
+ ),
57
+ notes="",
58
+ processid=58,
59
+ started=pdt("2026-10-29T13:45:49Z"),
60
+ status="RUNNING",
61
+ step="VERIFYING_UPDATES",
62
+ lastmodified=pdt("2026-10-29T13:46:04Z"),
63
+ completed=None,
64
+ error_results=None,
65
+ updates=[],
66
+ holds=[],
67
+ )
68
+
69
+
70
+ def make_suspended_sw_update_proc():
71
+ return UpdateProcess(
72
+ targetzone="TGT",
73
+ selection=UpdateSelection(updates=["HL00002"]),
74
+ notes="",
75
+ processid=58,
76
+ started=pdt("2026-10-29T13:45:49Z"),
77
+ status="SUSPENDED",
78
+ step="PRE_INSTALLATION_SUMMARY",
79
+ lastmodified=pdt("2026-10-29T13:46:24Z"),
80
+ completed=None,
81
+ error_results=None,
82
+ updates=[UpdateResult(fmid="", selectStatus="SELECTED", name="HL00002")],
83
+ holds=[],
84
+ )
85
+
86
+
87
+ def make_canceled_sw_update_proc():
88
+ return UpdateProcess(
89
+ targetzone="TGT",
90
+ selection=UpdateSelection(
91
+ updates=[
92
+ "UO07777",
93
+ "UO08888",
94
+ ],
95
+ ),
96
+ notes="",
97
+ processid=58,
98
+ started=pdt("2026-09-25T15:44:39Z"),
99
+ completed=pdt("2026-09-25T15:44:49Z"),
100
+ status="CANCELED",
101
+ step="PREPARING_UPDATES",
102
+ lastmodified=None,
103
+ holds=[],
104
+ updates=[],
105
+ error_results=UpdateErrorResults(
106
+ smpe_rc=12,
107
+ message="SMP/E detected missing required SYSMODs. "
108
+ "Check the Error report for the list of "
109
+ "missing SYSMODs.<br><br>RECEIVE the missing "
110
+ "SYSMODs into the global zone and retry the "
111
+ "step.",
112
+ detailedMessage="Missing SYSMODs: \n\n",
113
+ ),
114
+ )
115
+
116
+
117
+ def make_error_sw_update_proc():
118
+ return UpdateProcess(
119
+ targetzone="TGT",
120
+ selection=UpdateSelection(updates=["UO07777", "UO08888"]),
121
+ notes="",
122
+ processid=58,
123
+ started=pdt("2026-10-28T10:08:57Z"),
124
+ status="ERROR",
125
+ step="PREPARING_UPDATES",
126
+ lastmodified=pdt("2026-10-28T10:08:57Z"),
127
+ completed=None,
128
+ error_results=UpdateErrorResults(
129
+ smpe_rc=12,
130
+ message="No updates to install.",
131
+ detailedMessage="\n"
132
+ "PAGE 0001 - NOW SET TO TARGET ZONE "
133
+ "IPI25T DATE 10/28/26 TIME "
134
+ "11:08:58 SMP/E 37.41 SMPOUT "
135
+ "OUTPUT\n"
136
+ "\n"
137
+ " GIM42401I THE FOLLOWING "
138
+ "PARAMETERS WERE SPECIFIED ON THE "
139
+ "EXEC STATEMENT FOR GIMSMP: "
140
+ "'PROCESS=END'.",
141
+ ),
142
+ updates=[],
143
+ holds=[],
144
+ )
145
+
146
+
147
+ def make_missing_fixcats_list():
148
+ return [
149
+ MissingFixcat(
150
+ name="DH55555",
151
+ fixcats=["Hooli.TheBox.New.Parts"],
152
+ fmid="HOOMOC3",
153
+ fmiddesc="The Box III, Middle Out Compression",
154
+ resolvers=[
155
+ MissingUpdateResolver(
156
+ name="UO01111",
157
+ received=True,
158
+ )
159
+ ],
160
+ tgtzones=["TGT"],
161
+ ),
162
+ MissingFixcat(
163
+ name="DH66666",
164
+ fixcats=["Hooli.Thebox.Exploitation"],
165
+ fmid="HOOMOC3",
166
+ fmiddesc="The Box III, Middle Out Compression",
167
+ resolvers=[
168
+ MissingUpdateResolver(
169
+ name="UO02222",
170
+ received=True,
171
+ )
172
+ ],
173
+ tgtzones=["TGT"],
174
+ ),
175
+ ]
176
+
177
+
178
+ def make_missing_updates_list():
179
+ return [
180
+ MissingUpdate(
181
+ name="DH55555",
182
+ holdclass="HIPER",
183
+ holdsymptom="IPL",
184
+ heldsysmod="HOOMOC3",
185
+ fmid="HOOMOC3",
186
+ fmiddesc="The Box III, Middle Out Compression",
187
+ resolvers=None,
188
+ tgtzones=[
189
+ "TGT",
190
+ ],
191
+ ),
192
+ MissingUpdate(
193
+ name="DH66666",
194
+ holdclass="PE",
195
+ holdsymptom="",
196
+ heldsysmod="UO07777",
197
+ fmid="HOOMOC3",
198
+ fmiddesc="The Box III, Middle Out Compression",
199
+ resolvers=[
200
+ MissingUpdateResolver(
201
+ name="UO08888",
202
+ received=True,
203
+ ),
204
+ ],
205
+ tgtzones=[
206
+ "TGT",
207
+ ],
208
+ ),
209
+ ]
210
+
211
+
212
+ def make_sw_update():
213
+ return SoftwareUpdate(
214
+ name="HL00002",
215
+ type="PTF",
216
+ fmid="HOOMOC3",
217
+ zones=[
218
+ SoftwareUpdateZone(
219
+ zone="DLIB",
220
+ status="Not Found",
221
+ installed=None,
222
+ ),
223
+ SoftwareUpdateZone(
224
+ zone="GLOBAL",
225
+ status="Received",
226
+ installed=pdt("2026-10-29T14:39:18Z"),
227
+ ),
228
+ SoftwareUpdateZone(
229
+ zone="TGT",
230
+ status="Not Found",
231
+ installed=None,
232
+ ),
233
+ ],
234
+ )
235
+
236
+
237
+ def make_copy_output():
238
+ return [
239
+ {"name": "/TSTA/FOOBAR/ALL_HOLDS.txt"},
240
+ {"name": "/TSTA/FOOBAR/POST_INSTALL_HOLDS.txt"},
241
+ {
242
+ "name": "/TSTA/FOOBAR/smpe-output/001_PREPARING_UPDATES/"
243
+ "2026-10-28T13-12-59.618718068-SMPRPT.txt"
244
+ },
245
+ {
246
+ "name": "/TSTA/FOOBAR/smpe-output/001_PREPARING_UPDATES/"
247
+ "2026-10-28T13-12-59.618718068-SMPHRPT.txt"
248
+ },
249
+ {
250
+ "name": "/TSTA/FOOBAR/smpe-output/001_PREPARING_UPDATES/"
251
+ "2026-10-28T13-12-59.618718068-SMPOUT.txt"
252
+ },
253
+ {
254
+ "name": "/TSTA/FOOBAR/smpe-output/003_VERIFYING_UPDATES/"
255
+ "2026-10-28T13-13-12.693149151-SMPRPT.txt"
256
+ },
257
+ {
258
+ "name": "/TSTA/FOOBAR/smpe-output/003_VERIFYING_UPDATES/"
259
+ "2026-10-28T13-13-12.693149151-SMPHRPT.txt"
260
+ },
261
+ {
262
+ "name": "/TSTA/FOOBAR/smpe-output/003_VERIFYING_UPDATES/"
263
+ "2026-10-28T13-13-12.693149151-SMPOUT.txt"
264
+ },
265
+ {
266
+ "name": "/TSTA/FOOBAR/smpe-output/005_INSTALLATION/"
267
+ "2026-10-28T13-13-46.199025023-SMPRPT.txt"
268
+ },
269
+ {
270
+ "name": "/TSTA/FOOBAR/smpe-output/005_INSTALLATION/"
271
+ "2026-10-28T13-13-46.199025023-SMPHRPT.txt"
272
+ },
273
+ {
274
+ "name": "/TSTA/FOOBAR/smpe-output/005_INSTALLATION/"
275
+ "2026-10-28T13-13-46.199025023-SMPOUT.txt"
276
+ },
277
+ {
278
+ "name": "/TSTA/FOOBAR/smpe-output/005_INSTALLATION/"
279
+ "2026-10-28T13-13-46.199025023-SYSPRINT.txt"
280
+ },
281
+ ]
@@ -0,0 +1,19 @@
1
+ from zosmfrestapi.models.topology import Group, System
2
+
3
+
4
+ def make_group(name, systems=[]):
5
+ return Group(
6
+ name=name, description=f"A simple group called {name}", systems=",".join(systems)
7
+ )
8
+
9
+
10
+ def make_system(name="", groups=[]):
11
+ return System(
12
+ name=f"TST{name}",
13
+ nickName=f"TEST{name}",
14
+ sysplex="TST01",
15
+ groups=",".join(groups),
16
+ jesType="JES2",
17
+ jesMemberName=f"TST{name}",
18
+ url="https://zosmf.example/zosmf/",
19
+ )