docs: def quality_control(self, commercial_invoice, attach=False, clean=None, test=None, configs=None, use_cache=False, env=None):
          """
          :param attach:
          :param clean:
          :param test:
          :param configs:
          :return:
          """
          commercial_invoice = self.__validate_commercial_invoice(commercial_invoice, 'quality_control')
  
          fleet = self.__assemble_fleet(commercial_invoice)
          logger.info('Running quality control.')
  
          try:
              for address, container_ship in six.iteritems(fleet):
                  # write state file
                  self.__write_state_file(address, commercial_invoice.data_center, commercial_invoice.environment)
  
                  # get new transport service
                  transport_service = commercial_invoice.transport_service
  
                  # if env is provided merge what has been passed.
                  if env is not None:
                      transport_service.container_config.merge_env(env)
  
                  # share some host info with user.
                  container_ship.report()
  
                  # check with dispatch to see if its okay to export.
                  self.__wait_for_dispatch(address)
  
                  logger.info('dispatching service: {0} on host: {1}.'.format(
                      transport_service.alias,
                      address
                  ))
  
                  # TODO: need to inject on all services during qc if configs == true
                  if configs:
                      container_ship.injector = commercial_invoice.injector if configs else None
  
                  if attach:
                      dependents = False
                  else:
                      dependents = True
  
                  self.__dispatch(container_ship, transport_service, attach, configs, dependents, test, use_cache)
  
                  if clean:
                      # delete containers.
                      container_ship.offload_service_containers(transport_service)
  
                      # delete images
                      container_ship.offload_service_cargo(transport_service)
                  else:
                      # clean up previous containers
                      container_ship.offload_previous_containers(transport_service)
  
                      # clean up service expired service cargo.
                      container_ship.offload_expired_service_cargo(transport_service)
  
              # TODO: Do something with failures / return bill of lading
              return False if self._bill_of_lading.get('failures') else True
          finally:
              # complete distribution and delete state file.
              self.__complete_distribution(commercial_invoice)