Commit 006a3f47 authored by Laskaratos Dimitris's avatar Laskaratos Dimitris
Browse files

Added deployment file

parent f2ede60a
Loading
Loading
Loading
Loading
Loading

deploy/oeg.yaml

0 → 100644
+179 −0
Original line number Diff line number Diff line
---
kind: PersistentVolume
apiVersion: v1
metadata:
  name: mongodb-oeg-pv-volume  # Sets PV's name
  labels:
    type: local  # Sets PV's type to local
    app: oegmongo
spec:
  storageClassName: manual
  capacity:
    storage: 50Mi # Sets PV Volume
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data/mongodb_oeg"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: mongo-oeg
  name: mongo-oeg
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Mi
status: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.26.0 (40646f47)
  creationTimestamp: null
  labels:
    io.kompose.service: oegmongo
  name: oegmongo
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: oegmongo
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert
        kompose.version: 1.26.0 (40646f47)
      creationTimestamp: null
      labels:
        #io.kompose.network/netEMPkub: "true"
        io.kompose.service: oegmongo
    spec:
      containers:
        - image: mongo
          name: oegmongo
          ports:
            - containerPort: 27017
          resources: {}
          volumeMounts:
            - mountPath: /data/db
              name: mongo-db
      restartPolicy: Always
      volumes:
        - name: mongo-db
          persistentVolumeClaim:
            claimName: mongo-oeg
status: {}
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.26.0 (40646f47)
  creationTimestamp: null
  labels:
    io.kompose.service: oegmongo
  name: oegmongo
spec:
  type: ClusterIP
  ports:
    - name: "27017"
      port: 27017
      targetPort: 27017
  selector:
    io.kompose.service: oegmongo
status:
  loadBalancer: {}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.26.0 (40646f47)
  creationTimestamp: null
  labels:
    io.kompose.service: oegcontroller
  name: oegcontroller
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: oegcontroller
  strategy: {}
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert
        kompose.version: 1.26.0 (40646f47)
      creationTimestamp: null
      labels:
        io.kompose.service: oegcontroller
    spec:
      containers:
        - env:
            - name: MONGO_URI
              value: mongodb://oegmongo:27017
            - name: SRM_HOST
              value: http://srm:8080/srm/1.0.0
            - name: FEDERATION_MANAGER_HOST
              value: http://federation-manager.federation-manager.svc.cluster.local:8989/operatorplatform/federation/v1
            - name: PARTNER_API_ROOT
              value: http://10.8.0.1:31002
            - name: TOKEN_ENDPOINT
              value: http://federation-manager.federation-manager.svc.cluster.local:8080/realms/federation/protocol/openid-connect/token
          image: ghcr.io/sunriseopenoperatorplatform/oeg/oeg:1.0.1
          name: oegcontroller
          ports:
            - containerPort: 8080
          resources: {}
          imagePullPolicy: Always
      restartPolicy: Always

status: {}
---
apiVersion: v1
kind: Service
metadata:
  name: oeg
  namespace: sunrise6g
spec:
  type: ClusterIP
  selector:
    io.kompose.service: oegcontroller
  ports:
    - name: http
      port: 80
      targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: oegcontroller-ingress
  namespace: sunrise6g
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
    # traefik.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: traefik
  rules:
    - host: isiath.duckdns.org
      http:
        paths:
          - path: /oeg
            pathType: Prefix
            backend:
              service:
                name: oeg
                port:
                  number: 80
 No newline at end of file

docker-compose.yaml

deleted100644 → 0
+0 −20
Original line number Diff line number Diff line
version: '3.1'

services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example

  # cloud-management-api:
  #   image: cloud-management-api
  #   restart: always
  #   ports:
  #     - 8080:8080
  #   environment:
  #     ME_CONFIG_MONGODB_ADMINUSERNAME: root
  #     ME_CONFIG_MONGODB_ADMINPASSWORD: example
  #     ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
  #     ME_CONFIG_BASICAUTH: false
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ class Configuration(BaseSettings):
    PI_EDGE_PASSWORD: str = os.getenv("PI_EDGE_PASSWORD")
    HTTP_PROXY: str = os.getenv("HTTP_PROXY")
    FEDERATION_MANAGER_HOST=os.getenv("FEDERATION_MANAGER_HOST")
    TOKEN_ENDPOINT = os.getenv('TOKEN_ENDPOINT')
    PARTNER_API_ROOT = os.getenv('PARTNER_API_ROOT')


