def METHOD_NAME(self, topdir, channel, directory_name):
    if not self.r.config_channel_exists(channel):
        die(6, "Error: config channel %s does not exist" % channel)
    if self.options.disable_selinux:
        selinux_ctx = ''
    else:
        selinux_ctx = None
    print("Using config channel %s" % channel)
    channel_dir = utils.join_path(topdir, directory_name)
    if not os.path.exists(channel_dir):
        die(6, "Error: channel directory %s does not exist" % channel_dir)
    flist = list_files_recursive(channel_dir)
    for (dirname, filenames) in flist:
        assert dirname.startswith(channel_dir)
        remote_dirname = dirname[len(channel_dir):]
        for f in filenames:
            local_file = utils.join_path(dirname, f)
            remote_file = utils.join_path(remote_dirname, f)
            print("Uploading %s from %s" % (remote_file, local_file))
            try:
                self.r.put_file(channel, remote_file, local_file, is_first_revision=0,
                                selinux_ctx = selinux_ctx)
            except cfg_exceptions.RepositoryFilePushError:
                e = sys.exc_info()[1]
                log_error(e)