This commit is contained in:
Jimmy CUI 2025-02-07 05:35:34 +00:00 committed by GitHub
commit 8b314bfcc3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -324,6 +324,7 @@ from ansible_collections.google.cloud.plugins.module_utils.gcp_utils import (
)
import json
import time
import ipaddress
################################################################################
# Main
@ -506,8 +507,33 @@ def is_different(module, response):
if k in response:
request_vals[k] = v
return GcpRequest(request_vals) != GcpRequest(response_vals)
if request_vals['ipCidrRange']:
try:
result_is_superset = cidr_superset(request_vals['ipCidrRange'], response_vals['ipCidrRange'])
if result_is_superset:
gcp_req_request=GcpRequest(request_vals)
gcp_req_response=GcpRequest(response_vals)
else:
module.fail_json(msg="The new CIDR must be a superset of the original IP ranage!")
except Exception as e:
module.fail_json(msg="CIDR Error! str(e)")
return gcp_req_request != gcp_req_response
def cidr_superset(cidr1, cidr2):
"""
Check if CIDR1 is a superset of CIDR2.
Args:
cidr1 (str): The first CIDR address.
cidr2 (str): The second CIDR address.
Returns:
bool: True if CIDR1 is a superset of CIDR2, False otherwise.
"""
net1 = ipaddress.ip_network(cidr1)
net2 = ipaddress.ip_network(cidr2)
return net2.subnet_of(net1)
# Remove unnecessary properties from the response.
# This is for doing comparisons with Ansible's current parameters.