From 69929445685ff5861ac713efd4769e60c1f01314 Mon Sep 17 00:00:00 2001 From: The Magician Date: Tue, 19 May 2020 14:18:29 -0400 Subject: [PATCH] Add disk encryption settings and status to sql instance (#3496) (#230) Signed-off-by: Modular Magician --- plugins/modules/gcp_sql_instance.py | 82 ++++++++++++++++++++++++ plugins/modules/gcp_sql_instance_info.py | 22 +++++++ 2 files changed, 104 insertions(+) diff --git a/plugins/modules/gcp_sql_instance.py b/plugins/modules/gcp_sql_instance.py index 24b7bc6..f427bb1 100644 --- a/plugins/modules/gcp_sql_instance.py +++ b/plugins/modules/gcp_sql_instance.py @@ -332,6 +332,30 @@ options: required: false type: dict version_added: '2.10' + disk_encryption_configuration: + description: + - Disk encyption settings. + required: false + type: dict + version_added: '2.10' + suboptions: + kms_key_name: + description: + - The KMS key used to encrypt the Cloud SQL instance . + required: false + type: str + disk_encryption_status: + description: + - Disk encyption status. + required: false + type: dict + version_added: '2.10' + suboptions: + kms_key_version_name: + description: + - The KMS key version used to encrypt the Cloud SQL instance . + required: false + type: str project: description: - The Google Cloud Platform project to use. @@ -712,6 +736,28 @@ state: - The current serving state of the database instance. returned: success type: str +diskEncryptionConfiguration: + description: + - Disk encyption settings. + returned: success + type: complex + contains: + kmsKeyName: + description: + - The KMS key used to encrypt the Cloud SQL instance . + returned: success + type: str +diskEncryptionStatus: + description: + - Disk encyption status. + returned: success + type: complex + contains: + kmsKeyVersionName: + description: + - The KMS key version used to encrypt the Cloud SQL instance . + returned: success + type: str ''' ################################################################################ @@ -795,6 +841,8 @@ def main(): user_labels=dict(type='dict'), ), ), + disk_encryption_configuration=dict(type='dict', options=dict(kms_key_name=dict(type='str'))), + disk_encryption_status=dict(type='dict', options=dict(kms_key_version_name=dict(type='str'))), ) ) @@ -858,6 +906,8 @@ def resource_to_request(module): u'region': module.params.get('region'), u'replicaConfiguration': InstanceReplicaconfiguration(module.params.get('replica_configuration', {}), module).to_request(), u'settings': InstanceSettings(module.params.get('settings', {}), module).to_request(), + u'diskEncryptionConfiguration': InstanceDiskencryptionconfiguration(module.params.get('disk_encryption_configuration', {}), module).to_request(), + u'diskEncryptionStatus': InstanceDiskencryptionstatus(module.params.get('disk_encryption_status', {}), module).to_request(), } return_vals = {} for k, v in request.items(): @@ -941,6 +991,8 @@ def response_to_hash(module, response): u'settings': InstanceSettings(response.get(u'settings', {}), module).from_response(), u'gceZone': response.get(u'gceZone'), u'state': response.get(u'state'), + u'diskEncryptionConfiguration': InstanceDiskencryptionconfiguration(response.get(u'diskEncryptionConfiguration', {}), module).from_response(), + u'diskEncryptionStatus': InstanceDiskencryptionstatus(response.get(u'diskEncryptionStatus', {}), module).from_response(), } @@ -1226,5 +1278,35 @@ class InstanceBackupconfiguration(object): ) +class InstanceDiskencryptionconfiguration(object): + def __init__(self, request, module): + self.module = module + if request: + self.request = request + else: + self.request = {} + + def to_request(self): + return remove_nones_from_dict({u'kmsKeyName': self.request.get('kms_key_name')}) + + def from_response(self): + return remove_nones_from_dict({u'kmsKeyName': self.request.get(u'kmsKeyName')}) + + +class InstanceDiskencryptionstatus(object): + def __init__(self, request, module): + self.module = module + if request: + self.request = request + else: + self.request = {} + + def to_request(self): + return remove_nones_from_dict({u'kmsKeyVersionName': self.request.get('kms_key_version_name')}) + + def from_response(self): + return remove_nones_from_dict({u'kmsKeyVersionName': self.request.get(u'kmsKeyVersionName')}) + + if __name__ == '__main__': main() diff --git a/plugins/modules/gcp_sql_instance_info.py b/plugins/modules/gcp_sql_instance_info.py index 586769e..fb1d314 100644 --- a/plugins/modules/gcp_sql_instance_info.py +++ b/plugins/modules/gcp_sql_instance_info.py @@ -432,6 +432,28 @@ resources: - The current serving state of the database instance. returned: success type: str + diskEncryptionConfiguration: + description: + - Disk encyption settings. + returned: success + type: complex + contains: + kmsKeyName: + description: + - The KMS key used to encrypt the Cloud SQL instance . + returned: success + type: str + diskEncryptionStatus: + description: + - Disk encyption status. + returned: success + type: complex + contains: + kmsKeyVersionName: + description: + - The KMS key version used to encrypt the Cloud SQL instance . + returned: success + type: str ''' ################################################################################