• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

intuit / Trapheus / 7ecf2541-e446-4544-a68f-78cc8fdb3252

04 Oct 2023 08:10AM CUT coverage: 95.298%. Remained the same
7ecf2541-e446-4544-a68f-78cc8fdb3252

push

circleci

github-actions[bot]
docs: Added README."fr".md translation via https://github.com/dephraiim/translate-readme

527 of 553 relevant lines covered (95.3%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.34
/src/rename/cluster_rename_function.py
1
import os
1✔
2
import boto3
1✔
3
import constants
1✔
4
import custom_exceptions
1✔
5
import utility as util
1✔
6

7
def lambda_rename_dbcluster(event, context):
1✔
8
    """Handles rename of a DB cluster and its corresponding readers and writers"""
9
    region = os.environ['Region']
1✔
10
    rds = boto3.client('rds', region)
1✔
11
    result = {}
1✔
12
    rename_response = {}
1✔
13
    try:
1✔
14
        #rename revert scenario in case of db cluster restore failure
15
        if event.get('Error') == 'ClusterRestoreException' and \
1✔
16
                'Identifier' in event.get('Cause'):
17
            rename_response = cluster_instance_rename_reversal(event, rds)
1✔
18
        else:
19
            rename_response = cluster_instance_rename(event, rds)
1✔
20
        #rename of the db cluster
21
        rds.modify_db_cluster(
1✔
22
            DBClusterIdentifier = rename_response["original_cluster_identifier"],
23
            ApplyImmediately = True,
24
            NewDBClusterIdentifier = rename_response["modified_cluster_identifier"]
25
        )
26
        result['taskname'] = constants.RENAME
1✔
27
        result['identifier'] = rename_response["modified_cluster_identifier"]
1✔
28
        return result
1✔
29
    except Exception as error:
1✔
30
        if constants.RATE_EXCEEDED in str(error):
1✔
31
            raise custom_exceptions.RateExceededException(str(error))
1✔
32
        else:
33
            raise custom_exceptions.RenameException(str(error))
1✔
34

35

36
def cluster_instance_rename_reversal(event, rds):
1✔
37
    """in case of failure at the Restore step, revert the initial rename of cluster readers and writers to unblock any activity on the db"""
38
    response = {}
1✔
39
    response = util.get_identifier_from_error(event)
1✔
40
    try:
1✔
41
        describe_response = rds.describe_db_clusters(
1✔
42
            DBClusterIdentifier = response["original_identifier"]
43
        )
44
        # revert the rename of the reader and writer instances before renaming the cluster
45
        for db_cluster_member in describe_response['DBClusters'][0]['DBClusterMembers']:
1✔
46
            old_dbinstance_id = db_cluster_member['DBInstanceIdentifier']
1✔
47
            new_dbinstance_id = util.get_modified_identifier(old_dbinstance_id)["instance_id"]
1✔
48
            rds.modify_db_instance(
1✔
49
                DBInstanceIdentifier = old_dbinstance_id,
50
                ApplyImmediately = True,
51
                NewDBInstanceIdentifier = new_dbinstance_id
52
            )
53
        response["original_cluster_identifier"] = response["original_identifier"]
1✔
54
        response["modified_cluster_identifier"] = response["modified_identifier"]
1✔
55
        return response
1✔
56
    except Exception as error:
×
57
        error_message = util.get_error_message(response["modified_identifier"], error)
×
58
        raise Exception(error_message)
×
59

60
def cluster_instance_rename(event,rds):
1✔
61
    """rename of the reader and writer instances in a cluster"""
62
    response = {}
1✔
63
    original_cluster_identifier = event['identifier']
1✔
64
    modified_cluster_identifier = event['identifier'] + constants.TEMP_POSTFIX
1✔
65
    try:
1✔
66
        describe_response = rds.describe_db_clusters(
1✔
67
            DBClusterIdentifier = original_cluster_identifier
68
        )
69
        #rename the reader and writer instances before renaming the cluster
70
        for db_cluster_member in describe_response['DBClusters'][0]['DBClusterMembers']:
1✔
71
            old_dbinstance_id = db_cluster_member['DBInstanceIdentifier']
1✔
72
            new_dbinstance_id = old_dbinstance_id + constants.TEMP_POSTFIX
1✔
73
            rds.modify_db_instance(
1✔
74
                DBInstanceIdentifier = old_dbinstance_id,
75
                ApplyImmediately = True,
76
                NewDBInstanceIdentifier = new_dbinstance_id
77
            )
78
        response["original_cluster_identifier"] = original_cluster_identifier
1✔
79
        response["modified_cluster_identifier"] = modified_cluster_identifier
1✔
80
        return response
1✔
81
    except Exception as error:
1✔
82
        error_message = util.get_error_message(modified_cluster_identifier, error)
1✔
83
        raise Exception(error_message)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc