Skip to content

Commit 41279c8

Browse files
committed
Prepopulating attempy
1 parent ee6ec00 commit 41279c8

3 files changed

Lines changed: 188 additions & 1 deletion

File tree

jupyterhub/Clowder_APIs.ipynb

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"id": "6dfcb963-cf69-4505-9871-5cc13471f5dd",
6+
"metadata": {},
7+
"source": [
8+
"## Clowder APIs"
9+
]
10+
},
11+
{
12+
"cell_type": "markdown",
13+
"id": "310051ad-4262-42fc-ac28-911f92842a7e",
14+
"metadata": {},
15+
"source": [
16+
"## Import libraries and setup utility function\n",
17+
"\n",
18+
"We start by importing the rquired libraries, data and setting up some utility functions and variables that we will use below."
19+
]
20+
},
21+
{
22+
"cell_type": "code",
23+
"execution_count": 29,
24+
"id": "ffec7cb7-1a82-4148-aad1-bb3b1b19915b",
25+
"metadata": {},
26+
"outputs": [],
27+
"source": [
28+
"import pyclowder\n",
29+
"import json\n",
30+
"import os\n",
31+
"import pandas as pd\n",
32+
"\n",
33+
"import requests\n",
34+
"\n",
35+
"# Function to download the IRIS dataset\n",
36+
"def download_iris_dataset():\n",
37+
" # URL for the Iris dataset hosted by UCI Machine Learning Repository\n",
38+
" url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data\"\n",
39+
" \n",
40+
" response = requests.get(url)\n",
41+
" \n",
42+
" if response.status_code == 200:\n",
43+
" with open(\"iris.csv\", \"wb\") as f:\n",
44+
" f.write(response.content)\n",
45+
" print(\"The Iris dataset has been downloaded and saved as iris.csv.\")\n",
46+
" else:\n",
47+
" print(\"Failed to download the dataset. Status code:\", response.status_code)\n",
48+
"\n",
49+
"\n",
50+
"CLOWDER_URL = \"http://localhost:8000\""
51+
]
52+
},
53+
{
54+
"cell_type": "markdown",
55+
"id": "f8d5c0ae-659b-4a52-a30a-0fa8b7051694",
56+
"metadata": {},
57+
"source": [
58+
"## Token Generation"
59+
]
60+
},
61+
{
62+
"cell_type": "code",
63+
"execution_count": 30,
64+
"id": "59fca5f8-a5d6-419d-835a-023a73c5a1d7",
65+
"metadata": {},
66+
"outputs": [
67+
{
68+
"name": "stdout",
69+
"output_type": "stream",
70+
"text": [
71+
"{'token': 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2dUVlQ0xOc1hTQXZUN1VDek1FRVk2VmI4ajJnY1RhWlFESUpnbnFGSHVJIn0.eyJleHAiOjE3MTY1NzcwNTgsImlhdCI6MTcxNjU3Njc1OCwianRpIjoiZjBjYmZlYzYtZjJlMS00NDg0LTg0YWMtNzFjMGMwZWNmNTNlIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2tleWNsb2FrL3JlYWxtcy9jbG93ZGVyIiwic3ViIjoiZjg0Y2JjNmQtYzEzZC00MmVmLWFhN2MtMWQ4MmFjYzVhZWViIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiY2xvd2RlcjItYmFja2VuZCIsInNlc3Npb25fc3RhdGUiOiIzOTgyN2EyNy1kMDA5LTRiY2YtOGIzYS1jZTk1MGM3YTI4OWQiLCJhbGxvd2VkLW9yaWdpbnMiOlsiaHR0cDovL2xvY2FsaG9zdDo4MDAwIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJkZWZhdWx0LXJvbGVzLWNsb3dkZXIiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJzY29wZSI6Im9wZW5pZCBwcm9maWxlIGVtYWlsIiwic2lkIjoiMzk4MjdhMjctZDAwOS00YmNmLThiM2EtY2U5NTBjN2EyODlkIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJWaXNtYXlhayBNb2hhbmFyYWphbiIsInByZWZlcnJlZF91c2VybmFtZSI6Im1vaGFuYXIyQGlsbGlub2lzLmVkdSIsImdpdmVuX25hbWUiOiJWaXNtYXlhayIsImZhbWlseV9uYW1lIjoiTW9oYW5hcmFqYW4iLCJlbWFpbCI6Im1vaGFuYXIyQGlsbGlub2lzLmVkdSJ9.Z3upy5xkoXfTwILujF7C8vpE_XaL8F32vuRd67V2TVqUK4qEVuN_5yTsyCcXyte9osG2jeZTHlJXreekOrpTvOW4Qbel1JAHnCQfGmlri_io-XFE57aT379HZrLGVlrpiHOGTqKG5mDVxIbaHEqdWhJkAEWY55rDqpkCScHUP7_SoJgAUj9Xx_LSS1hDHLwBCYRvGPFEoMADM40F-P3qxkW5Qsv9gPqP5ChpfG_7KZeBMRhtFXH_xk3M18qjNsSiQ9QKBFC2IrLFnT89bCK_slaUfUWLyiONt6ASPkAw85aajD3jc8RKq_AM42a2-wFVF7vERGPnoMscOpvjp9lBiQ'}\n"
72+
]
73+
}
74+
],
75+
"source": [
76+
"user_login_json = {\n",
77+
" \"email\": \"mohanar2@illinois.edu\",\n",
78+
" \"password\": \"password\"\n",
79+
"}\n",
80+
"login_url = CLOWDER_URL + \"/api/v2/login\"\n",
81+
"response = requests.post(login_url, json = user_login_json)\n",
82+
"token = response.json()[\"token\"]\n",
83+
"print(response.json())"
84+
]
85+
},
86+
{
87+
"cell_type": "markdown",
88+
"id": "2b273e10-8efc-46a8-b220-b63354735c49",
89+
"metadata": {},
90+
"source": [
91+
"## Creating Dataset"
92+
]
93+
},
94+
{
95+
"cell_type": "code",
96+
"execution_count": 31,
97+
"id": "91639e11-b553-4b57-a0df-6e91c661662f",
98+
"metadata": {},
99+
"outputs": [
100+
{
101+
"name": "stdout",
102+
"output_type": "stream",
103+
"text": [
104+
"{'name': 'Flower Dataset', 'description': 'Dataset for Flower Data', 'status': 'PRIVATE', 'id': '6650e202fcd9057e97ae2d8a', 'creator': {'email': 'mohanar2@illinois.edu', 'first_name': 'Vismayak', 'last_name': 'Mohanarajan', 'id': '663a45d5b75ca83d17ac6564', 'admin': True, 'admin_mode': True}, 'created': '2024-05-24T18:52:50.457552', 'modified': '2024-05-24T18:52:50.457556', 'user_views': 0, 'downloads': 0, 'thumbnail_id': None, 'standard_license': True, 'license_id': 'CC BY'}\n"
105+
]
106+
}
107+
],
108+
"source": [
109+
"dataset_json = {\n",
110+
" \"name\": \"Flower Dataset\",\n",
111+
" \"description\": \"Dataset for Flower Data\",\n",
112+
" \"status\": \"PRIVATE\",\n",
113+
"}\n",
114+
"dataset_params = {\n",
115+
" \"license_id\": \"CC BY\"\n",
116+
"}\n",
117+
"\n",
118+
"token = \"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2dUVlQ0xOc1hTQXZUN1VDek1FRVk2VmI4ajJnY1RhWlFESUpnbnFGSHVJIn0.eyJleHAiOjE3MTY1NzY5NjcsImlhdCI6MTcxNjU3NjY2NywiYXV0aF90aW1lIjoxNzE2NTc2Mzc1LCJqdGkiOiI5NzU3NTM1Mi04Y2FhLTRhMmUtODZhZC0wM2JkNDcwODhhZjkiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAva2V5Y2xvYWsvcmVhbG1zL2Nsb3dkZXIiLCJzdWIiOiJmODRjYmM2ZC1jMTNkLTQyZWYtYWE3Yy0xZDgyYWNjNWFlZWIiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJjbG93ZGVyMi1iYWNrZW5kIiwic2Vzc2lvbl9zdGF0ZSI6IjdhMjJjZDFkLTQ3NDctNDAyNS1iNDk2LTUyYzNhOWUwZDhiYyIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwOi8vbG9jYWxob3N0OjgwMDAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtY2xvd2RlciIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzaWQiOiI3YTIyY2QxZC00NzQ3LTQwMjUtYjQ5Ni01MmMzYTllMGQ4YmMiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IlZpc21heWFrIE1vaGFuYXJhamFuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoibW9oYW5hcjJAaWxsaW5vaXMuZWR1IiwiZ2l2ZW5fbmFtZSI6IlZpc21heWFrIiwiZmFtaWx5X25hbWUiOiJNb2hhbmFyYWphbiIsImVtYWlsIjoibW9oYW5hcjJAaWxsaW5vaXMuZWR1In0.AHqeZ79L8OUW2zTYEaDeUmuhHAeDMcqlgR8CE7ScGBRt-4gj8QFipbkiiMt0LYbMNi97dv0O_-iojrMtnlaX1OubnEwI_mMcoGckpXc5CzCoAQ_Qri2ZnpfnClDa9wPu-G_aGL-Sv4UpAglSTCbpBxsE99EiBubMb0T3NpP8p0k_lJTSvAZPJdMJ2sPpBo4BPUUIZq9JBXAZF7YPL9ZzUOoQKJvpNlA_7fHBHDjdSKRbVjP5cCNldjHJ70D2j1HM4JJUwMirNWZ8SFaJiny5a7NoZ2fa_JQkA3ZRrwGPHxGh6JThhu_F-a-pv2CDSytPCSU5DJxnslNJ4ePLVKDWpQ\"\n",
119+
"headers = {\n",
120+
" 'Authorization': f'Bearer {token}'\n",
121+
"}\n",
122+
"\n",
123+
"\n",
124+
"dataset_url = CLOWDER_URL + \"/api/v2/datasets\"\n",
125+
"response = requests.post(dataset_url, json = dataset_json, headers = headers, params = dataset_params)\n",
126+
"print(response.json())"
127+
]
128+
}
129+
],
130+
"metadata": {
131+
"kernelspec": {
132+
"display_name": "Python 3 (ipykernel)",
133+
"language": "python",
134+
"name": "python3"
135+
},
136+
"language_info": {
137+
"codemirror_mode": {
138+
"name": "ipython",
139+
"version": 3
140+
},
141+
"file_extension": ".py",
142+
"mimetype": "text/x-python",
143+
"name": "python",
144+
"nbconvert_exporter": "python",
145+
"pygments_lexer": "ipython3",
146+
"version": "3.10.13"
147+
}
148+
},
149+
"nbformat": 4,
150+
"nbformat_minor": 5
151+
}

