Vulnerability UI part 2

Fixes #860
Fixes #855
This commit is contained in:
Joseph Schorr 2015-11-12 15:42:45 -05:00
parent 6970b0685e
commit 3b3f101ea6
23 changed files with 419 additions and 73 deletions

View file

@ -15,6 +15,13 @@ from endpoints.api import (require_repo_read, NotFound, DownstreamIssue, path_pa
logger = logging.getLogger(__name__)
class SCAN_STATUS(object):
""" Security scan status enum """
SCANNED = 'scanned'
FAILED = 'failed'
QUEUED = 'queued'
def _call_security_api(relative_url, *args, **kwargs):
""" Issues an HTTP call to the sec API at the given relative URL. """
try:
@ -39,6 +46,13 @@ def _call_security_api(relative_url, *args, **kwargs):
return response_data
def _get_status(repo_image):
if repo_image.security_indexed_engine:
return SCAN_STATUS.SCANNED if repo_image.security_indexed else SCAN_STATUS.FAILED
return SCAN_STATUS.QUEUED
@show_if(features.SECURITY_SCANNER)
@resource('/v1/repository/<repopath:repository>/image/<imageid>/vulnerabilities')
@path_param('repository', 'The full path of the repository. e.g. namespace/name')
@ -61,7 +75,7 @@ class RepositoryImageVulnerabilities(RepositoryParamResource):
logger.debug('Image %s under repository %s/%s not security indexed',
repo_image.docker_image_id, namespace, repository)
return {
'security_indexed': False
'status': _get_status(repo_image),
}
layer_id = '%s.%s' % (repo_image.docker_image_id, repo_image.storage.uuid)
@ -69,7 +83,7 @@ class RepositoryImageVulnerabilities(RepositoryParamResource):
minimumPriority=args.minimumPriority)
return {
'security_indexed': True,
'status': _get_status(repo_image),
'data': data,
}
@ -91,14 +105,14 @@ class RepositoryImagePackages(RepositoryParamResource):
if not repo_image.security_indexed:
return {
'security_indexed': False
'status': _get_status(repo_image),
}
layer_id = '%s.%s' % (repo_image.docker_image_id, repo_image.storage.uuid)
data = _call_security_api('layers/%s/packages', layer_id)
return {
'security_indexed': True,
'status': _get_status(repo_image),
'data': data,
}