Skip to content

Commit 5d07cde

Browse files
Expand common_config and application_config
Signed-off-by: Saravanan Raju <saravanan.footloose@gmail.com>
1 parent a647c61 commit 5d07cde

File tree

2 files changed

+134
-75
lines changed

2 files changed

+134
-75
lines changed

plugins/modules/dw_database_catalog.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
type: list
105105
returned: always
106106
elements: complex
107-
contains:
107+
suboptions:
108108
id:
109109
description: The id of the Database Catalog.
110110
returned: always
@@ -148,6 +148,7 @@ def __init__(self, module):
148148

149149
# Initialize internal values
150150
self.target = None
151+
self.changed = False
151152

152153
# Execute logic process
153154
self.process()
@@ -172,6 +173,7 @@ def process(self):
172173
"DW Database Catalog not in valid state for Delete operation: %s" % self.target['status'])
173174
else:
174175
_ = self.cdpy.dw.delete_dbc(cluster_id=self.cluster_id, dbc_id=self.target['id'])
176+
self.changed = True
175177
if self.wait:
176178
self.cdpy.sdk.wait_for_state(
177179
describe_func=self.cdpy.dw.describe_dbc,
@@ -207,6 +209,7 @@ def process(self):
207209
else:
208210
dbc_id = self.cdpy.dw.create_dbc(cluster_id=self.cluster_id, name=self.name,
209211
load_demo_data=self.load_demo_data)
212+
self.changed = True
210213
if self.wait:
211214
self.target = self.cdpy.sdk.wait_for_state(
212215
describe_func=self.cdpy.dw.describe_dbc,
@@ -223,20 +226,20 @@ def process(self):
223226
def main():
224227
module = AnsibleModule(
225228
argument_spec=CdpModule.argument_spec(
226-
id=dict(required=False, type='str', default=None),
229+
id=dict(type='str'),
227230
cluster_id=dict(required=True, type='str'),
228-
name = dict(required=False, type='str', default=None),
229-
load_demo_data=dict(required=False, type='bool', default=False),
230-
state=dict(required=False, type='str', choices=['present', 'absent'], default='present'),
231-
wait = dict(required=False, type='bool', default=True),
232-
delay = dict(required=False, type='int', aliases=['polling_delay'], default=15),
233-
timeout = dict(required=False, type='int', aliases=['polling_timeout'], default=3600)
231+
name = dict(type='str'),
232+
load_demo_data=dict(type='bool'),
233+
state=dict(type='str', choices=['present', 'absent'], default='present'),
234+
wait = dict(type='bool', default=True),
235+
delay = dict(type='int', aliases=['polling_delay'], default=15),
236+
timeout = dict(type='int', aliases=['polling_timeout'], default=3600)
234237
),
235238
supports_check_mode=True
236239
)
237240

238241
result = DwDbc(module)
239-
output = dict(changed=False, database_catalogs=result.database_catalogs)
242+
output = dict(changed=result.changed, database_catalogs=result.database_catalogs)
240243

241244
if result.debug:
242245
output.update(sdk_out=result.log_out, sdk_out_lines=result.log_lines)

plugins/modules/dw_virtual_warehouse.py

Lines changed: 122 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -72,33 +72,29 @@
7272
description: Configurations that are applied to every application in the service.
7373
type: dict
7474
required: False
75-
contains:
75+
suboptions:
7676
configBlocks: List of ConfigBlocks for the application.
7777
type: list
7878
required: False
79-
contains:
79+
elements: dict
80+
suboptions:
8081
id:
8182
description: ID of the ConfigBlock. Unique within an ApplicationConfig.
8283
type: str
8384
required: False
8485
format:
8586
description: Format of ConfigBlock.
8687
type: str
87-
required: False
88+
required: False
8889
content:
8990
description: Contents of a ConfigBlock.
90-
type: obj
91+
type: dict
9192
required: False
92-
contains:
93+
suboptions:
9394
keyValues:
9495
description: Key-value type configurations.
95-
type: obj
96+
type: dict
9697
required: False
97-
contains:
98-
additionalProperties:
99-
description: Key-value type configurations.
100-
type: str
101-
required: False
10298
text:
10399
description: Text type configuration.
104100
type: str
@@ -111,45 +107,45 @@
111107
description: Configurations that are applied to every application in the service.
112108
type: dict
113109
required: False
114-
contains:
115-
configBlocks: List of ConfigBlocks for the application.
116-
type: list
117-
required: False
118-
contains:
119-
id:
120-
description: ID of the ConfigBlock. Unique within an ApplicationConfig.
121-
type: str
122-
required: False
123-
format:
124-
description: Format of ConfigBlock.
125-
type: str
126-
required: False
127-
content:
128-
description: Contents of a ConfigBlock.
129-
type: obj
130-
required: False
131-
contains:
132-
keyValues:
133-
description: Key-value type configurations.
134-
type: obj
135-
required: False
136-
contains:
137-
additionalProperties:
138-
description: Key-value type configurations.
139-
type: str
140-
required: False
141-
text:
142-
description: Text type configuration.
143-
type: str
144-
required: False
145-
json:
146-
description: JSON type configuration.
147-
type: str
148-
required: False
110+
suboptions:
111+
required: False
112+
type: dict
113+
suboptions:
114+
configBlocks: List of ConfigBlocks for the application.
115+
type: list
116+
required: False
117+
elements: dict
118+
suboptions:
119+
id:
120+
description: ID of the ConfigBlock. Unique within an ApplicationConfig.
121+
type: str
122+
required: False
123+
format:
124+
description: Format of ConfigBlock.
125+
type: str
126+
required: False
127+
content:
128+
description: Contents of a ConfigBlock.
129+
type: dict
130+
required: False
131+
suboptions:
132+
keyValues:
133+
description: Key-value type configurations.
134+
type: dict
135+
required: False
136+
text:
137+
description: Text type configuration.
138+
type: str
139+
required: False
140+
json:
141+
description: JSON type configuration.
142+
type: str
143+
required: False
149144
ldap_groups:
150145
description: LDAP Groupnames to be enabled for auth.
151146
type: list
152147
required: False
148+
elements: str
153149
enable_sso:
154150
description: Should SSO be enabled for this VW.
155151
type: bool
@@ -211,6 +207,41 @@
211207
tag-key: "tag-value"
212208
enable_sso: true
213209
ldap_groups: ['group1','group2','group3']
210+
211+
- cloudera.cloud.dw_virtual_warehouse:
212+
cluster_id: "example-cluster-id"
213+
name: "example-virtual-warehouse"
214+
type: "hive"
215+
template: "xsmall"
216+
enable_sso: true
217+
ldap_groups: ['group1','group2','group3']
218+
common_configs: "{
219+
'configBlocks': [
220+
{
221+
'id': 'das-ranger-policymgr',
222+
'format': 'HADOOP_XML',
223+
'content': {
224+
'keyValues' : {
225+
'xasecure.policymgr.clientssl.truststore': '/path_to_ca_cert/cacerts'
226+
}
227+
}
228+
}
229+
]
230+
}"
231+
application_configs: "{
232+
"das-webapp": {
233+
"configBlocks": [
234+
{
235+
"id": "hive-kerberos-config",
236+
"format": "TEXT",
237+
"content": {
238+
"text": "\n[libdefaults]\n\trenew_lifetime = 7d"
239+
}
240+
}
241+
]
242+
}
243+
}"
244+
214245
215246
# Delete Virtual Warehouse
216247
- cloudera.cloud.dw_virtual_warehouse:
@@ -226,10 +257,10 @@
226257
type: list
227258
returned: always
228259
elements: complex
229-
contains:
260+
suboptions:
230261
vws:
231262
type: dict
232-
contains:
263+
suboptions:
233264
id:
234265
description: Id of the Virtual Warehouse created.
235266
returned: always
@@ -258,7 +289,7 @@
258289
description: The CRN of the cluster creator.
259290
returned: always
260291
type: dict
261-
contains:
292+
suboptions:
262293
crn:
263294
type: str
264295
description: Actor CRN
@@ -315,6 +346,7 @@ def __init__(self, module):
315346

