Skip to content

Commit

Permalink
Support for configuration service per data provider
Browse files Browse the repository at this point in the history
This addition enables clients to create derived data providers from an
existing data provider.

This change also includes updates the "DataProvider" descriptor to
include optional parent ID and configuration object to be included
in derived data providers.

Signed-off-by: Bernd Hufmann <[email protected]>
  • Loading branch information
bhufmann committed Sep 10, 2024
1 parent c9a7ebc commit 2b7087c
Show file tree
Hide file tree
Showing 2 changed files with 520 additions and 116 deletions.
318 changes: 260 additions & 58 deletions API-proposed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ tags:
- name: Identifier
description: Retrieve information about the server and the system it is running
on.
- name: Output Configurations
description: Manage configuration source types and configurations for given outputs.
- name: Styles
description: Retrieve styles for different outputs.
- name: TimeGraph
Expand Down Expand Up @@ -307,6 +309,140 @@ paths:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}:
get:
tags:
- Experiments
summary: Get the output descriptor for this experiment and output
operationId: getProvider
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
responses:
"200":
description: Returns the output provider descriptor
content:
application/json:
schema:
$ref: '#/components/schemas/DataProvider'
"404":
description: Experiment or output provider not found
content:
application/json:
schema:
type: string
post:
tags:
- Output Configurations
summary: Get the list of outputs for this configuration
operationId: createDataProvider
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
- name: typeId
in: path
description: The configuration source type ID
required: true
schema:
type: string
requestBody:
description: Query parameters to create a configuration instance. Provide
all query parameter keys and values as specified in the corresponding configuration
source type.
content:
application/json:
schema:
$ref: '#/components/schemas/OutputConfigurationQueryParameters'
required: true
responses:
"200":
description: Returns a list of output provider descriptors
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DataProvider'
"400":
description: Invalid query parameters
content:
application/json:
schema:
type: string
"404":
description: No such configuration source type or configuration instance
content:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}/{derivedOutputId}:
delete:
tags:
- Output Configurations
summary: Delete a configuration instance of a given configuration source type
operationId: deleteDerivedOutput
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
- name: derivedOutputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
responses:
"200":
description: The derived data provider (and it's configuration) was successfully
deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Configuration'
"404":
description: No such configuration source type or configuration instance
content:
application/json:
schema:
type: string
"500":
description: Internal trace-server error while trying to delete output
content:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}/annotations:
get:
tags:
Expand Down Expand Up @@ -543,6 +679,82 @@ paths:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}/configTypes/{typeId}:
get:
tags:
- Output Configurations
summary: Get a single configuration source type defined on the server for a
given data provider and experiment.
operationId: getConfigurationType_1
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
- name: typeId
in: path
description: The configuration source type ID
required: true
schema:
type: string
responses:
"200":
description: Returns a single configuration source type
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationSourceType'
"404":
description: No such configuration source type or configuration instance
content:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}/configTypes:
get:
tags:
- Output Configurations
summary: Get the list of configuration source types defined on the server for
a given output and experiment
operationId: getConfigurationTypes_1
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
responses:
"200":
description: Returns a list of configuration source types
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ConfigurationSourceType'
"404":
description: Experiment or output provider not found
content:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/data/{outputId}/tree:
post:
tags:
Expand Down Expand Up @@ -715,39 +927,6 @@ paths:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs/{outputId}:
get:
tags:
- Experiments
summary: Get the output descriptor for this experiment and output
operationId: getProvider
parameters:
- name: expUUID
in: path
description: UUID of the experiment to query
required: true
schema:
type: string
format: uuid
- name: outputId
in: path
description: ID of the output provider to query
required: true
schema:
type: string
responses:
"200":
description: Returns the output provider descriptor
content:
application/json:
schema:
$ref: '#/components/schemas/DataProvider'
"404":
description: Experiment or output provider not found
content:
application/json:
schema:
type: string
/experiments/{expUUID}/outputs:
get:
tags:
Expand Down Expand Up @@ -2206,6 +2385,54 @@ components:
description: "Parameters as JSON object as specified in the schema of the\
\ corresponding ConfigurationTypeDescriptor or as a Map<String, Object>.\
\ Use key `path` for file URI string values."
DataProvider:
type: object
properties:
parentId:
type: string
description: Optional parent Id for grouping purposes for example of derived
data providers.
creationConfiguration:
$ref: '#/components/schemas/Configuration'
description:
type: string
description: Describes the output provider's features
name:
type: string
description: The human readable name
id:
type: string
description: The output provider's ID
type:
type: string
description: "Type of data returned by this output. Serves as a hint to\
\ determine what kind of view should be used for this output (ex. XY,\
\ Time Graph, Table, etc..). Providers of type TREE_TIME_XY and TIME_GRAPH\
\ can be grouped under the same time axis. Providers of type DATA_TREE\
\ only provide a tree with columns and don't have any XY nor time graph\
\ data associated with it."
enum:
- TABLE
- TREE_TIME_XY
- TIME_GRAPH
- DATA_TREE
OutputConfigurationQueryParameters:
required:
- parameters
- typeId
type: object
allOf:
- $ref: '#/components/schemas/ConfigurationQueryParameters'
- type: object
properties:
typeId:
type: string
description: The configuration source type ID.
parameters:
type: object
description: "Parameters as JSON object as specified in the schema of\
\ the corresponding ConfigurationTypeDescriptor or as a Map<String,\
\ Object>. Use key `path` for file URI string values."
AnnotationCategoriesModel:
type: object
properties:
Expand Down Expand Up @@ -2565,31 +2792,6 @@ components:
type: array
items:
$ref: '#/components/schemas/MarkerSet'
DataProvider:
type: object
properties:
name:
type: string
description: The human readable name
id:
type: string
description: The output provider's ID
type:
type: string
description: "Type of data returned by this output. Serves as a hint to\
\ determine what kind of view should be used for this output (ex. XY,\
\ Time Graph, Table, etc..). Providers of type TREE_TIME_XY and TIME_GRAPH\
\ can be grouped under the same time axis. Providers of type DATA_TREE\
\ only provide a tree with columns and don't have any XY nor time graph\
\ data associated with it."
enum:
- TABLE
- TREE_TIME_XY
- TIME_GRAPH
- DATA_TREE
description:
type: string
description: Describes the output provider's features
TimeGraphModel:
type: object
properties:
Expand Down
Loading

0 comments on commit 2b7087c

Please sign in to comment.