Implement tiller gRPC channel clean up
We have seen issues with dangling threads in Armada. This is likely due to a bug [0] in the version of gRPC that we were pinned to. This patchset: - moves us to the latest versions of the gRPC python libraries which add a new `channel.close()` method to cleanup channels. - implements the python context manager api in the tiller handler - uses the context manager api to explicitly scope tiller channel creation and cleanup to each Armada API and CLI call. This also fixes a couples issues with error handling introduced in [1]. [0]: https://github.com/grpc/grpc/issues/14338 [1]: https://review.openstack.org/#/c/610384 Change-Id: I2577a20fc76c397aa33157dc12a0e1d36f49733e
This commit is contained in:
parent
d35896537b
commit
7af22df7dc
@ -23,6 +23,8 @@ import falcon
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
|
||||
from armada.handlers.tiller import Tiller
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
@ -107,6 +109,19 @@ class BaseResource(object):
|
||||
def error(self, ctx, msg):
|
||||
self.log_error(ctx, log.ERROR, msg)
|
||||
|
||||
def get_tiller(self, req, resp):
|
||||
dry_run = req.get_param_as_bool('dry_run')
|
||||
tiller_port = req.get_param_as_int('tiller_port') or CONF.tiller_port
|
||||
tiller_namespace = req.get_param(
|
||||
'tiller_namespace',
|
||||
default=CONF.tiller_namespace) or CONF.tiller_namespace
|
||||
|
||||
return Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=tiller_port,
|
||||
tiller_namespace=tiller_namespace,
|
||||
dry_run=dry_run)
|
||||
|
||||
|
||||
class ArmadaRequestContext(object):
|
||||
|
||||
|
@ -16,7 +16,6 @@ import json
|
||||
import yaml
|
||||
|
||||
import falcon
|
||||
from oslo_config import cfg
|
||||
|
||||
from armada import api
|
||||
from armada.common import policy
|
||||
@ -25,8 +24,6 @@ from armada.handlers.armada import Armada
|
||||
from armada.handlers.document import ReferenceResolver
|
||||
from armada.handlers.override import Override
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
class Apply(api.BaseResource):
|
||||
"""Controller for installing and updating charts defined in an Armada
|
||||
@ -71,31 +68,30 @@ class Apply(api.BaseResource):
|
||||
message="Request must be in application/x-yaml"
|
||||
"or application/json")
|
||||
try:
|
||||
armada = Armada(
|
||||
documents,
|
||||
disable_update_pre=req.get_param_as_bool('disable_update_pre'),
|
||||
disable_update_post=req.get_param_as_bool(
|
||||
'disable_update_post'),
|
||||
enable_chart_cleanup=req.get_param_as_bool(
|
||||
'enable_chart_cleanup'),
|
||||
dry_run=req.get_param_as_bool('dry_run'),
|
||||
force_wait=req.get_param_as_bool('wait'),
|
||||
timeout=req.get_param_as_int('timeout'),
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace),
|
||||
target_manifest=req.get_param('target_manifest'))
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
|
||||
msg = armada.sync()
|
||||
armada = Armada(
|
||||
documents,
|
||||
disable_update_pre=req.get_param_as_bool(
|
||||
'disable_update_pre'),
|
||||
disable_update_post=req.get_param_as_bool(
|
||||
'disable_update_post'),
|
||||
enable_chart_cleanup=req.get_param_as_bool(
|
||||
'enable_chart_cleanup'),
|
||||
dry_run=req.get_param_as_bool('dry_run'),
|
||||
force_wait=req.get_param_as_bool('wait'),
|
||||
timeout=req.get_param_as_int('timeout'),
|
||||
tiller=tiller,
|
||||
target_manifest=req.get_param('target_manifest'))
|
||||
|
||||
resp.body = json.dumps({
|
||||
'message': msg,
|
||||
})
|
||||
msg = armada.sync()
|
||||
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
resp.body = json.dumps({
|
||||
'message': msg,
|
||||
})
|
||||
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
except exceptions.ManifestException as e:
|
||||
self.return_error(resp, falcon.HTTP_400, message=str(e))
|
||||
except Exception as e:
|
||||
|
@ -19,7 +19,6 @@ from oslo_config import cfg
|
||||
|
||||
from armada import api
|
||||
from armada.common import policy
|
||||
from armada.handlers.tiller import Tiller
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
@ -33,26 +32,20 @@ class Rollback(api.BaseResource):
|
||||
try:
|
||||
dry_run = req.get_param_as_bool('dry_run')
|
||||
|
||||
tiller = Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace),
|
||||
dry_run=dry_run)
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
|
||||
tiller.rollback_release(
|
||||
release,
|
||||
req.get_param_as_int('version') or 0,
|
||||
wait=req.get_param_as_bool('wait'),
|
||||
timeout=req.get_param_as_int('timeout') or 0,
|
||||
force=req.get_param_as_bool('force'),
|
||||
recreate_pods=req.get_param_as_bool('recreate_pods'))
|
||||
tiller.rollback_release(
|
||||
release,
|
||||
req.get_param_as_int('version') or 0,
|
||||
wait=req.get_param_as_bool('wait'),
|
||||
timeout=req.get_param_as_int('timeout') or 0,
|
||||
force=req.get_param_as_bool('force'),
|
||||
recreate_pods=req.get_param_as_bool('recreate_pods'))
|
||||
|
||||
resp.body = json.dumps({
|
||||
'message': ('(dry run) ' if dry_run else '') +
|
||||
'Rollback of {} complete.'.format(release),
|
||||
})
|
||||
resp.body = json.dumps({
|
||||
'message': ('(dry run) ' if dry_run else '') +
|
||||
'Rollback of {} complete.'.format(release),
|
||||
})
|
||||
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
|
@ -22,7 +22,6 @@ from armada import api
|
||||
from armada.common import policy
|
||||
from armada import const
|
||||
from armada.handlers.test import test_release_for_success
|
||||
from armada.handlers.tiller import Tiller
|
||||
from armada.handlers.manifest import Manifest
|
||||
from armada.utils.release import release_prefixer
|
||||
from armada.utils import validate
|
||||
@ -38,24 +37,13 @@ class TestReleasesReleaseNameController(api.BaseResource):
|
||||
@policy.enforce('armada:test_release')
|
||||
def on_get(self, req, resp, release):
|
||||
self.logger.info('RUNNING: %s', release)
|
||||
try:
|
||||
tiller = Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace))
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
|
||||
cleanup = req.get_param_as_bool('cleanup')
|
||||
if cleanup is None:
|
||||
cleanup = False
|
||||
success = test_release_for_success(
|
||||
tiller, release, cleanup=cleanup)
|
||||
# TODO(fmontei): Provide more sensible exception(s) here.
|
||||
except Exception as e:
|
||||
err_message = 'Failed to test {}: {}'.format(release, e)
|
||||
self.error(req.context, err_message)
|
||||
return self.return_error(
|
||||
resp, falcon.HTTP_500, message=err_message)
|
||||
|
||||
if success:
|
||||
msg = {
|
||||
@ -119,23 +107,10 @@ class TestReleasesManifestController(api.BaseResource):
|
||||
@policy.enforce('armada:test_manifest')
|
||||
def on_post(self, req, resp):
|
||||
# TODO(fmontei): Validation Content-Type is application/x-yaml.
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
return self.handle(req, resp, tiller)
|
||||
|
||||
target_manifest = req.get_param('target_manifest', None)
|
||||
|
||||
try:
|
||||
tiller = Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace))
|
||||
# TODO(fmontei): Provide more sensible exception(s) here.
|
||||
except Exception:
|
||||
err_message = 'Failed to initialize Tiller handler.'
|
||||
self.error(req.context, err_message)
|
||||
return self.return_error(
|
||||
resp, falcon.HTTP_500, message=err_message)
|
||||
|
||||
def handle(self, req, resp, tiller):
|
||||
try:
|
||||
documents = self.req_yaml(req, default=[])
|
||||
except yaml.YAMLError:
|
||||
@ -143,9 +118,10 @@ class TestReleasesManifestController(api.BaseResource):
|
||||
return self.return_error(
|
||||
resp, falcon.HTTP_400, message=err_message)
|
||||
|
||||
target_manifest = req.get_param('target_manifest', None)
|
||||
is_valid = self._validate_documents(req, resp, documents)
|
||||
if not is_valid:
|
||||
return resp
|
||||
return
|
||||
|
||||
armada_obj = Manifest(
|
||||
documents, target_manifest=target_manifest).get_manifest()
|
||||
|
@ -20,7 +20,6 @@ from oslo_log import log as logging
|
||||
|
||||
from armada import api
|
||||
from armada.common import policy
|
||||
from armada.handlers.tiller import Tiller
|
||||
|
||||
CONF = cfg.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
@ -34,27 +33,23 @@ class Status(api.BaseResource):
|
||||
get tiller status
|
||||
'''
|
||||
try:
|
||||
tiller = Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace))
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
|
||||
LOG.debug('Tiller (Status) at: %s:%s, namespace=%s, '
|
||||
'timeout=%s', tiller.tiller_host, tiller.tiller_port,
|
||||
tiller.tiller_namespace, tiller.timeout)
|
||||
LOG.debug(
|
||||
'Tiller (Status) at: %s:%s, namespace=%s, '
|
||||
'timeout=%s', tiller.tiller_host, tiller.tiller_port,
|
||||
tiller.tiller_namespace, tiller.timeout)
|
||||
|
||||
message = {
|
||||
'tiller': {
|
||||
'state': tiller.tiller_status(),
|
||||
'version': tiller.tiller_version()
|
||||
message = {
|
||||
'tiller': {
|
||||
'state': tiller.tiller_status(),
|
||||
'version': tiller.tiller_version()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resp.status = falcon.HTTP_200
|
||||
resp.body = json.dumps(message)
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
resp.body = json.dumps(message)
|
||||
resp.content_type = 'application/json'
|
||||
|
||||
except Exception as e:
|
||||
err_message = 'Failed to get Tiller Status: {}'.format(e)
|
||||
@ -69,26 +64,21 @@ class Release(api.BaseResource):
|
||||
'''Controller for listing Tiller releases.
|
||||
'''
|
||||
try:
|
||||
tiller = Tiller(
|
||||
tiller_host=req.get_param('tiller_host'),
|
||||
tiller_port=req.get_param_as_int('tiller_port') or
|
||||
CONF.tiller_port,
|
||||
tiller_namespace=req.get_param(
|
||||
'tiller_namespace', default=CONF.tiller_namespace))
|
||||
with self.get_tiller(req, resp) as tiller:
|
||||
|
||||
LOG.debug(
|
||||
'Tiller (Release) at: %s:%s, namespace=%s, '
|
||||
'timeout=%s', tiller.tiller_host, tiller.tiller_port,
|
||||
tiller.tiller_namespace, tiller.timeout)
|
||||
LOG.debug(
|
||||
'Tiller (Release) at: %s:%s, namespace=%s, '
|
||||
'timeout=%s', tiller.tiller_host, tiller.tiller_port,
|
||||
tiller.tiller_namespace, tiller.timeout)
|
||||
|
||||
releases = {}
|
||||
for release in tiller.list_releases():
|
||||
releases.setdefault(release.namespace, [])
|
||||
releases[release.namespace].append(release.name)
|
||||
releases = {}
|
||||
for release in tiller.list_releases():
|
||||
releases.setdefault(release.namespace, [])
|
||||
releases[release.namespace].append(release.name)
|
||||
|
||||
resp.body = json.dumps({'releases': releases})
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
resp.body = json.dumps({'releases': releases})
|
||||
resp.content_type = 'application/json'
|
||||
resp.status = falcon.HTTP_200
|
||||
|
||||
except Exception as e:
|
||||
err_message = 'Unable to find Tiller Releases: {}'.format(e)
|
||||
|
@ -78,8 +78,7 @@ def create(enable_middleware=CONF.middleware):
|
||||
policy.Enforcer(CONF)
|
||||
|
||||
# Error handlers (FILO handling)
|
||||
api.add_error_handler(exceptions.ArmadaBaseException,
|
||||
exceptions.default_exception_handler)
|
||||
api.add_error_handler(Exception, exceptions.default_exception_handler)
|
||||
api.add_error_handler(exceptions.ArmadaAPIException,
|
||||
exceptions.ArmadaAPIException.handle)
|
||||
|
||||
|
@ -21,6 +21,7 @@ from armada.cli import CliAction
|
||||
from armada.exceptions.source_exceptions import InvalidPathException
|
||||
from armada.handlers.armada import Armada
|
||||
from armada.handlers.document import ReferenceResolver
|
||||
from armada.handlers.tiller import Tiller
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
@ -198,23 +199,26 @@ class ApplyManifest(CliAction):
|
||||
return
|
||||
|
||||
if not self.ctx.obj.get('api', False):
|
||||
armada = Armada(
|
||||
documents,
|
||||
disable_update_pre=self.disable_update_pre,
|
||||
disable_update_post=self.disable_update_post,
|
||||
enable_chart_cleanup=self.enable_chart_cleanup,
|
||||
dry_run=self.dry_run,
|
||||
set_ovr=self.set,
|
||||
force_wait=self.wait,
|
||||
timeout=self.timeout,
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace,
|
||||
values=self.values,
|
||||
target_manifest=self.target_manifest)
|
||||
with Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace,
|
||||
dry_run=self.dry_run) as tiller:
|
||||
armada = Armada(
|
||||
documents,
|
||||
disable_update_pre=self.disable_update_pre,
|
||||
disable_update_post=self.disable_update_post,
|
||||
enable_chart_cleanup=self.enable_chart_cleanup,
|
||||
dry_run=self.dry_run,
|
||||
set_ovr=self.set,
|
||||
force_wait=self.wait,
|
||||
timeout=self.timeout,
|
||||
tiller=tiller,
|
||||
values=self.values,
|
||||
target_manifest=self.target_manifest)
|
||||
|
||||
resp = armada.sync()
|
||||
self.output(resp)
|
||||
resp = armada.sync()
|
||||
self.output(resp)
|
||||
else:
|
||||
if len(self.values) > 0:
|
||||
self.logger.error(
|
||||
|
@ -88,8 +88,12 @@ class DeleteChartManifest(CliAction):
|
||||
self.tiller_port = tiller_port
|
||||
|
||||
def invoke(self):
|
||||
tiller = Tiller(
|
||||
tiller_host=self.tiller_host, tiller_port=self.tiller_port)
|
||||
with Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port) as tiller:
|
||||
self.handle(tiller)
|
||||
|
||||
def handle(self, tiller):
|
||||
known_release_names = [release[0] for release in tiller.list_charts()]
|
||||
|
||||
if self.releases:
|
||||
|
@ -110,21 +110,21 @@ class Rollback(CliAction):
|
||||
self.recreate_pods = recreate_pods
|
||||
|
||||
def invoke(self):
|
||||
tiller = Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace,
|
||||
dry_run=self.dry_run)
|
||||
with Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace,
|
||||
dry_run=self.dry_run) as tiller:
|
||||
|
||||
response = tiller.rollback_release(
|
||||
self.release,
|
||||
self.version,
|
||||
wait=self.wait,
|
||||
timeout=self.timeout,
|
||||
force=self.force,
|
||||
recreate_pods=self.recreate_pods)
|
||||
response = tiller.rollback_release(
|
||||
self.release,
|
||||
self.version,
|
||||
wait=self.wait,
|
||||
timeout=self.timeout,
|
||||
force=self.force,
|
||||
recreate_pods=self.recreate_pods)
|
||||
|
||||
self.output(response)
|
||||
self.output(response)
|
||||
|
||||
def output(self, response):
|
||||
self.logger.info(('(dry run) ' if self.dry_run else '') +
|
||||
|
@ -105,10 +105,14 @@ class TestChartManifest(CliAction):
|
||||
self.cleanup = cleanup
|
||||
|
||||
def invoke(self):
|
||||
tiller = Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace)
|
||||
with Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace) as tiller:
|
||||
|
||||
self.handle(tiller)
|
||||
|
||||
def handle(self, tiller):
|
||||
known_release_names = [release[0] for release in tiller.list_charts()]
|
||||
|
||||
if self.release:
|
||||
|
@ -84,11 +84,14 @@ class TillerServices(CliAction):
|
||||
|
||||
def invoke(self):
|
||||
|
||||
tiller = Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace)
|
||||
with Tiller(
|
||||
tiller_host=self.tiller_host,
|
||||
tiller_port=self.tiller_port,
|
||||
tiller_namespace=self.tiller_namespace) as tiller:
|
||||
|
||||
self.handle(tiller)
|
||||
|
||||
def handle(self, tiller):
|
||||
if self.status:
|
||||
if not self.ctx.obj.get('api', False):
|
||||
self.logger.info('Tiller Service: %s', tiller.tiller_status())
|
||||
|
@ -165,7 +165,7 @@ def default_exception_handler(ex, req, resp, params):
|
||||
else:
|
||||
# take care of the uncaught stuff
|
||||
exc_string = traceback.format_exc()
|
||||
logging.error('Unhanded Exception being handled: \n%s', exc_string)
|
||||
LOG.error('Unhanded Exception being handled: \n%s', exc_string)
|
||||
format_error_resp(
|
||||
req,
|
||||
resp,
|
||||
|
@ -26,7 +26,6 @@ from armada.exceptions import validate_exceptions
|
||||
from armada.handlers.chart_deploy import ChartDeploy
|
||||
from armada.handlers.manifest import Manifest
|
||||
from armada.handlers.override import Override
|
||||
from armada.handlers.tiller import Tiller
|
||||
from armada.utils.release import release_prefixer
|
||||
from armada.utils import source
|
||||
|
||||
@ -42,6 +41,7 @@ class Armada(object):
|
||||
|
||||
def __init__(self,
|
||||
documents,
|
||||
tiller,
|
||||
disable_update_pre=False,
|
||||
disable_update_post=False,
|
||||
enable_chart_cleanup=False,
|
||||
@ -49,9 +49,6 @@ class Armada(object):
|
||||
set_ovr=None,
|
||||
force_wait=False,
|
||||
timeout=None,
|
||||
tiller_host=None,
|
||||
tiller_port=None,
|
||||
tiller_namespace=None,
|
||||
values=None,
|
||||
target_manifest=None,
|
||||
k8s_wait_attempts=1,
|
||||
@ -60,6 +57,7 @@ class Armada(object):
|
||||
Initialize the Armada engine and establish a connection to Tiller.
|
||||
|
||||
:param List[dict] documents: Armada documents.
|
||||
:param tiller: Tiller instance to use.
|
||||
:param bool disable_update_pre: Disable pre-update Tiller operations.
|
||||
:param bool disable_update_post: Disable post-update Tiller
|
||||
operations.
|
||||
@ -69,11 +67,6 @@ class Armada(object):
|
||||
deployed, rather than using each chart's specified wait policy.
|
||||
:param int timeout: Specifies overall time in seconds that Tiller
|
||||
should wait for charts until timing out.
|
||||
:param str tiller_host: Tiller host IP. Default is None.
|
||||
:param int tiller_port: Tiller host port. Default is
|
||||
``CONF.tiller_port``.
|
||||
:param str tiller_namespace: Tiller host namespace. Default is
|
||||
``CONF.tiller_namespace``.
|
||||
:param str target_manifest: The target manifest to run. Useful for
|
||||
specifying which manifest to run when multiple are available.
|
||||
:param int k8s_wait_attempts: The number of times to attempt waiting
|
||||
@ -81,19 +74,11 @@ class Armada(object):
|
||||
:param int k8s_wait_attempt_sleep: The time in seconds to sleep
|
||||
between attempts.
|
||||
'''
|
||||
tiller_port = tiller_port or CONF.tiller_port
|
||||
tiller_namespace = tiller_namespace or CONF.tiller_namespace
|
||||
|
||||
self.enable_chart_cleanup = enable_chart_cleanup
|
||||
self.dry_run = dry_run
|
||||
self.force_wait = force_wait
|
||||
# TODO: Use dependency injection i.e. pass in a Tiller instead of
|
||||
# creating it here.
|
||||
self.tiller = Tiller(
|
||||
tiller_host=tiller_host,
|
||||
tiller_port=tiller_port,
|
||||
tiller_namespace=tiller_namespace,
|
||||
dry_run=dry_run)
|
||||
self.tiller = tiller
|
||||
try:
|
||||
self.documents = Override(
|
||||
documents, overrides=set_ovr,
|
||||
|
@ -80,12 +80,11 @@ class Tiller(object):
|
||||
tiller_host=None,
|
||||
tiller_port=None,
|
||||
tiller_namespace=None,
|
||||
dry_run=False):
|
||||
dry_run=None):
|
||||
self.tiller_host = tiller_host
|
||||
self.tiller_port = tiller_port or CONF.tiller_port
|
||||
self.tiller_namespace = tiller_namespace or CONF.tiller_namespace
|
||||
|
||||
self.dry_run = dry_run
|
||||
self.dry_run = dry_run or False
|
||||
|
||||
# init k8s connectivity
|
||||
self.k8s = K8s()
|
||||
@ -818,3 +817,14 @@ class Tiller(object):
|
||||
'using default %ss.', self.timeout)
|
||||
timeout = self.timeout
|
||||
return timeout
|
||||
|
||||
def close(self):
|
||||
# Ensure channel was actually initialized before closing
|
||||
if getattr(self, 'channel', None):
|
||||
self.channel.close()
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_value, traceback):
|
||||
self.close()
|
||||
|
@ -17,6 +17,7 @@ import mock
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
from armada import api
|
||||
from armada.api.controller import armada as armada_api
|
||||
from armada.common.policies import base as policy_base
|
||||
from armada.tests import test_utils
|
||||
@ -27,9 +28,11 @@ CONF = cfg.CONF
|
||||
|
||||
class ArmadaControllerTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
@mock.patch.object(armada_api, 'Armada')
|
||||
@mock.patch.object(armada_api, 'ReferenceResolver')
|
||||
def test_armada_apply_resource(self, mock_resolver, mock_armada):
|
||||
def test_armada_apply_resource(self, mock_resolver, mock_armada,
|
||||
mock_tiller):
|
||||
"""Tests the POST /api/v1.0/apply endpoint."""
|
||||
rules = {'armada:create_endpoints': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
@ -45,6 +48,9 @@ class ArmadaControllerTest(base.BaseControllerTest):
|
||||
'timeout': '100'
|
||||
}
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
expected_armada_options = {
|
||||
'disable_update_pre': False,
|
||||
'disable_update_post': False,
|
||||
@ -52,9 +58,7 @@ class ArmadaControllerTest(base.BaseControllerTest):
|
||||
'dry_run': False,
|
||||
'force_wait': False,
|
||||
'timeout': 100,
|
||||
'tiller_host': None,
|
||||
'tiller_port': 44134,
|
||||
'tiller_namespace': 'kube-system',
|
||||
'tiller': m_tiller,
|
||||
'target_manifest': None
|
||||
}
|
||||
|
||||
@ -83,6 +87,13 @@ class ArmadaControllerTest(base.BaseControllerTest):
|
||||
}], **expected_armada_options)
|
||||
mock_armada.return_value.sync.assert_called()
|
||||
|
||||
mock_tiller.assert_called_with(
|
||||
tiller_host=None,
|
||||
tiller_port=44134,
|
||||
tiller_namespace='kube-system',
|
||||
dry_run=False)
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
def test_armada_apply_no_href(self):
|
||||
"""Tests /api/v1.0/apply returns 400 when hrefs list is empty."""
|
||||
rules = {'armada:create_endpoints': '@'}
|
||||
|
@ -16,7 +16,7 @@ import json
|
||||
|
||||
import mock
|
||||
|
||||
from armada.api.controller import rollback
|
||||
from armada import api
|
||||
from armada.common.policies import base as policy_base
|
||||
from armada.tests import test_utils
|
||||
from armada.tests.unit.api import base
|
||||
@ -24,12 +24,14 @@ from armada.tests.unit.api import base
|
||||
|
||||
class RollbackReleaseControllerTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(rollback, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_rollback_controller_pass(self, mock_tiller):
|
||||
rules = {'armada:rollback_release': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
rollback_release = mock_tiller.return_value.rollback_release
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
rollback_release = m_tiller.rollback_release
|
||||
rollback_release.return_value = None
|
||||
|
||||
tiller_host = 'host'
|
||||
@ -69,12 +71,13 @@ class RollbackReleaseControllerTest(base.BaseControllerTest):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual('Rollback of test-release complete.',
|
||||
json.loads(resp.text)['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
|
||||
@test_utils.attr(type=['negative'])
|
||||
class RollbackReleaseControllerNegativeTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(rollback, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_rollback_controller_tiller_exc_return_500(self, mock_tiller):
|
||||
rules = {'armada:rollback_release': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
@ -18,6 +18,7 @@ import yaml
|
||||
|
||||
import mock
|
||||
|
||||
from armada import api
|
||||
from armada.api.controller import test
|
||||
from armada.common.policies import base as policy_base
|
||||
from armada.exceptions import manifest_exceptions
|
||||
@ -28,7 +29,7 @@ from armada.tests.unit.api import base
|
||||
class TestReleasesManifestControllerTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(test, 'Manifest')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_with_manifest(self, mock_tiller, mock_manifest):
|
||||
rules = {'armada:test_manifest': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
@ -41,6 +42,9 @@ class TestReleasesManifestControllerTest(base.BaseControllerTest):
|
||||
payload = f.read()
|
||||
documents = list(yaml.safe_load_all(payload))
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
resp = self.app.simulate_post('/api/v1.0/tests', body=payload)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
|
||||
@ -49,13 +53,14 @@ class TestReleasesManifestControllerTest(base.BaseControllerTest):
|
||||
self.assertEqual(expected, result)
|
||||
|
||||
mock_manifest.assert_called_once_with(documents, target_manifest=None)
|
||||
self.assertTrue(mock_tiller.called)
|
||||
mock_tiller.assert_called()
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
|
||||
class TestReleasesReleaseNameControllerTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(test, 'test_release_for_success')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_test_pass(self, mock_tiller,
|
||||
mock_test_release_for_success):
|
||||
rules = {'armada:test_release': '@'}
|
||||
@ -63,6 +68,9 @@ class TestReleasesReleaseNameControllerTest(base.BaseControllerTest):
|
||||
|
||||
mock_test_release_for_success.return_value = True
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
release = 'fake-release'
|
||||
resp = self.app.simulate_get('/api/v1.0/test/{}'.format(release))
|
||||
mock_test_release_for_success.assert_has_calls(
|
||||
@ -70,44 +78,53 @@ class TestReleasesReleaseNameControllerTest(base.BaseControllerTest):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual('MESSAGE: Test Pass',
|
||||
json.loads(resp.text)['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch.object(test, 'test_release_for_success')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_test_fail(self, mock_tiller,
|
||||
mock_test_release_for_success):
|
||||
rules = {'armada:test_release': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
mock_test_release_for_success.return_value = False
|
||||
release = 'fake-release'
|
||||
resp = self.app.simulate_get('/api/v1.0/test/{}'.format(release))
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual('MESSAGE: Test Fail',
|
||||
json.loads(resp.text)['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch.object(test, 'test_release_for_success')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_cleanup(self, mock_tiller,
|
||||
mock_test_release_for_success):
|
||||
rules = {'armada:test_release': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
mock_test_release_for_success.return_value = True
|
||||
release = 'fake-release'
|
||||
resp = self.app.simulate_get(
|
||||
'/api/v1.0/test/{}'.format(release), query_string='cleanup=true')
|
||||
mock_test_release_for_success.assert_has_calls(
|
||||
[mock.call(mock_tiller.return_value, release, cleanup=True)])
|
||||
[mock.call(m_tiller, release, cleanup=True)])
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual('MESSAGE: Test Pass',
|
||||
json.loads(resp.text)['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
|
||||
@test_utils.attr(type=['negative'])
|
||||
class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(test, 'Manifest')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
@mock.patch.object(test, 'test_release_for_success')
|
||||
def test_test_controller_tiller_exc_returns_500(
|
||||
self, mock_test_release_for_success, mock_tiller, _):
|
||||
@ -121,8 +138,9 @@ class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
self.assertEqual(500, resp.status_code)
|
||||
|
||||
@mock.patch.object(test, 'Manifest')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
def test_test_controller_validation_failure_returns_400(self, *_):
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_validation_failure_returns_400(
|
||||
self, mock_tiller, mock_manifest):
|
||||
rules = {'armada:test_manifest': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
@ -138,6 +156,9 @@ class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
resp = self.app.simulate_post('/api/v1.0/tests', body=invalid_payload)
|
||||
self.assertEqual(400, resp.status_code)
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
resp_body = json.loads(resp.text)
|
||||
self.assertEqual(400, resp_body['code'])
|
||||
self.assertEqual(1, resp_body['details']['errorCount'])
|
||||
@ -158,11 +179,12 @@ class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
}, resp_body['details']['messageList'])
|
||||
self.assertEqual(('Failed to validate documents or generate Armada '
|
||||
'Manifest from documents.'), resp_body['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch('armada.utils.validate.Manifest')
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_test_controller_manifest_failure_returns_400(
|
||||
self, _, mock_manifest):
|
||||
self, mock_tiller, mock_manifest):
|
||||
rules = {'armada:test_manifest': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
@ -177,6 +199,9 @@ class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
resp = self.app.simulate_post('/api/v1.0/tests', body=payload)
|
||||
self.assertEqual(400, resp.status_code)
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
|
||||
resp_body = json.loads(resp.text)
|
||||
self.assertEqual(400, resp_body['code'])
|
||||
self.assertEqual(1, resp_body['details']['errorCount'])
|
||||
@ -195,12 +220,13 @@ class TestReleasesManifestControllerNegativeTest(base.BaseControllerTest):
|
||||
}], resp_body['details']['messageList'])
|
||||
self.assertEqual(('Failed to validate documents or generate Armada '
|
||||
'Manifest from documents.'), resp_body['message'])
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
|
||||
@test_utils.attr(type=['negative'])
|
||||
class TestReleasesReleaseNameControllerNegativeTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(test, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
@mock.patch.object(test, 'test_release_for_success')
|
||||
def test_test_controller_tiller_exc_returns_500(
|
||||
self, mock_test_release_for_success, mock_tiller):
|
||||
|
@ -16,7 +16,7 @@ import mock
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
from armada.api.controller import tiller as tiller_controller
|
||||
from armada import api
|
||||
from armada.common.policies import base as policy_base
|
||||
from armada.tests import test_utils
|
||||
from armada.tests.unit.api import base
|
||||
@ -26,14 +26,16 @@ CONF = cfg.CONF
|
||||
|
||||
class TillerControllerTest(base.BaseControllerTest):
|
||||
|
||||
@mock.patch.object(tiller_controller, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_get_tiller_status(self, mock_tiller):
|
||||
"""Tests GET /api/v1.0/status endpoint."""
|
||||
rules = {'tiller:get_status': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
mock_tiller.return_value.tiller_status.return_value = 'fake_status'
|
||||
mock_tiller.return_value.tiller_version.return_value = 'fake_version'
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
m_tiller.tiller_status.return_value = 'fake_status'
|
||||
m_tiller.tiller_version.return_value = 'fake_version'
|
||||
|
||||
result = self.app.simulate_get('/api/v1.0/status')
|
||||
expected = {
|
||||
@ -48,16 +50,20 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
mock_tiller.assert_called_once_with(
|
||||
tiller_host=None,
|
||||
tiller_port=44134,
|
||||
tiller_namespace='kube-system')
|
||||
tiller_namespace='kube-system',
|
||||
dry_run=None)
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch.object(tiller_controller, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_get_tiller_status_with_params(self, mock_tiller):
|
||||
"""Tests GET /api/v1.0/status endpoint with query parameters."""
|
||||
rules = {'tiller:get_status': '@'}
|
||||
self.policy.set_rules(rules)
|
||||
|
||||
mock_tiller.return_value.tiller_status.return_value = 'fake_status'
|
||||
mock_tiller.return_value.tiller_version.return_value = 'fake_version'
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
m_tiller.tiller_status.return_value = 'fake_status'
|
||||
m_tiller.tiller_version.return_value = 'fake_version'
|
||||
|
||||
result = self.app.simulate_get(
|
||||
'/api/v1.0/status',
|
||||
@ -79,9 +85,11 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
mock_tiller.assert_called_once_with(
|
||||
tiller_host='fake_host',
|
||||
tiller_port=98765,
|
||||
tiller_namespace='fake_ns')
|
||||
tiller_namespace='fake_ns',
|
||||
dry_run=None)
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch.object(tiller_controller, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_tiller_releases(self, mock_tiller):
|
||||
"""Tests GET /api/v1.0/releases endpoint."""
|
||||
rules = {'tiller:get_release': '@'}
|
||||
@ -92,7 +100,9 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
fake_release.configure_mock(name=name)
|
||||
return fake_release
|
||||
|
||||
mock_tiller.return_value.list_releases.return_value = [
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
m_tiller.list_releases.return_value = [
|
||||
_get_fake_release('foo', 'bar'),
|
||||
_get_fake_release('baz', 'qux')
|
||||
]
|
||||
@ -109,10 +119,12 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
mock_tiller.assert_called_once_with(
|
||||
tiller_host=None,
|
||||
tiller_port=44134,
|
||||
tiller_namespace='kube-system')
|
||||
mock_tiller.return_value.list_releases.assert_called_once_with()
|
||||
tiller_namespace='kube-system',
|
||||
dry_run=None)
|
||||
m_tiller.list_releases.assert_called_once_with()
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
@mock.patch.object(tiller_controller, 'Tiller')
|
||||
@mock.patch.object(api, 'Tiller')
|
||||
def test_tiller_releases_with_params(self, mock_tiller):
|
||||
"""Tests GET /api/v1.0/releases endpoint with query parameters."""
|
||||
rules = {'tiller:get_release': '@'}
|
||||
@ -123,7 +135,9 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
fake_release.configure_mock(name=name)
|
||||
return fake_release
|
||||
|
||||
mock_tiller.return_value.list_releases.return_value = [
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.__enter__.return_value = m_tiller
|
||||
m_tiller.list_releases.return_value = [
|
||||
_get_fake_release('foo', 'bar'),
|
||||
_get_fake_release('baz', 'qux')
|
||||
]
|
||||
@ -147,8 +161,10 @@ class TillerControllerTest(base.BaseControllerTest):
|
||||
mock_tiller.assert_called_once_with(
|
||||
tiller_host='fake_host',
|
||||
tiller_port=98765,
|
||||
tiller_namespace='fake_ns')
|
||||
mock_tiller.return_value.list_releases.assert_called_once_with()
|
||||
tiller_namespace='fake_ns',
|
||||
dry_run=None)
|
||||
m_tiller.list_releases.assert_called_once_with()
|
||||
m_tiller.__exit__.assert_called()
|
||||
|
||||
|
||||
class TillerControllerNegativeRbacTest(base.BaseControllerTest):
|
||||
|
@ -281,24 +281,18 @@ class ArmadaHandlerTestCase(base.ArmadaTestCase):
|
||||
self.assertEqual(expected_config, armada_obj.manifest)
|
||||
|
||||
@mock.patch.object(armada, 'source')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
def test_pre_flight_ops(self, mock_tiller, mock_source):
|
||||
def test_pre_flight_ops(self, mock_source):
|
||||
"""Test pre-flight checks and operations."""
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
armada_obj = armada.Armada(yaml_documents)
|
||||
m_tiller = mock.Mock()
|
||||
m_tiller.tiller_status.return_value = True
|
||||
armada_obj = armada.Armada(yaml_documents, m_tiller)
|
||||
|
||||
# Mock methods called by `pre_flight_ops()`.
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.tiller_status.return_value = True
|
||||
mock_source.git_clone.return_value = CHART_SOURCES[0][0]
|
||||
|
||||
self._test_pre_flight_ops(armada_obj)
|
||||
|
||||
mock_tiller.assert_called_once_with(
|
||||
tiller_host=None,
|
||||
tiller_namespace='kube-system',
|
||||
tiller_port=44134,
|
||||
dry_run=False)
|
||||
mock_source.git_clone.assert_called_once_with(
|
||||
'git://github.com/dummy/armada',
|
||||
'master',
|
||||
@ -306,17 +300,17 @@ class ArmadaHandlerTestCase(base.ArmadaTestCase):
|
||||
proxy_server=None)
|
||||
|
||||
@mock.patch.object(armada, 'source')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
def test_post_flight_ops(self, mock_tiller, mock_source):
|
||||
def test_post_flight_ops(self, mock_source):
|
||||
"""Test post-flight operations."""
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
armada_obj = armada.Armada(yaml_documents)
|
||||
|
||||
# Mock methods called by `pre_flight_ops()`.
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller = mock.Mock()
|
||||
m_tiller.tiller_status.return_value = True
|
||||
mock_source.git_clone.return_value = CHART_SOURCES[0][0]
|
||||
|
||||
armada_obj = armada.Armada(yaml_documents, m_tiller)
|
||||
|
||||
self._test_pre_flight_ops(armada_obj)
|
||||
|
||||
armada_obj.post_flight_ops()
|
||||
@ -343,22 +337,22 @@ class ArmadaHandlerTestCase(base.ArmadaTestCase):
|
||||
@mock.patch.object(armada.Armada, 'post_flight_ops')
|
||||
@mock.patch.object(armada.Armada, 'pre_flight_ops')
|
||||
@mock.patch('armada.handlers.chart_deploy.ChartBuilder')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
@mock.patch.object(chart_deploy, 'test_release_for_success')
|
||||
def _do_test(mock_test_release_for_success, mock_tiller,
|
||||
mock_chartbuilder, mock_pre_flight, mock_post_flight):
|
||||
def _do_test(mock_test_release_for_success, mock_chartbuilder,
|
||||
mock_pre_flight, mock_post_flight):
|
||||
# Instantiate Armada object.
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
armada_obj = armada.Armada(yaml_documents)
|
||||
|
||||
m_tiller = mock.MagicMock()
|
||||
m_tiller.list_releases.return_value = known_releases
|
||||
|
||||
armada_obj = armada.Armada(yaml_documents, m_tiller)
|
||||
armada_obj.chart_deploy.get_diff = mock.Mock()
|
||||
|
||||
chart_group = armada_obj.manifest['armada']['chart_groups'][0]
|
||||
charts = chart_group['chart_group']
|
||||
cg_test_all_charts = chart_group.get('test_charts', True)
|
||||
|
||||
m_tiller = mock_tiller.return_value
|
||||
m_tiller.list_releases.return_value = known_releases
|
||||
|
||||
if test_failure_to_run:
|
||||
|
||||
def fail(tiller, release, timeout=None, cleanup=False):
|
||||
@ -663,30 +657,26 @@ class ArmadaHandlerTestCase(base.ArmadaTestCase):
|
||||
class ArmadaNegativeHandlerTestCase(base.ArmadaTestCase):
|
||||
|
||||
@mock.patch.object(armada, 'source')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
def test_armada_get_manifest_exception(self, mock_tiller, mock_source):
|
||||
def test_armada_get_manifest_exception(self, mock_source):
|
||||
"""Test armada handling with invalid manifest."""
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
error_re = ('Documents must be a list of documents with at least one '
|
||||
'of each of the following schemas: .*')
|
||||
self.assertRaisesRegexp(ManifestException, error_re, armada.Armada,
|
||||
yaml_documents[:1])
|
||||
yaml_documents[:1], mock.MagicMock())
|
||||
|
||||
@mock.patch.object(armada, 'source')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
def test_armada_override_exception(self, mock_tiller, mock_source):
|
||||
def test_armada_override_exception(self, mock_source):
|
||||
"""Test Armada checks with invalid chart override."""
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
override = ('chart:example-chart-2:name=' 'overridden', )
|
||||
|
||||
error_re = ('is not a valid override statement')
|
||||
with self.assertRaisesRegexp(InvalidOverrideValueException, error_re):
|
||||
armada.Armada(yaml_documents, set_ovr=override)
|
||||
armada.Armada(yaml_documents, mock.MagicMock(), set_ovr=override)
|
||||
|
||||
@mock.patch.object(armada, 'source')
|
||||
@mock.patch('armada.handlers.armada.Tiller')
|
||||
def test_armada_manifest_exception_override_none(self, mock_tiller,
|
||||
mock_source):
|
||||
def test_armada_manifest_exception_override_none(self, mock_source):
|
||||
"""Test Armada checks with invalid manifest."""
|
||||
yaml_documents = list(yaml.safe_load_all(TEST_YAML))
|
||||
example_document = [
|
||||
@ -697,4 +687,4 @@ class ArmadaNegativeHandlerTestCase(base.ArmadaTestCase):
|
||||
|
||||
error_re = ('Invalid document .*')
|
||||
with self.assertRaisesRegexp(InvalidManifestException, error_re):
|
||||
armada.Armada(yaml_documents, set_ovr=None)
|
||||
armada.Armada(yaml_documents, mock.MagicMock(), set_ovr=None)
|
||||
|
@ -33,7 +33,7 @@ class TillerTestCase(base.ArmadaTestCase):
|
||||
def test_install_release(self, mock_stub, mock_install_request,
|
||||
mock_config, mock_grpc, mock_k8s, mock_ip):
|
||||
# instantiate Tiller object
|
||||
mock_grpc.insecure_channel.return_value = None
|
||||
mock_grpc.insecure_channel.return_value = mock.Mock()
|
||||
mock_ip.return_value = '0.0.0.0'
|
||||
tiller_obj = tiller.Tiller()
|
||||
assert tiller_obj._get_tiller_ip() == '0.0.0.0'
|
||||
@ -74,12 +74,14 @@ class TillerTestCase(base.ArmadaTestCase):
|
||||
mock_port.return_value = mock.sentinel.port
|
||||
mock_ip.return_value = mock.sentinel.ip
|
||||
|
||||
mock_channel = mock.Mock()
|
||||
|
||||
# instantiate Tiller object
|
||||
mock_grpc.insecure_channel.return_value = 'connected'
|
||||
mock_grpc.insecure_channel.return_value = mock_channel
|
||||
tiller_obj = tiller.Tiller()
|
||||
|
||||
self.assertIsNotNone(tiller_obj.channel)
|
||||
self.assertEqual('connected', tiller_obj.channel)
|
||||
self.assertEqual(mock_channel, tiller_obj.channel)
|
||||
|
||||
mock_grpc.insecure_channel.assert_called_once_with(
|
||||
'%s:%s' % (str(mock.sentinel.ip), str(mock.sentinel.port)),
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -23,6 +22,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/chart/chart.proto',
|
||||
package='hapi.chart',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\005chart'),
|
||||
serialized_pb=_b('\n\x16hapi/chart/chart.proto\x12\nhapi.chart\x1a\x17hapi/chart/config.proto\x1a\x19hapi/chart/metadata.proto\x1a\x19hapi/chart/template.proto\x1a\x19google/protobuf/any.proto\"\xca\x01\n\x05\x43hart\x12&\n\x08metadata\x18\x01 \x01(\x0b\x32\x14.hapi.chart.Metadata\x12\'\n\ttemplates\x18\x02 \x03(\x0b\x32\x14.hapi.chart.Template\x12\'\n\x0c\x64\x65pendencies\x18\x03 \x03(\x0b\x32\x11.hapi.chart.Chart\x12\"\n\x06values\x18\x04 \x01(\x0b\x32\x12.hapi.chart.Config\x12#\n\x05\x66iles\x18\x05 \x03(\x0b\x32\x14.google.protobuf.AnyB\x07Z\x05\x63hartb\x06proto3')
|
||||
,
|
||||
dependencies=[hapi_dot_chart_dot_config__pb2.DESCRIPTOR,hapi_dot_chart_dot_metadata__pb2.DESCRIPTOR,hapi_dot_chart_dot_template__pb2.DESCRIPTOR,google_dot_protobuf_dot_any__pb2.DESCRIPTOR,])
|
||||
@ -43,42 +43,42 @@ _CHART = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='templates', full_name='hapi.chart.Chart.templates', index=1,
|
||||
number=2, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='dependencies', full_name='hapi.chart.Chart.dependencies', index=2,
|
||||
number=3, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='values', full_name='hapi.chart.Chart.values', index=3,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='files', full_name='hapi.chart.Chart.files', index=4,
|
||||
number=5, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -104,6 +104,5 @@ Chart = _reflection.GeneratedProtocolMessageType('Chart', (_message.Message,), d
|
||||
_sym_db.RegisterMessage(Chart)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\005chart'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -19,6 +18,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/chart/config.proto',
|
||||
package='hapi.chart',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\005chart'),
|
||||
serialized_pb=_b('\n\x17hapi/chart/config.proto\x12\nhapi.chart\"\x87\x01\n\x06\x43onfig\x12\x0b\n\x03raw\x18\x01 \x01(\t\x12.\n\x06values\x18\x02 \x03(\x0b\x32\x1e.hapi.chart.Config.ValuesEntry\x1a@\n\x0bValuesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12 \n\x05value\x18\x02 \x01(\x0b\x32\x11.hapi.chart.Value:\x02\x38\x01\"\x16\n\x05Value\x12\r\n\x05value\x18\x01 \x01(\tB\x07Z\x05\x63hartb\x06proto3')
|
||||
)
|
||||
|
||||
@ -38,21 +38,21 @@ _CONFIG_VALUESENTRY = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='hapi.chart.Config.ValuesEntry.value', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -75,21 +75,21 @@ _CONFIG = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='values', full_name='hapi.chart.Config.values', index=1,
|
||||
number=2, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[_CONFIG_VALUESENTRY, ],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -113,14 +113,14 @@ _VALUE = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -160,8 +160,6 @@ Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), d
|
||||
_sym_db.RegisterMessage(Value)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\005chart'))
|
||||
_CONFIG_VALUESENTRY.has_options = True
|
||||
_CONFIG_VALUESENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
DESCRIPTOR._options = None
|
||||
_CONFIG_VALUESENTRY._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -19,6 +18,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/chart/metadata.proto',
|
||||
package='hapi.chart',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\005chart'),
|
||||
serialized_pb=_b('\n\x19hapi/chart/metadata.proto\x12\nhapi.chart\"6\n\nMaintainer\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"\xd5\x03\n\x08Metadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04home\x18\x02 \x01(\t\x12\x0f\n\x07sources\x18\x03 \x03(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x10\n\x08keywords\x18\x06 \x03(\t\x12+\n\x0bmaintainers\x18\x07 \x03(\x0b\x32\x16.hapi.chart.Maintainer\x12\x0e\n\x06\x65ngine\x18\x08 \x01(\t\x12\x0c\n\x04icon\x18\t \x01(\t\x12\x12\n\napiVersion\x18\n \x01(\t\x12\x11\n\tcondition\x18\x0b \x01(\t\x12\x0c\n\x04tags\x18\x0c \x01(\t\x12\x12\n\nappVersion\x18\r \x01(\t\x12\x12\n\ndeprecated\x18\x0e \x01(\x08\x12\x15\n\rtillerVersion\x18\x0f \x01(\t\x12:\n\x0b\x61nnotations\x18\x10 \x03(\x0b\x32%.hapi.chart.Metadata.AnnotationsEntry\x12\x13\n\x0bkubeVersion\x18\x11 \x01(\t\x1a\x32\n\x10\x41nnotationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\" \n\x06\x45ngine\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05GOTPL\x10\x01\x42\x07Z\x05\x63hartb\x06proto3')
|
||||
)
|
||||
|
||||
@ -32,15 +32,15 @@ _METADATA_ENGINE = _descriptor.EnumDescriptor(
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='UNKNOWN', index=0, number=0,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='GOTPL', index=1, number=1,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
serialized_start=535,
|
||||
serialized_end=567,
|
||||
)
|
||||
@ -60,28 +60,28 @@ _MAINTAINER = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='email', full_name='hapi.chart.Maintainer.email', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='url', full_name='hapi.chart.Maintainer.url', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -105,21 +105,21 @@ _METADATA_ANNOTATIONSENTRY = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='value', full_name='hapi.chart.Metadata.AnnotationsEntry.value', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=_descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001')),
|
||||
serialized_options=_b('8\001'),
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -142,119 +142,119 @@ _METADATA = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='home', full_name='hapi.chart.Metadata.home', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='sources', full_name='hapi.chart.Metadata.sources', index=2,
|
||||
number=3, type=9, cpp_type=9, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='version', full_name='hapi.chart.Metadata.version', index=3,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='description', full_name='hapi.chart.Metadata.description', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='keywords', full_name='hapi.chart.Metadata.keywords', index=5,
|
||||
number=6, type=9, cpp_type=9, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='maintainers', full_name='hapi.chart.Metadata.maintainers', index=6,
|
||||
number=7, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='engine', full_name='hapi.chart.Metadata.engine', index=7,
|
||||
number=8, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='icon', full_name='hapi.chart.Metadata.icon', index=8,
|
||||
number=9, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='apiVersion', full_name='hapi.chart.Metadata.apiVersion', index=9,
|
||||
number=10, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='condition', full_name='hapi.chart.Metadata.condition', index=10,
|
||||
number=11, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='tags', full_name='hapi.chart.Metadata.tags', index=11,
|
||||
number=12, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='appVersion', full_name='hapi.chart.Metadata.appVersion', index=12,
|
||||
number=13, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='deprecated', full_name='hapi.chart.Metadata.deprecated', index=13,
|
||||
number=14, type=8, cpp_type=7, label=1,
|
||||
has_default_value=False, default_value=False,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='tillerVersion', full_name='hapi.chart.Metadata.tillerVersion', index=14,
|
||||
number=15, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='annotations', full_name='hapi.chart.Metadata.annotations', index=15,
|
||||
number=16, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='kubeVersion', full_name='hapi.chart.Metadata.kubeVersion', index=16,
|
||||
number=17, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
@ -262,7 +262,7 @@ _METADATA = _descriptor.Descriptor(
|
||||
enum_types=[
|
||||
_METADATA_ENGINE,
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -303,8 +303,6 @@ _sym_db.RegisterMessage(Metadata)
|
||||
_sym_db.RegisterMessage(Metadata.AnnotationsEntry)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\005chart'))
|
||||
_METADATA_ANNOTATIONSENTRY.has_options = True
|
||||
_METADATA_ANNOTATIONSENTRY._options = _descriptor._ParseOptions(descriptor_pb2.MessageOptions(), _b('8\001'))
|
||||
DESCRIPTOR._options = None
|
||||
_METADATA_ANNOTATIONSENTRY._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -19,6 +18,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/chart/template.proto',
|
||||
package='hapi.chart',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\005chart'),
|
||||
serialized_pb=_b('\n\x19hapi/chart/template.proto\x12\nhapi.chart\"&\n\x08Template\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x07Z\x05\x63hartb\x06proto3')
|
||||
)
|
||||
|
||||
@ -38,21 +38,21 @@ _TEMPLATE = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='data', full_name='hapi.chart.Template.data', index=1,
|
||||
number=2, type=12, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b(""),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -73,6 +73,5 @@ Template = _reflection.GeneratedProtocolMessageType('Template', (_message.Messag
|
||||
_sym_db.RegisterMessage(Template)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\005chart'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -20,6 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/hook.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x17hapi/release/hook.proto\x12\x0chapi.release\x1a\x1fgoogle/protobuf/timestamp.proto\"\x91\x04\n\x04Hook\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04path\x18\x03 \x01(\t\x12\x10\n\x08manifest\x18\x04 \x01(\t\x12(\n\x06\x65vents\x18\x05 \x03(\x0e\x32\x18.hapi.release.Hook.Event\x12,\n\x08last_run\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0e\n\x06weight\x18\x07 \x01(\x05\x12\x38\n\x0f\x64\x65lete_policies\x18\x08 \x03(\x0e\x32\x1f.hapi.release.Hook.DeletePolicy\"\xe5\x01\n\x05\x45vent\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0f\n\x0bPRE_INSTALL\x10\x01\x12\x10\n\x0cPOST_INSTALL\x10\x02\x12\x0e\n\nPRE_DELETE\x10\x03\x12\x0f\n\x0bPOST_DELETE\x10\x04\x12\x0f\n\x0bPRE_UPGRADE\x10\x05\x12\x10\n\x0cPOST_UPGRADE\x10\x06\x12\x10\n\x0cPRE_ROLLBACK\x10\x07\x12\x11\n\rPOST_ROLLBACK\x10\x08\x12\x18\n\x14RELEASE_TEST_SUCCESS\x10\t\x12\x18\n\x14RELEASE_TEST_FAILURE\x10\n\x12\x0f\n\x0b\x43RD_INSTALL\x10\x0b\"C\n\x0c\x44\x65letePolicy\x12\r\n\tSUCCEEDED\x10\x00\x12\n\n\x06\x46\x41ILED\x10\x01\x12\x18\n\x14\x42\x45\x46ORE_HOOK_CREATION\x10\x02\x42\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
|
||||
@ -34,55 +34,55 @@ _HOOK_EVENT = _descriptor.EnumDescriptor(
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='UNKNOWN', index=0, number=0,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PRE_INSTALL', index=1, number=1,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='POST_INSTALL', index=2, number=2,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PRE_DELETE', index=3, number=3,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='POST_DELETE', index=4, number=4,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PRE_UPGRADE', index=5, number=5,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='POST_UPGRADE', index=6, number=6,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PRE_ROLLBACK', index=7, number=7,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='POST_ROLLBACK', index=8, number=8,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='RELEASE_TEST_SUCCESS', index=9, number=9,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='RELEASE_TEST_FAILURE', index=10, number=10,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='CRD_INSTALL', index=11, number=11,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
serialized_start=306,
|
||||
serialized_end=535,
|
||||
)
|
||||
@ -96,19 +96,19 @@ _HOOK_DELETEPOLICY = _descriptor.EnumDescriptor(
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='SUCCEEDED', index=0, number=0,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='FAILED', index=1, number=1,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='BEFORE_HOOK_CREATION', index=2, number=2,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
serialized_start=537,
|
||||
serialized_end=604,
|
||||
)
|
||||
@ -128,56 +128,56 @@ _HOOK = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='kind', full_name='hapi.release.Hook.kind', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='path', full_name='hapi.release.Hook.path', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='manifest', full_name='hapi.release.Hook.manifest', index=3,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='events', full_name='hapi.release.Hook.events', index=4,
|
||||
number=5, type=14, cpp_type=8, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='last_run', full_name='hapi.release.Hook.last_run', index=5,
|
||||
number=6, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='weight', full_name='hapi.release.Hook.weight', index=6,
|
||||
number=7, type=5, cpp_type=1, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='delete_policies', full_name='hapi.release.Hook.delete_policies', index=7,
|
||||
number=8, type=14, cpp_type=8, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
@ -186,7 +186,7 @@ _HOOK = _descriptor.Descriptor(
|
||||
_HOOK_EVENT,
|
||||
_HOOK_DELETEPOLICY,
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -212,6 +212,5 @@ Hook = _reflection.GeneratedProtocolMessageType('Hook', (_message.Message,), dic
|
||||
_sym_db.RegisterMessage(Hook)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -21,6 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/info.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x17hapi/release/info.proto\x12\x0chapi.release\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19hapi/release/status.proto\"\xd5\x01\n\x04Info\x12$\n\x06status\x18\x01 \x01(\x0b\x32\x14.hapi.release.Status\x12\x32\n\x0e\x66irst_deployed\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rlast_deployed\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x07\x64\x65leted\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0b\x44\x65scription\x18\x05 \x01(\tB\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,hapi_dot_release_dot_status__pb2.DESCRIPTOR,])
|
||||
@ -41,42 +41,42 @@ _INFO = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='first_deployed', full_name='hapi.release.Info.first_deployed', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='last_deployed', full_name='hapi.release.Info.last_deployed', index=2,
|
||||
number=3, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='deleted', full_name='hapi.release.Info.deleted', index=3,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='Description', full_name='hapi.release.Info.Description', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -101,6 +101,5 @@ Info = _reflection.GeneratedProtocolMessageType('Info', (_message.Message,), dic
|
||||
_sym_db.RegisterMessage(Info)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -23,6 +22,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/release.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x1ahapi/release/release.proto\x12\x0chapi.release\x1a\x17hapi/release/hook.proto\x1a\x17hapi/release/info.proto\x1a\x17hapi/chart/config.proto\x1a\x16hapi/chart/chart.proto\"\xd8\x01\n\x07Release\x12\x0c\n\x04name\x18\x01 \x01(\t\x12 \n\x04info\x18\x02 \x01(\x0b\x32\x12.hapi.release.Info\x12 \n\x05\x63hart\x18\x03 \x01(\x0b\x32\x11.hapi.chart.Chart\x12\"\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x12.hapi.chart.Config\x12\x10\n\x08manifest\x18\x05 \x01(\t\x12!\n\x05hooks\x18\x06 \x03(\x0b\x32\x12.hapi.release.Hook\x12\x0f\n\x07version\x18\x07 \x01(\x05\x12\x11\n\tnamespace\x18\x08 \x01(\tB\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[hapi_dot_release_dot_hook__pb2.DESCRIPTOR,hapi_dot_release_dot_info__pb2.DESCRIPTOR,hapi_dot_chart_dot_config__pb2.DESCRIPTOR,hapi_dot_chart_dot_chart__pb2.DESCRIPTOR,])
|
||||
@ -43,63 +43,63 @@ _RELEASE = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='info', full_name='hapi.release.Release.info', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='chart', full_name='hapi.release.Release.chart', index=2,
|
||||
number=3, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='config', full_name='hapi.release.Release.config', index=3,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='manifest', full_name='hapi.release.Release.manifest', index=4,
|
||||
number=5, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='hooks', full_name='hapi.release.Release.hooks', index=5,
|
||||
number=6, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='version', full_name='hapi.release.Release.version', index=6,
|
||||
number=7, type=5, cpp_type=1, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='namespace', full_name='hapi.release.Release.namespace', index=7,
|
||||
number=8, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -124,6 +124,5 @@ Release = _reflection.GeneratedProtocolMessageType('Release', (_message.Message,
|
||||
_sym_db.RegisterMessage(Release)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -21,6 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/status.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x19hapi/release/status.proto\x12\x0chapi.release\x1a\x1dhapi/release/test_suite.proto\x1a\x19google/protobuf/any.proto\"\xa4\x02\n\x06Status\x12\'\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x19.hapi.release.Status.Code\x12\x11\n\tresources\x18\x03 \x01(\t\x12\r\n\x05notes\x18\x04 \x01(\t\x12\x34\n\x13last_test_suite_run\x18\x05 \x01(\x0b\x32\x17.hapi.release.TestSuite\"\x98\x01\n\x04\x43ode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08\x44\x45PLOYED\x10\x01\x12\x0b\n\x07\x44\x45LETED\x10\x02\x12\x0e\n\nSUPERSEDED\x10\x03\x12\n\n\x06\x46\x41ILED\x10\x04\x12\x0c\n\x08\x44\x45LETING\x10\x05\x12\x13\n\x0fPENDING_INSTALL\x10\x06\x12\x13\n\x0fPENDING_UPGRADE\x10\x07\x12\x14\n\x10PENDING_ROLLBACK\x10\x08\x42\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[hapi_dot_release_dot_test__suite__pb2.DESCRIPTOR,google_dot_protobuf_dot_any__pb2.DESCRIPTOR,])
|
||||
@ -35,43 +35,43 @@ _STATUS_CODE = _descriptor.EnumDescriptor(
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='UNKNOWN', index=0, number=0,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='DEPLOYED', index=1, number=1,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='DELETED', index=2, number=2,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='SUPERSEDED', index=3, number=3,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='FAILED', index=4, number=4,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='DELETING', index=5, number=5,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PENDING_INSTALL', index=6, number=6,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PENDING_UPGRADE', index=7, number=7,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='PENDING_ROLLBACK', index=8, number=8,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
serialized_start=242,
|
||||
serialized_end=394,
|
||||
)
|
||||
@ -91,28 +91,28 @@ _STATUS = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='resources', full_name='hapi.release.Status.resources', index=1,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='notes', full_name='hapi.release.Status.notes', index=2,
|
||||
number=4, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='last_test_suite_run', full_name='hapi.release.Status.last_test_suite_run', index=3,
|
||||
number=5, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
@ -120,7 +120,7 @@ _STATUS = _descriptor.Descriptor(
|
||||
enum_types=[
|
||||
_STATUS_CODE,
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -144,6 +144,5 @@ Status = _reflection.GeneratedProtocolMessageType('Status', (_message.Message,),
|
||||
_sym_db.RegisterMessage(Status)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -20,6 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/test_run.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x1bhapi/release/test_run.proto\x12\x0chapi.release\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf3\x01\n\x07TestRun\x12\x0c\n\x04name\x18\x01 \x01(\t\x12,\n\x06status\x18\x02 \x01(\x0e\x32\x1c.hapi.release.TestRun.Status\x12\x0c\n\x04info\x18\x03 \x01(\t\x12.\n\nstarted_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0c\x63ompleted_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"<\n\x06Status\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0b\n\x07SUCCESS\x10\x01\x12\x0b\n\x07\x46\x41ILURE\x10\x02\x12\x0b\n\x07RUNNING\x10\x03\x42\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
|
||||
@ -34,23 +34,23 @@ _TESTRUN_STATUS = _descriptor.EnumDescriptor(
|
||||
values=[
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='UNKNOWN', index=0, number=0,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='SUCCESS', index=1, number=1,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='FAILURE', index=2, number=2,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
_descriptor.EnumValueDescriptor(
|
||||
name='RUNNING', index=3, number=3,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
type=None),
|
||||
],
|
||||
containing_type=None,
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
serialized_start=262,
|
||||
serialized_end=322,
|
||||
)
|
||||
@ -70,35 +70,35 @@ _TESTRUN = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='status', full_name='hapi.release.TestRun.status', index=1,
|
||||
number=2, type=14, cpp_type=8, label=1,
|
||||
has_default_value=False, default_value=0,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='info', full_name='hapi.release.TestRun.info', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='started_at', full_name='hapi.release.TestRun.started_at', index=3,
|
||||
number=4, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='completed_at', full_name='hapi.release.TestRun.completed_at', index=4,
|
||||
number=5, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
@ -106,7 +106,7 @@ _TESTRUN = _descriptor.Descriptor(
|
||||
enum_types=[
|
||||
_TESTRUN_STATUS,
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -131,6 +131,5 @@ TestRun = _reflection.GeneratedProtocolMessageType('TestRun', (_message.Message,
|
||||
_sym_db.RegisterMessage(TestRun)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -21,6 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/release/test_suite.proto',
|
||||
package='hapi.release',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007release'),
|
||||
serialized_pb=_b('\n\x1dhapi/release/test_suite.proto\x12\x0chapi.release\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bhapi/release/test_run.proto\"\x95\x01\n\tTestSuite\x12.\n\nstarted_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0c\x63ompleted_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12&\n\x07results\x18\x03 \x03(\x0b\x32\x15.hapi.release.TestRunB\tZ\x07releaseb\x06proto3')
|
||||
,
|
||||
dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,hapi_dot_release_dot_test__run__pb2.DESCRIPTOR,])
|
||||
@ -41,28 +41,28 @@ _TESTSUITE = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='completed_at', full_name='hapi.release.TestSuite.completed_at', index=1,
|
||||
number=2, type=11, cpp_type=10, label=1,
|
||||
has_default_value=False, default_value=None,
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='results', full_name='hapi.release.TestSuite.results', index=2,
|
||||
number=3, type=11, cpp_type=10, label=3,
|
||||
has_default_value=False, default_value=[],
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -86,6 +86,5 @@ TestSuite = _reflection.GeneratedProtocolMessageType('TestSuite', (_message.Mess
|
||||
_sym_db.RegisterMessage(TestSuite)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007release'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
File diff suppressed because one or more lines are too long
@ -7,7 +7,6 @@ from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import message as _message
|
||||
from google.protobuf import reflection as _reflection
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf import descriptor_pb2
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
@ -19,6 +18,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
|
||||
name='hapi/version/version.proto',
|
||||
package='hapi.version',
|
||||
syntax='proto3',
|
||||
serialized_options=_b('Z\007version'),
|
||||
serialized_pb=_b('\n\x1ahapi/version/version.proto\x12\x0chapi.version\"F\n\x07Version\x12\x0f\n\x07sem_ver\x18\x01 \x01(\t\x12\x12\n\ngit_commit\x18\x02 \x01(\t\x12\x16\n\x0egit_tree_state\x18\x03 \x01(\tB\tZ\x07versionb\x06proto3')
|
||||
)
|
||||
|
||||
@ -38,28 +38,28 @@ _VERSION = _descriptor.Descriptor(
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='git_commit', full_name='hapi.version.Version.git_commit', index=1,
|
||||
number=2, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
_descriptor.FieldDescriptor(
|
||||
name='git_tree_state', full_name='hapi.version.Version.git_tree_state', index=2,
|
||||
number=3, type=9, cpp_type=9, label=1,
|
||||
has_default_value=False, default_value=_b("").decode('utf-8'),
|
||||
message_type=None, enum_type=None, containing_type=None,
|
||||
is_extension=False, extension_scope=None,
|
||||
options=None, file=DESCRIPTOR),
|
||||
serialized_options=None, file=DESCRIPTOR),
|
||||
],
|
||||
extensions=[
|
||||
],
|
||||
nested_types=[],
|
||||
enum_types=[
|
||||
],
|
||||
options=None,
|
||||
serialized_options=None,
|
||||
is_extendable=False,
|
||||
syntax='proto3',
|
||||
extension_ranges=[],
|
||||
@ -80,6 +80,5 @@ Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,
|
||||
_sym_db.RegisterMessage(Version)
|
||||
|
||||
|
||||
DESCRIPTOR.has_options = True
|
||||
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('Z\007version'))
|
||||
DESCRIPTOR._options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
@ -1,7 +1,7 @@
|
||||
deepdiff==3.3.0
|
||||
gitpython
|
||||
grpcio==1.10.0
|
||||
grpcio-tools==1.10.0
|
||||
grpcio==1.16.0
|
||||
grpcio-tools==1.16.0
|
||||
jsonschema>=2.6.0
|
||||
keystoneauth1==2.21.0
|
||||
keystonemiddleware==4.9.1
|
||||
|
Loading…
Reference in New Issue
Block a user