use name_or_id_clause in get_host

This commit is contained in:
Mike McLean 2021-11-10 12:50:43 -05:00 committed by Tomas Kopecek
parent 5ee9c7396a
commit f87d1c3479
2 changed files with 10 additions and 15 deletions

View file

@ -5467,17 +5467,12 @@ def get_host(hostInfo, strict=False, event=None):
}
clauses = [eventCondition(event, table='host_config')]
if isinstance(hostInfo, int):
clauses.append("host.id = %(hostInfo)i")
elif isinstance(hostInfo, str):
clauses.append("host.name = %(hostInfo)s")
else:
raise koji.GenericError('Invalid type for hostInfo: %s' % type(hostInfo))
clause, values = name_or_id_clause(hostInfo, table='host')
clauses.append(clause)
data = {'hostInfo': hostInfo}
fields, aliases = zip(*fields.items())
query = QueryProcessor(columns=fields, aliases=aliases, tables=tables,
joins=joins, clauses=clauses, values=data)
joins=joins, clauses=clauses, values=values)
result = query.executeOne()
if not result:
if strict:

View file

@ -40,13 +40,13 @@ class TestSetHostEnabled(unittest.TestCase):
joins = ['host ON host.id = host_config.host_id']
aliases = ['id', 'user_id', 'name', 'ready', 'task_load',
'arches', 'capacity', 'description', 'comment', 'enabled']
clauses = ['(host_config.active = TRUE)', 'host.name = %(hostInfo)s']
values = {'hostInfo': 'hostname'}
clauses = ['(host_config.active = TRUE)', '(host.name = %(host_name)s)']
values = {'host_name': 'hostname'}
self.assertEqual(query.tables, ['host_config'])
self.assertEqual(query.joins, joins)
self.assertEqual(set(query.columns), set(columns))
self.assertEqual(set(query.aliases), set(aliases))
self.assertEqual(query.clauses, clauses)
self.assertEqual(set(query.clauses), set(clauses))
self.assertEqual(query.values, values)
def test_get_host_by_id_event(self):
@ -63,13 +63,13 @@ class TestSetHostEnabled(unittest.TestCase):
'arches', 'capacity', 'description', 'comment', 'enabled']
clauses = ['(host_config.create_event <= 345 AND ( host_config.revoke_event IS NULL '
'OR 345 < host_config.revoke_event ))',
'host.id = %(hostInfo)i']
values = {'hostInfo': 123}
'(host.id = %(host_id)s)']
values = {'host_id': 123}
self.assertEqual(query.tables, ['host_config'])
self.assertEqual(query.joins, joins)
self.assertEqual(set(query.columns), set(columns))
self.assertEqual(set(query.aliases), set(aliases))
self.assertEqual(query.clauses, clauses)
self.assertEqual(set(query.clauses), set(clauses))
self.assertEqual(query.values, values)
def getQueryMissing(self, *args, **kwargs):
@ -95,5 +95,5 @@ class TestSetHostEnabled(unittest.TestCase):
host_info = {'host_id': 567}
with self.assertRaises(koji.GenericError) as cm:
self.exports.getHost(host_info)
self.assertEqual("Invalid type for hostInfo: %s" % type(host_info), str(cm.exception))
self.assertEqual("Invalid name or id value: %s" % host_info, str(cm.exception))
self.assertEqual(len(self.queries), 0)