in source/networkFirewallAutomation/lib/network-firewall-manager.ts [155:191]
async checkFirewallStatus(): Promise<NetworkFirewall.SyncStates | undefined> {
let firewallStatus: string | undefined = ''
let firewallConfigSyncState: string | undefined = ''
let syncStates: NetworkFirewall.SyncStates | undefined = {};
let areAttachmentsInReadyStatus = false;
do {
// sleep
await this.delay(Time.Seconds15)
let attachmentStatus = []
//describe firewall
const firewallResponse = await this.service.describeFirewall(this.firewallObject.FirewallName)
if (firewallResponse && firewallResponse.FirewallStatus) {
firewallStatus = firewallResponse.FirewallStatus.Status
firewallConfigSyncState = firewallResponse.FirewallStatus.ConfigurationSyncStateSummary
syncStates = firewallResponse.FirewallStatus.SyncStates
Logger.log(LOG_LEVEL.INFO, firewallResponse.FirewallStatus)
}
if (syncStates) {
Logger.log(LOG_LEVEL.INFO, `Sync States for the firewall. `, syncStates)
for (let availabilityZone in syncStates) {
if (syncStates[availabilityZone].Attachment) {
attachmentStatus.push(syncStates[availabilityZone].Attachment?.Status)
}
}
}
areAttachmentsInReadyStatus = attachmentStatus.every(status => status === 'READY')
}
while (firewallStatus != FirewallStatus.Ready || firewallConfigSyncState != FirewallStatus.ConfigInSync || !areAttachmentsInReadyStatus)
Logger.log(LOG_LEVEL.INFO, "Firewall is ready and configuration is in sync across" +
" all the availability zones. Returning the sync states for all" +
" the availability zones.")
return syncStates
}