Skip to content

Commit a0e3535

Browse files
Merge pull request #11 from DNXLabs/feature/envhealthchecks
2 parents a00aa27 + 57cd0b9 commit a0e3535

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

src/clone_blue_environment.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import time
33
import os
4+
import swap_environment
45

56
# noqa: E502
67

@@ -32,6 +33,17 @@ def main(BLUE_ENV_NAME, GREEN_ENV_NAME, BEANSTALK_APP_NAME, S3_ARTIFACTS_BUCKET,
3233
)
3334

3435
print("Green environment ID: " + green_env_id)
36+
print("Wating for the Green environment to be Ready and Healthy\n")
37+
38+
green_env_info, beanstalkclient = swap_environment.get_environment_information(
39+
beanstalkclient, GREEN_ENV_NAME)
40+
while ((green_env_info["Environments"][0]["Status"] != "Ready") and (green_env_info["Environments"][0]["Health"] != "Green") and (green_env_info["Environments"][0]["HealthStatus"] != "Ok")):
41+
time.sleep(10)
42+
green_env_info,beanstalkclient = swap_environment.get_environment_information(
43+
beanstalkclient, GREEN_ENV_NAME)
44+
45+
print("Green environment is Ready and Healthy\n")
46+
3547
if green_env_id and did_new_env_was_created:
3648
# Create a CNAME Config file
3749
blue_env_cname = blue_env_info['Environments'][0]['CNAME']

src/release_health_check.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def get_env_info(beanstalkclient, env_name):
3636

3737
def wait_until_env_be_ready(beanstalkclient, ENV_NAME):
3838
env_info = get_env_info(beanstalkclient, ENV_NAME)
39-
while env_info["Environments"][0]["Status"] != "Ready":
40-
print("Waiting the blue environment be Ready!")
39+
while ((env_info["Environments"][0]["Status"] != "Ready") and (env_info["Environments"][0]["HealthStatus"] != "Ok")):
40+
print("Waiting the blue environment to be Ready and Healthy!")
4141
time.sleep(10)
4242
env_info = get_env_info(beanstalkclient, ENV_NAME)
4343
return "Env is ready"

src/swap_environment.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def main(BLUE_ENV_NAME, GREEN_ENV_NAME, S3_ARTIFACTS_BUCKET, BEANSTALK_APP_NAME,
3838
if blue_env_url == green_env_cname:
3939
print("Nothing to swap")
4040
else:
41-
while green_env_info["Environments"][0]["Status"] != "Ready":
41+
while ((green_env_info["Environments"][0]["Status"] != "Ready") and (green_env_info["Environments"][0]["Health"] != "Green") and (green_env_info["Environments"][0]["HealthStatus"] != "Ok")):
4242
time.sleep(10)
4343
green_env_info = get_environment_information(
4444
beanstalkclient, GREEN_ENV_NAME)
@@ -74,7 +74,7 @@ def get_environment_information(beanstalkclient, EnvName):
7474
time.sleep(60)
7575

7676
if env_count == 3:
77-
print(f"Waiting for {EnvName} env to be ready.")
77+
print(f"Waiting for {EnvName} env to be ready and Healthy.")
7878
env_count = 0
7979
else:
8080
env_count += 1
@@ -87,7 +87,7 @@ def swap_urls(beanstalkclient, SourceEnv, DestEnv):
8787
green_env_data = (beanstalkclient.describe_environments(
8888
EnvironmentNames=[SourceEnv, DestEnv], IncludeDeleted=False))
8989
print(green_env_data)
90-
if (((green_env_data["Environments"][0]["Status"]) == "Ready") and ((green_env_data["Environments"][1]["Status"]) == "Ready")):
90+
if (((green_env_data["Environments"][0]["Status"]) == "Ready") and ((green_env_data["Environments"][0]["HealthStatus"]) == "Ok") and ((green_env_data["Environments"][1]["Status"]) == "Ready") and ((green_env_data["Environments"][1]["HealthStatus"]) == "Ok")):
9191
beanstalkclient.swap_environment_cnames(
9292
SourceEnvironmentName=SourceEnv, DestinationEnvironmentName=DestEnv)
9393
return ("Successful")

src/terminate_green_env.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def main(BLUE_ENV_NAME, GREEN_ENV_NAME, BEANSTALK_APP_NAME, boto_authenticated_c
1414
DeleteConfigTemplate=delete_config_template_blue(beanstalkclient, AppName=(BEANSTALK_APP_NAME), TempName=(CREATE_CONFIG_TEMPLATE_NAME))
1515
print(DeleteConfigTemplate)
1616
#re-swapping the urls
17-
print("Swapping URL's")
17+
print("Swapping URL's back!")
1818
reswap = swap_green_blue(beanstalkclient, SourceEnv=(BLUE_ENV_NAME), DestEnv=(GREEN_ENV_NAME))
1919
if reswap == "Failure":
2020
print("Re-Swap did not happen")
@@ -38,7 +38,7 @@ def delete_config_template_blue(beanstalkclient, AppName, TempName):
3838

3939
def swap_green_blue(beanstalkclient, SourceEnv, DestEnv):
4040
GetEnvData = (beanstalkclient.describe_environments(EnvironmentNames=[SourceEnv,DestEnv],IncludeDeleted=False))
41-
if (((GetEnvData['Environments'][0]['Status']) == "Ready") and ((GetEnvData['Environments'][1]['Status']) == "Ready")):
41+
if (((GetEnvData['Environments'][0]['Status']) == "Ready") and ((GetEnvData['Environments'][0]['HealthStatus']) == "Ok") and ((GetEnvData['Environments'][1]['Status']) == "Ready") and ((GetEnvData['Environments'][1]['HealthStatus']) == "Ok")):
4242
response = beanstalkclient.swap_environment_cnames(SourceEnvironmentName=SourceEnv,DestinationEnvironmentName=DestEnv)
4343
return ("Successful")
4444
else:

0 commit comments

Comments
 (0)