Skip to content

Add ownership to templates and ranges + Implement auth endpoints #56

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 71 commits into from
Mar 8, 2025
Merged
Show file tree
Hide file tree
Changes from 62 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
6ed3511
fix typo. RRFC -> RFC
Adamkadaban Feb 23, 2025
a889938
add user secret and model
Adamkadaban Feb 23, 2025
8a8a48d
add secret model and fix up naming in user model
Adamkadaban Feb 23, 2025
528e054
add secret schema
Adamkadaban Feb 23, 2025
a8111ce
add crud for users
Adamkadaban Feb 23, 2025
0a38c42
add auth endpoints
Adamkadaban Feb 25, 2025
8c0ad3d
add template endpoints
Adamkadaban Feb 25, 2025
8f6e17b
add range endpoint
Adamkadaban Feb 25, 2025
5231761
add bcrypt and jwt requirements for auth
Adamkadaban Feb 25, 2025
354e034
add auth route to router
Adamkadaban Feb 25, 2025
e16035f
make error messages for template routes more consistent with other ra…
Adamkadaban Feb 25, 2025
e437d51
add core auth logic that will be used for all authenticated endpoints
Adamkadaban Feb 25, 2025
2d98188
add config for auth
Adamkadaban Feb 25, 2025
34f953b
popoulate and check owner for templates crud
Adamkadaban Feb 26, 2025
803cf32
add crud for users
Adamkadaban Feb 26, 2025
c8837f9
fix typo in user schema
Adamkadaban Feb 26, 2025
3d59cef
add owner to template base model
Adamkadaban Feb 26, 2025
7cda2f0
add user model with correct naming
Adamkadaban Feb 26, 2025
3bb2bab
fix prefix for auth route
Adamkadaban Feb 26, 2025
0cb7d64
change auth login error messages to not report if user exists or not …
Adamkadaban Feb 26, 2025
64376f8
add basic tests for auth endpoints
Adamkadaban Feb 26, 2025
edf778d
dumb solution to get all clients authorized
Adamkadaban Feb 26, 2025
15f1495
change usernames for registering between auth and template tests so t…
Adamkadaban Feb 26, 2025
836aa4d
add test to make sure users can only access their own templates
Adamkadaban Feb 26, 2025
8bbe67e
appease mypy
Adamkadaban Feb 26, 2025
52dc81b
make sure timezones are in UTC in the database
Adamkadaban Feb 26, 2025
7a28a3c
appease ruff
Adamkadaban Feb 26, 2025
5aed21a
format with black
Adamkadaban Feb 26, 2025
5402f40
add default jwt secret so tests can run in pipeline
Adamkadaban Feb 26, 2025
275646d
Merge branch 'main' into adam-auth-2
Adamkadaban Feb 27, 2025
793f8a8
update delete routes and tests to be authenticated
Adamkadaban Feb 27, 2025
b8ca080
annotate current_user arg for delete templates
Adamkadaban Feb 27, 2025
224fe47
black and ruff changes
Adamkadaban Feb 27, 2025
0fea90c
remove erroneous paren and comma from deploy endpoint that was breaki…
Adamkadaban Feb 27, 2025
4b80c0b
modify dev dockerfile to have dependencies for deploying ranges with …
Adamkadaban Feb 27, 2025
33748ea
auth by setting cookie instead of with jwt
Adamkadaban Mar 3, 2025
e849a9a
replace OpenLabsX with OpenLabs
Adamkadaban Mar 3, 2025
6979d20
user can read/deploy anything and is created on db start
Adamkadaban Mar 4, 2025
3405c1a
ruff/black plus cleaning up admin creation. DRY
Adamkadaban Mar 4, 2025
89b2df8
user schema validation fix
Adamkadaban Mar 4, 2025
4e2ab09
add endpoints for retrieving user info and secrets status. also for p…
Adamkadaban Mar 5, 2025
5f9437e
do not include inhereted token param in fastapi docs
Adamkadaban Mar 5, 2025
ea0c5b0
fix password change endpoint by adding missing await
Adamkadaban Mar 5, 2025
f7a18f6
fix endpoint for retrieving user secret status. add missing depends
Adamkadaban Mar 5, 2025
073f149
fix secret retrieval for secret post endpoints by explicitly getting …
Adamkadaban Mar 5, 2025
16e8573
add tests for users endpoint
Adamkadaban Mar 5, 2025
b148cfe
improve variable name for unused variable in user schema email valida…
Adamkadaban Mar 5, 2025
f613bd7
add test for invalid email
Adamkadaban Mar 5, 2025
b9d3316
fix test formatting with black
Adamkadaban Mar 5, 2025
7ac7aea
update file structure in readme
Adamkadaban Mar 5, 2025
6ae5fd9
fix directory structure spacing in readme
Adamkadaban Mar 5, 2025
6fe47c3
add admin field to user get endpoint. also add better fields to schema
Adamkadaban Mar 5, 2025
9ad931b
add other fields for azure. (tenant id, subscription id)
Adamkadaban Mar 5, 2025
af3e186
ruff/black reformatting
Adamkadaban Mar 5, 2025
fa567e3
add missing azure fields to tests
Adamkadaban Mar 5, 2025
218c58c
set up e2e for secrets and allow aws ranges to deploy from them
Adamkadaban Mar 6, 2025
b2eb480
ruff/mypy/black for auth changes
Adamkadaban Mar 6, 2025
e94afe3
fix links in changelog i accidentally broke with a sed
Adamkadaban Mar 6, 2025
0d1fa9b
update file structure in readme
Adamkadaban Mar 6, 2025
6ab1c73
fix typing issue with crypto keys for mypy
Adamkadaban Mar 6, 2025
401c206
remove unused function
Adamkadaban Mar 7, 2025
3b029a4
make password minimum 8 bytes in schema
Adamkadaban Mar 7, 2025
5db4d6f
add schemas for user and auth endpoints to make example values on fas…
Adamkadaban Mar 7, 2025
4620d53
fix github link in config to new org name
Adamkadaban Mar 7, 2025
c18575a
make minimum email length 3
Adamkadaban Mar 8, 2025
3d9640f
add fields to secret schemas for better fastapi docs
Adamkadaban Mar 8, 2025
742cfa6
use async_get_db instead of local_session for admin user init
Adamkadaban Mar 8, 2025
ab81d59
move api test structures to config
Adamkadaban Mar 8, 2025
da98a01
split up secrets tests
Adamkadaban Mar 8, 2025
4d0d257
make secret function in crud users return schema instead of dict
Adamkadaban Mar 8, 2025
4241bc8
Added logging messages
alexchristy Mar 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 20 additions & 20 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#### 🐛 Bug Fix

