code: def allocate_seg_vlan(self, net_id, is_fw_virt, direc, tenant_id):
          
          seg = self.alloc_seg(net_id)
          vlan = 0
          # VLAN allocation is only needed for physical firewall case
          if not is_fw_virt:
              vlan = self.alloc_vlan(net_id)
          # Updating the local cache
          self.update_net_info(tenant_id, direc, vlan, seg)
docs: allocate segmentation ID and VLAN ID.
  
          Allocate vlan, seg thereby storing NetID atomically.
          This saves an extra step to update DB with NetID after allocation.
          Also may save an extra step after restart, if process crashed
          after allocation but before updating DB with NetID. Now, since
          both steps are combined, Vlan/Seg won't be allocated w/o NetID.