jupyterhub/Dockerfile.jupyterlab

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Base Image
2+
FROM quay.io/jupyter/base-notebook:latest
3+
4+
# Install additional packages
5+
USER root
6+
RUN apt-get -qq update && apt-get install -y --no-install-recommends \
7+
curl \
8+
git \
9+
zip unzip \
10+
nano \
11+
vim-tiny \
12+
lsof && \
13+
rm -rf /var/lib/apt/lists/*
14+
15+
USER $NB_USER
16+
17+
# Install Python packages
18+
RUN pip install --no-cache-dir \
19+
requests \
20+
pyclowder \
21+
pandas

jupyterhub/jupyterhub_config.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
# Configuration file for JupyterHub
55
import os
6+
import shutil
7+
import logging
68

79
from customauthenticator.custom import CustomTokenAuthenticator
810

@@ -61,7 +63,7 @@
6163
# TODO:Change this keycloak_url as required
6264

6365
c.CustomTokenAuthenticator.auth_cookie_header = "Authorization"
64-
c.CustomTokenAuthenticator.auth_username_key = "preferred_username"
66+
c.CustomTokenAuthenticator.auth_username_key = "email"
6567
c.CustomTokenAuthenticator.auth_uid_number_key = "uid_number"
6668
c.CustomTokenAuthenticator.enable_auth_state = True
6769
c.CustomTokenAuthenticator.auto_login = True
@@ -92,7 +94,20 @@
9294

9395
c.JupyterHub.cookie_secret = os.getenv("JUPYTERHUB_CRYPT_KEY")
9496

97+
# Allow all users to access
98+
c.Authenticator.allow_all = True
99+
95100
# Allowed admins
96101
admin = os.environ.get("JUPYTERHUB_ADMIN")
97102
if admin:
98103
c.Authenticator.admin_users = [admin]
104+
105+
106+
# Pre spawn hook
107+
# def pre_spawn_hook(spawner):
108+
# # Git clone
109+
#
110+
#
111+
112+
113+
# c.Spawner.post_stop_hook = pre_spawn_hook

0 commit comments

Comments
 (0)