Skip to content

Commit 34347fb

Browse files
authored
Merge pull request #114 from ansible-collections/dfsdfmember_input
Dfsdfmember input
2 parents 574886c + d88673e commit 34347fb

File tree

8 files changed

+333
-21
lines changed

8 files changed

+333
-21
lines changed

plugins/module_utils/catalog.py

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,18 @@ def _constructPurgeDDStatements(self):
162162
self.result['rc'] = 1
163163
self.module.fail_json(**self.result)
164164
else:
165-
if self.parsed_args.get("buffer_pool_param_dataset") is None:
166-
self.result['msg'] = "You must specify a buffer pool parameter dataset when running as DLI."
167-
self.result['rc'] = 1
168-
self.module.fail_json(**self.result)
169-
else:
170-
self.paramString = "DLI,DFS3PU10,DFSCP001,,,,,,,,,,,{0},{1},{2},,,,,,,,,,,'DFSDF=CAT'".format(dbrc, irlm_flag, irlm_id)
165+
if self.parsed_args.get("buffer_pool_param_dataset") is not None and self.parsed_args.get("dfsdf_member") is not None:
166+
dfsdf_member = self.parsed_args.get("dfsdf_member")
167+
self.paramString = "DLI,DFS3PU10,DFSCP001,,,,,,,,,,,{0},{1},{2},,,,,,,,,,,'DFSDF={3}'".format(dbrc, irlm_flag, irlm_id, dfsdf_member)
168+
else:
169+
if self.parsed_args.get("buffer_pool_param_dataset") is None:
170+
self.result['msg'] = "You must specify a buffer pool parameter dataset when running as DLI."
171+
self.result['rc'] = 1
172+
self.module.fail_json(**self.result)
173+
if self.parsed_args.get("dfsdf_member") is None:
174+
self.result['msg'] = "You must specify the suffix for the DFSDFxxx member when running as DLI."
175+
self.result['rc'] = 1
176+
self.module.fail_json(**self.result)
171177

172178
self.dDStatements = self.dDStatements + dDStatementList
173179

@@ -315,13 +321,19 @@ def _constructCatalogDDStatements(self):
315321
self.result['msg'] = "You must specify an ims_id when running in a BMP region (online_batch=true)"
316322
self.result['rc'] = 1
317323
self.module.fail_json(**self.result)
318-
else:
319-
if self.parsed_args.get("buffer_pool_param_dataset") is None:
320-
self.result['msg'] = "You must specify a buffer pool parameter dataset when running as DLI."
321-
self.result['rc'] = 1
322-
self.module.fail_json(**self.result)
323-
else:
324-
self.paramString = "DLI,DFS3PU00,{0},,,,,,,,,,,{1},{2},{3},,,,,,,,,,,'DFSDF=CAT'".format(mode, dbrc, irlm_flag, irlm_id)
324+
else:
325+
if self.parsed_args.get("buffer_pool_param_dataset") is not None and self.parsed_args.get("dfsdf_member") is not None:
326+
dfsdf_member = self.parsed_args.get("dfsdf_member")
327+
self.paramString = "DLI,DFS3PU00,{0},,,,,,,,,,,{1},{2},{3},,,,,,,,,,,'DFSDF={4}'".format(mode, dbrc, irlm_flag, irlm_id, dfsdf_member)
328+
else:
329+
if self.parsed_args.get("buffer_pool_param_dataset") is None:
330+
self.result['msg'] = "You must specify a buffer pool parameter dataset when running as DLI."
331+
self.result['rc'] = 1
332+
self.module.fail_json(**self.result)
333+
if self.parsed_args.get("dfsdf_member") is None:
334+
self.result['msg'] = "You must specify the suffix for the DFSDFxxx member when running as DLI."
335+
self.result['rc'] = 1
336+
self.module.fail_json(**self.result)
325337

326338
self.dDStatements = self.dDStatements + dDStatementList
327339

plugins/module_utils/catalog_parser.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import (absolute_import, division, print_function)
22
from ansible.module_utils.basic import AnsibleModule
33
from ansible_collections.ibm.ibm_zos_core.plugins.module_utils.better_arg_parser import BetterArgParser # pylint: disable=import-error
4+
from zoautil_py import datasets
45

56
__metaclass__ = type
67

