code: def _allocate_specified_segment(self, session, seg_id, source):
          
          try:
              with session.begin(subtransactions=True):
                  alloc = (session.query(self.model).filter_by(
                      segmentation_id=seg_id).first())
                  if alloc:
                      if alloc.allocated:
                          # Segment already allocated
                          return
                      else:
                          # Segment not allocated
                          count = (session.query(self.model).
                                   filter_by(allocated=False,
                                             segmentation_id=seg_id).update(
                                                 {"allocated": True}))
                          if count:
                              return alloc
  
                  # Segment to create or already allocated
                  alloc = self.model(segmentation_id=seg_id,
                                     allocated=True, source=source)
                  session.add(alloc)
  
          except db_exc.DBDuplicateEntry:
              # Segment already allocated (insert failure)
              alloc = None
  
          return alloc
docs: Allocate specified segment.
  
          If segment exists, then try to allocate it and return db object
          If segment does not exists, then try to create it and return db object
          If allocation/creation failed (duplicates), then return None