Skip to content

Commit 84f8481

Browse files
Version 1
0 parents  commit 84f8481

159 files changed

Lines changed: 15327 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.prod

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
SECRET_KEY=
2+
DEBUG=
3+
ALLOWED_HOSTS=
4+
DATABASE=
5+
MYSQL_ROOT_PASSWORD=
6+
MYSQL_DATABASE=
7+
MYSQL_USER=
8+
MYSQL_PASSWORD=
9+
MYSQL_HOST=
10+
MYSQL_PORT=
11+
SENTRY_DSN=
12+
CA_CERTS_PATH=
13+
OS_AUTH_URL=
14+
OS_PROJECT_ID=
15+
OS_PROJECT_NAME=
16+
OS_USER_DOMAIN_NAME=
17+
OS_PROJECT_DOMAIN_ID=
18+
OS_USERNAME=
19+
OS_PASSWORD=
20+
OS_REGION_NAME=
21+
OS_INTERFACE=
22+
OS_IDENTITY_API_VERSION=

.github/workflows/django.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: Django CI
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- master
10+
11+
jobs:
12+
test:
13+
14+
runs-on: ubuntu-latest
15+
strategy:
16+
max-parallel: 4
17+
matrix:
18+
python-version: [ 3.9 ]
19+
20+
services:
21+
mysql:
22+
image: mysql:5.7
23+
env:
24+
MYSQL_ROOT_PASSWORD: random_pass
25+
MYSQL_DATABASE: mysql
26+
ports: [ '3306:3306' ]
27+
28+
steps:
29+
- uses: actions/checkout@v2
30+
- name: Set up Python 3.9
31+
uses: actions/setup-python@v2
32+
with:
33+
python-version: 3.9.10
34+
- name: Install Dependencies
35+
run: |
36+
python -m pip install --upgrade pip
37+
pip install -r requirements.txt
38+
- name: Run Migrations
39+
run: python manage.py migrate
40+
env:
41+
MYSQL_NAME: mysql
42+
MYSQL_USER: root
43+
MYSQL_PASSWORD: random_pass
44+
MYSQL_HOST: 127.0.0.1
45+
MYSQL_PORT: 3306
46+
MYSQL_DATABASE: mysql
47+
- name: Run Tests
48+
run: |
49+
python manage.py test
50+
env:
51+
MYSQL_NAME: mysql
52+
MYSQL_USER: root
53+
MYSQL_PASSWORD: random_pass
54+
MYSQL_HOST: 127.0.0.1
55+
MYSQL_PORT: 3306
56+
MYSQL_DATABASE: mysql
57+
- name: Login to Docker Hub
58+
uses: docker/login-action@v1
59+
with:
60+
username: ${{ secrets.DOCKER_HUB_USERNAME }}
61+
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
62+
- name: Set up Docker Buildx
63+
uses: docker/setup-buildx-action@v1
64+
- name: Build and push
65+
uses: docker/build-push-action@v2
66+
with:
67+
context: .
68+
file: ./Dockerfile
69+
push: true
70+
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/novamanager:latest

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.env.dev
2+
/.idea/
3+
/WIP/
4+
/.env.local

Dockerfile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
FROM python:3.9-buster
2+
3+
WORKDIR /app
4+
5+
#Recommended by Docker itself
6+
ENV PYTHONDONTWRITEBYTECODE=1
7+
ENV PYTHONUNBUFFERED=1
8+
9+
COPY . .
10+
11+
RUN pip install --upgrade pip && \
12+
apt-get update &&\
13+
apt-get install -y --no-install-recommends gcc libc-dev python3-dev netcat &&\
14+
pip install --no-cache-dir -r requirements.txt &&\
15+
mkdir /app/staticfiles &&\
16+
python manage.py collectstatic --no-input --clear &&\
17+
rm -rf /app/static_dev/* &&\
18+
useradd user &&\
19+
chown -R user:user /app &&\
20+
chmod -R 755 /app
21+
22+
USER user
23+
24+
ENTRYPOINT ["/app/scripts/docker-entrypoint.sh"]

docker-compose.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
version: '3.7'
2+
3+
services:
4+
nginx:
5+
container_name: NovaManagerNginx
6+
image: nginx:1.21
7+
volumes:
8+
- static_volume:/app/staticfiles
9+
- ./nginx/:/etc/nginx/conf.d
10+
ports:
11+
- 80:80
12+
depends_on:
13+
- api
14+
15+
api:
16+
container_name: NovaManagerBackend
17+
image: marquesluis/novamanager:latest
18+
volumes:
19+
- static_volume:/app/staticfiles
20+
restart: always
21+
env_file:
22+
- ./.env.prod
23+
expose:
24+
- 8000
25+
depends_on:
26+
- api_db
27+
28+
api_db:
29+
container_name: NovaManagerDatabase
30+
image: mysql:5.7
31+
env_file:
32+
- ./.env.prod
33+
volumes:
34+
- nova_api_data:/var/lib/mysql
35+
restart: always
36+
37+
38+
volumes:
39+
nova_api_data:
40+
static_volume:

manage.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env python
2+
"""Django's command-line utility for administrative tasks."""
3+
import os
4+
import sys
5+
6+
7+
def main():
8+
"""Run administrative tasks."""
9+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "vmmanager.settings")
10+
try:
11+
from django.core.management import execute_from_command_line
12+
except ImportError as exc:
13+
raise ImportError(
14+
"Couldn't import Django. Are you sure it's installed and "
15+
"available on your PYTHONPATH environment variable? Did you "
16+
"forget to activate a virtual environment?"
17+
) from exc
18+
execute_from_command_line(sys.argv)
19+
20+
21+
if __name__ == "__main__":
22+
main()

manager/__init__.py

Whitespace-only changes.

manager/admin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.contrib import admin
2+
3+
# Register your models here.
4+
from .models import Machine
5+
6+
admin.site.register(Machine)

manager/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class ManagerConfig(AppConfig):
5+
default_auto_field = "django.db.models.BigAutoField"
6+
name = "manager"

manager/migrations/0001_initial.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 3.2.9 on 2022-02-15 16:31
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name="Machine",
18+
fields=[
19+
("uuid", models.UUIDField(primary_key=True, serialize=False)),
20+
("name", models.CharField(max_length=255)),
21+
("users", models.ManyToManyField(to=settings.AUTH_USER_MODEL)),
22+
],
23+
),
24+
]

0 commit comments

Comments
 (0)