diff --git a/apiserver/Dockerfile.api b/apiserver/Dockerfile.api index 15c3f53a9..a2ce4a7b2 100644 --- a/apiserver/Dockerfile.api +++ b/apiserver/Dockerfile.api @@ -43,7 +43,7 @@ USER captain COPY manage.py manage.py COPY plane plane/ COPY templates templates/ - +COPY package.json package.json COPY gunicorn.config.py ./ USER root RUN apk --no-cache add "bash~=5.2" diff --git a/apiserver/bin/instance_registration.py b/apiserver/bin/instance_registration.py index b6e813ec2..3cd7b9c37 100644 --- a/apiserver/bin/instance_registration.py +++ b/apiserver/bin/instance_registration.py @@ -3,12 +3,10 @@ import os, sys import json import uuid import requests + # Django imports from django.utils import timezone -# Module imports -from plane.db.models import User -from plane.license.models import Instance sys.path.append("/code") @@ -20,61 +18,76 @@ django.setup() def instance_registration(): - # Check if the instance is registered - instance = Instance.objects.first() + try: + # Module imports + from plane.db.models import User + from plane.license.models import Instance - # If instance is None then register this instance - if instance is None: - with open("package.json", "r") as file: - # Load JSON content from the file - data = json.load(file) + # Check if the instance is registered + instance = Instance.objects.first() - admin_email = os.environ.get("ADMIN_EMAIL") - # Raise an exception if the admin email is not provided - if not admin_email: - raise Exception("ADMIN_EMAIL is required") + # If instance is None then register this instance + if instance is None: + with open("/code/package.json", "r") as file: + # Load JSON content from the file + data = json.load(file) - # Check if the admin email user exists - user = User.objects.filter(email=admin_email).first() + admin_email = os.environ.get("ADMIN_EMAIL") + # Raise an exception if the admin email is not provided + if not admin_email: + raise Exception("ADMIN_EMAIL is required") - # If the user does not exist create the user and add him to the database - if user is None: - user = User.objects.create(email=admin_email, username=uuid.uuid4().hex) - user.set_password(uuid.uuid4().hex) - user.save() + # Check if the admin email user exists + user = User.objects.filter(email=admin_email).first() - license_engine_base_url = os.environ.get("LICENSE_ENGINE_BASE_URL") + # If the user does not exist create the user and add him to the database + if user is None: + user = User.objects.create(email=admin_email, username=uuid.uuid4().hex) + user.set_password(uuid.uuid4().hex) + user.save() - if not license_engine_base_url: - raise Exception("LICENSE_ENGINE_BASE_URL is required") - - headers = {"Content-Type": "application/json"} + license_engine_base_url = os.environ.get("LICENSE_ENGINE_BASE_URL") - payload = { - "email": user.email, - "version": data.get("version", 0.1), - } + if not license_engine_base_url: + raise Exception("LICENSE_ENGINE_BASE_URL is required") - response = requests.post( - f"{license_engine_base_url}/api/instances", - headers=headers, - data=json.dumps(payload), - ) + headers = {"Content-Type": "application/json"} - if response.status_code == 201: - data = response.json() - instance = Instance.objects.create( - instance_name="Plane Free", - instance_id=data.get("id"), - license_key=data.get("license_key"), - api_key=data.get("api_key"), - version=data.get("version"), - email=data.get("email"), - owner=user, - last_checked_at=timezone.now(), + payload = { + "email": user.email, + "version": data.get("version", 0.1), + } + + response = requests.post( + f"{license_engine_base_url}/api/instances", + headers=headers, + data=json.dumps(payload), ) - print("Instance succesfully registered") - print("Instance could not be registered") - else: - print(f"Instance already registered with instance owner: {instance.owner.email}") + if response.status_code == 201: + data = response.json() + instance = Instance.objects.create( + instance_name="Plane Free", + instance_id=data.get("id"), + license_key=data.get("license_key"), + api_key=data.get("api_key"), + version=0.1, + email=data.get("email"), + owner=user, + last_checked_at=timezone.now(), + ) + print(f"Instance succesfully registered with owner: {instance.owner.email}") + return + print("Instance could not be registered") + return + else: + print( + f"Instance already registered with instance owner: {instance.owner.email}" + ) + return + except ImportError: + raise ImportError + + +if __name__ == "__main__": + instance_registration()