async checkFirewallStatus()

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
  }