Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rds_instance cannot clear cloudwatch log exports #1879

Closed
1 task done
andreiboost opened this issue Nov 24, 2023 · 2 comments · Fixed by #1917
Closed
1 task done

rds_instance cannot clear cloudwatch log exports #1879

andreiboost opened this issue Nov 24, 2023 · 2 comments · Fixed by #1917
Labels

Comments

@andreiboost
Copy link

Summary

rds_instance cannot clear all existing cloudwatch log exports by setting enable_cloudwatch_logs_exports: [].

The root cause appears to be this test which evaluates to False for empty lists. I believe this should be if cloudwatch_logs_enabled is not None: instead. I've linked to version 5 but all are the same, including the main branch.

Issue Type

Bug Report

Component Name

rds_instance

Ansible Version

$ ansible --version
ansible [core 2.14.7]
  config file = /home/<user>/.../ansible.cfg
  configured module search path = ['/home/<user>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/<user>/venv/ansible-2.14/lib/python3.9/site-packages/ansible
  ansible collection location = /home/<user>/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/<user>/venv/ansible-2.14/bin/ansible
  python version = 3.9.5 (default, Nov 23 2021, 15:27:38) [GCC 9.3.0] (/home/<user>/venv/ansible-2.14/bin/python3.9)
  jinja version = 3.0.3
  libyaml = True

Collection Versions

$ ansible-galaxy collection list
Collection                    Version
----------------------------- -------
amazon.aws                    5.4.0
ansible.netcommon             4.1.0
ansible.posix                 1.5.2
ansible.utils                 2.9.0
ansible.windows               1.13.0
arista.eos                    6.0.1
awx.awx                       21.14.0
azure.azcollection            1.15.0
check_point.mgmt              4.0.0
chocolatey.chocolatey         1.4.0
cisco.aci                     2.6.0
cisco.asa                     4.0.0
cisco.dnac                    6.7.1
cisco.intersight              1.0.27
cisco.ios                     4.5.0
cisco.iosxr                   4.1.0
cisco.ise                     2.5.12
cisco.meraki                  2.15.1
cisco.mso                     2.4.0
cisco.nso                     1.0.3
cisco.nxos                    4.3.0
cisco.ucs                     1.8.0
cloud.common                  2.1.3
cloudscale_ch.cloud           2.2.4
community.aws                 5.4.0
community.azure               2.0.0
community.ciscosmb            1.0.5
community.crypto              2.12.0
community.digitalocean        1.23.0
community.dns                 2.5.3
community.docker              3.4.3
community.fortios             1.0.0
community.general             6.6.0
community.google              1.0.0
community.grafana             1.5.4
community.hashi_vault         4.2.0
community.hrobot              1.8.0
community.libvirt             1.2.0
community.mongodb             1.5.2
community.mysql               3.6.0
community.network             5.0.0
community.okd                 2.3.0
community.postgresql          2.3.2
community.proxysql            1.5.1
community.rabbitmq            1.2.3
community.routeros            2.8.0
community.sap                 1.0.0
community.sap_libs            1.4.1
community.skydive             1.0.0
community.sops                1.6.1
community.vmware              3.5.0
community.windows             1.12.0
community.zabbix              1.9.3
containers.podman             1.10.1
cyberark.conjur               1.2.0
cyberark.pas                  1.0.17
dellemc.enterprise_sonic      2.0.0
dellemc.openmanage            6.3.0
dellemc.os10                  1.1.1
dellemc.os6                   1.0.7
dellemc.os9                   1.0.4
dellemc.powerflex             1.6.0
dellemc.unity                 1.6.0
f5networks.f5_modules         1.23.0
fortinet.fortimanager         2.1.7
fortinet.fortios              2.2.3
frr.frr                       2.0.2
gluster.gluster               1.0.2
google.cloud                  1.1.3
grafana.grafana               1.1.1
hetzner.hcloud                1.11.0
hpe.nimble                    1.1.4
ibm.qradar                    2.1.0
ibm.spectrum_virtualize       1.11.0
infinidat.infinibox           1.3.12
infoblox.nios_modules         1.4.1
inspur.ispim                  1.3.0
inspur.sm                     2.3.0
junipernetworks.junos         4.1.0
kubernetes.core               2.4.0
lowlydba.sqlserver            1.3.1
mellanox.onyx                 1.0.0
microsoft.ad                  1.0.0
netapp.aws                    21.7.0
netapp.azure                  21.10.0
netapp.cloudmanager           21.22.0
netapp.elementsw              21.7.0
netapp.ontap                  22.5.0
netapp.storagegrid            21.11.1
netapp.um_info                21.8.0
netapp_eseries.santricity     1.4.0
netbox.netbox                 3.12.0
ngine_io.cloudstack           2.3.0
ngine_io.exoscale             1.0.0
ngine_io.vultr                1.1.3
openstack.cloud               1.10.0
openvswitch.openvswitch       2.1.0
ovirt.ovirt                   2.4.1
purestorage.flasharray        1.17.2
purestorage.flashblade        1.11.0
purestorage.fusion            1.4.2
sensu.sensu_go                1.13.2
splunk.es                     2.1.0
t_systems_mms.icinga_director 1.32.2
theforeman.foreman            3.10.0
vmware.vmware_rest            2.3.1
vultr.cloud                   1.7.0
vyos.vyos                     4.0.2
wti.remote                    1.0.4

AWS SDK versions

$ pip show boto boto3 botocore
Name: boto
Version: 2.49.0
Summary: Amazon Web Services Library
Home-page: https://github.com/boto/boto/
Author: Mitch Garnaat
Author-email: [email protected]
License: MIT
Location: /home/<user>/venv/ansible-2.14/lib/python3.9/site-packages
Requires:
Required-by:
---
Name: boto3
Version: 1.28.15
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email:
License: Apache License 2.0
Location: /home/<user>/venv/ansible-2.14/lib/python3.9/site-packages
Requires: botocore, jmespath, s3transfer
Required-by:
---
Name: botocore
Version: 1.31.15
Summary: Low-level, data-driven core of boto 3.
Home-page: https://github.com/boto/botocore
Author: Amazon Web Services
Author-email:
License: Apache License 2.0
Location: /home/<user>/venv/ansible-2.14/lib/python3.9/site-packages
Requires: jmespath, python-dateutil, urllib3
Required-by: awscli, boto3, s3transfer

Configuration

$ ansible-config dump --only-changed
CALLBACKS_ENABLED(/home/<user>/.../ansible.cfg) = ['profile_tasks']
CONFIG_FILE() = /home/<user>/.../ansible.cfg

OS / Environment

Ubuntu

Steps to Reproduce

Create database with some cloudwatch log exports, for example enable_cloudwatch_logs_exports: ['postgresql', 'upgrade'].
Try to delete them

    - name: Disable log exports
      amazon.aws.rds_instance:
        db_instance_identifier: "example"
        enable_cloudwatch_logs_exports: []

Running with something else, like ['upgrade'] removes postgresql as expected.

Expected Results

Changed status, log exports to be deleted.

Actual Results

Cropped results from task

"enabled_cloudwatch_logs_exports": [
            "postgresql",
            "upgrade"
        ],
"pending_modified_values": {},

No changed status, no changes attempted.

Code of Conduct

  • I agree to follow the Ansible Code of Conduct
@hakbailey
Copy link
Contributor

Thanks @andreiboost for submitting this! Would you be willing to open a PR to fix this bug?

@andreiboost
Copy link
Author

Perhaps, my only reservation is that I'd like to add tests for this but those can be time consuming to add, especially for a one liner change like this appears to be.

softwarefactory-project-zuul bot pushed a commit that referenced this issue Feb 9, 2024
rds_instance - Allow empty enable_cloudwatch_logs_exports

SUMMARY
Fixes #1879 and adds some tests for the enable_cloudwatch_logs_exports parameter.
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME
rds_instance
ADDITIONAL INFORMATION
I had to add retries before the assertions, the reason is two fold:

It's very likely no changes at all are picked up by rds_instance_info if it runs right after modifying the RDS.
The API returns 400 if you attempt to modify something else before the previous modification was done, making the following non-check_mode test fail.

In my tests, it usually takes about a minute for the modifications to complete, so 200 total seconds should be more than enough.

Reviewed-by: Alina Buzachis
Reviewed-by: Andrei Costescu
Reviewed-by: Mandar Kulkarni <[email protected]>
Reviewed-by: Helen Bailey <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants