oam-dev / spec

Open Application Model (OAM).
https://oam.dev
Other
3.04k stars 246 forks source link

Request for Entrypoint to be included in the Spec #422

Open BBialeckiACR opened 3 years ago

BBialeckiACR commented 3 years ago

Entrypoint - Entrypoints describe how data is accepted and results are emitted. Entrypoints and their security are defined as part of a Components Workload. For DICOM Use Case DimseInEntrypoint, DimseOutEntrypoint, WadoRsInEntrypoint, StowRsInEntrypoint, StowRsOutEntrypoint, OperatorInEntrypoint, OperatorOutEntrypoint or DicomRestApiEntrypoint are reserved names with standardized schemas defined within this standard. These are also defined within the Standard Scope definitions of OAM. Definitions at this level are made with default values. Mutability is defined when the entrypoint is applied to a component. For Example:

DICOM DIMSE In Entrypoint Schematic

apiVersion: standard.oam.dev/v1alpha2
kind: EntrypointDefintion
metadata:
  name: DimseInEntrypoint
spec:
  definitionRef:
    name: schema.dimseinentrypoint.oam.dev

image image

Example DIMSE In Entrypoint Definition

apiVersion: standard.oam.dev/v1alpha2
kind: DimseInEntrypoint
metadata:
  name: example-app-dimse-in-entrypoint
spec:
  inputAet: MYAPPAET
  inputPort: 11112
  inputHost: 192.168.10.10
  security: 
    type: tls
    properties:
      version: 1.2
      clientCertCn: client.hospital.org
      serverCertCn: server.app.com
      cipherSuite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Usage in Component Spec image image

Example Component with mutable parameters for Entrypoint

apiVersion: core.oam.dev/v2
kind: Component
metadata:
    name: dimseserver
spec:
    type: DicomServerWorkload
    settings:
        livenessProbe:
            httpGet:
                port: 8080
                path: /live
        readinessProbe:
            httpGet:
                port: 8080
                path: /ready        
        logAccess:
            httpGet:
                port: 8080
                path: /log
                httpHeaders:
                    - name: systemToken
                      value: sampleheadertoken
        env:
        - name: inputHost
          value: samplehost.domain.com
        - name: ip
          value: 10.20.30.40
    entrypoints:
        - entrypointRef:
              apiVersion: standard.oam.dev/v1alpha2
              kind: DimseInEntrypoint
              name: example-app-dimse-in-entrypoint
    parameters:
        - name: inputHost
          description: Input Host Name
          fieldPaths: 
          - "spec.settings.env[0].value"
          - "spec.entrypoints[0].spec.inputHost.value"
          required: false
        - name: ip
          description: IP
          fieldPaths: 
          - "spec.settings.env[1].value"
          required: false
        - name: inputAet
          description: Input AET
          fieldPaths:
          - "spec.entrypoints[0].spec.inputAet.value"
          required: false
        - name: inputPort
          description: Input Port
          fieldPaths:
          - "spec.entrypoints[0].spec.inputPort.value"
          required: false 
BBialeckiACR commented 3 years ago

As an update to this request, Entrypoints describe how data is accepted and results are emitted. Entrypoints and their security are defined separately as resources and applied to a Components Workload in the Application Configuration. Entrypoints are requested to have their own schema definitions:

Attributes:

apiVersion - A string that identifies the version of the schema the resource object should have. kind - Entrypoint or Entrypoint Definition metadata - Information about the resource. The name used here must be unique to the Platform and will be used when building the Application Configuration. spec - The settings to be used to define resource using the resource schema. Those setting which will be mutable or those required at the time of application invocation or instantiation are also defined here.

Entrypoint Spec

settings - properties defined in the schema security - security properties defined in the schema parameters - those properties in settings and security that are mutable or require user input

Example Definition:

apiVersion: standard.oam.dev/v1alpha2
kind: EntrypointDefintion
metadata:
  name: cStoreEntrypoint
spec:
  aet:
    description: This is the Called AET (Application Entity Title) of the Entrypoint.  It is the intended acceptor of the service request.
    type: string
  port:
    description: This is the port which will be used to initiate the DIMSE service request.
    type: integer
  host:
    description: The fully qualified domain name or IP address of the SCP (Service Class Provider).
    type: string