mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #44277 from jacekn/juju-namespaces
Automatic merge from submit-queue Add namespace-{list, create, delete} actions to the kubernetes-master layer **What this PR does / why we need it**: This PR adds namespace-{list,create,delete} actions to the juju kubernetes-master layer. **Which issue this PR fixes**: fixes #43712 **Special notes for your reviewer**: Original PR https://github.com/juju-solutions/kubernetes/pull/109 **Release note**: ``` Add namespace-{list,create,delete} actions to the juju kubernetes-master layer ```
This commit is contained in:
commit
40d51462b2
@ -26,3 +26,23 @@ create-rbd-pv:
|
|||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
- size
|
- size
|
||||||
|
namespace-list:
|
||||||
|
description: List existing k8s namespaces
|
||||||
|
namespace-create:
|
||||||
|
description: Create new namespace
|
||||||
|
params:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: Namespace name eg. staging
|
||||||
|
minLength: 2
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
namespace-delete:
|
||||||
|
description: Delete namespace
|
||||||
|
params:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: Namespace name eg. staging
|
||||||
|
minLength: 2
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from yaml import safe_load as load
|
||||||
|
from charmhelpers.core.hookenv import (
|
||||||
|
action_get,
|
||||||
|
action_set,
|
||||||
|
action_fail,
|
||||||
|
action_name
|
||||||
|
)
|
||||||
|
from charms.templating.jinja2 import render
|
||||||
|
from subprocess import check_output
|
||||||
|
|
||||||
|
|
||||||
|
def kubectl(args):
|
||||||
|
cmd = ['kubectl'] + args
|
||||||
|
return check_output(cmd)
|
||||||
|
|
||||||
|
|
||||||
|
def namespace_list():
|
||||||
|
y = load(kubectl(['get', 'namespaces', '-o', 'yaml']))
|
||||||
|
ns = [i['metadata']['name'] for i in y['items']]
|
||||||
|
action_set({'namespaces': ', '.join(ns)+'.'})
|
||||||
|
return ns
|
||||||
|
|
||||||
|
|
||||||
|
def namespace_create():
|
||||||
|
name = action_get('name')
|
||||||
|
if name in namespace_list():
|
||||||
|
action_fail('Namespace "{}" already exists.'.format(name))
|
||||||
|
return
|
||||||
|
|
||||||
|
render('create-namespace.yaml.j2', '/etc/kubernetes/addons/create-namespace.yaml',
|
||||||
|
context={'name': name})
|
||||||
|
kubectl(['create', '-f', '/etc/kubernetes/addons/create-namespace.yaml'])
|
||||||
|
action_set({'msg': 'Namespace "{}" created.'.format(name)})
|
||||||
|
|
||||||
|
|
||||||
|
def namespace_delete():
|
||||||
|
name = action_get('name')
|
||||||
|
if name in ['default', 'kube-system']:
|
||||||
|
action_fail('Not allowed to delete "{}".'.format(name))
|
||||||
|
return
|
||||||
|
if name not in namespace_list():
|
||||||
|
action_fail('Namespace "{}" does not exist.'.format(name))
|
||||||
|
return
|
||||||
|
kubectl(['delete', 'ns/'+name])
|
||||||
|
action_set({'msg': 'Namespace "{}" deleted.'.format(name)})
|
||||||
|
|
||||||
|
|
||||||
|
action = action_name().replace('namespace-', '')
|
||||||
|
if action == 'create':
|
||||||
|
namespace_create()
|
||||||
|
elif action == 'list':
|
||||||
|
namespace_list()
|
||||||
|
elif action == 'delete':
|
||||||
|
namespace_delete()
|
1
cluster/juju/layers/kubernetes-master/actions/namespace-delete
Symbolic link
1
cluster/juju/layers/kubernetes-master/actions/namespace-delete
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
namespace-create
|
1
cluster/juju/layers/kubernetes-master/actions/namespace-list
Symbolic link
1
cluster/juju/layers/kubernetes-master/actions/namespace-list
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
namespace-create
|
@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: {{ name }}
|
||||||
|
labels:
|
||||||
|
name: {{ name }}
|
Loading…
Reference in New Issue
Block a user