async firewallPolicyOperations()

in source/networkFirewallAutomation/lib/network-firewall-manager.ts [194:230]


  async firewallPolicyOperations(policyPath: string): Promise<string> {
    let describePolicyResponse;
    try {
      Logger.log(LOG_LEVEL.INFO, `Getting Firewall Policy Object`)
      const policyObject: NetworkFirewall.CreateFirewallPolicyRequest = await this.ruleGroupOperations(this.fileHandler.convertFileToObject(policyPath))
      // update policy name to unique policy name
      policyObject.FirewallPolicyName = this.stringUtils.getUniqueResourceName(policyObject.FirewallPolicyName)
      Logger.log(LOG_LEVEL.INFO, `Checking if Firewall Policy exist: ${policyObject.FirewallPolicyName}`)
      Logger.log(LOG_LEVEL.INFO, `Found Firewall Policy, trying to update the policy.`)
      describePolicyResponse = await this.service.describeFirewallPolicy(policyObject.FirewallPolicyName)
      Logger.log(LOG_LEVEL.INFO, `Describe policy response`, describePolicyResponse)
      if (describePolicyResponse && describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn) {
        describePolicyResponse.FirewallPolicy = policyObject.FirewallPolicy
        describePolicyResponse.FirewallPolicyResponse.Description = policyObject.Description
        describePolicyResponse.FirewallPolicyResponse.Tags = policyObject.Tags
        let firewallPolicyUpdateResponse = await this.service.updateFirewallPolicy({
          FirewallPolicyArn: describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn,
          FirewallPolicy: policyObject.FirewallPolicy,
          UpdateToken: describePolicyResponse.UpdateToken,
          Description: policyObject.Description,
          FirewallPolicyName: describePolicyResponse.FirewallPolicyResponse.FirewallPolicyName
        })
        Logger.log(LOG_LEVEL.INFO, `Firewall update policy response:`, firewallPolicyUpdateResponse)
        //delete the rule groups which are currently in the firewall  but not in the new firewall policy file
        await this.deleteRuleGroups(policyObject);
        return describePolicyResponse.FirewallPolicyResponse.FirewallPolicyArn

      } else {
        Logger.log(LOG_LEVEL.INFO, `Firewall Policy does not exist,  trying to create the policy.`)
        const responseCreateFirewallPolicy = await this.service.createFirewallPolicy(policyObject)
        return responseCreateFirewallPolicy.FirewallPolicyResponse.FirewallPolicyArn
      }
    } catch (error) {
      Logger.log(LOG_LEVEL.INFO, error)
      throw new Error(error)
    }
  }