diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 000000000..8b436f283 Binary files /dev/null and b/.DS_Store differ diff --git a/.circleci/config.yml b/.circleci/config.yml index 6b17bc543..bd69512e8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -203,12 +203,6 @@ jobs: hubploy deploy --timeout 30m data8 hub ${CIRCLE_BRANCH} no_output_timeout: 30m -# - run: -# name: Deploy data8xv2 -# command: | -# hubploy deploy --timeout 30m data8xv2 hub ${CIRCLE_BRANCH} -# no_output_timeout: 30m - - run: name: Deploy data100 command: | @@ -245,6 +239,12 @@ jobs: hubploy deploy --timeout 30m dlab hub ${CIRCLE_BRANCH} no_output_timeout: 30m + - run: + name: Deploy edx + command: | + hubploy deploy --timeout 30m edx hub ${CIRCLE_BRANCH} + no_output_timeout: 30m + - run: name: Deploy eecs command: | @@ -481,15 +481,6 @@ workflows: ignore: - staging - prod -# - hubploy/build-image: -# deployment: data8xv2 -# name: data8xv2 image build -# # Filters can only be per-job? wtf -# filters: -# branches: -# ignore: -# - staging -# - prod - hubploy/build-image: deployment: data100 name: data100 image build @@ -537,6 +528,15 @@ workflows: ignore: - staging - prod + - hubploy/build-image: + deployment: edx + name: edx image build + # Filters can only be per-job? wtf + filters: + branches: + ignore: + - staging + - prod - hubploy/build-image: deployment: eecs name: eecs image build @@ -648,15 +648,6 @@ workflows: branches: only: - staging -# - hubploy/build-image: -# deployment: data8xv2 -# name: data8xv2 image build -# push: true -# # Filters can only be per-job? wtf -# filters: -# branches: -# only: -# - staging - hubploy/build-image: deployment: data100 name: data100 image build @@ -701,6 +692,15 @@ workflows: branches: only: - staging + - hubploy/build-image: + deployment: edx + name: edx image build + push: true + # Filters can only be per-job? wtf + filters: + branches: + only: + - staging - hubploy/build-image: deployment: eecs name: eecs image build @@ -784,12 +784,12 @@ workflows: - biology image build - cee image build - data8 image build -# - data8xv2 image build - data100 image build - data101 image build - data102 image build - datahub image build - dev-r image build + - edx image build - eecs image build - ischool image build - julia hub image build diff --git a/.github/labeler.yml b/.github/labeler.yml index 596d8d76e..0904b0fc2 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -93,10 +93,6 @@ node-placeholder-scaler: - 'deployments/data102/**' 'hub: data8': - 'deployments/data8/**' -#'hub: data8x': -# - 'deployments/data8x/**' -'hub: data8xv2': - - 'deployments/data8xv2/**' 'hub: datahub': - 'deployments/datahub/**' 'hub: dlab': diff --git a/.gitignore b/.gitignore index 98286768c..1bdc6b279 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ hub/charts # python **/__pycache__ **/*.pyc + +**/.DS_Store diff --git a/deployments/data8x/config/common.yaml b/deployments/data8x/config/common.yaml deleted file mode 100644 index b9b0eb0a7..000000000 --- a/deployments/data8x/config/common.yaml +++ /dev/null @@ -1,105 +0,0 @@ -nfsPVC: - enabled: true - nfs: - serverIP: 10.128.0.62 - shareName: export/data8xhomes-2020-08-31 - -jupyterhub: - scheduling: - userScheduler: - enabled: true - cull: - # For some reason, hub users don't cull properly - # Empty abandoned sessions stay on for days - # This stops users after they have been running for 12+ hours - # in one go. In several weeks of looking at user pods older - # than this, none have been active. - # See issue #2452 - maxAge: 43200 # 12h - proxy: - service: - type: LoadBalancer - hub: - services: - gofer_nb: - url: http://35.239.20.122:10101 - config: - JupyterHub: - authenticator_class: ltiauthenticator.LTIAuthenticator - Authenticator: - admin_users: - # unknown, not found in any issues - - 6f3e32e2b27f0fa7c7bfd6e6c5fc9073 - - 552c15a76d0bc7b546f5baef4310b7f4 - # 1945, sideye - - 800142d00c6dfd324853601777917b7a - - 7e42c2210de51307336bad6ecd3698fb - - 7af8a4b560d265c438354cb0b667e9fa - # 1945, kvah - - 57b8a1f4446a2474d577d50974e84300 - - 6404bc6a535a3d6de2d8823d83fd885f - - ebe13f9ff075abd51b82dba85c084d94 - # 1945, fqzbdkh - - 74b327432e5eb255cadf6d529101bf57 - - 87fba502e86ba163fe873ab00129e1ef - - edc57c2ad1449d9b188d9edea333285a - # 1000, ebaccay - - 25a7599135b2bc244ba0e511ec988371 - - 0b3a7d0def967c26e030cc3071d57cde - - 4a3686977e73987429ffed1239fff3c1 - # 1945, Andrei Caprau - - 945f24a55351f54e990f58b4aec45f23 - - 29d3b143997d6101d61be6debe9ce0a7 - - f6e1c4e320f7032bed5f79432893d562 - # 1945, kyle kishimoto - - ab46420586cb463f422b19ee8747668c - - 2742155a6983300ca2feccf471debd4d - - 31a437b2bcf068a60c89badfb1a2e563 - # 1795, varun mittal - - af5bd207bb7fd80a602d0cf488fda336 - - 6127a516b66666622476c80e7d835705 - - 4ec74d8be97f3c5ed9addc6a724effa1 - # 1795, ashley zhang - - b1b001615f9eb7254387f667569e39fb - - c741d11d7f0bed9930e04276115b1a37 - - fd5ad8c476846392d8dfb1765d1a6ac5 - # 2813 Eric Van Dusen - # sean morris - - bd1e7c64c6f5faddbf6b32af3010cf75 - - 261821b22ba97d73f571bf396c2ecb0a - singleuser: - networkPolicy: - # We only allow outbound HTTP, HTTPS and DNS access - enabled: true - egress: - - ports: - - port: 80 - protocol: TCP - - ports: - - port: 443 - protocol: TCP - - ports: - # statsd ports - - port: 9125 - protocol: TCP - - port: 9125 - protocol: UDP - initContainers: - - name: volume-mount-hack - image: busybox - command: ["sh", "-c", "id && chown 1000:1000 /home/jovyan && ls -lhd /home/jovyan"] - securityContext: - runAsUser: 0 - volumeMounts: - - name: home - mountPath: /home/jovyan - subPath: "home/{username}" - storage: - type: static - static: - pvcName: home-nfs - subPath: "home/{username}" - memory: - guarantee: 256M - limit: 1G - image: {} diff --git a/deployments/data8x/config/prod.yaml b/deployments/data8x/config/prod.yaml deleted file mode 100644 index 1728174c2..000000000 --- a/deployments/data8x/config/prod.yaml +++ /dev/null @@ -1,12 +0,0 @@ -jupyterhub: - proxy: - service: - loadBalancerIP: 35.188.43.80 - https: - hosts: - - hub.data8x.berkeley.edu - hub: - db: - pvc: - # This also holds logs - storage: 40Gi diff --git a/deployments/data8x/config/staging.yaml b/deployments/data8x/config/staging.yaml deleted file mode 100644 index 95a65fa14..000000000 --- a/deployments/data8x/config/staging.yaml +++ /dev/null @@ -1,14 +0,0 @@ -jupyterhub: - hub: - services: - gofer_nb: - url: http://34.70.18.176:10101 - prePuller: - continuous: - enabled: false - proxy: - service: - loadBalancerIP: 104.198.75.230 - https: - hosts: - - staging-hub.data8x.berkeley.edu diff --git a/deployments/data8x/hubploy.yaml b/deployments/data8x/hubploy.yaml deleted file mode 100644 index 6b8c2fc91..000000000 --- a/deployments/data8x/hubploy.yaml +++ /dev/null @@ -1,17 +0,0 @@ -images: - image_name: gcr.io/data8x-scratch/data8x-user-image - registry: - provider: gcloud - gcloud: - project: data8x-scratch - service_key: gcloud-service-key.json - -cluster: - provider: gcloud - gcloud: - project: data8x-scratch - service_key: gcloud-service-key.json - cluster: data8x-2019-02-20 - zone: us-central1 - - diff --git a/deployments/data8x/image/environment.yml b/deployments/data8x/image/environment.yml deleted file mode 100644 index 2dd5e5df1..000000000 --- a/deployments/data8x/image/environment.yml +++ /dev/null @@ -1,17 +0,0 @@ -channels: -- conda-forge - -dependencies: - - matplotlib==3.7.2 - - pandas==2.0.2 - - scipy==1.10.1 - - numpy==1.24.2 - - pip - - pip: - - nbforms==0.5.1 - - datascience==0.15.4 -# For grading - - git+https://github.com/ucbds-infra/Gofer-Grader.git@dbf3500 - - gofer-submit==0.4 - - -r infra-requirements.txt - - otter-grader==3.1.4 diff --git a/deployments/data8x/image/infra-requirements.txt b/deployments/data8x/image/infra-requirements.txt deleted file mode 100644 index afa026881..000000000 --- a/deployments/data8x/image/infra-requirements.txt +++ /dev/null @@ -1,31 +0,0 @@ -# WARNING: Original source at scripts/infra-packages/requirements.txt -# PLEASE DO NOT EDIT ELSEWHERE -# After editing scripts/infra-packages/requirements.txt, please run -# scripts/infra-packages/sync.bash. - -# This file pins versions of notebook related python packages we want -# across all hubs. This makes sure we don't need to upgrade them -# everwhere one by one. - -# FIXME: Freeze this to get exact versions of all dependencies -notebook==6.4.12 -jupyterlab==3.4.5 -retrolab==0.3.21 -nbgitpuller==1.1.0 -jupyter-resource-usage==0.6.1 -# Matches version in images/hub/Dockerfile -jupyterhub==4.0.2 -appmode==0.8.0 -ipywidgets==7.7.2 -jupyter-tree-download==1.0.1 -git-credential-helpers==0.2 -# Enough people like this, let's load it in. -jupyter-contrib-nbextensions==0.5.1 -jupyter_nbextensions_configurator==0.4.1 -# Measure popularity of different packages in our hubs -# https://discourse.jupyter.org/t/request-for-implementation-instrument-libraries-actively-used-by-users-on-a-jupyterhub/7994?u=yuvipanda -popularity-contest==0.4.1 -# RISE is useful for presentations - see https://github.com/berkeley-dsep-infra/datahub/issues/2527 -RISE==5.7.1 -# syncthing for dropbox-like functionality -jupyter-syncthing-proxy==1.0.3 diff --git a/deployments/data8x/image/runtime.txt b/deployments/data8x/image/runtime.txt deleted file mode 100644 index 58b4552ee..000000000 --- a/deployments/data8x/image/runtime.txt +++ /dev/null @@ -1 +0,0 @@ -python-3.7 diff --git a/deployments/data8x/secrets/prod.yaml b/deployments/data8x/secrets/prod.yaml deleted file mode 100644 index 57311c98e..000000000 --- a/deployments/data8x/secrets/prod.yaml +++ /dev/null @@ -1,26 +0,0 @@ -jupyterhub: - hub: - services: - gofer_nb: - environment: - LTI_CONSUMER_KEY: ENC[AES256_GCM,data:ohhqyZ7fBGdvgi8mUDMCnaID2alXnfzL8GQYMRRUDyHqh7qE+WQqgNapKBGvP4ZWL0tJMQqZbLku5oin3obCOQ==,iv:HdxlkVjTC4cbX0e+8L3fAHoy3lHFDmycOZlBOsYoYDM=,tag:btQ/GiMml354StZ1Q6oTKQ==,type:str] - LTI_CONSUMER_SECRET: ENC[AES256_GCM,data:/X9M63GWo0SZGw6DsBIHXnxq1+BXZ2r9anCk1KPEaDo8ChULksCuQZzI9q9S62pIbB35AGaBbezbnZk++ww9pA==,iv:tEwADN7Lfai6ws7i3khSunx/ItBaSQmWNUHMOaVBd8Q=,tag:OnB+SyoLJ7DEbETMtL5whA==,type:str] - apiToken: ENC[AES256_GCM,data:3kM8OxKN69ZJaU77BjMEVTbljlvUTAI5AK67HYpcesA6lbgYsXw41UR87hhUyWfaw5Rt2lo0ZjUgMQcZ4KX6SQ==,iv:nu//IMO6M0mbYUX43Z7zt9aY7C/Fhncjh/uO9lCfph0=,tag:+KN9ZV/Yr2I0TH4v7KhuuQ==,type:str] - config: - LTI11Authenticator: - consumers: - b34eeb75dca9b467b1e074fb3eaeed4717a6aefd28d5e7e2c8c633fb016b2f39: ENC[AES256_GCM,data:flaZMIq32pmzFjiFffChkt3w4X3eQ351By5N0FsYlplvFQ+zABRPpjHHIne4HP+qLno5dUtt45ADKbshfaJ3lg==,iv:S7m1CvVWP+ZcuRAysOl6yDZc5iwBtxMl7ar1rZnk3ME=,tag:bkEOgHSmcAfSJw9wOCu6Xg==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/ucb-datahub-2018/locations/global/keyRings/datahub/cryptoKeys/sops - created_at: "2021-05-05T10:58:00Z" - enc: CiQA67O9AKbjDg17FXlVs70AlTSxJlS7V5WHVGNZFP1+oxk+1BkSSQDmhpq8in3GxTmGnIYlWdH62HNhlVgnzfrPRgahWi2uzxxVWfkY0z+vgiEKX6ScHEOPkD7jMnvUZ2OMJl9Nzyeh0uMIQlpBpko= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-06-02T12:32:57Z" - mac: ENC[AES256_GCM,data:Qp0lSgf5nyD8JJUdreRnCaGytCqktsSpxH+sGM8K1FH4oUX3qsOdnVlMQGHihJxKTTDf9XXBN41FH4cXbaJe4UkyUjGNzHSk69MAb27Q4Eqr4Rk/JWF1AC4CI4ywuGXN9VSjtA2PaupBgufXUaOsXSvgxPQ2scQgCE7B0+AwLIg=,iv:cNtfrvzrpUVYMWiYDdgeOcInP+tCSkv0+or0UPHOTFM=,tag:JNNCZFkV7rzU/IXxJXQUOw==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.1 diff --git a/deployments/data8x/secrets/staging.yaml b/deployments/data8x/secrets/staging.yaml deleted file mode 100644 index 84569d197..000000000 --- a/deployments/data8x/secrets/staging.yaml +++ /dev/null @@ -1,26 +0,0 @@ -jupyterhub: - hub: - services: - gofer_nb: - environment: - LTI_CONSUMER_KEY: ENC[AES256_GCM,data:6wXOYey1qcNRq3IYtSt8J0rgIrpc6W8cMlwBDk/y5O0VJZPE4GP02M/06tPYiHPJjsY708Q9/ZZh7ZnaxEhPnQ==,iv:DjqadRigPpZbNfsMZ9VAzmcYRZfzccasTHot32Oo6No=,tag:6V87NCqE7NKInRslVZWNMA==,type:str] - LTI_CONSUMER_SECRET: ENC[AES256_GCM,data:S2iWkqutnUrzQCKf33KnvtsLXesQOmPqTBnKdLg5/wGrtX6tVk/HLk/bkFCvJRwVbzQLjh6DXn9aMpNkd3MEkQ==,iv:LBav7amMSRcrFSYzVCS1pRfJRjBOUGOV1Etwk1Jsa4w=,tag:EcOCUZZDu+1Zml++wG0GXw==,type:str] - apiToken: ENC[AES256_GCM,data:4WlN/BfI9h3Tjk0YNVBNI+rVsnHZrRjWBjYzw1G9f3jl+P89nYsgML2G2kqYOmLccxkKKN/MH/R+mVBqTBs/dQ==,iv:pDih9wuBbfKkzxmIQsRlPtJbfcfHNMD0BrD6x3Eo4ok=,tag:xt6orHM08pO9TtmDj2zFww==,type:str] - config: - LTI11Authenticator: - consumers: - b34eeb75dca9b467b1e074fb3eaeed4717a6aefd28d5e7e2c8c633fb016b2f39: ENC[AES256_GCM,data:0Rbrbi+zvxJZjlnecGWEqNCuhx2PWFfXd0Q5lzhfUWv6GvtylhmEK9H+0GLrSHUtPco49LqSwudD0+C16N0vPA==,iv:eioxpSa3OVXZy4gVd8zx9buJOIgNHZboXFhO9HARO/s=,tag:Hnctps2bEAJQpuqXw7NLVw==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/ucb-datahub-2018/locations/global/keyRings/datahub/cryptoKeys/sops - created_at: "2021-05-05T10:58:00Z" - enc: CiQA67O9AK7FKPbzwZHhJhZ6uy28ZG6Bo3qUi0FWf3xILqEWfH0SSQDmhpq8xydBxxTSY+PkfyrKHjgSUSl81BHgHPT0vs0+o2KhLv8WJ62inT8/yFDJn7Bx4kViWaDX15vNN1RkgaOI9ggDOi6HeYo= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-06-02T12:35:53Z" - mac: ENC[AES256_GCM,data:+H04aAlEZzlKDG5lMQUZ3bfrVGetxYBKD/I47Io5yzrkNQYaI1lAzHhgltBlYNnqbzZt7ppY5Zv9zWhI6tATOOHlQg9dqpGYBIL58Glco3f5WuWmg++6XC90yd0OFN4Pb0uorvwm8HnWZtaQTrhk8I1vIm8kv2VjNswrNUVwStw=,iv:bzne8gyDOo6sJk+IprVoovTXeJ274PfFfGcB9LNcf9A=,tag:IB/9XGhLPv9fzG6QXYAvSw==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.1 diff --git a/deployments/data8xv2/config/staging.yaml b/deployments/data8xv2/config/staging.yaml deleted file mode 100644 index 27a0f442c..000000000 --- a/deployments/data8xv2/config/staging.yaml +++ /dev/null @@ -1,14 +0,0 @@ -jupyterhub: - prePuller: - continuous: - enabled: false - proxy: - service: - loadBalancerIP: 34.135.56.190 - https: - hosts: - - hubv2-staging.data8x.berkeley.edu - hub: - services: - otter_grade: - url: http://grader-staging.data8x.berkeley.edu:10101 diff --git a/deployments/data8xv2/image/environment.yml b/deployments/data8xv2/image/environment.yml deleted file mode 100644 index ba40edd27..000000000 --- a/deployments/data8xv2/image/environment.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: data8xv2 - -channels: -- conda-forge - -dependencies: -- python==3.11.0 -- syncthing==1.20.4 -- git==2.39.1 -- altair==5.0.1 -- beautifulsoup4==4.11.1 -- black==22.6.0 -- bokeh==2.4.3 -- bqplot==0.12.34 -- cartopy==0.21.0 -- coverage==7.2.2 -- cython==0.29.32 -- distributed==2023.6.0 -- fortran-magic==0.7 -- h5netcdf==1.0.2 -- h5py==3.7.0 -- hdf4==4.2.15 -- hdf5==1.12.2 -- intake==0.6.5 -- intake-esm==2021.8.17 -- intake-xarray==0.6.0 -- ipycanvas==0.12.1 -- ipydatagrid==1.1.12 -- ipympl==0.9.2 -- ipyparallel==8.4.1 -- jsonschema==4.17.3 -- jupyter-book==0.15.1 -- jupyter_bokeh -- jupyterlab==4.0.2 -- jupyterlab-favorites==3.0.0 -- jupyterlab-geojson==3.2.0 -- jupyterlab-variableinspector==3.0.9 -- jupyterlab_pygments==0.2.2 -- jupyterlab_server==2.23.0 -- jupyterlab_widgets==3.0.8 -- jupyter_server==2.7.0 -- matplotlib==3.7.1 -- matplotlib-inline==0.1.6 -- mock==4.0.3 -- nbclassic==1.0.0 -- nbdime==3.1.1 -- nbgitpuller==1.1.1 -- networkx==2.8.6 -- numba==0.57.0 -- numpy==1.24.2 -- pandas==2.0.2 -- pandoc==2.12 -- pandocfilters==1.5.0 -- pep8==1.7.1 -- pillow==9.2.0 -- plotly==5.13.1 -- pooch==1.6.0 -- prettytable==3.4.1 -- pyarrow==9.0.0 -- pypdf2==2.10.4 -- pytables==3.7.0 -- pytest==7.1.2 -- pytest-cov==3.0.0 -- python-pdfkit==1.0.0 -- requests==2.28.2 -- r-base==4.0.5 -- r-tidyverse==1.3.2 -- scikit-image==0.19.3 -- scikit-learn==1.2.2 -- scipy==1.10.1 -- seaborn==0.12.2 -- sphinx-jupyterbook-latex==0.5.2 -- sqlparse==0.4.3 -- statsmodels==0.14.0 -- sympy==1.10.1 -- tornado==6.2.0 -- tqdm==4.64.0 -- xarray==2023.5.0 -- xlrd==2.0.1 -- micro==2.0.8 -- websockify==0.11.0 -- folium==0.14.0 -- sqlalchemy==2.0.16 -- pip -- pip: - # - -r infra-requirements.txt - - jupyter-desktop-server - - gh-scoped-creds==4.1 - - otter-grader==4.4.1 - - otter-submit==0.1.1 - - ipython-sql==0.4.1 - - geopandas==0.12.1 - - iwut==0.0.4 - - tensorflow-cpu==2.12.0 - - ipywidgets==8.0.7 - - jupyter_collaboration==1.0.1 - - jupyterhub==4.0.2 - - nbconvert==7.6.0 - - notebook==7.0.0rc2 - - pytest-notebook==0.8.1 - - datascience==0.17.5 - diff --git a/deployments/data8xv2/image/infra-requirements.txt b/deployments/data8xv2/image/infra-requirements.txt deleted file mode 100644 index afa026881..000000000 --- a/deployments/data8xv2/image/infra-requirements.txt +++ /dev/null @@ -1,31 +0,0 @@ -# WARNING: Original source at scripts/infra-packages/requirements.txt -# PLEASE DO NOT EDIT ELSEWHERE -# After editing scripts/infra-packages/requirements.txt, please run -# scripts/infra-packages/sync.bash. - -# This file pins versions of notebook related python packages we want -# across all hubs. This makes sure we don't need to upgrade them -# everwhere one by one. - -# FIXME: Freeze this to get exact versions of all dependencies -notebook==6.4.12 -jupyterlab==3.4.5 -retrolab==0.3.21 -nbgitpuller==1.1.0 -jupyter-resource-usage==0.6.1 -# Matches version in images/hub/Dockerfile -jupyterhub==4.0.2 -appmode==0.8.0 -ipywidgets==7.7.2 -jupyter-tree-download==1.0.1 -git-credential-helpers==0.2 -# Enough people like this, let's load it in. -jupyter-contrib-nbextensions==0.5.1 -jupyter_nbextensions_configurator==0.4.1 -# Measure popularity of different packages in our hubs -# https://discourse.jupyter.org/t/request-for-implementation-instrument-libraries-actively-used-by-users-on-a-jupyterhub/7994?u=yuvipanda -popularity-contest==0.4.1 -# RISE is useful for presentations - see https://github.com/berkeley-dsep-infra/datahub/issues/2527 -RISE==5.7.1 -# syncthing for dropbox-like functionality -jupyter-syncthing-proxy==1.0.3 diff --git a/deployments/data8xv2/secrets/gcloud-service-key.json b/deployments/data8xv2/secrets/gcloud-service-key.json deleted file mode 100644 index 3b1f43fe6..000000000 --- a/deployments/data8xv2/secrets/gcloud-service-key.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "ENC[AES256_GCM,data:+NsYEYc9UrEb43sv8TLQ,iv:eVQVkGML4W072fMyGvLEcfmJmnxreR1LDiT+DqBFqUw=,tag:A26noFi7vqjQBo8i3ITe+w==,type:str]", - "project_id": "ENC[AES256_GCM,data:hthaRQyAY/NnbM3hn2g=,iv:DOi7/Z6FyhBxOUUWbGd7AkuCm/HjNJXjxvzKnSLfJGw=,tag:F5J92FJYwFiVrgy8Su4Z7Q==,type:str]", - "private_key_id": "ENC[AES256_GCM,data:EaRttUn55X493ipExvA3Z8F9aI7V0W+gIfuMfI1vqY49qiO/Firong==,iv:Eog3muUYhT71p79LdK9Q+zK0NDedaYRuBvex6ks7VRs=,tag:p8MHxTB4aBqwjigm1balmQ==,type:str]", - "private_key": "ENC[AES256_GCM,data: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,iv:JxVHbFTfPH5/9qFlmqSITfXYP+SM5tPgIrxCJPBOZIA=,tag:oNFu2ORtIhUs+Zy+GctUeg==,type:str]", - "client_email": "ENC[AES256_GCM,data:BZRpxwtQdC6lToFYeJC5/ZHyQWe5/Fk+26xqsmLjcQNoSp640KLYT7xgjAjHYRAWFeFnKMjnfg==,iv:axKxX/MAsHHl+5bFBGHJuvAqcQwIiOvbb+oJmYPEC8c=,tag:NbLVm2r3UkLKCJvSp6umaQ==,type:str]", - "client_id": "ENC[AES256_GCM,data:PLMmSyWmm53RiHnMkfpz0bP5Mw7q,iv:PztO+Lr8noXeEmq0e/UWViMunVpTMLbw55UMYAZT5Gg=,tag:5qEtlsxEspAoMDYzl6+ang==,type:str]", - "auth_uri": "ENC[AES256_GCM,data:WUAGts5o7c/oEUCWDeg1WH1Lapw/w0r9mGCr5zljIkQ+wlvqGgWuq/U=,iv:2C6fFrZV85TxtsVTSpIVFD6XguS1TkIJiGUPawTUDq0=,tag:1iN7Fb64eIgsEkHcxrxlFA==,type:str]", - "token_uri": "ENC[AES256_GCM,data:HGL53CHQnEjZKaXhVcJNBuJvlwl20FPu4+pSsIL/9Ejf6+Q=,iv:vFCsbeEDbA6CfC/yYGD9Ym7z65J2jph0t/pRP9W1n0Y=,tag:TABXp9YDR0ThHnxDCX7/ZA==,type:str]", - "auth_provider_x509_cert_url": "ENC[AES256_GCM,data:mNotICv4wjh8MjGfTDaqztVhRD+1f9posJyzOxq6JXmomdEyPcFTRAPb,iv:Ez6w5tlwT/1Ovx/goK0aDxLD+Mij5SAVQxv5TtUbfWk=,tag:b+sm87U588G894ZjcQ+rqw==,type:str]", - "client_x509_cert_url": "ENC[AES256_GCM,data:GZ49nmSbiNbyf2tosKJNIQXLay5GeqDHdAblk2kmYlK+jYF935XsuP2HBjkiGZl1fIEwu+406tJxOTyQ2fy0FoUfP4rNZYOD2OrXKSQdcnNUw2guYn9ru6B7kP++Z33g6m93qoTVPlS9GnA=,iv:froqQdSLEDaqlmiQ3/QM6q3H2H2D5Y7zcz8Zcx4hXDk=,tag:Uuk3eZxW/2vqEqgfpYh8aQ==,type:str]", - "sops": { - "kms": null, - "gcp_kms": [ - { - "resource_id": "projects/ucb-datahub-2018/locations/global/keyRings/datahub/cryptoKeys/sops", - "created_at": "2021-04-09T22:02:14Z", - "enc": "CiQA67O9AIkMQlX6RNNL7vjtmXHGwJ1umHOXMBhe7M/D+qziEIcSSADmhpq8o7nZ2bstEi2h5H/0NTGkl+Fr5b5nm75hhrAH8P3FOVkB82oN8nsLv9WZ2HHg5hYyijKmFJ/c4MqMqeHSZxNhTsBKnQ==" - } - ], - "azure_kv": null, - "hc_vault": null, - "age": null, - "lastmodified": "2021-04-09T22:02:14Z", - "mac": "ENC[AES256_GCM,data:sSOsNG/IBMryrXysypaKMeA8v6uVQtAUBknnoPsNJjHWSGudz2HDUr70Fs7948vs37ulxUhnq/3avWQAFB88GmUyczLctvW5FdUOLbGsOyLA065webcf/+2FSm9m1Pa+9eToMWKrSdJ+NtmG5UGFJulscLMQzPokTo3o/3euytQ=,iv:qCRXm67i6okgMKIIqOy7f+G9HbMsOhI6ca4tXdOSPfQ=,tag:ASwiTK5KRo+Gee0oK4rFlA==,type:str]", - "pgp": null, - "unencrypted_suffix": "_unencrypted", - "version": "3.7.0" - } -} \ No newline at end of file diff --git a/deployments/data8xv2/config/common.yaml b/deployments/edx/config/common.yaml similarity index 58% rename from deployments/data8xv2/config/common.yaml rename to deployments/edx/config/common.yaml index 986af380a..15d59f6a9 100644 --- a/deployments/data8xv2/config/common.yaml +++ b/deployments/edx/config/common.yaml @@ -2,8 +2,6 @@ nfsPVC: enabled: true nfs: serverIP: 10.128.0.62 - shareName: export/data8xv2homes-2022-02-16 - jupyterhub: scheduling: userScheduler: @@ -34,46 +32,12 @@ jupyterhub: authenticator_class: ltiauthenticator.lti11.auth.LTI11Authenticator Authenticator: admin_users: - # unknown, not found in any issues - - 6f3e32e2b27f0fa7c7bfd6e6c5fc9073 - - 552c15a76d0bc7b546f5baef4310b7f4 - # 1945, sideye - - 800142d00c6dfd324853601777917b7a - - 7e42c2210de51307336bad6ecd3698fb - - 7af8a4b560d265c438354cb0b667e9fa - # 1945, kvah - - 57b8a1f4446a2474d577d50974e84300 - - 6404bc6a535a3d6de2d8823d83fd885f - - ebe13f9ff075abd51b82dba85c084d94 - # 1945, fqzbdkh - - 74b327432e5eb255cadf6d529101bf57 - - 87fba502e86ba163fe873ab00129e1ef - - edc57c2ad1449d9b188d9edea333285a - # 1000, ebaccay - - 25a7599135b2bc244ba0e511ec988371 - - 0b3a7d0def967c26e030cc3071d57cde - - 4a3686977e73987429ffed1239fff3c1 - # 1945, Andrei Caprau - - 945f24a55351f54e990f58b4aec45f23 - - 29d3b143997d6101d61be6debe9ce0a7 - - f6e1c4e320f7032bed5f79432893d562 - # 1945, kyle kishimoto - - ab46420586cb463f422b19ee8747668c - - 2742155a6983300ca2feccf471debd4d - - 31a437b2bcf068a60c89badfb1a2e563 - # 1795, varun mittal - - af5bd207bb7fd80a602d0cf488fda336 - - 6127a516b66666622476c80e7d835705 - - 4ec74d8be97f3c5ed9addc6a724effa1 - # 1795, ashley zhang - - b1b001615f9eb7254387f667569e39fb - - c741d11d7f0bed9930e04276115b1a37 - - fd5ad8c476846392d8dfb1765d1a6ac5 # 2813 Eric Van Dusen # sean morris - bd1e7c64c6f5faddbf6b32af3010cf75 - 261821b22ba97d73f571bf396c2ecb0a - 594aed203b01b16a7a025c2f3e037933 + - ded2ce24b58e67d269563072d3481d14 singleuser: networkPolicy: # We only allow outbound HTTP, HTTPS and DNS access diff --git a/deployments/data8xv2/config/prod.yaml b/deployments/edx/config/prod.yaml similarity index 57% rename from deployments/data8xv2/config/prod.yaml rename to deployments/edx/config/prod.yaml index 53210b430..315859251 100644 --- a/deployments/data8xv2/config/prod.yaml +++ b/deployments/edx/config/prod.yaml @@ -1,10 +1,13 @@ +nfsPVC: + nfs: + shareName: export/edxhomes-2023-08-28/prod jupyterhub: proxy: service: loadBalancerIP: 35.224.143.90 https: hosts: - - hubv2.data8x.berkeley.edu + - edx.datahub.berkeley.edu hub: db: pvc: @@ -12,4 +15,4 @@ jupyterhub: storage: 40Gi services: otter_grade: - url: http://grader-prod.data8x.berkeley.edu:10101 + url: http://grader-srv.datahub.berkeley.edu:10101 diff --git a/deployments/edx/config/staging.yaml b/deployments/edx/config/staging.yaml new file mode 100644 index 000000000..68d9b8a99 --- /dev/null +++ b/deployments/edx/config/staging.yaml @@ -0,0 +1,17 @@ +nfsPVC: + nfs: + shareName: export/edxhomes-2023-08-28/staging +jupyterhub: + prePuller: + continuous: + enabled: false + proxy: + service: + loadBalancerIP: 34.72.254.237 + https: + hosts: + - edx-staging.datahub.berkeley.edu + hub: + services: + otter_grade: + url: http://grader-srv-staging.datahub.berkeley.edu:10101 diff --git a/deployments/data8xv2/hubploy.yaml b/deployments/edx/hubploy.yaml similarity index 77% rename from deployments/data8xv2/hubploy.yaml rename to deployments/edx/hubploy.yaml index e97c6260e..3692cd14e 100644 --- a/deployments/data8xv2/hubploy.yaml +++ b/deployments/edx/hubploy.yaml @@ -1,6 +1,6 @@ images: images: - - name: gcr.io/data8x-scratch/data8xv2-user-image + - name: gcr.io/data8x-scratch/edx-user-image path: image/ registry: provider: gcloud @@ -13,7 +13,7 @@ cluster: gcloud: project: data8x-scratch service_key: gcloud-service-key.json - cluster: data8x-2019-02-20 + cluster: edx zone: us-central1 diff --git a/deployments/data8xv2/image/apt.txt b/deployments/edx/image/apt.txt similarity index 99% rename from deployments/data8xv2/image/apt.txt rename to deployments/edx/image/apt.txt index 5bae19435..bfc2a1031 100644 --- a/deployments/data8xv2/image/apt.txt +++ b/deployments/edx/image/apt.txt @@ -80,7 +80,6 @@ chromium-browser vim-gtk3 gedit - # Git clients and tools git-gui gitg diff --git a/deployments/edx/image/environment.yml b/deployments/edx/image/environment.yml new file mode 100644 index 000000000..2b573aba7 --- /dev/null +++ b/deployments/edx/image/environment.yml @@ -0,0 +1,48 @@ +name: edx + +channels: +- conda-forge + +dependencies: +- python==3.11.0 +- git==2.39.1 +- jupyter-resource-usage==1.0.0 +- jupyterlab==4.0.9 +- jupyterlab-favorites==3.0.0 +- jupyterlab_server==2.23.0 +- jupyterlab_widgets==3.0.8 +- jupyter_server==2.7.0 +- nbgitpuller==1.1.1 +- notebook==7.0.6 +- folium==0.14.0 +- h5netcdf==1.0.2 +- ipywidgets==8.0.7 +- jupysql==0.8.0 +- matplotlib==3.7.1 +- mdit-py-plugins==0.4.0 +- numpy==1.24.2 +- pandas==2.0.2 +- plotly==5.13.1 +- requests==2.28.2 +- scikit-image==0.19.3 +- scikit-learn==1.2.2 +- scipy==1.10.1 +- seaborn==0.12.2 +- statsmodels==0.14.0 +- tensorflow-cpu==2.12.1 +- sqlalchemy==2.0.16 +- pip +- pip: + # - -r infra-requirements.txt + - ipywidgets==8.0.7 + # disable until fixed (probably this: https://github.com/jupyterlab/jupyter-collaboration/issues/162) + # - jupyter_collaboration==1.0.1 + - jupyterhub==4.0.2 + - jupyterlab-accessible-themes==0.2.0 + - jupyter-archive==3.4.0 + - nbconvert==7.6.0 + - pytest-notebook==0.8.1 + - gh-scoped-creds==4.1 + - git+https://github.com/shaneknapp/python-popularity-contest.git@add-error-handling + - otter-grader==4.4.1 + - otter-submit==0.1.1 diff --git a/deployments/data8xv2/image/ipython_config.py b/deployments/edx/image/ipython_config.py similarity index 100% rename from deployments/data8xv2/image/ipython_config.py rename to deployments/edx/image/ipython_config.py diff --git a/deployments/edx/image/overrides.json b/deployments/edx/image/overrides.json new file mode 100644 index 000000000..52ea5d9ab --- /dev/null +++ b/deployments/edx/image/overrides.json @@ -0,0 +1,5 @@ +{ + "@jupyterlab/apputils-extension:themes": { + "theme": "GitHub Light" + } +} diff --git a/deployments/data8xv2/image/postBuild b/deployments/edx/image/postBuild similarity index 56% rename from deployments/data8xv2/image/postBuild rename to deployments/edx/image/postBuild index 1e16c858d..803dbb6a2 100644 --- a/deployments/data8xv2/image/postBuild +++ b/deployments/edx/image/postBuild @@ -4,3 +4,7 @@ set -euo pipefail # Create ipython config directory if it doesn't exist mkdir -p ${CONDA_DIR}/etc/ipython cp ipython_config.py ${CONDA_DIR}/etc/ipython/ipython_config.py + +# set default theme +mkdir -p ${NB_PYTHON_PREFIX}/share/jupyter/lab/settings +cp -p overrides.json ${NB_PYTHON_PREFIX}/share/jupyter/lab/settings diff --git a/deployments/data8x/secrets/gcloud-service-key.json b/deployments/edx/secrets/gcloud-service-key.json similarity index 100% rename from deployments/data8x/secrets/gcloud-service-key.json rename to deployments/edx/secrets/gcloud-service-key.json diff --git a/deployments/data8xv2/secrets/prod.yaml b/deployments/edx/secrets/prod.yaml similarity index 100% rename from deployments/data8xv2/secrets/prod.yaml rename to deployments/edx/secrets/prod.yaml diff --git a/deployments/data8xv2/secrets/staging.yaml b/deployments/edx/secrets/staging.yaml similarity index 100% rename from deployments/data8xv2/secrets/staging.yaml rename to deployments/edx/secrets/staging.yaml diff --git a/deployments/ischool/config/common.yaml b/deployments/ischool/config/common.yaml index 4f7866a99..8f1646dfd 100644 --- a/deployments/ischool/config/common.yaml +++ b/deployments/ischool/config/common.yaml @@ -43,7 +43,7 @@ jupyterhub: - dhughes singleuser: - defaultUrl: /rstudio + defaultUrl: /lab nodeSelector: hub.jupyter.org/pool-name: ischool-pool storage: diff --git a/deployments/ischool/image/environment.yml b/deployments/ischool/image/environment.yml index 3dadba08c..3735d9a1a 100644 --- a/deployments/ischool/image/environment.yml +++ b/deployments/ischool/image/environment.yml @@ -6,6 +6,10 @@ channels: dependencies: - syncthing==1.25.0 - jupyter-rsession-proxy==2.2.0 +# https://github.com/berkeley-dsep-infra/datahub/issues/5251 +- nodejs=16 # code-server requires node < 17 +- jupyter-vscode-proxy==0.5 +- code-server==4.10.1 # bug w/notebook and traitlets: https://github.com/jupyter/notebook/issues/7048 - traitlets=5.9.* - pip: diff --git a/hub/Chart.yaml b/hub/Chart.yaml index 51399e81a..798f6ed83 100644 --- a/hub/Chart.yaml +++ b/hub/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: '1.0' description: Deployment Chart for JupyterHub name: hub -version: 0.0.1-0.dev.git.6956.h5e23ef5e +version: 0.0.1-0.dev.git.7076.heb3ce9bd diff --git a/hub/values.yaml b/hub/values.yaml index 8bd546f47..be76b0bf5 100644 --- a/hub/values.yaml +++ b/hub/values.yaml @@ -219,7 +219,7 @@ jupyterhub: # Generated by chartpress image: name: gcr.io/ucb-datahub-2018/jupyterhub-hub - tag: '0.0.1-0.dev.git.6847.h37aa9975' + tag: '0.0.1-0.dev.git.7076.heb3ce9bd' networkPolicy: enabled: true ingress: diff --git a/images/hub/Dockerfile b/images/hub/Dockerfile index 9de583f6f..a45f330e4 100644 --- a/images/hub/Dockerfile +++ b/images/hub/Dockerfile @@ -7,7 +7,7 @@ USER root RUN python3 -m pip install --no-cache git+https://github.com/berkeley-dsep-infra/canvasoauthenticator@09e7ed8 RUN python3 -m pip install --no-cache jupyterhub-ltiauthenticator==1.5.1 RUN python3 -m pip install --no-cache git+https://github.com/jupyterhub/kubespawner@6.1.0 - +RUN python3 -m pip install --no-cache jupyterhub-announcement COPY logos /srv/logos USER ${NB_USER} diff --git a/node-placeholder/Chart.yaml b/node-placeholder/Chart.yaml index 5c05c5f8c..c88aa2a2f 100644 --- a/node-placeholder/Chart.yaml +++ b/node-placeholder/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.0.1-0.dev.git.6946.hdccbf2f4 +version: 0.0.1-0.dev.git.6958.h1afe4805 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/support/requirements.yaml b/support/requirements.yaml index 2e3f779fc..429126816 100644 --- a/support/requirements.yaml +++ b/support/requirements.yaml @@ -12,5 +12,5 @@ dependencies: version: v1.9.1 repository: https://charts.jetstack.io - name: ingress-nginx - version: 4.2.1 + version: 4.8.3 repository: https://kubernetes.github.io/ingress-nginx