- Add template delete endpoints [#55](https://github.com/OpenLabsX/API/pull/55) ([@alexchristy](https://github.com/alexchristy))
- Add template delete endpoints [#55](https://github.com/OpenLabsHQ/API/pull/55) ([@alexchristy](https://github.com/alexchristy))

#### Authors: 1

Expand All @@ -14,7 +14,7 @@

#### 🐛 Bug Fix

- Naming refactor [#52](https://github.com/OpenLabsX/API/pull/52) ([@alexchristy](https://github.com/alexchristy))
- Naming refactor [#52](https://github.com/OpenLabsHQ/API/pull/52) ([@alexchristy](https://github.com/alexchristy))

#### Authors: 1

Expand All @@ -26,7 +26,7 @@

#### 🚀 Enhancement

- Cdktf [#50](https://github.com/OpenLabsX/API/pull/50) ([@Nareshp1](https://github.com/Nareshp1) [@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))
- Cdktf [#50](https://github.com/OpenLabsHQ/API/pull/50) ([@Nareshp1](https://github.com/Nareshp1) [@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))

#### Authors: 3

Expand All @@ -40,11 +40,11 @@

#### 🚀 Enhancement

- SQLAlchemy ORM Models ✅ [#46](https://github.com/OpenLabsX/API/pull/46) ([@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))
- SQLAlchemy ORM Models ✅ [#46](https://github.com/OpenLabsHQ/API/pull/46) ([@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))

#### 📝 Documentation

- Add debug docker config to work with vscode debugging extension [#32](https://github.com/OpenLabsX/API/pull/32) ([@Adamkadaban](https://github.com/Adamkadaban))
- Add debug docker config to work with vscode debugging extension [#32](https://github.com/OpenLabsHQ/API/pull/32) ([@Adamkadaban](https://github.com/Adamkadaban))

#### Authors: 2

Expand All @@ -57,11 +57,11 @@

#### 🚀 Enhancement

- Specify minimum disk size for each OS [#35](https://github.com/OpenLabsX/API/pull/35) ([@Adamkadaban](https://github.com/Adamkadaban))
- Specify minimum disk size for each OS [#35](https://github.com/OpenLabsHQ/API/pull/35) ([@Adamkadaban](https://github.com/Adamkadaban))

#### 📝 Documentation

- ignore .vscode folder to make my life easier [#30](https://github.com/OpenLabsX/API/pull/30) ([@Adamkadaban](https://github.com/Adamkadaban))
- ignore .vscode folder to make my life easier [#30](https://github.com/OpenLabsHQ/API/pull/30) ([@Adamkadaban](https://github.com/Adamkadaban))

#### Authors: 1

Expand All @@ -73,8 +73,8 @@

#### 🐛 Bug Fix

- Ignore enums directory when running black so we can have nice spacing [#23](https://github.com/OpenLabsX/API/pull/23) ([@Adamkadaban](https://github.com/Adamkadaban))
- add .swp to gitignore to make my life easier [#21](https://github.com/OpenLabsX/API/pull/21) ([@Adamkadaban](https://github.com/Adamkadaban))
- Ignore enums directory when running black so we can have nice spacing [#23](https://github.com/OpenLabsHQ/API/pull/23) ([@Adamkadaban](https://github.com/Adamkadaban))
- add .swp to gitignore to make my life easier [#21](https://github.com/OpenLabsHQ/API/pull/21) ([@Adamkadaban](https://github.com/Adamkadaban))

#### Authors: 1

Expand All @@ -86,7 +86,7 @@

#### 🐛 Bug Fix

- Update Mypy Precommit Dependencies [#25](https://github.com/OpenLabsX/API/pull/25) ([@alexchristy](https://github.com/alexchristy))
- Update Mypy Precommit Dependencies [#25](https://github.com/OpenLabsHQ/API/pull/25) ([@alexchristy](https://github.com/alexchristy))

#### Authors: 1

Expand All @@ -98,11 +98,11 @@

#### 🚀 Enhancement

- add some operating system AMIs and URNs [#11](https://github.com/OpenLabsX/API/pull/11) ([@Adamkadaban](https://github.com/Adamkadaban))
- add some operating system AMIs and URNs [#11](https://github.com/OpenLabsHQ/API/pull/11) ([@Adamkadaban](https://github.com/Adamkadaban))

#### 📝 Documentation

- Clarify Docker Documentation [#19](https://github.com/OpenLabsX/API/pull/19) ([@alexchristy](https://github.com/alexchristy))
- Clarify Docker Documentation [#19](https://github.com/OpenLabsHQ/API/pull/19) ([@alexchristy](https://github.com/alexchristy))

#### Authors: 2

Expand All @@ -115,7 +115,7 @@

#### 🚀 Enhancement

- Add Docker configurations [#17](https://github.com/OpenLabsX/API/pull/17) ([@alexchristy](https://github.com/alexchristy))
- Add Docker configurations [#17](https://github.com/OpenLabsHQ/API/pull/17) ([@alexchristy](https://github.com/alexchristy))

#### Authors: 1

Expand All @@ -127,7 +127,7 @@

#### 🐛 Bug Fix

- add codeowners file so we are auto requested for review [#12](https://github.com/OpenLabsX/API/pull/12) ([@Adamkadaban](https://github.com/Adamkadaban))
- add codeowners file so we are auto requested for review [#12](https://github.com/OpenLabsHQ/API/pull/12) ([@Adamkadaban](https://github.com/Adamkadaban))

#### Authors: 1

Expand All @@ -139,15 +139,15 @@

#### 🚀 Enhancement

- Project Boilerplate [#3](https://github.com/OpenLabsX/API/pull/3) ([@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))
- Project Boilerplate [#3](https://github.com/OpenLabsHQ/API/pull/3) ([@alexchristy](https://github.com/alexchristy) [@Adamkadaban](https://github.com/Adamkadaban))

#### 🐛 Bug Fix

- Working Auto Release GH App Bypass [#6](https://github.com/OpenLabsX/API/pull/6) ([@alexchristy](https://github.com/alexchristy))
- Auto release GitHub App [#5](https://github.com/OpenLabsX/API/pull/5) ([@alexchristy](https://github.com/alexchristy))
- Remove workflow permission from release.yml workflow [#4](https://github.com/OpenLabsX/API/pull/4) ([@alexchristy](https://github.com/alexchristy))
- Add aws and azure size mappings [#2](https://github.com/OpenLabsX/API/pull/2) ([@Adamkadaban](https://github.com/Adamkadaban))
- add classes and enums [#1](https://github.com/OpenLabsX/API/pull/1) ([@Adamkadaban](https://github.com/Adamkadaban))
- Working Auto Release GH App Bypass [#6](https://github.com/OpenLabsHQ/API/pull/6) ([@alexchristy](https://github.com/alexchristy))
- Auto release GitHub App [#5](https://github.com/OpenLabsHQ/API/pull/5) ([@alexchristy](https://github.com/alexchristy))
- Remove workflow permission from release.yml workflow [#4](https://github.com/OpenLabsHQ/API/pull/4) ([@alexchristy](https://github.com/alexchristy))
- Add aws and azure size mappings [#2](https://github.com/OpenLabsHQ/API/pull/2) ([@Adamkadaban](https://github.com/Adamkadaban))
- add classes and enums [#1](https://github.com/OpenLabsHQ/API/pull/1) ([@Adamkadaban](https://github.com/Adamkadaban))

#### ⚠️ Pushed to `main`

Expand Down
27 changes: 25 additions & 2 deletions Dockerfile.dev
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,41 @@ FROM python:3.12-slim

WORKDIR /code

# For dynamic versioning
RUN apt-get update && apt-get install -y git \
RUN apt-get update && apt-get install -y git curl \
&& curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
&& apt-get install -y nodejs \
&& apt-get install -y gnupg software-properties-common \
&& apt-get install -y wget \
&& apt-get install -y gnupg2 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

RUN wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null

RUN echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com bookworm main" | \
tee /etc/apt/sources.list.d/hashicorp.list

RUN apt-get update && apt-get install -y terraform


# Install debugpy for debugging
RUN pip install --no-cache-dir debugpy

# Install python dependencies
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

# Set up terraform cache
WORKDIR src/app/core/cdktf
RUN mkdir -p "/root/.terraform.d/plugin-cache"
COPY src/app/core/cdktf/.terraformrc /root/.terraformrc
RUN terraform init
RUN rm -rf .terraform*
WORKDIR /code

EXPOSE 80

CMD ["uvicorn", "src.app.main:app", "--host", "0.0.0.0", "--port", "80", "--reload"]
89 changes: 65 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ POSTGRES_DB=openlabsx

# Docker Compose Configuration
POSTGRES_DEBUG_PORT=5432 # Expose PostgreSQL on host port for debugging

# Admin User Configuration (optional)
[email protected] # Default admin email
ADMIN_PASSWORD=admin123 # Default admin password
ADMIN_NAME=Administrator # Default admin name
# Admin user is automatically created when database is initialized

# Authentication Configuration
SECRET_KEY=your-secret-key-here # JWT token signing key (CHANGE THIS!)
```
</details>

Expand Down Expand Up @@ -150,35 +159,67 @@ All tests are located in `tests/`. The structure of the `tests/` directory mirro
src/
└── app
├── api
│ └── v1 # API Version 1 routes (/v1)
| | # ------------------------- #
│ ├── health.py # /health routes
│ └── templates.py # /templates routes
│ └── v1 # API Version 1 routes (/v1)
| | # ------------------------- #
│ ├── auth.py # /auth routes
│ ├── health.py # /health routes
│ ├── ranges.py # /ranges routes
│ ├── templates.py # /templates routes
│ └── users.py # /users routes
|
├── core # Core Application Logic
| | # ---------------------- #
│ ├── cdktf/ # CDKTF Libraries
│ ├── config.py # Application settings
│ ├── db # Database configuration
├── core # Core Application Logic
| | # ---------------------- #
│ ├── auth/ # Authentication utilities
│ │ └── auth.py
│ ├── cdktf/ # CDKTF Libraries
│ │ └── aws/ # AWS provider configuration
│ ├── config.py # Application settings
│ ├── db # Database configuration
│ │ └── database.py
│ ├── logger.py # Shared logger utility
│ └── setup.py # Application setup logic
│ ├── logger.py # Shared logger utility
│ └── setup.py # Application setup logic
|
├── enums # Enums (Constants)
| | # ---------------- #
│ ├── providers.py # Defined cloud providers
│ └── specs.py # Preset VM hardware configurations
├── crud # Database CRUD operations
│ ├── crud_host_templates.py
│ ├── crud_range_templates.py
│ ├── crud_subnet_templates.py
│ ├── crud_users.py
│ └── crud_vpc_templates.py
|
├── enums # Enums (Constants)
| | # ---------------- #
│ ├── operating_systems.py # OS configurations
│ ├── providers.py # Defined cloud providers
│ └── specs.py # Preset VM hardware configurations
|
├── models # Database Models
│ ├── secret_model.py # Encrypted cloud provider credentials (AWS, Azure)
│ ├── template_base_model.py
│ ├── template_host_model.py
│ ├── template_range_model.py
│ ├── template_subnet_model.py
│ ├── template_vpc_model.py
│ └── user_model.py
|
├── schemas # API Schema (Objects)
| | # ------------------ #
│ ├── secret_schema.py # Cloud provider credential schemas
│ ├── template_host_schema.py
│ ├── template_range_schema.py
│ ├── template_subnet_schema.py
│ ├── template_vpc_schema.py
│ └── user_schema.py
|
├── schemas # API Schema (Objects)
| | # ------------------ #
│ ├── openlabs.py # OpenLabs network objects
│ └── templates.py # Template objects
├── utils # Utility Functions
│ ├── cdktf_utils.py # CDKTF configuration utilities
│ └── crypto.py # Cryptography utilities for encrypting cloud provider credentials
|
└── validators # Data Validation
| | # --------------- #
| └── network.py # Networking config input validation
├── validators # Data Validation
| | # --------------- #
│ ├── id.py # ID validation
│ └── network.py # Networking config input validation
|
└── main.py # Main App Entry Point
└── main.py # Main App Entry Point
```

## VScode Extensions
Expand Down Expand Up @@ -261,7 +302,7 @@ This workflow automatically creates GitHub tagged releases based on the tag of t

5) Create a GitHub App

***Note:** OpenLabsX already has the `auto-release-app` installed. Skip to step 7.*
***Note:** OpenLabs already has the `auto-release-app` installed. Skip to step 7.*

This allows us to enforce branch protection rules while allowing the Auto release tool to bypass the protections when running automated workflows. (Source: [Comment Link](https://github.com/orgs/community/discussions/13836#discussioncomment-8535364))

Expand Down
10 changes: 9 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,12 @@ setuptools-scm~=8.1

# CDKTF
cdktf>=0.20
cdktf-cdktf-provider-aws>=19.52
cdktf-cdktf-provider-aws>=19.52

# Auth
pyjwt
bcrypt

# Crypto
cryptography>=41.0.0
argon2-cffi>=23.1.0
2 changes: 1 addition & 1 deletion src/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"""Source code of the OpenLabsX API."""
"""Source code of the OpenLabs API."""
2 changes: 1 addition & 1 deletion src/app/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"""Base app of the OpenLabsX API."""
"""Base app of the OpenLabs API."""
2 changes: 1 addition & 1 deletion src/app/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Base of OpenLabsX API."""
"""Base of OpenLabs API."""

from fastapi import APIRouter

Expand Down
6 changes: 5 additions & 1 deletion src/app/api/v1/__init__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
"""Version 1 of the OpenLabsX API routes."""
"""Version 1 of the OpenLabs API routes."""

from fastapi import APIRouter

from .auth import router as auth_router
from .health import router as health_router
from .ranges import router as ranges_router
from .templates import router as templates_router
from .users import router as user_router

router = APIRouter(prefix="/v1")
router.include_router(health_router)
router.include_router(templates_router)
router.include_router(ranges_router)
router.include_router(auth_router)
router.include_router(user_router)
Loading
Loading