code: def binPack(self, jobShapes):
          
          # TODO: Check for redundancy with batchsystems.mesos.JobQueue() sorting
          logger.debug('Running bin packing for node shapes %s and %s job(s).',
                       self.nodeShapes, len(jobShapes))
          # Sort in descending order from largest to smallest. The FFD like-strategy will pack the
          # jobs in order from longest to shortest.
          jobShapes.sort()
          jobShapes.reverse()
          assert len(jobShapes) == 0 or jobShapes[0] >= jobShapes[-1]
          for jS in jobShapes:
              self.addJobShape(jS)
docs: Pack a list of jobShapes into the fewest nodes reasonable. Can be run multiple times.