316347
# Initialize internal values
317348
self.target = None
349+
self.changed = False
318350

319351
# Execute logic process
320352
self.process()
@@ -340,6 +372,7 @@ def process(self):
340372
'status'])
341373
else:
342374
_ = self.cdpy.dw.delete_vw(cluster_id=self.cluster_id, vw_id=self.target['id'])
375+
self.changed = True
343376
if self.wait:
344377
self.cdpy.sdk.wait_for_state(
345378
describe_func=self.cdpy.dw.describe_vw,
@@ -383,6 +416,7 @@ def process(self):
383416
application_configs=self.application_configs,
384417
ldap_groups=self.ldap_groups, enable_sso=self.enable_sso,
385418
tags=self.tags)
419+
self.changed = True
386420
if self.wait:
387421
self.target = self.cdpy.sdk.wait_for_state(
388422
describe_func=self.cdpy.dw.describe_vw,
@@ -399,29 +433,51 @@ def process(self):
399433
def main():
400434
module = AnsibleModule(
401435
argument_spec=CdpModule.argument_spec(
402-
id=dict(required=False, type='str', default=None),
436+
id=dict(type='str'),
403437
cluster_id=dict(required=True, type='str'),
404-
dbc_id=dict(required=False, type='str', default=None),
405-
type = dict(required=False, type='str', default=None),
406-
name = dict(required=False, type='str', default=None),
407-
template=dict(required=False, type='str', default=None),
408-
autoscaling_min_nodes=dict(required=False, type='int', default=None),
409-
autoscaling_max_nodes=dict(required=False, type='int', default=None),
410-
common_configs=dict(required=False, type='dict', default=None),
411-
application_configs=dict(required=False, type='dict', default=None),
412-
ldap_groups=dict(required=False, type='list', default=None),
413-
enable_sso=dict(required=False, type='bool', default=False),
414-
tags=dict(required=False, type='dict', default=None),
415-
state=dict(required=False, type='str', choices=['present', 'absent'], default='present'),
416-
wait = dict(required=False, type='bool', default=True),
417-
delay = dict(required=False, type='int', aliases=['polling_delay'], default=15),
418-
timeout = dict(required=False, type='int', aliases=['polling_timeout'], default=3600)
438+
dbc_id=dict(type='str'),
439+
type = dict(type='str'),
440+
name = dict(type='str'),
441+
template=dict(type='str'),
442+
autoscaling_min_nodes=dict(type='int'),
443+
autoscaling_max_nodes=dict(type='int'),
444+
common_configs=dict(type='dict',
445+
options=dict(
446+
configBlocks = dict(
447+
type='list',
448+
elements='dict',
449+
options=dict(
450+
dict(
451+
id=dict(type='str'),
452+
format=dict(type='str', choices=['HADOOP_XML', 'PROPERTIES', 'TEXT', 'JSON', 'BINARY', 'ENV', 'FLAGFILE']),
453+
content=dict(type='dict',
454+
options=dict(
455+
dict(
456+
keyValues=dict(type='dict'),
457+
text=dict(type='str'),
458+
json=dict(type='json')
459+
)
460+
)
461+
)
462+
)
463+
)
464+
)
465+
)
466+
),
467+
application_configs=dict(type='dict'),
468+
ldap_groups=dict(type='list'),
469+
enable_sso=dict(type='bool'),
470+
tags=dict(type='dict'),
471+
state=dict(type='str', choices=['present', 'absent'], default='present'),
472+
wait = dict(type='bool', default=True),
473+
delay = dict(type='int', aliases=['polling_delay'], default=15),
474+
timeout = dict(type='int', aliases=['polling_timeout'], default=3600)
419475
),
420476
supports_check_mode=True
421477
)
422478

423479
result = DwVw(module)
424-
output = dict(changed=False, virtual_warehouses=result.virtual_warehouses)
480+
output = dict(changed=result.changed, virtual_warehouses=result.virtual_warehouses)
425481

426482
if result.debug:
427483
output.update(sdk_out=result.log_out, sdk_out_lines=result.log_lines)

0 commit comments

Comments
 (0)