Update to support helm2

This commit is contained in:
jenkins-x-bot 2020-09-14 10:28:41 +08:00
parent d9de373d3c
commit f66b447e0c
6 changed files with 48 additions and 19 deletions

View File

@ -9,6 +9,7 @@ from flask_bootstrap import Bootstrap
class deploySelectForm(FlaskForm):
tiller_ns = SelectField('tiller_ns', choices=[], coerce=str)
namespace = SelectField('namespace', choices=[], coerce=str)
chart = SelectField('chart', choices=[])
version = SelectField('remember me')

22
main.py
View File

@ -28,6 +28,18 @@ def get_namespaces():
data = json.loads(output)
return data
def get_tiller_namespaces():
command = "/usr/local/bin/kubectl get po --all-namespaces -l name=tiller -ojson"
info(f"Running command: {command}")
try:
output = check_output(command.split(" "), stderr=STDOUT).decode("utf-8")
except CalledProcessError as err:
error(err.output.decode("utf-8"))
raise err
info(f"Output from command:\n{output}")
data = json.loads(output)
return data
def get_deployments(namespace):
command = "/usr/local/bin/kubectl -n " + namespace + " get deploy -ojson"
info(f"Running command: {command}")
@ -40,8 +52,9 @@ def get_deployments(namespace):
data = json.loads(output)
return data
def get_charts(namespace):
command = "/usr/bin/helm -n " + namespace + " list -ojson"
def get_charts(tiller_ns, namespace):
command = "/usr/bin/helm --tiller-namespace " + tiller_ns + " list -ojson" #helm2
#command = "/usr/bin/helm -n " + namespace + " list -ojson" #helm3
info(f"Running command: {command}")
try:
output = check_output(command.split(" "), stderr=STDOUT).decode("utf-8")
@ -52,8 +65,9 @@ def get_charts(namespace):
data = json.loads(output)
return data
def get_chartdata(namespace, chart):
command = "/usr//bin/helm -n " + namespace + " history " + chart + " -ojson"
def get_chartdata(tiller_ns, namespace, chart):
command = "/usr/bin/helm --tiller-namespace " + tiller_ns + " history " + chart + " -ojson" #helm2
#command = "/usr/bin/helm -n " + namespace + " history " + chart + " -ojson" #helm3
info(f"Running command: {command}")
print(f"Running command: {command}")
try:

Binary file not shown.

Binary file not shown.

View File

@ -1,32 +1,34 @@
from flask import render_template, request, jsonify
from forms import deploySelectForm
from main import get_namespaces, get_charts, get_chartdata
from main import get_namespaces, get_charts, get_chartdata, get_tiller_namespaces
from . import routes
from tables import chartVersionTable
import json
@routes.route('/', methods=['GET', 'POST'])
def index():
tiller_ns = get_tiller_namespaces()
namespaces = get_namespaces()
print(namespaces)
form = deploySelectForm()
form.tiller_ns.choices = [(name['metadata']['namespace'], name['metadata']['namespace']) for name in tiller_ns['items']]
form.namespace.choices = [(name['metadata']['name'], name['metadata']['name']) for name in namespaces['items']]
return render_template('nameChartSelect.html', namespaces=namespaces, form=form)
return render_template('nameChartSelect.html', namespaces=namespaces, tiller_ns=tiller_ns, form=form)
@routes.route('/chartSelect', methods=['POST'])
def chartVersions():
namespace = request.form['namespace']
tiller_ns = request.form['tiller_ns']
chart = request.form['chart']
chartVersions = get_chartdata(namespace, chart)
chartVersions = get_chartdata(tiller_ns, namespace, chart)
table = chartVersionTable(chartVersions)
table.border = True
table.classes = ['table-striped', 'table-condensed', 'table-hover']
return render_template('chartRevisionList.html', table=table, namespace=namespace)
@routes.route('/nsLookup/<namespace>')
def namespaceLookup(namespace):
charts = get_charts(namespace)
@routes.route('/nsLookup/<tiller>/<namespace>')
def namespaceLookup(tiller, namespace):
charts = get_charts(tiller, namespace)
return jsonify(charts)
@routes.route('/deployChartRevision/<revision>/<chart>/<namespace>', methods=['POST'])

View File

@ -18,13 +18,21 @@
<div class = "row">
<div class = "col-sm-6">
<div class="input-group">
<span class="input-group-addon" id="basic-addon1">Namespace:</span>
{{ form.namespace(class_="form-control") }}
<span class="input-group-addon" id="basic-addon1">Tiller Namespace:</span>
{{ form.tiller_ns(class_="form-control") }}
</div>
</div>
<div class = "col-sm-6">
<div class="input-group">
<span class="input-group-addon" id="basic-addon2">Chart:</span>
<span class="input-group-addon" id="basic-addon2">Namespace:</span>
{{ form.namespace(class_="form-control") }}
</div>
</div>
</div>
<div class = "row">
<div class = "col-sm-12">
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Chart:</span>
{{ form.chart(class_="form-control") }}
</div>
</div>
@ -36,20 +44,24 @@
</form>
</div>
</div>
dd
</p>
</dl>
<script>
var tillerSelect = document.getElementById(tiller_ns");
var namespaceSelect = document.getElementById("namespace");
var chartSelect = document.getElementById("chart");
tillerSelect.onchange = function() {myFunction()};
namespaceSelect.onchange = function() {myFunction()};
function myFunction() {
tiller_ns = tillerSelect.value;
namespace = namespaceSelect.value;
fetch('/nsLookup/' + namespace).then(function(response) {
fetch('/nsLookup/' + tiller_ns + '/' + namespace).then(function(response) {
response.json().then(function(data) {
var optionHTML = '';
for (var chart of data) {