'Loads all cluster sections. Similar to _load_sections but also handles
populating specified keypair, volume, plugins, permissions, etc.
settings'

def _load_cluster_sections(self, cluster_sections):

    clusters = cluster_sections
    cluster_store = AttributeDict()
    for cl in clusters:
        name = self._get_section_name(cl)
        cluster_store[name] = AttributeDict()
        self._load_settings(cl, self.cluster_settings, cluster_store[name])
    for cl in clusters:
        name = self._get_section_name(cl)
        self._load_extends_settings(name, cluster_store)
        self._load_defaults(self.cluster_settings, cluster_store[name])
        self._load_keypairs(cluster_store[name])
        self._load_volumes(cluster_store[name])
        self._load_plugins(cluster_store[name])
        self._load_permissions(cluster_store[name])
        self._load_instance_types(cluster_store[name])
        self._check_required(cl, self.cluster_settings, cluster_store[name])
    return cluster_store
