Merge "Refactor tiller commands to handle methods"
This commit is contained in:
commit
24867f34db
|
@ -69,29 +69,13 @@ class Apply(api.BaseResource):
|
||||||
"or application/json")
|
"or application/json")
|
||||||
try:
|
try:
|
||||||
with self.get_tiller(req, resp) as tiller:
|
with self.get_tiller(req, resp) as tiller:
|
||||||
|
msg = self.handle(req, documents, tiller)
|
||||||
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'))
|
|
||||||
|
|
||||||
msg = armada.sync()
|
|
||||||
|
|
||||||
resp.body = json.dumps({
|
resp.body = json.dumps({
|
||||||
'message': msg,
|
'message': msg,
|
||||||
})
|
})
|
||||||
|
|
||||||
resp.content_type = 'application/json'
|
resp.content_type = 'application/json'
|
||||||
resp.status = falcon.HTTP_200
|
resp.status = falcon.HTTP_200
|
||||||
|
|
||||||
except exceptions.ManifestException as e:
|
except exceptions.ManifestException as e:
|
||||||
self.return_error(resp, falcon.HTTP_400, message=str(e))
|
self.return_error(resp, falcon.HTTP_400, message=str(e))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -99,3 +83,17 @@ class Apply(api.BaseResource):
|
||||||
err_message = 'Failed to apply manifest: {}'.format(e)
|
err_message = 'Failed to apply manifest: {}'.format(e)
|
||||||
self.error(req.context, err_message)
|
self.error(req.context, err_message)
|
||||||
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
||||||
|
|
||||||
|
def handle(self, req, documents, tiller):
|
||||||
|
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'))
|
||||||
|
|
||||||
|
return armada.sync()
|
||||||
|
|
|
@ -30,27 +30,28 @@ class Rollback(api.BaseResource):
|
||||||
@policy.enforce('armada:rollback_release')
|
@policy.enforce('armada:rollback_release')
|
||||||
def on_post(self, req, resp, release):
|
def on_post(self, req, resp, release):
|
||||||
try:
|
try:
|
||||||
dry_run = req.get_param_as_bool('dry_run')
|
|
||||||
|
|
||||||
with self.get_tiller(req, resp) as tiller:
|
with self.get_tiller(req, resp) as tiller:
|
||||||
|
msg = self.handle(req, release, 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'))
|
|
||||||
|
|
||||||
resp.body = json.dumps({
|
resp.body = json.dumps({
|
||||||
'message': ('(dry run) ' if dry_run else '') +
|
'message': msg,
|
||||||
'Rollback of {} complete.'.format(release),
|
|
||||||
})
|
})
|
||||||
|
resp.content_type = 'application/json'
|
||||||
resp.content_type = 'application/json'
|
resp.status = falcon.HTTP_200
|
||||||
resp.status = falcon.HTTP_200
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.exception('Caught unexpected exception')
|
self.logger.exception('Caught unexpected exception')
|
||||||
err_message = 'Failed to rollback release: {}'.format(e)
|
err_message = 'Failed to rollback release: {}'.format(e)
|
||||||
self.error(req.context, err_message)
|
self.error(req.context, err_message)
|
||||||
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
||||||
|
|
||||||
|
def handle(self, req, release, tiller):
|
||||||
|
dry_run = req.get_param_as_bool('dry_run')
|
||||||
|
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'))
|
||||||
|
|
||||||
|
return ('(dry run) ' if dry_run else '') + \
|
||||||
|
'Rollback of {} complete.'.format(release)
|
||||||
|
|
|
@ -37,10 +37,7 @@ class TestReleasesReleaseNameController(api.BaseResource):
|
||||||
@policy.enforce('armada:test_release')
|
@policy.enforce('armada:test_release')
|
||||||
def on_get(self, req, resp, release):
|
def on_get(self, req, resp, release):
|
||||||
with self.get_tiller(req, resp) as tiller:
|
with self.get_tiller(req, resp) as tiller:
|
||||||
cleanup = req.get_param_as_bool('cleanup')
|
success = self.handle(req, release, tiller)
|
||||||
|
|
||||||
test_handler = Test({}, release, tiller, cleanup=cleanup)
|
|
||||||
success = test_handler.test_release_for_success()
|
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
msg = {
|
msg = {
|
||||||
|
@ -57,6 +54,11 @@ class TestReleasesReleaseNameController(api.BaseResource):
|
||||||
resp.status = falcon.HTTP_200
|
resp.status = falcon.HTTP_200
|
||||||
resp.content_type = 'application/json'
|
resp.content_type = 'application/json'
|
||||||
|
|
||||||
|
def handle(self, req, release, tiller):
|
||||||
|
cleanup = req.get_param_as_bool('cleanup')
|
||||||
|
test_handler = Test({}, release, tiller, cleanup=cleanup)
|
||||||
|
return test_handler.test_release_for_success()
|
||||||
|
|
||||||
|
|
||||||
class TestReleasesManifestController(api.BaseResource):
|
class TestReleasesManifestController(api.BaseResource):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -34,19 +34,7 @@ class Status(api.BaseResource):
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
with self.get_tiller(req, resp) as tiller:
|
with self.get_tiller(req, resp) as tiller:
|
||||||
|
message = self.handle(tiller)
|
||||||
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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resp.status = falcon.HTTP_200
|
resp.status = falcon.HTTP_200
|
||||||
resp.body = json.dumps(message)
|
resp.body = json.dumps(message)
|
||||||
resp.content_type = 'application/json'
|
resp.content_type = 'application/json'
|
||||||
|
@ -56,6 +44,19 @@ class Status(api.BaseResource):
|
||||||
self.error(req.context, err_message)
|
self.error(req.context, err_message)
|
||||||
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
||||||
|
|
||||||
|
def handle(self, tiller):
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message
|
||||||
|
|
||||||
|
|
||||||
class Release(api.BaseResource):
|
class Release(api.BaseResource):
|
||||||
|
|
||||||
|
@ -65,18 +66,10 @@ class Release(api.BaseResource):
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
with self.get_tiller(req, resp) as tiller:
|
with self.get_tiller(req, resp) as tiller:
|
||||||
|
releases = self.handle(tiller)
|
||||||
LOG.debug(
|
resp.body = json.dumps({
|
||||||
'Tiller (Release) at: %s:%s, namespace=%s, '
|
'releases': releases,
|
||||||
'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)
|
|
||||||
|
|
||||||
resp.body = json.dumps({'releases': releases})
|
|
||||||
resp.content_type = 'application/json'
|
resp.content_type = 'application/json'
|
||||||
resp.status = falcon.HTTP_200
|
resp.status = falcon.HTTP_200
|
||||||
|
|
||||||
|
@ -84,3 +77,14 @@ class Release(api.BaseResource):
|
||||||
err_message = 'Unable to find Tiller Releases: {}'.format(e)
|
err_message = 'Unable to find Tiller Releases: {}'.format(e)
|
||||||
self.error(req.context, err_message)
|
self.error(req.context, err_message)
|
||||||
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
self.return_error(resp, falcon.HTTP_500, message=err_message)
|
||||||
|
|
||||||
|
def handle(self, tiller):
|
||||||
|
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)
|
||||||
|
return releases
|
||||||
|
|
|
@ -207,20 +207,8 @@ class ApplyManifest(CliAction):
|
||||||
tiller_namespace=self.tiller_namespace,
|
tiller_namespace=self.tiller_namespace,
|
||||||
bearer_token=self.bearer_token,
|
bearer_token=self.bearer_token,
|
||||||
dry_run=self.dry_run) as tiller:
|
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()
|
resp = self.handle(documents, tiller)
|
||||||
self.output(resp)
|
self.output(resp)
|
||||||
else:
|
else:
|
||||||
if len(self.values) > 0:
|
if len(self.values) > 0:
|
||||||
|
@ -248,3 +236,18 @@ class ApplyManifest(CliAction):
|
||||||
resp = client.post_apply(
|
resp = client.post_apply(
|
||||||
manifest=documents, set=self.set, query=query)
|
manifest=documents, set=self.set, query=query)
|
||||||
self.output(resp.get('message'))
|
self.output(resp.get('message'))
|
||||||
|
|
||||||
|
def handle(self, documents, 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)
|
||||||
|
return armada.sync()
|
||||||
|
|
|
@ -119,16 +119,19 @@ class Rollback(CliAction):
|
||||||
bearer_token=self.bearer_token,
|
bearer_token=self.bearer_token,
|
||||||
dry_run=self.dry_run) as tiller:
|
dry_run=self.dry_run) as tiller:
|
||||||
|
|
||||||
response = tiller.rollback_release(
|
response = self.handle(tiller)
|
||||||
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 handle(self, tiller):
|
||||||
|
return tiller.rollback_release(
|
||||||
|
self.release,
|
||||||
|
self.version,
|
||||||
|
wait=self.wait,
|
||||||
|
timeout=self.timeout,
|
||||||
|
force=self.force,
|
||||||
|
recreate_pods=self.recreate_pods)
|
||||||
|
|
||||||
def output(self, response):
|
def output(self, response):
|
||||||
self.logger.info(('(dry run) ' if self.dry_run else '') +
|
self.logger.info(('(dry run) ' if self.dry_run else '') +
|
||||||
'Rollback of %s complete.', self.release)
|
'Rollback of %s complete.', self.release)
|
||||||
|
|
Loading…
Reference in New Issue