def load(self, distro, component, persona=None, origins_patch=None):
        # NOTE (vnovikov): applying takes place before loading reference links
        self._apply_persona(component, persona)

        dir_opts = self._get_dir_opts(component)
        distro_opts = distro.options
        origins_opts = {}
        if self._origins_path:
            try:
                origins = _origins.load(self._origins_path,
                                        patch_file=origins_patch)
                origins_opts = origins[component]
            except __HOLE__:
                pass

        component_opts = []
        for conf in ('general', component):
            try:
                component_opts.append(self._base_loader.load(conf))
            except exceptions.YamlConfigNotFoundException:
                LOG.warn("Unable to find component specific configuration"
                         " for component '%s'", conf, exc_info=True)

        # NOTE (vnovikov): merge order is the same as arguments order below.
        merged_opts = utils.merge_dicts(
            dir_opts,
            distro_opts,
            origins_opts,
            *component_opts
        )
        return merged_opts
dataset/ETHPy150Open openstack/anvil/anvil/cfg.py/YamlMergeLoader.load