Add current logical data model
This commit is contained in:
Eero Bragge 2021-06-03 14:06:43 +00:00 коммит произвёл GitHub
Родитель fbb584ffab
Коммит d6f1a1740d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
7 изменённых файлов: 358 добавлений и 0 удалений

Двоичные данные
docs/assets/logical-data-model-1.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 64 KiB

Двоичные данные
docs/assets/logical-data-model-2.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 38 KiB

Двоичные данные
docs/assets/logical-data-model-3.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 67 KiB

Просмотреть файл

@ -0,0 +1,81 @@
# Logical data model
![Resource](./assets/logical-data-model-1.png)
## Resource
| Key | Value description |
| --- | ----------------- |
| `id` | A unique resource id. |
| `parentId` | The parent resource id. |
| `specificationVersion` | Resource specification version. |
| `resourceVersion` | Resource version. |
| `title` | The name (title) of the resource. Rendered in the UI. |
| `description` | The description of the resource. Rendered in the UI. |
| `resourceType` | Resource type. Workspace or Service. |
| `status` | Resource status. |
| `isDeleted` | Is the resource marked for deletion. |
| `properties` | Resource properties list.|
| `etag` | The resource etag. |
### Property
| Key | Value description |
| --- | ----------------- |
| `title` | The name (title) of the variable. Rendered in the UI. |
| `description` | The description of the variable. Rendered in the UI. |
| `propertyType` | The type of the variable value. |
| `default` | *(Optional)* The default value of the variable. |
| `required` | *(Optional)* A boolean value defining whether a value is required or not. `true` by default. |
| `mutable` | *(Optional)* A boolean value defining whether the variable can be changed by the end-user or not. `true` by default. |
| `value` | The variable value (when populated in the state store). |
## Resource assignment
![ResourceAssignment](./assets/logical-data-model-2.png)
| Key | Value description |
| --- | ----------------- |
| `id` | A unique assignment id. |
| `userId` | User id. |
| `resourceId` | Resource id. |
| `permissions` | Granted permissions. |
### Permissions
| Key | Value description |
| --- | ----------------- |
| `WorkspaceWrite` | Permission to write a workspace. |
| `WorkspaceRead` | Permission to read a workspace. |
| `WorkspaceDelete` | Permission to delete a workspace. |
| `WorkspaceCreateService` | Permission to create a service. |
| `WorkspaceUserRead` | Permission to read workspace users. |
| `WorkspaceUserManage` | Permission to manage workspace users. |
| `ServiceRead` | Permission to read a service. |
| `ServiceWrite` | Permission to write a service. |
| `ServiceDelete` | Permission to delete a service. |
## Operation
![Operation](./assets/logical-data-model-3.png)
| Key | Value description |
| --- | ----------------- |
| `id` | A unique operation id. |
| `operationType` | Operation type (Create, Update, Delete). |
| `status` | Operation status. |
| `resourceId` | Resource id. |
| `resourceVersion` | Resource version. |
| `createdAt` | Time when operation was created. |
| `lastUpdatedAt` | Time when operation was last updated. |
| `events` | Operation events. |
### Operation event
| Key | Value description |
| --- | ----------------- |
| `timeStamp` | Event time stamp. |
| `message` | Event message. |
| `from` | Event originator. |
| `severity` | Severity of event. |
| `eventType` | Event type. |

108
docs/schemas/operation.json Normal file
Просмотреть файл

@ -0,0 +1,108 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Operation id.",
"format": "uuid"
},
"operationType": {
"type": "string",
"description": "Operation type.",
"enum": [
"Create",
"Update",
"Delete"
]
},
"status": {
"type": "string",
"description": "Operation status.",
"enum": [
"Pending",
"Processing",
"Succeeded",
"Failed"
]
},
"resourceId": {
"type": "string",
"description": "Resource id.",
"format": "uuid"
},
"resourceVersion": {
"type": "string",
"description": "Resource version."
},
"createdAt": {
"type": "string",
"description": "Operation creation time."
},
"lastUpdatedAt": {
"type": "string",
"description": "Operation last update time."
},
"events": {
"type": "array",
"description": "Operation event.",
"items": {"$ref": "#/$defs/event" }
},
"etag": {
"type": "string",
"description": "ETag."
}
},
"required": [
"id",
"operationType",
"status",
"resourceId",
"resourceVersion",
"createdAt",
"lastUpdatedAt",
"events",
"etag"
],
"additionalProperties": false,
"$defs": {
"event": {
"type": "object",
"properties": {
"timeStamp": {
"type": "string",
"description": "Event timestamp."
},
"description": {
"type": "string",
"description": "Event message."
},
"from": {
"type": "string",
"description": "Event originator."
},
"severity": {
"type": "string",
"description": "Event classification.",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"eventType": {
"type": "string",
"description": "Event type."
}
},
"required": [
"timeStamp",
"message",
"from",
"severity",
"eventType"
]
}
}
}

Просмотреть файл

@ -0,0 +1,49 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Assignment id."
},
"userId": {
"type": "string",
"description": "User id.",
"format": "uuid"
},
"ResourceId": {
"type": "string",
"description": "Resource id.",
"format": "uuid"
},
"permissions": {
"type": "array",
"items": {
"type": "string",
"enum": [
"WorkspaceWrite",
"WorkspaceRead",
"WorkspaceDelete",
"WorkspaceCreateService",
"WorkspaceUserRead",
"WorkspaceUserManage",
"ServiceRead",
"ServiceWrite",
"ServiceDelete"
]
}
},
"etag": {
"type": "string",
"description": "ETag."
}
},
"required": [
"id",
"userId",
"resourceId",
"permissions",
"etag"
],
"additionalProperties": false
}

120
docs/schemas/resource.json Normal file
Просмотреть файл

@ -0,0 +1,120 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Resource id.",
"format": "uuid"
},
"parentId": {
"type": "string",
"description": "Parent resource id.",
"format": "uuid"
},
"specificationVersion": {
"type": "string",
"description": "Resource specification version."
},
"ResourceVersion": {
"type": "string",
"description": "Resource version."
},
"title": {
"type": "string",
"description": "Resource title.",
"maxLength": 120
},
"description": {
"type": "string",
"description": "Resource description.",
"maxLength": 120
},
"resourceType": {
"type": "string",
"description": "Resource type.",
"enum": ["Workspace", "Service"]
},
"status": {
"type": "string",
"description": "Resource status.",
"enum": [
"NotDeployed",
"Deploying",
"Deployed",
"Deleting",
"Deleted"
]
},
"isDeleted": {
"type": "boolean",
"description": "Is the resource marked for deletion?"
},
"properties": {
"type": "array",
"description": "Resource properties.",
"items": {"$ref": "#/$defs/property" }
},
"etag": {
"type": "string",
"description": "ETag."
}
},
"required": [
"id",
"parentId",
"specificationVersion",
"resourceVersion",
"title",
"description",
"resourceType",
"status",
"isDeleted",
"properties",
"etag"
],
"additionalProperties": false,
"$defs": {
"property": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Property title."
},
"description": {
"type": "string",
"description": "Property description."
},
"propertyType": {
"type": "string",
"description": "Property type."
},
"default": {
"type": "string",
"description": "Property default value."
},
"required": {
"type": "boolean",
"description": "Is property required?"
},
"mutable": {
"type": "boolean",
"description": "Is value mutable?"
},
"value": {
"type": "string",
"description": "Property value."
}
},
"required": [
"title",
"description",
"propertyType",
"required",
"mutable",
"value"
]
}
}
}