config = Configuration()
+4 −4
Original line number Diff line number Diff line
@@ -94,13 +94,13 @@ def create_app_instance():
       logger.debug(f"Request body: {body}")
       
       app_id = body.get("appId")
       edge_zone_id = body.get("edgeCloudZoneId")
       app_zones = body.get("appZones")
    #    k8s_ref = body.get("kubernetesClusterRef")
       
       if not app_id or not edge_zone_id :
       if not app_id or not app_zones :
           return jsonify({"error": "Missing required fields: appId, edgeCloudZoneId, or kubernetesCLusterRef"}), 400
       
       local_zone = get_zone(edge_zone_id)
       local_zone = get_zone(app_zones[0].get('EdgeCloudZone').get('edgeCloudZoneId'))
       if not local_zone:
           # TODO: apply federation logic
           return 'Zone belongs to federated partner OP. Switching to Federation Manager.'
+36 −12
Original line number Diff line number Diff line
@@ -4,9 +4,19 @@ import connexion
from requests.exceptions import Timeout, ConnectionError
from edge_cloud_management_api.managers.log_manager import logger
import requests
from edge_cloud_management_api.configs.env_config import config
from edge_cloud_management_api.services.storage_service import insert_federation, get_fed, get_all_feds

from edge_cloud_management_api.services.federation_services import FederationManagerClientFactory

token_headers = {'Authorization': 'Basic b3JpZ2luYXRpbmctb3AtMTpkZDd2TndGcWpOcFl3YWdobEV3TWJ3MTBnMGtsV0RIYg==', 
                 'Content-Type': 'application/x-www-form-urlencoded'
                 }
data = {'grant_type': 'client_credentials',
        'scope': 'fed-mgmt'}
TOKEN_ENDPOINT = config.TOKEN_ENDPOINT


# Factory pattern
factory = FederationManagerClientFactory()
federation_client = factory.create_federation_client()
@@ -16,27 +26,40 @@ def create_federation():
    """POST /partner - Create federation with partner OP."""

    body = request.get_json()
    token = __get_token()
    token = requests.post(TOKEN_ENDPOINT, headers=token_headers, data=data).json().get('access_token')
    response, code = federation_client.post_partner(body, token)
    fed = {'_id': response.get('federationContextId'), 'token': token}
    if code==200:
        insert_federation(fed)
    return response, code

def get_federation(federationContextId):
    """GET /{federationContextId}/partner - Get federation info."""

    token = __get_token()
    fed = get_fed(federationContextId)
    if not fed:
        return 'Federation not found', 404
    else:
        token = fed.get('token')
        response, code = federation_client.get_partner(federationContextId, token)
        return response, code

def delete_federation(federationContextId):
    """DELETE /{federationContextId}/partner - Delete federation."""

    token = __get_token()
    fed = get_fed(federationContextId)
    if not fed:
        return 'Federation not found', 404
    else:
        token = fed.get('token')
        response, code = federation_client.delete_partner(federationContextId, token)
        return response, code

def get_federation_context_ids():
    """GET /fed-context-id - Fetch federationContextId(s)."""
    token = __get_token()
    feds = get_all_feds()
    if not feds:
        return 'Federation not found', 404
    else:
        token = feds[len(feds)-1].get('token')
        response, code = federation_client.get_federation_context_ids(token)
        return response, code
  
@@ -85,5 +108,6 @@ def remove_zone_sync(federationContextId, zoneId):
def __get_token():
    bearer = connexion.request.headers['Authorization']
    token = bearer.split()[1]
    # __token = requests.post(TOKEN_ENDPOINT, headers=token_headers, data=data).json().get('access_token')
    return token
Loading