4
4
import random
5
5
import os
6
6
import string
7
- from typing import Any , Dict
7
+ from typing import Any , Dict , Optional
8
8
9
9
import kubernetes
10
10
import kopf
11
11
12
12
# Some (key) default deployment variables...
13
- _DEFAULT_IMAGE = "jupyter/minimal-notebook:notebook-6.3.0"
14
- _DEFAULT_SA = "default"
15
- _DEFAULT_CPU_LIMIT = "1"
16
- _DEFAULT_CPU_REQUEST = "10m"
17
- _DEFAULT_MEM_LIMIT = "1Gi"
18
- _DEFAULT_MEM_REQUEST = "256Mi"
19
- _DEFAULT_USER_ID = 1000
20
- _DEFAULT_GROUP_ID = 100
21
- _DEFAULT_INGRESS_PROXY_BODY_SIZE = "500m"
13
+ _DEFAULT_IMAGE : str = "jupyter/minimal-notebook:notebook-6.3.0"
14
+ _DEFAULT_SA : str = "default"
15
+ _DEFAULT_CPU_LIMIT : str = "1"
16
+ _DEFAULT_CPU_REQUEST : str = "10m"
17
+ _DEFAULT_MEM_LIMIT : str = "1Gi"
18
+ _DEFAULT_MEM_REQUEST : str = "256Mi"
19
+ _DEFAULT_USER_ID : int = 1000
20
+ _DEFAULT_GROUP_ID : int = 100
21
+ _DEFAULT_INGRESS_PROXY_BODY_SIZE : str = "500m"
22
22
23
23
# The ingress class
24
- _INGRESS_CLASS = "nginx"
24
+ _INGRESS_CLASS : str = "nginx"
25
25
# The ingress domain must be provided.
26
- ingress_domain = os .environ ["INGRESS_DOMAIN" ]
26
+ ingress_domain : str = os .environ ["INGRESS_DOMAIN" ]
27
27
# The ingress TLS secret is optional.
28
28
# If provided it is used as the Ingress secret
29
29
# and cert-manager is avoided.
30
- ingress_tls_secret = os .environ .get ("INGRESS_TLS_SECRET" )
30
+ ingress_tls_secret : Optional [ str ] = os .environ .get ("INGRESS_TLS_SECRET" )
31
31
# The cert-manager issuer,
32
32
# expected if a TLS certificate is not defined.
33
- ingress_cert_issuer = os .environ .get ("INGRESS_CERT_ISSUER" )
33
+ ingress_cert_issuer : Optional [ str ] = os .environ .get ("INGRESS_CERT_ISSUER" )
34
34
35
35
# Application node selection
36
36
_POD_NODE_SELECTOR_KEY : str = os .environ .get (
51
51
# As part of the startup we erase the existing '~/.bashrc' and,
52
52
# as a minimum, set a more suitable PS1 (see ch2385).
53
53
# 'conda init' then puts its stuff into the same file.
54
- _NOTEBOOK_STARTUP = """#!/bin/bash
54
+ _NOTEBOOK_STARTUP : str = """#!/bin/bash
55
55
echo "PS1='\$(pwd) \$UID$ '" > ~/.bashrc
56
56
echo "umask 0002" >> ~/.bashrc
57
57
conda init
72
72
73
73
# The bash-profile
74
74
# which simply launches the .bashrc
75
- _BASH_PROFILE = """if [ -f ~/.bashrc ]; then
75
+ _BASH_PROFILE : str = """if [ -f ~/.bashrc ]; then
76
76
source ~/.bashrc
77
77
fi
78
78
"""
81
81
# A ConfigMap whose content is written into '/etc'
82
82
# and copied to the $HOME/.jupyter by the notebook_startup
83
83
# script (above).
84
- _NOTEBOOK_CONFIG = """{
84
+ _NOTEBOOK_CONFIG : str = """{
85
85
"NotebookApp": {
86
86
"token": "%(token)s",
87
87
"base_url": "%(base_url)s"
@@ -97,7 +97,7 @@ def configure(settings: kopf.OperatorSettings, **_: Any) -> None:
97
97
settings .posting .level = logging .INFO
98
98
99
99
100
- @kopf .on .create ("squonk.it" , "v1 " , "jupyternotebooks" , id = "jupyter" )
100
+ @kopf .on .create ("squonk.it" , "v2 " , "jupyternotebooks" , id = "jupyter" )
101
101
def create (spec : Dict [str , Any ], name : str , namespace : str , ** _ : Any ) -> Dict [str , Any ]:
102
102
"""Handler for CRD create events.
103
103
Here we construct the required Kubernetes objects,
0 commit comments