code: def _create_fw(self, tenant_id, data):
          
          LOG.debug("In creating Native FW data is %s", data)
          # TODO(padkrish):
          # Check if router is already added and only then add, needed for
          # restart cases since native doesn't have a special DB
          ret, in_sub, out_sub = self.attach_intf_router(tenant_id,
                                                         data.get('tenant_name'),
                                                         data.get('router_id'))
          if not ret:
              LOG.error("Native FW: Attach intf router failed for tenant "
                        "%s", tenant_id)
              return False
  
          self.create_tenant_dict(tenant_id, data.get('router_id'))
          arg_dict = self._create_arg_dict(tenant_id, data, in_sub, out_sub)
  
          # Program DCNM to update profile's static IP address on OUT part
          ret = self.update_dcnm_partition_static_route(tenant_id, arg_dict)
          if not ret:
              return False
          # Program the default GW in router namespace
          ret = self.program_default_gw(tenant_id, arg_dict)
          if not ret:
              return False
  
          # Program router namespace to have all tenant networks to be routed
          # to IN service network
          ret = self.program_next_hop(tenant_id, arg_dict)
          if not ret:
              return False
  
          # Send message for router port auto config for in service nwk
          ret = self.send_in_router_port_msg(tenant_id, arg_dict, 'up')
          if not ret:
              return False
  
          # Send message for router port auto config for out service nwk
          return self.send_out_router_port_msg(tenant_id, arg_dict, 'up')
docs: Internal routine that gets called when a FW is created.