Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 14 additions & 5 deletions core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,16 @@
from django.db import models


class Pattern(CommonModel):
class PatternServiceBaseModel(CommonModel):
class Meta:
abstract = True

created_by_ansible_id: models.CharField = models.CharField(
max_length=200, blank=True, null=True
)


class Pattern(PatternServiceBaseModel):
class Meta:
app_label = "core"
ordering = ["id"]
Expand All @@ -24,7 +33,7 @@ class Meta:
pattern_definition: models.JSONField = models.JSONField(blank=True, null=True)


class ControllerLabel(CommonModel):
class ControllerLabel(PatternServiceBaseModel):
class Meta:
app_label = "core"
ordering = ["id"]
Expand All @@ -34,7 +43,7 @@ class Meta:
)


class PatternInstance(CommonModel):
class PatternInstance(PatternServiceBaseModel):
class Meta:
app_label = "core"
ordering = ["id"]
Expand Down Expand Up @@ -63,7 +72,7 @@ class Meta:
)


class Automation(CommonModel):
class Automation(PatternServiceBaseModel):
class Meta:
app_label = "core"
ordering = ["id"]
Expand All @@ -80,7 +89,7 @@ class Meta:
)


class Task(CommonModel):
class Task(PatternServiceBaseModel):
class Meta:
app_label = "core"
ordering = ["id"]
Expand Down
41 changes: 28 additions & 13 deletions core/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

from typing import Any

from ansible_base.lib.serializers.common import CommonModelSerializer

from .models import Automation
Expand All @@ -9,10 +11,23 @@
from .models import Task


class PatternSerializer(CommonModelSerializer):
class PatternServiceBaseSerializer(CommonModelSerializer):

class Meta(CommonModelSerializer.Meta):
model = Pattern
fields = CommonModelSerializer.Meta.fields + [
fields = CommonModelSerializer.Meta.fields

def to_representation(self, instance: Any) -> Any:
ret = super().to_representation(instance)
username = self.context["request"].user.username or "runner"
ret["created_by_ansible_id"] = username
return ret


class PatternSerializer(PatternServiceBaseSerializer):
class Meta(PatternServiceBaseSerializer.Meta):
model = Pattern
fields = PatternServiceBaseSerializer.Meta.fields + [
"id",
"collection_name",
"collection_version",
Expand All @@ -23,16 +38,16 @@ class Meta(CommonModelSerializer.Meta):
read_only_fields = ["pattern_definition", "collection_version_uri"]


class ControllerLabelSerializer(CommonModelSerializer):
class Meta(CommonModelSerializer.Meta):
class ControllerLabelSerializer(PatternServiceBaseSerializer):
class Meta(PatternServiceBaseSerializer.Meta):
model = ControllerLabel
fields = CommonModelSerializer.Meta.fields + ["id", "label_id"]


class PatternInstanceSerializer(CommonModelSerializer):
class Meta(CommonModelSerializer.Meta):
class PatternInstanceSerializer(PatternServiceBaseSerializer):
class Meta(PatternServiceBaseSerializer.Meta):
model = PatternInstance
fields = CommonModelSerializer.Meta.fields + [
fields = PatternServiceBaseSerializer.Meta.fields + [
"id",
"organization_id",
"controller_project_id",
Expand All @@ -49,10 +64,10 @@ class Meta(CommonModelSerializer.Meta):
]


class AutomationSerializer(CommonModelSerializer):
class Meta(CommonModelSerializer.Meta):
class AutomationSerializer(PatternServiceBaseSerializer):
class Meta(PatternServiceBaseSerializer.Meta):
model = Automation
fields = CommonModelSerializer.Meta.fields + [
fields = PatternServiceBaseSerializer.Meta.fields + [
"id",
"automation_type",
"automation_id",
Expand All @@ -61,10 +76,10 @@ class Meta(CommonModelSerializer.Meta):
]


class TaskSerializer(CommonModelSerializer):
class Meta(CommonModelSerializer.Meta):
class TaskSerializer(PatternServiceBaseSerializer):
class Meta(PatternServiceBaseSerializer.Meta):
model = Task
fields = CommonModelSerializer.Meta.fields + [
fields = PatternServiceBaseSerializer.Meta.fields + [
"status",
"details",
]
27 changes: 11 additions & 16 deletions core/views.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import uuid

from ansible_base.lib.utils.views.ansible_base import AnsibleBaseView
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.permissions import AllowAny
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.viewsets import ModelViewSet
from rest_framework.viewsets import ReadOnlyModelViewSet

from core.tasks.demo import sumbit_hello_world

from .models import Automation
from .models import ControllerLabel
from .models import Pattern
Expand Down Expand Up @@ -91,16 +88,14 @@ class TaskViewSet(CoreViewSet, ReadOnlyModelViewSet):
serializer_class = TaskSerializer


@api_view(["GET"])
def ping(request: Request) -> Response:
return Response(data={"status": "ok"}, status=200)
class PingView(APIView):
permission_classes = [AllowAny]

def get(self, request: Request) -> Response:
return Response(data={"status": "ok"}, status=status.HTTP_200_OK)


class TestView(APIView):

@api_view(["GET"])
def test(request: Request) -> Response:
text = f"hello world from uuid = {uuid.uuid4()}"
id = sumbit_hello_world(text)
return Response(
f"Task submitted (uuid={id}), check dispatcher logs. Should print '{text}'",
status=200,
)
def get(self, request: Request) -> Response:
return Response(data={"hello": "world"}, status=status.HTTP_200_OK)
10 changes: 10 additions & 0 deletions pattern_service/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import logging

from django.apps import AppConfig

logger = logging.getLogger(__name__)


class PatternServiceConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "pattern_service"
5 changes: 5 additions & 0 deletions pattern_service/authentication.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from ansible_base.jwt_consumer.common.auth import JWTAuthentication


class PatternServiceJWTAuthentication(JWTAuthentication):
use_rbac_permissions = True
Loading