Files

130 lines
4.2 KiB
Python

from django.apps import AppConfig
from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect
from django.core.files import File
from kubernetes import client, config
#from django.template.loader import render_to_string
import time
import random
import mimetypes
import ruamel.yaml
import yaml
import urllib.request
def hello(request):
return HttpResponse('<h1>Hello k8s!</h1>')
def scale_up(request,namespace_name,deploy_name):
config.load_kube_config(config_file='/kubeconfig/config')
api = client.AppsV1Api()
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
deployment.spec.replicas = 1
resp = api.patch_namespaced_deployment(
name=deploy_name, namespace=namespace_name, body=deployment);
#return HttpResponse('<h1>Scaled up !</h1>')
return render(request, 'start.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com'})
def scale_down(request,namespace_name,deploy_name):
config.load_kube_config(config_file='/kubeconfig/config')
api = client.AppsV1Api()
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
deployment.spec.replicas = 0
resp = api.patch_namespaced_deployment(
name=deploy_name, namespace=namespace_name, body=deployment);
#return HttpResponse('<h1>Scaled down !</h1>')
return render(request, 'shutdown.html',
{'namespace': namespace_name, 'deployment': deploy_name, 'url': 'https://namespace.com'})
def nodes(request):
config.load_kube_config(config_file='/code/kubeconfig')
v1 = client.CoreV1Api()
# v1.list_node()
pod_manifest = {
'apiVersion': 'v1',
'kind': 'Pod',
'metadata': {
'labels': {
'bot': 'current-bot'
},
'name': 'podname',
'namespace': 'echo-server'
},
'spec': {
'containers': [{
'image': 'gitea.tryton.geeraert.eu/pi-ux-ce/bitwarden_cli:1.0.1',
# 'pod-running-timeout': '5m0s',
'name': 'testpython',
'env': [
{'name': 'env_variable', 'value': 'env_value'},
]
}],
'restartPolicy': 'Always',
# 'serviceAccountName': 'bots-service-account'
}
}
# print(f'POD MANIFEST:\n{pod_manifest}')
api_response = v1.create_namespaced_pod(body=pod_manifest,namespace='echo-server')
return HttpResponse(api_response)
def backup_job(request):
config.load_kube_config(config_file='/code/kubeconfig')
v1 = client.CoreV1Api()
#v1 = client.BatchV1Api()
# v1.list_node()
pod_manifest_job = {
'apiVersion': 'batch/v1',
'kind': 'Job',
'metadata': {
'name': 'bitwarden-backup-django',
'namespace': 'bwbackup'
},
'spec': {
'template': {
'spec': {
'containers': [{
'image': 'gitea.tryton.geeraert.eu/pi-ux-ce/bitwarden_cli:1.0.1',
'name': 'testpython',
'command': ['/bin/sh -c /config/export_bitwarden.sh'],
'env': [
{'name': 'env_variable', 'value': 'env_value'},
],
'volumeMounts': [
{'name': 'scripts', 'configMap': [{'name':'bitwarden-export-scripts'},]},
]
}],
'restartPolicy': 'Always',
}
}
}
}
api_response = v1.create_namespaced_job(body=pod_manifest_job)
return HttpResponse(api_response)
#help with yaml import
#https://github.com/kubernetes-client/python/issues/589
def backup_job_yaml(request,sync_target):
config.load_kube_config(config_file='/code/kubeconfig')
v1 = client.BatchV1Api()
yaml_location = {
"synology" : "https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/synology_pod.yaml",
"openmediavault":"https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/openmediavault_pod.yaml"
}
print(yaml_location[sync_target])
url_to_select=yaml_location[sync_target]
api_response = v1.create_namespaced_job(body=pod_manifest_job)
return HttpResponse(api_response)