Fail execution if a role repo is a bare collection of roles
We generally expect a repo to either be a single bare role, or
to have a "roles/" directory which is a collection of roles.
We previously also supported the repo itself being a collection
of roles at the root of the repo, but that's not widely used
and is potentially confusing. Especially since we want to make
a followup change to implicitly treat some repos as roles repos.
Stop supporting that for now. If folks want to support this,
we might consider doing so only if there is a meta/main.ya?ml
file in the repo (as Galaxy accidentally supports that, though
it is not an explicit contract they guarantee).
Change-Id: Ie70e9fae4da57d4aefa01442a9f60526163b27c0
diff --git a/zuul/executor/server.py b/zuul/executor/server.py
index 1ebe55d..d90ba92 100644
--- a/zuul/executor/server.py
+++ b/zuul/executor/server.py
@@ -1079,11 +1079,8 @@
for entry in os.listdir(d):
self._blockPluginDirs(os.path.join(d, entry))
return d
- # We assume the repository itself is a collection of roles
- if not trusted:
- for entry in os.listdir(path):
- self._blockPluginDirs(os.path.join(path, entry))
- return path
+ # It is neither a bare role, nor a collection of roles
+ raise Exception("Unable to find role in %s" % (path,))
def prepareZuulRole(self, args, role, root, trusted, untrusted):
self.log.debug("Prepare zuul role for %s" % (role,))