[feature] adding-delete-cleanup-functions (#45)
* clean up will remove charts that are not maintained by the armada yaml * uninstall chart
This commit is contained in:
parent
8cfbc69d3d
commit
6355fee383
@ -39,6 +39,8 @@ class Armada(object):
|
||||
|
||||
# extract known charts on tiller right now
|
||||
known_releases = self.tiller.list_charts()
|
||||
prefix = self.config.get('armada').get('release_prefix')
|
||||
|
||||
for release in known_releases:
|
||||
LOG.debug("Release %s, Version %s found on tiller", release[0],
|
||||
release[1])
|
||||
@ -95,12 +97,17 @@ class Armada(object):
|
||||
self.args.dry_run,
|
||||
chart.release_name,
|
||||
chart.namespace,
|
||||
prefix,
|
||||
values=yaml.safe_dump(values))
|
||||
|
||||
LOG.debug("Cleaning up chart source in %s",
|
||||
chartbuilder.source_directory)
|
||||
chartbuilder.source_cleanup()
|
||||
|
||||
if self.args.enable_chart_cleanup:
|
||||
self.tiller.chart_cleanup(prefix, self.config['armada']['charts'],
|
||||
known_releases)
|
||||
|
||||
def show_diff(self, chart, installed_chart,
|
||||
installed_values, target_chart, target_values):
|
||||
'''
|
||||
|
@ -1,9 +1,11 @@
|
||||
from hapi.services.tiller_pb2 import ReleaseServiceStub, ListReleasesRequest, \
|
||||
InstallReleaseRequest, UpdateReleaseRequest
|
||||
InstallReleaseRequest, UpdateReleaseRequest, UninstallReleaseRequest
|
||||
from hapi.chart.config_pb2 import Config
|
||||
from k8s import K8s
|
||||
import grpc
|
||||
|
||||
from logutil import LOG
|
||||
from k8s import K8s
|
||||
|
||||
TILLER_PORT = 44134
|
||||
TILLER_VERSION = b'2.1.3'
|
||||
TILLER_TIMEOUT = 300
|
||||
@ -110,7 +112,8 @@ class Tiller(object):
|
||||
return stub.UpdateRelease(release_request, self.timeout,
|
||||
metadata=self.metadata)
|
||||
|
||||
def install_release(self, chart, dry_run, name, namespace, values=None):
|
||||
def install_release(self, chart, dry_run, name, namespace, prefix,
|
||||
values=None):
|
||||
'''
|
||||
Create a Helm Release
|
||||
'''
|
||||
@ -126,8 +129,44 @@ class Tiller(object):
|
||||
chart=chart,
|
||||
dry_run=dry_run,
|
||||
values=values,
|
||||
name=name,
|
||||
name="{}-{}".format(prefix, name),
|
||||
namespace=namespace)
|
||||
return stub.InstallRelease(release_request,
|
||||
self.timeout,
|
||||
metadata=self.metadata)
|
||||
|
||||
def uninstall_release(self, release, disable_hooks=False, purge=True):
|
||||
'''
|
||||
:params - release - helm chart release name
|
||||
:params - purge - deep delete of chart
|
||||
|
||||
deletes a helm chart from tiller
|
||||
'''
|
||||
|
||||
# build release install request
|
||||
stub = ReleaseServiceStub(self.channel)
|
||||
release_request = UninstallReleaseRequest(name=release,
|
||||
disable_hooks=disable_hooks,
|
||||
purge=purge)
|
||||
return stub.UninstallRelease(release_request,
|
||||
self.timeout,
|
||||
metadata=self.metadata)
|
||||
|
||||
def chart_cleanup(self, prefix, charts, known_releases):
|
||||
'''
|
||||
:params charts - list of yaml charts
|
||||
:params known_release - list of releases in tiller
|
||||
|
||||
:result - will remove any chart that is not present in yaml
|
||||
'''
|
||||
def release_prefix(prefix, chart):
|
||||
return "{}-{}".format(prefix, chart["chart"]["release_name"])
|
||||
|
||||
valid_charts = [release_prefix(prefix, chart) for chart in charts]
|
||||
actual_charts = [x.name for x in self.list_releases()]
|
||||
chart_diff = list(set(actual_charts) - set(valid_charts))
|
||||
|
||||
for chart in chart_diff:
|
||||
if chart.startswith(prefix):
|
||||
LOG.debug("Release: %s will be removed", chart)
|
||||
self.uninstall_release(chart)
|
||||
|
@ -14,6 +14,8 @@ def parse_args():
|
||||
help='Path to YAML File or Directory')
|
||||
ap.add_argument('--debug', action='store_true', default=False,
|
||||
required=False, help='Enable debug logging')
|
||||
ap.add_argument('--enable-chart-cleanup', action='store_true',
|
||||
default=False, required=False, help='Clean up enviroment')
|
||||
ap.add_argument('-d', '--dry-run', action='store_true', default=False,
|
||||
required=False, help='Enable dry-run flag on all Tiller'
|
||||
'Calls')
|
||||
|
Loading…
Reference in New Issue
Block a user