async firewallOperations()

in source/networkFirewallAutomation/lib/network-firewall-manager.ts [122:148]


  async firewallOperations(): Promise<NetworkFirewall.SyncStates | void> {
    let response;
    try {
      // update firewall name to unique firewall name
      this.firewallObject.FirewallName = this.stringUtils.getUniqueResourceName(this.firewallObject.FirewallName)
      const firewallName = this.firewallObject.FirewallName;
      const firewallResponse = await this.service.describeFirewall(firewallName)
      if (firewallResponse && firewallResponse.Firewall) {
        Logger.log(LOG_LEVEL.INFO, `Updating existing firewall: ${firewallName}`)
        const firewallPolicyArn = await this.firewallPolicyOperations(this.firewallObject.FirewallPolicyArn)
        Logger.log(LOG_LEVEL.INFO, `Checking Firewall Status: ${firewallPolicyArn}`)
        response = await this.checkFirewallStatus()
        await this.updateFirewall(firewallResponse, firewallPolicyArn)
      } else {
        Logger.log(LOG_LEVEL.INFO, `Firewall does not exist: ${firewallName}`)
        Logger.log(LOG_LEVEL.INFO, `Checking if firewall policy exist`)
        const firewallPolicyArn = await this.firewallPolicyOperations(this.firewallObject.FirewallPolicyArn)
        Logger.log(LOG_LEVEL.INFO, `Creating Firewall: ${firewallName}`)
        response = await this.createNetworkFirewall(firewallPolicyArn)
      }
      await this.setupLoggingConfigurations(firewallName)
      return response;
    } catch (error) {
      Logger.log(LOG_LEVEL.ERROR, error)
      throw new Error(error)
    }
  }