code: def _fw_update(self, drvr_name, data):
          
          fw = data.get('firewall')
          tenant_id = fw.get('tenant_id')
          if self.fwid_attr[tenant_id].is_fw_complete() or \
             self.fwid_attr[tenant_id].is_fw_drvr_create_needed():
              prev_info_complete = True
          else:
              prev_info_complete = False
  
          tenant_obj = self.fwid_attr[tenant_id]
          if 'router_ids' in fw and len(fw.get('router_ids')) != 0:
              rtr_id = fw.get('router_ids')[0]
              name = dfa_dbm.DfaDBMixin.get_project_name(self, tenant_id)
              rtr_name = '_'.join([fw_constants.TENANT_EDGE_RTR, name])
  
              fw_rtr_name = self.os_helper.get_rtr_name(rtr_id)
              fw_type = None
              if fw_rtr_name == rtr_name:
                  fw_type = fw_constants.FW_TENANT_EDGE
              tenant_obj.update_fw_params(rtr_id, fw_type)
  
          if not prev_info_complete:
              self._check_create_fw(tenant_id, drvr_name)
docs: Update routine for the Firewall.
  
          Check if FW is already cfgd using the below function
          if self.fwid_attr[tenant_id].is_fw_complete() or
          is_fw_drvr_create_needed():
          The above two functions will take care of whether FW is already
          cfgd or about to be cfgd in case of error.
          If yes, this may be a change in policies attached to FW.
          If no, do a check, create after storing the parameters like
          rtr_id.