Skip to content

Commit

Permalink
Update docs - scripts (kubernetes-sigs#491)
Browse files Browse the repository at this point in the history
* Update docs - scripts -

* Update docs - scripts -
  • Loading branch information
iamjanr authored Feb 26, 2024
1 parent d8f0eea commit 21a26da
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
6 changes: 5 additions & 1 deletion scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
| Script Name | Description |
|-------------|-------------|
| aws_images_vpc.py | Vpc creation for images building (if no default vpc exists) |
| ClusterWatch.py | Send mail if EKS clusters are active more then 3 days |
| delete_oidc.py | Delete OIDC with no clusters associated |
| delete_unused_ebs.py.py | Delete unused EBS Volumes |
| delete_unused_epis.py | Delete unused Elastic IPs |
| upgrade-provisioner.py | Stratio Cloud Provisioner upgrade |
| upload-images.py | Upload keos images to the cloud-provisioner |

Expand Down Expand Up @@ -77,4 +81,4 @@ ec2 = session.client('ec2')
# Remove 'deploy_tigera_operator' property on keos.yaml.
# Do not copy get-keos-docker-images-list.yml on your home directory.
# Remove bind_mount_var (variable) and bind mount (volume) on docker run command.
# Helm repo: helm-15.0-devel
# Helm repo: helm-15.0-devel
File renamed without changes.
48 changes: 48 additions & 0 deletions scripts/delete_unused_epis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import boto3
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def read_init_params(event):
operating_mode = event.get('operating_mode', 'report_only')
actual_deletion = operating_mode == 'actual_deletion'
logger.info(f'---- {"EIP deletion" if actual_deletion else "EIP report only"} mode enabled ----')
return actual_deletion

def get_unassociated_eips(ec2_client):
unassociated_eips = []
eips = ec2_client.describe_addresses()['Addresses']
for eip in eips:
if 'AssociationId' not in eip:
unassociated_eips.append({
'AllocationId': eip['AllocationId']
})
return unassociated_eips

def batch_release_addresses(ec2_client, region_name, unassociated_eips, actual_deletion):
for elasticip_to_release in unassociated_eips:
allocation_id = elasticip_to_release['AllocationId']
if actual_deletion:
logger.info(f'Releasing unassociated EIP in region {region_name}: {allocation_id}')
ec2_client.release_address(AllocationId=allocation_id)
else:
logger.info(f'Reporting unassociated EIP in region {region_name}: {allocation_id}')

def invoke_eip_cleanup(actual_deletion):
ec2 = boto3.client('ec2')
regions = ec2.describe_regions()['Regions']

for region in regions:
region_name = region['RegionName']
ec2_client = boto3.client('ec2', region_name=region_name)
logger.info('--- Checking EIPs in region ---> ' + region_name)
unassociated_eips = get_unassociated_eips(ec2_client)
if unassociated_eips:
batch_release_addresses(ec2_client, region_name, unassociated_eips, actual_deletion)
else:
logger.info('No unassociated EIPs found in region')

def main(event, context):
actual_deletion = read_init_params(event)
invoke_eip_cleanup(actual_deletion)

0 comments on commit 21a26da

Please sign in to comment.