'path: the directory we are scanning for files
name: the base name of the distro
network_root: the remote path (nfs/http/ftp) for the distro files
autoinstall_file: user-specified response file, which will override the default
arch: user-specified architecture
breed: user-specified breed
os_version: user-specified OS version'

def run(self, path, name, network_root=None, autoinstall_file=None, arch=None, breed=None, os_version=None):

    self.name = name
    self.network_root = network_root
    self.autoinstall_file = autoinstall_file
    self.arch = arch
    self.breed = breed
    self.os_version = os_version
    self.path = path
    self.rootdir = path
    self.pkgdir = path
    if (self.arch == ''):
        self.arch = None
    if (self.name == ''):
        self.name = None
    if (self.autoinstall_file == ''):
        self.autoinstall_file = None
    if (self.os_version == ''):
        self.os_version = None
    if (self.network_root == ''):
        self.network_root = None
    if (self.os_version and (not self.breed)):
        utils.die(self.logger, 'OS    version    can    only    be    specified    when    a    specific    breed    is    selected')
    self.signature = self.scan_signatures()
    if (not self.signature):
        error_msg = ('No    signature    matched    in    %s' % path)
        self.logger.error(error_msg)
        raise CX(error_msg)
    self.logger.info(('Adding    distros    from    path    %s:' % self.path))
    distros_added = []
    os.path.walk(self.path, self.distro_adder, distros_added)
    if (len(distros_added) == 0):
        self.logger.warning('No    distros    imported,    bailing    out')
        return
    if (self.network_root is None):
        self.logger.info('associating    repos')
        self.repo_finder(distros_added)
