def hierarchy(scope, override)
begin
data_class = Config[:puppet][:datasource] || "data"
rescue
data_class = "data"
end
calling_class = scope.resource.name.to_s.downcase
calling_module = calling_class.split("::").first
hierarchy = Config[:hierarchy] || [calling_class, calling_module]
hierarchy = [hierarchy].flatten.map do |klass|
klass = Backend.parse_string(klass, scope, {"calling_class" => calling_class, "calling_module" => calling_module})
next if klass == ""
[data_class, klass].join("::")
end.compact
hierarchy << [calling_class, data_class].join("::")
hierarchy << [calling_module, data_class].join("::") unless calling_module == calling_class
hierarchy.insert(0, [data_class, override].join("::")) if override
hierarchy
end