This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -0,0 +1,151 @@
|
||||
from django.apps import AppConfig
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import redirect
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
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 stash!</h1>')
|
||||
def form(request):
|
||||
return render(request, 'stash_form.html',{})
|
||||
|
||||
def handle_survey_form(request):
|
||||
config.load_kube_config(config_file='/kubeconfig/config')
|
||||
v1 = client.BatchV1Api()
|
||||
|
||||
name = request.GET.get('name')
|
||||
url = request.GET.get('url')
|
||||
|
||||
environment = Environment(loader=FileSystemLoader("django_code/stash_management/templates/"))
|
||||
template = environment.get_template("template.stash-pornpics-dowloader.job.yml")
|
||||
pod_manifest_job = template.render(name=name, url=url)
|
||||
|
||||
api_response = v1.create_namespaced_job(body=pod_manifest_job)
|
||||
return HttpResponse(api_response)
|
||||
|
||||
# You can now process or store the data
|
||||
#return HttpResponse(f"Received: {name}, {url}")
|
||||
#return HttpResponse(content)
|
||||
|
||||
|
||||
|
||||
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)
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
@@ -0,0 +1 @@
|
||||
<h1>Hello template!</h1>
|
||||
@@ -0,0 +1,37 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: stash-pornpics-dowloader-{{ name }}
|
||||
namespace: stash
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
containers:
|
||||
- name: stash-pornpics-dowloader-{{ name }}
|
||||
image: bash
|
||||
imagePullPolicy: Always
|
||||
volumeMounts:
|
||||
- mountPath: /config
|
||||
name: scripts
|
||||
- mountPath: /data
|
||||
mountPropagation: None
|
||||
name: data-pvc
|
||||
command:
|
||||
- bash
|
||||
- /config/download.sh
|
||||
- --http_proxy
|
||||
- "http://gluetun-svc.gluetun.svc:8888"
|
||||
- --BASE_URL
|
||||
- "{{ url }}"
|
||||
- --pornstars
|
||||
- "{{ name }}"
|
||||
restartPolicy: Never
|
||||
volumes:
|
||||
- configMap:
|
||||
defaultMode: 0744
|
||||
name: pornpic-dowloader
|
||||
name: scripts
|
||||
- name: data-pvc
|
||||
persistentVolumeClaim:
|
||||
claimName: data-pvc
|
||||
backoffLimit: 4
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -0,0 +1,8 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render
|
||||
|
||||
def hello(request):
|
||||
return HttpResponse('<h1>Hello Django!</h1>')
|
||||
Reference in New Issue
Block a user