Replace categories with tags.

Also added --ignore-certs option for use with install and search commands. Helpful when
overriding server and server has self signed cert.
This commit is contained in:
chouseknecht 2015-09-21 18:44:19 +00:00 committed by James Cammarata
parent 6d8abe84e4
commit 8360a1b3f2
3 changed files with 29 additions and 30 deletions

View file

@ -85,9 +85,9 @@ class GalaxyCLI(CLI):
elif self.action == "search":
self.parser.add_option('-P', '--platforms', dest='platforms',
help='list of OS platforms to filter by')
self.parser.add_option('-C', '--categories', dest='categories',
help='list of categories to filter by')
self.parser.set_usage("usage: %prog search [<search_term>] [-C <category1,category2>] [-P platform]")
self.parser.add_option('-T', '--tags', dest='tags',
help='list of tags to filter by')
self.parser.set_usage("usage: %prog search [<search_term>] [-T <tag1,tag2>] [-P platform]")
# options that apply to more than one action
if self.action != "init":
@ -99,6 +99,8 @@ class GalaxyCLI(CLI):
if self.action in ("info","init","install","search"):
self.parser.add_option('-s', '--server', dest='api_server', default="https://galaxy.ansible.com",
help='The API server destination')
self.parser.add_option('-c', '--ignore-certs', action='store_false', dest='validate_certs', default=True,
help='Ignore SSL certificate validation errors.')
if self.action in ("init","install"):
self.parser.add_option('-f', '--force', dest='force', action='store_true', default=False,
@ -251,9 +253,6 @@ class GalaxyCLI(CLI):
platforms = []
if not offline and self.api:
platforms = self.api.get_list("platforms") or []
categories = []
if not offline and self.api:
categories = self.api.get_list("categories") or []
# group the list of platforms from the api based
# on their names, with the release field being
@ -270,7 +269,6 @@ class GalaxyCLI(CLI):
issue_tracker_url = 'http://example.com/issue/tracker',
min_ansible_version = '1.2',
platforms = platform_groups,
categories = categories,
)
rendered_meta = Environment().from_string(self.galaxy.default_meta).render(inject)
f = open(main_yml_path, 'w')
@ -543,7 +541,7 @@ class GalaxyCLI(CLI):
elif len(self.args) == 1:
search = self.args.pop()
response = self.api.search_roles(search, self.options.platforms, self.options.categories)
response = self.api.search_roles(search, self.options.platforms, self.options.tags)
if 'count' in response:
self.galaxy.display.display("Found %d roles matching your search:\n" % response['count'])

View file

@ -62,7 +62,7 @@ class GalaxyAPI(object):
return 'v1'
try:
data = json.load(open_url(api_server))
data = json.load(open_url(api_server, validate_certs=self.galaxy.options.validate_certs))
return data.get("current_version", 'v1')
except Exception as e:
# TODO: report error
@ -86,7 +86,7 @@ class GalaxyAPI(object):
url = '%s/roles/?owner__username=%s&name=%s' % (self.baseurl, user_name, role_name)
self.galaxy.display.vvvv("- %s" % (url))
try:
data = json.load(open_url(url))
data = json.load(open_url(url, validate_certs=self.galaxy.options.validate_certs))
if len(data["results"]) != 0:
return data["results"][0]
except:
@ -103,13 +103,13 @@ class GalaxyAPI(object):
try:
url = '%s/roles/%d/%s/?page_size=50' % (self.baseurl, int(role_id), related)
data = json.load(open_url(url))
data = json.load(open_url(url, validate_certs=self.galaxy.options.validate_certs))
results = data['results']
done = (data.get('next', None) == None)
while not done:
url = '%s%s' % (self.baseurl, data['next'])
self.galaxy.display.display(url)
data = json.load(open_url(url))
data = json.load(open_url(url, validate_certs=self.galaxy.options.validate_certs))
results += data['results']
done = (data.get('next', None) == None)
return results
@ -123,7 +123,7 @@ class GalaxyAPI(object):
try:
url = '%s/%s/?page_size' % (self.baseurl, what)
data = json.load(open_url(url))
data = json.load(open_url(url, validate_certs=self.galaxy.options.validate_certs))
if "results" in data:
results = data['results']
else:
@ -134,27 +134,27 @@ class GalaxyAPI(object):
while not done:
url = '%s%s' % (self.baseurl, data['next'])
self.galaxy.display.display(url)
data = json.load(open_url(url))
data = json.load(open_url(url, validate_certs=self.galaxy.options.validate_certs))
results += data['results']
done = (data.get('next', None) == None)
return results
except Exception as error:
raise AnsibleError("Failed to download the %s list: %s" % (what, str(error)))
def search_roles(self, search, platforms=None, categories=None):
def search_roles(self, search, platforms=None, tags=None):
search_url = self.baseurl + '/roles/?page=1'
if search:
search_url += '&search=' + urlquote(search)
if categories is None:
categories = []
elif isinstance(categories, basestring):
categories = categories.split(',')
if tags is None:
tags = []
elif isinstance(tags, basestring):
tags = tags.split(',')
for cat in categories:
search_url += '&chain__categories__name=' + urlquote(cat)
for tag in tags:
search_url += '&chain__tags__name=' + urlquote(tag)
if platforms is None:
platforms = []
@ -166,7 +166,7 @@ class GalaxyAPI(object):
self.galaxy.display.debug("Executing query: %s" % search_url)
try:
data = json.load(open_url(search_url))
data = json.load(open_url(search_url, validate_certs=self.galaxy.options.validate_certs))
except HTTPError as e:
raise AnsibleError("Unsuccessful request to server: %s" % str(e))

View file

@ -28,14 +28,15 @@ galaxy_info:
# - {{ version }}
{%- endfor %}
{%- endfor %}
tags: []
# List tags for your role here, one per line. A tag is
# a keyword that describes and categorizes the role.
# Users find roles by searching for tags. Be sure to
# remove the '[]' above if you add dependencies
# to this list.
#
# Below are all categories currently available. Just as with
# the platforms above, uncomment those that apply to your role.
#
#categories:
{%- for category in categories %}
#- {{ category.name }}
{%- endfor %}
# NOTE: A tag is limted to a single word comprised of
# alphanumeric characters. Maximum 20 tags per role.
dependencies: []
# List your role dependencies here, one per line.
# Be sure to remove the '[]' above if you add dependencies