From 3b09981597b85cac32d9d1fb657727ffbf41477d Mon Sep 17 00:00:00 2001 From: gardlt Date: Tue, 18 Apr 2017 10:16:07 -0500 Subject: [PATCH 1/3] [feature] creating-api-service * cleaning deps --- armada/armada.py | 19 +++++++++---------- armada/handlers/__init__.py | 0 armada/{ => handlers}/chartbuilder.py | 25 +++++++++++-------------- armada/{ => handlers}/k8s.py | 7 ++++--- armada/{ => handlers}/tiller.py | 11 +++++++---- armada/utils/__init__.py | 0 armada/utils/git.py | 18 ++++++++++++++++++ 7 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 armada/handlers/__init__.py rename armada/{ => handlers}/chartbuilder.py (92%) rename armada/{ => handlers}/k8s.py (92%) rename armada/{ => handlers}/tiller.py (97%) create mode 100644 armada/utils/__init__.py create mode 100644 armada/utils/git.py diff --git a/armada/armada.py b/armada/armada.py index 9bb6ad2b..ab9395c9 100644 --- a/armada/armada.py +++ b/armada/armada.py @@ -1,9 +1,11 @@ -from supermutes.dot import dotify -from chartbuilder import ChartBuilder -from tiller import Tiller -from logutil import LOG -import yaml import difflib +import yaml + +from supermutes.dot import dotify + +from handlers.chartbuilder import ChartBuilder +from handlers.tiller import Tiller +from logutil import LOG class Armada(object): ''' @@ -16,19 +18,15 @@ class Armada(object): Initialize the Armada Engine and establish a connection to Tiller ''' - self.args = args - - # internalize config self.config = yaml.load(open(args.config).read()) - self.tiller = Tiller() def find_release_chart(self, known_releases, name): ''' Find a release given a list of known_releases and a release name ''' - for chart_name, version, chart, values in known_releases: + for chart_name, _, chart, values in known_releases: if chart_name == name: return chart, values @@ -114,6 +112,7 @@ class Armada(object): LOG.debug("Cleaning up chart source in %s", chartbuilder.source_directory) + chartbuilder.source_cleanup() if self.args.enable_chart_cleanup: diff --git a/armada/handlers/__init__.py b/armada/handlers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/armada/chartbuilder.py b/armada/handlers/chartbuilder.py similarity index 92% rename from armada/chartbuilder.py rename to armada/handlers/chartbuilder.py index ee18b21f..1a3e23da 100644 --- a/armada/chartbuilder.py +++ b/armada/handlers/chartbuilder.py @@ -1,14 +1,15 @@ +import os +import yaml + from hapi.chart.template_pb2 import Template from hapi.chart.chart_pb2 import Chart from hapi.chart.metadata_pb2 import Metadata from hapi.chart.config_pb2 import Config -from logutil import LOG from supermutes.dot import dotify -import shutil -import tempfile -import pygit2 -import os -import yaml + +from armada.logutil import LOG +from armada.utils.git import git_clone, source_cleanup + class ChartBuilder(object): ''' @@ -50,9 +51,6 @@ class ChartBuilder(object): ''' if self.chart.source.type == 'git': - - tmpdir = tempfile.mkdtemp(prefix='armada', dir='/tmp') - self._source_tmp_dir = tmpdir if self.parent: LOG.info("Cloning %s/%s as dependency for %s", self.chart.source.location, @@ -64,11 +62,10 @@ class ChartBuilder(object): self.chart.source.subpath, self.chart.release_name) - pygit2.clone_repository(self.chart.source.location, tmpdir, - checkout_branch=self.chart. - source.reference) + self._source_tmp_dir = git_clone(self.chart.source.location, + self.chart.source.reference) - return os.path.join(tmpdir, self.chart.source.subpath) + return os.path.join(self._source_tmp_dir, self.chart.source.subpath) else: LOG.exception("Unknown source type %s for chart %s", @@ -79,7 +76,7 @@ class ChartBuilder(object): ''' Cleanup source ''' - shutil.rmtree(self._source_tmp_dir) + source_cleanup(self._source_tmp_dir) def get_metadata(self): ''' diff --git a/armada/k8s.py b/armada/handlers/k8s.py similarity index 92% rename from armada/k8s.py rename to armada/handlers/k8s.py index 7b947950..f6a289af 100644 --- a/armada/k8s.py +++ b/armada/handlers/k8s.py @@ -1,6 +1,7 @@ from kubernetes import client, config from kubernetes.client.rest import ApiException -from logutil import LOG + +from armada.logutil import LOG class K8s(object): ''' @@ -40,5 +41,5 @@ class K8s(object): This will return a list of objects req namespace ''' - res = self.client.list_namespaced_pod(namespace) - return res + + return self.client.list_namespaced_pod(namespace) diff --git a/armada/tiller.py b/armada/handlers/tiller.py similarity index 97% rename from armada/tiller.py rename to armada/handlers/tiller.py index d3e7bc28..152fd974 100644 --- a/armada/tiller.py +++ b/armada/handlers/tiller.py @@ -1,10 +1,10 @@ +import grpc from hapi.services.tiller_pb2 import ReleaseServiceStub, ListReleasesRequest, \ InstallReleaseRequest, UpdateReleaseRequest, UninstallReleaseRequest from hapi.chart.config_pb2 import Config -import grpc -from k8s import K8s -from logutil import LOG +from armada.handlers.k8s import K8s +from armada.logutil import LOG TILLER_PORT = 44134 TILLER_VERSION = b'2.1.3' @@ -202,7 +202,7 @@ class Tiller(object): self.timeout, metadata=self.metadata) - def chart_cleanup(self, prefix, charts, known_releases): + def chart_cleanup(self, prefix, charts): ''' :params charts - list of yaml charts :params known_release - list of releases in tiller @@ -210,6 +210,9 @@ class Tiller(object): :result - will remove any chart that is not present in yaml ''' def release_prefix(prefix, chart): + ''' + how to attach prefix to chart + ''' return "{}-{}".format(prefix, chart["chart"]["release_name"]) valid_charts = [release_prefix(prefix, chart) for chart in charts] diff --git a/armada/utils/__init__.py b/armada/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/armada/utils/git.py b/armada/utils/git.py new file mode 100644 index 00000000..e87c68ed --- /dev/null +++ b/armada/utils/git.py @@ -0,0 +1,18 @@ +import pygit2 +import tempfile +import shutil + +def git_clone(repo_url, branch='master'): + ''' + clones repo to a /tmp/ dir + ''' + _tmp_dir = tempfile.mkdtemp(prefix='armada', dir='/tmp') + pygit2.clone_repository(repo_url, _tmp_dir, checkout_branch=branch) + + return _tmp_dir + +def source_cleanup(target_dir): + ''' + Clean up source + ''' + shutil.rmtree(target_dir) From e01f4966b814e626dff423b5b57c73138ce96d8e Mon Sep 17 00:00:00 2001 From: gardlt Date: Wed, 19 Apr 2017 21:24:04 -0500 Subject: [PATCH 2/3] [bug] fixing-chart-diff-check * replacing dup var with correct * small misname fix * fixing missing prefix --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- armada/armada.py | 5 +++-- armada/handlers/tiller.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index eae34c21..8a515415 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,5 @@