@@ -20,6 +21,7 @@ def _validate_common_input(self):
2021
irlm_id=dict(arg_type="str", required=False),
2122
reslib=dict(arg_type="list", elements="data_set", required=False),
2223
buffer_pool_param_dataset=dict(arg_type="data_set", required=False),
24+
dfsdf_member=dict(arg_type="str", required=False),
2325
primary_log_dataset=dict(arg_type="dict", required=False,
2426
options=dict(
2527
dataset_name=dict(arg_type="data_set", required=True),
@@ -53,6 +55,11 @@ def _validate_common_input(self):
5355
parser = BetterArgParser(module_defs)
5456
self.parsed_args = parser.parse_args(self.params)
5557

58+
if self.parsed_args.get("dfsdf_member") is not None:
59+
self._validate_length("dfsdf_member", 3)
60+
self._validate_alphanumeric("dfsdf_member")
61+
self._validate_member_exist("dfsdf_member", self.parsed_args.get("proclib"))
62+
5663
except ValueError as error:
5764
self.result['msg'] = error.args
5865
self.result['rc'] = 1
@@ -297,6 +304,27 @@ def validate_purge_input(self):
297304

298305
return self.parsed_args
299306

307+
def _validate_length(self, input, length):
308+
if len(self.parsed_args.get(input)) != length:
309+
self.result['msg'] = str(self.parsed_args.get(input)) + " is not equal to length " + str(length)
310+
self.result['rc'] = 1
311+
self.module.fail_json(**self.result)
312+
313+
def _validate_alphanumeric(self, input):
314+
if not (self.parsed_args.get(input)).isalnum():
315+
self.result['msg'] = str(input) + " input cannot contain special characters, it must be alphanumeric"
316+
self.result['rc'] = 1
317+
self.module.fail_json(**self.result)
318+
319+
def _validate_member_exist(self, input, proc):
320+
member = self.parsed_args.get(input)
321+
member = "DFSDF" + member
322+
rc = datasets.find_member(member, proc[0])
323+
if rc == None:
324+
self.result['msg'] = str(input) + " " + str(member) + " input does not exist"
325+
self.result['rc'] = 1
326+
self.module.fail_json(**self.result)
327+
300328
def _validate_directory_staging_dataset(self):
301329
if len(self.parsed_args.get("directory_datasets")) > 20:
302330
self.result['msg'] = "You cannot specify more than 20 IMS directory datasets"

plugins/modules/ims_catalog_populate.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@
6868
- Defines the buffer pool parameters data set. This option is required if you are running the utility as a DLI.
6969
type: str
7070
required: false
71+
dfsdf_member:
72+
description:
73+
- The DFSDFxxx member in the IMS.PROCLIB data set where the CATALOG section is defined. For example, desdf_member: "CAT" specifies the DFSDFCAT member of the PROCLIB data set.
74+
type: str
75+
required: false
7176
primary_log_dataset:
7277
description:
7378
- Defines the primary IMS log data set. This is required if dbrc is set to true or if
@@ -880,6 +885,7 @@
880885
psb_lib:
881886
- SOME.IMS.PSBLIB
882887
buffer_pool_param_dataset: "SOME.IMS.PROCLIB(DFSVSMHP)"
888+
dfsdf_member: "CAT"
883889
primary_log_dataset:
884890
dataset_name: SOME.IMS.LOG
885891
@@ -899,6 +905,7 @@
899905
psb_lib:
900906
- SOME.IMS.PSBLIB
901907
buffer_pool_param_dataset: "SOME.IMS.PROCLIB(DFSVSMHP)"
908+
dfsdf_member: "CAT"
902909
control_statements:
903910
managed_acbs:
904911
setup: true
@@ -919,6 +926,7 @@
919926
psb_lib:
920927
- SOME.IMS.PSBLIB
921928
buffer_pool_param_dataset: "SOME.IMS.PROCLIB(DFSVSMHP)"
929+
dfsdf_member: "CAT"
922930
primary_log_dataset:
923931
dataset_name: SOME.IMS.LOG
924932
control_statements:
@@ -968,6 +976,7 @@ def run_module():
968976
modstat=dict(type="str", required=False),
969977
reslib=dict(type="list", elements="str", required=False),
970978
buffer_pool_param_dataset=dict(type="str", required=False),
979+
dfsdf_member=dict(type="str", required=False),
971980
primary_log_dataset=dict(type="dict", required=False),
972981
secondary_log_dataset=dict(type="dict", required=False),
973982
psb_lib=dict(type="list", elements="str", required=True),

plugins/modules/ims_catalog_purge.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@
6767
- Defines the buffer pool parameters data set. This option is required if you are running the utility as a DLI.
6868
type: str
6969
required: false
70+
dfsdf_member:
71+
description:
72+
- The DFSDFxxx member in the IMS.PROCLIB data set where the CATALOG section is defined. For example, desdf_member: "CAT" specifies the DFSDFCAT member of the PROCLIB data set.
73+
type: str
74+
required: false
7075
primary_log_dataset:
7176
description:
7277
- Defines the primary IMS log data set. This option is required if you are running the utility as a DLI.
@@ -440,6 +445,7 @@
440445
psb_lib:
441446
- SOME.IMS.PSBLIB
442447
buffer_pool_param_dataset: "SOME.IMS1.PROCLIB(DFSVSMHP)"
448+
dfsdf_member: "CAT"
443449
primary_log_dataset:
444450
dataset_name: SOME.IMS.LOG1
445451
mode: PURGE
@@ -461,6 +467,7 @@
461467
psb_lib:
462468
- SOME.IMS.PSBLIB
463469
buffer_pool_param_dataset: "SOME.IMS1.PROCLIB(DFSVSMHP)"
470+
dfsdf_member: "CAT"
464471
primary_log_dataset:
465472
dataset_name: SOME.IMS.LOG1
466473
mode: PURGE
@@ -483,6 +490,7 @@
483490
psb_lib:
484491
- SOME.IMS.PSBLIB
485492
buffer_pool_param_dataset: "SOME.IMS1.PROCLIB(DFSVSMHP)"
493+
dfsdf_member: "CAT"
486494
primary_log_dataset:
487495
dataset_name: SOME.IMS.LOG1
488496
mode: ANALYSIS
@@ -502,6 +510,7 @@
502510
psb_lib:
503511
- SOME.IMS.PSBLIB
504512
buffer_pool_param_dataset: "SOME.IMS1.PROCLIB(DFSVSMHP)"
513+
dfsdf_member: "CAT"
505514
primary_log_dataset:
506515
dataset_name: SOME.IMS.LOG1
507516
mode: ANALYSIS
@@ -554,6 +563,7 @@ def run_module():
554563
irlm_id=dict(type="str", required=False),
555564
reslib=dict(type="list", elements="str", required=False),
556565
buffer_pool_param_dataset=dict(type="str", required=False),
566+
dfsdf_member=dict(type="str", required=False),
557567
primary_log_dataset=dict(type="dict", required=True),
558568
psb_lib=dict(type="list", elements="str", required=True),
559569
dbd_lib=dict(type="list", elements="str", required=True),

tests/functional/module_utils/ims_test_catalog_utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
def load_catalog(hosts, validation_msg, mode, psb_lib, dbd_lib, steplib, reslib, proclib, primary_log_dataset,
9-
buffer_pool_param_dataset, acb_lib, modstat=None, online_batch=None, dbrc=None, ims_id=None, irlm_id=None,
9+
buffer_pool_param_dataset, dfsdf_member, acb_lib, modstat=None, online_batch=None, dbrc=None, ims_id=None, irlm_id=None,
1010
control_statements=None, bootstrap_dataset=None,
1111
directory_datasets=None, temp_acb_dataset=None, directory_staging_dataset=None,
1212
secondary_log_dataset=None, sysabend=None, check_timestamp=None, rc=0, changed=True):
@@ -26,6 +26,7 @@ def load_catalog(hosts, validation_msg, mode, psb_lib, dbd_lib, steplib, reslib,
2626
sysabend=sysabend,
2727
check_timestamp=check_timestamp,
2828
buffer_pool_param_dataset=buffer_pool_param_dataset,
29+
dfsdf_member=dfsdf_member,
2930
mode=mode,
3031
control_statements=control_statements,
3132
bootstrap_dataset=bootstrap_dataset,
@@ -37,15 +38,15 @@ def load_catalog(hosts, validation_msg, mode, psb_lib, dbd_lib, steplib, reslib,
3738
)
3839
for result in response.contacted.values():
3940
pprint(result)
40-
assert result['rc'] == rc
41+
assert result['rc'] == rc # continue the execution while the rc equals to 0
4142
if rc == 0:
4243
assert validation_msg in result['content']
4344
else:
4445
assert validation_msg in result['msg']
4546

4647

4748
def purge_catalog(hosts, validation_msg, primary_log_dataset, psb_lib, dbd_lib, steplib, reslib, proclib,
48-
buffer_pool_param_dataset, online_batch=None, dbrc=None, ims_id=None, irlm_id=None, sysut1=None, update_retention_criteria=None,
49+
buffer_pool_param_dataset, dfsdf_member, online_batch=None, dbrc=None, ims_id=None, irlm_id=None, sysut1=None, update_retention_criteria=None,
4950
delete=None, managed_acbs=None, delete_dbd_by_version=None, resource_chkp_freq=None, mode='PURGE', rc=0, changed=True):
5051

5152
response = hosts.all.ims_catalog_purge(
@@ -62,6 +63,7 @@ def purge_catalog(hosts, validation_msg, primary_log_dataset, psb_lib, dbd_lib,
6263
update_retention_criteria=update_retention_criteria,
6364
delete_dbd_by_version=delete_dbd_by_version,
6465
buffer_pool_param_dataset=buffer_pool_param_dataset,
66+
dfsdf_member=dfsdf_member,
6567
mode=mode,
6668
primary_log_dataset=primary_log_dataset,
6769
delete=delete,
@@ -92,6 +94,7 @@ class CatalogInputParameters():
9294
PROCLIB = HLQ1 + HLQ2 + "PROCLIB"
9395
RESLIB = [HLQ1 + HLQ2 + "SDFSRESL"]
9496
BUFFERPOOL = HLQ1 + HLQ2 + "PROCLIB(DFSVSMHP)"
97+
DFSDF_DEFAULT = "CAT"
9598
MODSTAT = HLQ1 + HLQ2 + "MODSTAT"
9699
PSB_NAME = ["PGSAM1"]
97100
LOADMODE = "LOAD"

0 commit comments

Comments
 (0)