remove first version of service broker
This commit is contained in:
parent
9d114fff77
commit
8c885b2b24
12 changed files with 0 additions and 226 deletions
|
@ -1,3 +0,0 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
|
|
@ -1,6 +0,0 @@
|
||||||
from django.apps import AppConfig
|
|
||||||
|
|
||||||
|
|
||||||
class ServicebrokerConfig(AppConfig):
|
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
|
||||||
name = "hub.servicebroker"
|
|
|
@ -1,34 +0,0 @@
|
||||||
from django.conf import settings
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from rest_framework import authentication
|
|
||||||
from rest_framework import exceptions
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceBrokerAuthentication(authentication.BaseAuthentication):
|
|
||||||
def authenticate(self, request):
|
|
||||||
auth = request.META.get("HTTP_AUTHORIZATION")
|
|
||||||
if not auth:
|
|
||||||
return None
|
|
||||||
|
|
||||||
try:
|
|
||||||
import base64
|
|
||||||
|
|
||||||
auth_type, auth_string = auth.split(" ")
|
|
||||||
if auth_type.lower() != "basic":
|
|
||||||
return None
|
|
||||||
|
|
||||||
decoded = base64.b64decode(auth_string).decode("utf-8")
|
|
||||||
username, password = decoded.split(":")
|
|
||||||
|
|
||||||
if (
|
|
||||||
username == settings.BROKER_USERNAME
|
|
||||||
and password == settings.BROKER_PASSWORD
|
|
||||||
):
|
|
||||||
# Use a dummy user for authentication
|
|
||||||
user = User(username=username, is_staff=True)
|
|
||||||
return (user, None)
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
raise exceptions.AuthenticationFailed("Invalid credentials")
|
|
||||||
|
|
||||||
raise exceptions.AuthenticationFailed("Invalid credentials")
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
# Create your models here.
|
|
|
@ -1,51 +0,0 @@
|
||||||
from rest_framework import serializers
|
|
||||||
from hub.services.models import Service, CloudProvider
|
|
||||||
|
|
||||||
|
|
||||||
class ServicePlanSerializer(serializers.Serializer):
|
|
||||||
id = serializers.CharField()
|
|
||||||
name = serializers.CharField()
|
|
||||||
description = serializers.CharField()
|
|
||||||
metadata = serializers.DictField()
|
|
||||||
free = serializers.BooleanField(default=False)
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceSerializer(serializers.Serializer):
|
|
||||||
id = serializers.CharField()
|
|
||||||
name = serializers.CharField()
|
|
||||||
description = serializers.CharField()
|
|
||||||
bindable = serializers.BooleanField(default=True)
|
|
||||||
plans = ServicePlanSerializer(many=True)
|
|
||||||
metadata = serializers.DictField()
|
|
||||||
tags = serializers.ListField(child=serializers.CharField())
|
|
||||||
|
|
||||||
|
|
||||||
class CatalogSerializer(serializers.Serializer):
|
|
||||||
services = ServiceSerializer(many=True)
|
|
||||||
|
|
||||||
|
|
||||||
class ProvisionRequestSerializer(serializers.Serializer):
|
|
||||||
service_id = serializers.CharField()
|
|
||||||
plan_id = serializers.CharField()
|
|
||||||
organization_guid = serializers.CharField(required=False)
|
|
||||||
space_guid = serializers.CharField(required=False)
|
|
||||||
parameters = serializers.DictField(required=False)
|
|
||||||
|
|
||||||
|
|
||||||
class ProvisionResponseSerializer(serializers.Serializer):
|
|
||||||
dashboard_url = serializers.URLField(required=False)
|
|
||||||
operation = serializers.CharField(required=False, allow_null=True)
|
|
||||||
|
|
||||||
|
|
||||||
class BindingRequestSerializer(serializers.Serializer):
|
|
||||||
service_id = serializers.CharField()
|
|
||||||
plan_id = serializers.CharField()
|
|
||||||
bind_resource = serializers.DictField(required=False)
|
|
||||||
parameters = serializers.DictField(required=False)
|
|
||||||
|
|
||||||
|
|
||||||
class BindingResponseSerializer(serializers.Serializer):
|
|
||||||
credentials = serializers.DictField()
|
|
||||||
syslog_drain_url = serializers.URLField(required=False, allow_null=True)
|
|
||||||
route_service_url = serializers.URLField(required=False, allow_null=True)
|
|
||||||
volume_mounts = serializers.ListField(required=False)
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
|
@ -1,18 +0,0 @@
|
||||||
from django.urls import path
|
|
||||||
from . import views
|
|
||||||
|
|
||||||
app_name = "servicebroker"
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
path("v2/catalog", views.CatalogView.as_view(), name="catalog"),
|
|
||||||
path(
|
|
||||||
"v2/service_instances/<str:instance_id>",
|
|
||||||
views.ProvisioningView.as_view(),
|
|
||||||
name="provisioning",
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
"v2/service_instances/<str:instance_id>/service_bindings/<str:binding_id>",
|
|
||||||
views.BindingView.as_view(),
|
|
||||||
name="binding",
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -1,99 +0,0 @@
|
||||||
from rest_framework.views import APIView
|
|
||||||
from rest_framework.response import Response
|
|
||||||
from rest_framework import status
|
|
||||||
from django.conf import settings
|
|
||||||
from .authentication import ServiceBrokerAuthentication
|
|
||||||
from .serializers import (
|
|
||||||
CatalogSerializer,
|
|
||||||
ProvisionRequestSerializer,
|
|
||||||
ProvisionResponseSerializer,
|
|
||||||
BindingRequestSerializer,
|
|
||||||
BindingResponseSerializer,
|
|
||||||
)
|
|
||||||
from hub.services.models import Service
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceBrokerView(APIView):
|
|
||||||
authentication_classes = [ServiceBrokerAuthentication]
|
|
||||||
|
|
||||||
def get_broker_version(self, request):
|
|
||||||
return request.META.get("HTTP_X_BROKER_API_VERSION", "2.14")
|
|
||||||
|
|
||||||
|
|
||||||
class CatalogView(ServiceBrokerView):
|
|
||||||
def get(self, request):
|
|
||||||
services = []
|
|
||||||
marketplace_services = Service.objects.all().prefetch_related(
|
|
||||||
"cloud_provider", "categories"
|
|
||||||
)
|
|
||||||
|
|
||||||
for service in marketplace_services:
|
|
||||||
plans = []
|
|
||||||
|
|
||||||
service_data = {
|
|
||||||
"id": f"service-{service.id}",
|
|
||||||
"name": service.name,
|
|
||||||
"description": service.description,
|
|
||||||
"bindable": True,
|
|
||||||
"plans": plans,
|
|
||||||
"metadata": {
|
|
||||||
"displayName": service.name,
|
|
||||||
"provider": service.cloud_provider.name,
|
|
||||||
"imageUrl": service.logo.url if service.logo else None,
|
|
||||||
"categories": [cat.name for cat in service.categories.all()],
|
|
||||||
},
|
|
||||||
"tags": [cat.name for cat in service.categories.all()],
|
|
||||||
}
|
|
||||||
services.append(service_data)
|
|
||||||
|
|
||||||
catalog = {"services": services}
|
|
||||||
serializer = CatalogSerializer(data=catalog)
|
|
||||||
serializer.is_valid(raise_exception=True)
|
|
||||||
return Response(serializer.data)
|
|
||||||
|
|
||||||
|
|
||||||
class ProvisioningView(ServiceBrokerView):
|
|
||||||
def put(self, request, instance_id):
|
|
||||||
serializer = ProvisionRequestSerializer(data=request.data)
|
|
||||||
serializer.is_valid(raise_exception=True)
|
|
||||||
|
|
||||||
service_id = serializer.validated_data["service_id"]
|
|
||||||
marketplace_service_id = service_id.replace("service-", "")
|
|
||||||
service = Service.objects.get(id=marketplace_service_id)
|
|
||||||
|
|
||||||
response_data = {
|
|
||||||
"dashboard_url": f"{settings.BASE_URL}/service/{service.slug}/",
|
|
||||||
"operation": None,
|
|
||||||
}
|
|
||||||
|
|
||||||
response_serializer = ProvisionResponseSerializer(data=response_data)
|
|
||||||
response_serializer.is_valid(raise_exception=True)
|
|
||||||
return Response(response_serializer.data, status=status.HTTP_201_CREATED)
|
|
||||||
|
|
||||||
def delete(self, request, instance_id):
|
|
||||||
return Response(status=status.HTTP_200_OK)
|
|
||||||
|
|
||||||
|
|
||||||
class BindingView(ServiceBrokerView):
|
|
||||||
def put(self, request, instance_id, binding_id):
|
|
||||||
serializer = BindingRequestSerializer(data=request.data)
|
|
||||||
serializer.is_valid(raise_exception=True)
|
|
||||||
|
|
||||||
service_id = serializer.validated_data["service_id"]
|
|
||||||
marketplace_service_id = service_id.replace("service-", "")
|
|
||||||
service = Service.objects.get(id=marketplace_service_id)
|
|
||||||
|
|
||||||
credentials = {
|
|
||||||
"service_name": service.name,
|
|
||||||
"provider": service.cloud_provider.name,
|
|
||||||
"service_url": f"{settings.BASE_URL}/service/{service.slug}/",
|
|
||||||
}
|
|
||||||
|
|
||||||
response_data = {"credentials": credentials}
|
|
||||||
|
|
||||||
response_serializer = BindingResponseSerializer(data=response_data)
|
|
||||||
response_serializer.is_valid(raise_exception=True)
|
|
||||||
return Response(response_serializer.data, status=status.HTTP_201_CREATED)
|
|
||||||
|
|
||||||
def delete(self, request, instance_id, binding_id):
|
|
||||||
return Response(status=status.HTTP_200_OK)
|
|
|
@ -60,7 +60,6 @@ INSTALLED_APPS = [
|
||||||
"schema_viewer",
|
"schema_viewer",
|
||||||
# local
|
# local
|
||||||
"hub.services",
|
"hub.services",
|
||||||
"hub.servicebroker",
|
|
||||||
]
|
]
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
INSTALLED_APPS += ["django_browser_reload"]
|
INSTALLED_APPS += ["django_browser_reload"]
|
||||||
|
@ -184,13 +183,6 @@ BROKER_USERNAME = env.str("BROKER_USERNAME", default="broker")
|
||||||
BROKER_PASSWORD = env.str("BROKER_PASSWORD", default="secret")
|
BROKER_PASSWORD = env.str("BROKER_PASSWORD", default="secret")
|
||||||
BASE_URL = "https://your-domain.com"
|
BASE_URL = "https://your-domain.com"
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
|
||||||
"DEFAULT_AUTHENTICATION_CLASSES": [
|
|
||||||
"hub.servicebroker.authentication.ServiceBrokerAuthentication",
|
|
||||||
],
|
|
||||||
"UNAUTHENTICATED_USER": None,
|
|
||||||
}
|
|
||||||
|
|
||||||
SCHEMA_VIEWER = {
|
SCHEMA_VIEWER = {
|
||||||
"apps": [
|
"apps": [
|
||||||
"services",
|
"services",
|
||||||
|
|
|
@ -6,7 +6,6 @@ from django.urls import path, include
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path("", include("hub.services.urls")),
|
path("", include("hub.services.urls")),
|
||||||
path("broker/", include("hub.servicebroker.urls")),
|
|
||||||
]
|
]
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
urlpatterns += [
|
urlpatterns += [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue