Compare commits
28
Commits
view
..
5b5d62e4fa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5b5d62e4fa | ||
|
|
9afe770202 | ||
|
|
6a52ed2f66 | ||
|
|
279d59e376 | ||
|
|
a6d9f29f1a | ||
|
|
bb36edfca5 | ||
|
|
f451b8ff3b | ||
|
|
b837e1a952 | ||
|
|
aa1501214d | ||
|
|
246eff86a6 | ||
|
|
e2ea76c6c9 | ||
|
|
ad4fe6df26 | ||
|
|
43a000a9c1 | ||
|
|
32a0e65a68 | ||
|
|
b80be01a52 | ||
|
|
daa935bbef | ||
|
|
cb49bfba58 | ||
|
|
60af5e87ce | ||
|
|
aad687f630 | ||
|
|
6b30f381df | ||
|
|
5b03dc35b4 | ||
|
|
f9732160f0 | ||
|
|
8a84a8d42f | ||
|
|
39e6a69a08 | ||
|
|
c9d6d77931 | ||
|
|
2f30234edd | ||
|
|
cdd1dd0245 | ||
|
|
df9d6c93cc |
@@ -2,12 +2,8 @@ name: Gitea Actions Demo
|
|||||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
issue_comment:
|
||||||
- "*"
|
types: [created]
|
||||||
paths:
|
|
||||||
- 'dockerfile'
|
|
||||||
tags-ignore:
|
|
||||||
- '*'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Explore-Gitea-Actions:
|
Explore-Gitea-Actions:
|
||||||
@@ -20,6 +16,13 @@ jobs:
|
|||||||
- name: List files in the repository
|
- name: List files in the repository
|
||||||
run: |
|
run: |
|
||||||
ls ${{ gitea.workspace }}
|
ls ${{ gitea.workspace }}
|
||||||
|
|
||||||
|
- name: Cache pip
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: /root/.cache/pip
|
||||||
|
key: pip-{{ hashFiles('requirements*.txt') }}
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
@@ -34,7 +37,14 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
|
#build-contexts: pip_cache=${{steps.vars.outputs.pip-dir}}
|
||||||
tags: gitea.tryton.geeraert.eu/pi-ux-ce/django-python:latest
|
tags: gitea.tryton.geeraert.eu/pi-ux-ce/django-python:latest
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
- name: drop the pod to force pulling the new image
|
||||||
|
uses: actions-hub/kubectl@master
|
||||||
|
env:
|
||||||
|
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
|
||||||
|
with:
|
||||||
|
args: delete pod -n django-python --all
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
- run: echo "🍏 This job's status is ${{ job.status }}."
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
name: Gitea Actions Demo
|
name: Gitea Actions Demo
|
||||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
|
||||||
on: [push]
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
paths:
|
||||||
|
- '*.yaml'
|
||||||
|
tags-ignore:
|
||||||
|
- '*'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Explore-Gitea-Actions:
|
Explore-Gitea-Actions:
|
||||||
|
|||||||
@@ -26,11 +26,14 @@ spec:
|
|||||||
- containerPort: 8000
|
- containerPort: 8000
|
||||||
name: webserver-port
|
name: webserver-port
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: django-python-code
|
## - name: django-python-code
|
||||||
mountPath: /code
|
# mountPath: /code
|
||||||
- name: servarr-data
|
- name: servarr-data
|
||||||
mountPath: /data
|
mountPath: /data
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
- name: secret-kubeconfig
|
||||||
|
mountPath: /kubeconfig
|
||||||
|
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
@@ -43,6 +46,10 @@ spec:
|
|||||||
- name: servarr-data
|
- name: servarr-data
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /data
|
path: /data
|
||||||
|
- name: secret-kubeconfig
|
||||||
|
secret:
|
||||||
|
defaultMode: 420
|
||||||
|
secretName: kubeconfig
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Scaled down</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
}
|
||||||
|
.modal-confirm {
|
||||||
|
color: #636363;
|
||||||
|
width: 325px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-content {
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-header {
|
||||||
|
border-bottom: none;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.modal-confirm h4 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26px;
|
||||||
|
margin: 30px 0 -15px;
|
||||||
|
}
|
||||||
|
.modal-confirm .form-control, .modal-confirm .btn {
|
||||||
|
min-height: 40px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.modal-confirm .close {
|
||||||
|
position: absolute;
|
||||||
|
top: -5px;
|
||||||
|
right: -5px;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-footer {
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box {
|
||||||
|
color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
margin: 0 auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: -70px;
|
||||||
|
width: 105px;
|
||||||
|
height: 105px;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 9;
|
||||||
|
/*background: #82ce34;*/
|
||||||
|
background: #a80505;
|
||||||
|
padding: 15px;
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box i {
|
||||||
|
font-size: 58px;
|
||||||
|
position: relative;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box:hover,.modal-confirm .icon-box:focus {
|
||||||
|
background: #6fb32b;
|
||||||
|
/*background: #a80505;*/
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.modal-confirm.modal-dialog {
|
||||||
|
margin-top: 80px;
|
||||||
|
}
|
||||||
|
.modal-confirm .btn {
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
/*background: #82ce34;*/
|
||||||
|
background: #a80505;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.4s;
|
||||||
|
line-height: normal;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.modal-confirm .btn:hover, .modal-confirm .btn:focus {
|
||||||
|
background: #800404;
|
||||||
|
/*background: #a80505;*/
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.trigger-btn {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 100px auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="text-center">
|
||||||
|
<!-- Button HTML (to Trigger Modal) -->
|
||||||
|
<!--<a href="#myModal" class="trigger-btn" data-toggle="modal">Click to Open Confirm Modal</a> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Modal HTML -->
|
||||||
|
<!--<div id="myModal" class="modal fade">-->
|
||||||
|
<div class="modal-dialog modal-confirm">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="icon-box" onclick="window.location='/kubernetes_connection/scale_up/{{namespace}}/{{deployment}}';">
|
||||||
|
<!--<i class="material-icons"></i>-->
|
||||||
|
<i class="material-icons">×</i>
|
||||||
|
</div>
|
||||||
|
<h4 class="modal-title w-100">Too bad!</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p class="text-center">{{ deployment }} deployment from namespace {{ namespace }} is now scaled down.</p>
|
||||||
|
<p class="text-center">Current URL {{ url }}.</p>
|
||||||
|
<p class="text-center">base URL {{ baseurl }}.</p>
|
||||||
|
</div>
|
||||||
|
<div href={{ url }} class="modal-footer">
|
||||||
|
<!--<button href={{ url }} class="btn btn-success btn-block" data-dismiss="modal">Redirect</button>-->
|
||||||
|
<a href="https://google.fr" class="btn btn-success btn-block" data-dismiss="modal">Redirect</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Scaled up</title>
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||||
|
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Varela Round', sans-serif;
|
||||||
|
}
|
||||||
|
.modal-confirm {
|
||||||
|
color: #636363;
|
||||||
|
width: 325px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-content {
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-header {
|
||||||
|
border-bottom: none;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.modal-confirm h4 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26px;
|
||||||
|
margin: 30px 0 -15px;
|
||||||
|
}
|
||||||
|
.modal-confirm .form-control, .modal-confirm .btn {
|
||||||
|
min-height: 40px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.modal-confirm .close {
|
||||||
|
position: absolute;
|
||||||
|
top: -5px;
|
||||||
|
right: -5px;
|
||||||
|
}
|
||||||
|
.modal-confirm .modal-footer {
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box {
|
||||||
|
color: #fff;
|
||||||
|
position: absolute;
|
||||||
|
margin: 0 auto;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: -70px;
|
||||||
|
width: 95px;
|
||||||
|
height: 95px;
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 9;
|
||||||
|
background: #82ce34;
|
||||||
|
padding: 15px;
|
||||||
|
text-align: center;
|
||||||
|
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box i {
|
||||||
|
font-size: 58px;
|
||||||
|
position: relative;
|
||||||
|
top: 3px;
|
||||||
|
}
|
||||||
|
.modal-confirm .icon-box:hover,.modal-confirm .icon-box:focus {
|
||||||
|
/*background: #6fb32b;*/
|
||||||
|
background: #a80505;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.modal-confirm.modal-dialog {
|
||||||
|
margin-top: 80px;
|
||||||
|
}
|
||||||
|
.modal-confirm .btn {
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #82ce34;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.4s;
|
||||||
|
line-height: normal;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.modal-confirm .btn:hover, .modal-confirm .btn:focus {
|
||||||
|
background: #6fb32b;
|
||||||
|
/*background: #a80505;*/
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.trigger-btn {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 100px auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="text-center">
|
||||||
|
<!-- Button HTML (to Trigger Modal) -->
|
||||||
|
<!--<a href="#myModal" class="trigger-btn" data-toggle="modal">Click to Open Confirm Modal</a> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Modal HTML -->
|
||||||
|
<!--<div id="myModal" class="modal fade">-->
|
||||||
|
<div class="modal-dialog modal-confirm">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="icon-box" onclick="window.location='/kubernetes_connection/scale_down/{{namespace}}/{{deployment}}';">
|
||||||
|
<!--<i class="material-icons"></i>-->
|
||||||
|
<i class="material-icons"></i>
|
||||||
|
</div>
|
||||||
|
<h4 class="modal-title w-100">Awesome!</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p class="text-center">{{ deployment }} deployment from namespace {{ namespace }} is now scaled up.</p>
|
||||||
|
<p class="text-center">Current URL {{ url }}.</p>
|
||||||
|
<p class="text-center">base URL {{ baseurl }}.</p>
|
||||||
|
</div>
|
||||||
|
<div href={{ url }} class="modal-footer">
|
||||||
|
<!--<button href={{ url }} class="btn btn-success btn-block" data-dismiss="modal">Redirect</button>-->
|
||||||
|
|
||||||
|
<a href="https://google.fr" class="btn btn-success btn-block" data-dismiss="modal">Redirect</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
thislist = ["apple", "banana", "cherry"]
|
thislist = ["apple", "banana", "cherry"]
|
||||||
return render(request, 'home.html',{'thislist': thislist})
|
return render(request, 'home.html',{'thislist': thislist})
|
||||||
@@ -7,3 +8,14 @@ def home(request):
|
|||||||
def about(request):
|
def about(request):
|
||||||
thislist = ["apple", "banana", "cherry"]
|
thislist = ["apple", "banana", "cherry"]
|
||||||
return render(request, 'about.html',{'thislist': thislist})
|
return render(request, 'about.html',{'thislist': thislist})
|
||||||
|
|
||||||
|
def success(request):
|
||||||
|
return render(request, 'start.html',{'deployment': 'django','url':'https://google.com'})
|
||||||
|
|
||||||
|
def scale_up(request,namespace_name,deploy_name):
|
||||||
|
baseurl = "{0}://{1}{2}".format(request.scheme, request.get_host(), request.path)
|
||||||
|
return render(request, 'start.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com','baseurl': baseurl})
|
||||||
|
|
||||||
|
def scale_down(request,namespace_name,deploy_name):
|
||||||
|
baseurl = "{0}://{1}{2}".format(request.scheme, request.get_host(), request.path)
|
||||||
|
return render(request, 'shutdown.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com','baseurl': baseurl})
|
||||||
|
|||||||
@@ -43,6 +43,10 @@ urlpatterns = [
|
|||||||
path('dashboard/hello/', dashboardapp.hello),
|
path('dashboard/hello/', dashboardapp.hello),
|
||||||
path('dashboard/view/about', dashboardview.about),
|
path('dashboard/view/about', dashboardview.about),
|
||||||
path('dashboard/view/home', dashboardview.home),
|
path('dashboard/view/home', dashboardview.home),
|
||||||
|
path('dashboard/view/success', dashboardview.success),
|
||||||
|
path('dashboard/scale_up/<str:namespace_name>/<str:deploy_name>', dashboardview.scale_up),
|
||||||
|
path('dashboard/scale_down/<str:namespace_name>/<str:deploy_name>', dashboardview.scale_down),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################## kubernetes_connection#####
|
################## kubernetes_connection#####
|
||||||
|
|||||||
@@ -18,23 +18,26 @@ def hello(request):
|
|||||||
return HttpResponse('<h1>Hello k8s!</h1>')
|
return HttpResponse('<h1>Hello k8s!</h1>')
|
||||||
|
|
||||||
def scale_up(request,namespace_name,deploy_name):
|
def scale_up(request,namespace_name,deploy_name):
|
||||||
config.load_kube_config(config_file='/code/kubeconfig')
|
config.load_kube_config(config_file='/kubeconfig/config')
|
||||||
api = client.AppsV1Api()
|
api = client.AppsV1Api()
|
||||||
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
|
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
|
||||||
deployment.spec.replicas = 2
|
deployment.spec.replicas = 1
|
||||||
resp = api.patch_namespaced_deployment(
|
resp = api.patch_namespaced_deployment(
|
||||||
name=deploy_name, namespace=namespace_name, body=deployment);
|
name=deploy_name, namespace=namespace_name, body=deployment);
|
||||||
return HttpResponse('<h1>Scaled up !</h1>')
|
#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):
|
def scale_down(request,namespace_name,deploy_name):
|
||||||
config.load_kube_config(config_file='/code/kubeconfig')
|
config.load_kube_config(config_file='/kubeconfig/config')
|
||||||
api = client.AppsV1Api()
|
api = client.AppsV1Api()
|
||||||
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
|
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
|
||||||
deployment.spec.replicas = 0
|
deployment.spec.replicas = 0
|
||||||
resp = api.patch_namespaced_deployment(
|
resp = api.patch_namespaced_deployment(
|
||||||
name=deploy_name, namespace=namespace_name, body=deployment);
|
name=deploy_name, namespace=namespace_name, body=deployment);
|
||||||
return HttpResponse('<h1>Scaled down !</h1>')
|
#return HttpResponse('<h1>Scaled down !</h1>')
|
||||||
|
return render(request, 'shutdown.html',
|
||||||
|
{'namespace': namespace_name, 'deployment': deploy_name, 'url': 'https://namespace.com'})
|
||||||
|
|
||||||
def nodes(request):
|
def nodes(request):
|
||||||
config.load_kube_config(config_file='/code/kubeconfig')
|
config.load_kube_config(config_file='/code/kubeconfig')
|
||||||
@@ -111,15 +114,16 @@ def backup_job(request):
|
|||||||
#help with yaml import
|
#help with yaml import
|
||||||
#https://github.com/kubernetes-client/python/issues/589
|
#https://github.com/kubernetes-client/python/issues/589
|
||||||
|
|
||||||
def backup_job_yaml(request):
|
def backup_job_yaml(request,sync_target):
|
||||||
config.load_kube_config(config_file='/code/kubeconfig')
|
config.load_kube_config(config_file='/code/kubeconfig')
|
||||||
v1 = client.BatchV1Api()
|
v1 = client.BatchV1Api()
|
||||||
|
|
||||||
with urllib.request.urlopen(https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/pod.yaml") as manifest_url:
|
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)
|
||||||
|
|
||||||
# with open('/code/pod.yaml') as :
|
return HttpResponse(api_response)
|
||||||
job = yaml.safe_load(manifest_url)
|
|
||||||
v1.create_namespaced_job(
|
|
||||||
job['metadata']['namespace'], job, pretty=True
|
|
||||||
)
|
|
||||||
return HttpResponse(job['metadata']['namespace'])
|
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@ WORKDIR /code/
|
|||||||
COPY requirements.txt ./
|
COPY requirements.txt ./
|
||||||
COPY django_code ./
|
COPY django_code ./
|
||||||
|
|
||||||
RUN pip install --upgrade pip
|
RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install --upgrade pip
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install --no-cache-dir -r requirements.txt
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN python django_code/manage.py migrate
|
RUN python django_code/manage.py migrate
|
||||||
|
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ docker
|
|||||||
kubernetes
|
kubernetes
|
||||||
ruamel.yaml
|
ruamel.yaml
|
||||||
pyyaml
|
pyyaml
|
||||||
|
django-bootstrap-v5
|
||||||
Reference in New Issue
Block a user