Added JSON-Schema Form Builder for connection configs (#3964)

* Added Form Builder for connection configs
This commit is contained in:
darth-coder00 2022-04-13 16:57:33 +05:30 committed by GitHub
parent be836e5404
commit 534e476840
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 3144 additions and 1127 deletions

View File

@ -23,12 +23,12 @@
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": "true"
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": "true"
"default": true
}
}
}

View File

@ -12,6 +12,7 @@
"directory": "openmetadata-ui/src/main/resources/ui"
},
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^9.0.9",
"@auth0/auth0-react": "^1.9.0",
"@azure/msal-browser": "^2.22.0",
"@azure/msal-react": "^1.3.0",
@ -21,6 +22,7 @@
"@fortawesome/fontawesome-svg-core": "^1.3.0",
"@fortawesome/free-solid-svg-icons": "^6.0.0",
"@fortawesome/react-fontawesome": "^0.1.17",
"@rjsf/core": "^4.1.1",
"@okta/okta-auth-js": "^6.4.0",
"@okta/okta-react": "^6.4.3",
"@toast-ui/react-editor": "^3.1.3",
@ -103,7 +105,8 @@
"build-check": "yarn run lint",
"build-test": "yarn run test",
"commit-check": "yarn run pretty && yarn run build-check && yarn run build",
"json2ts": "./json2ts.sh ../../../../../catalog-rest-service/src/main/resources/json/schema ./src/generated && yarn run lint:fix"
"json2ts": "./json2ts.sh ../../../../../catalog-rest-service/src/main/resources/json/schema ./src/generated && yarn run lint:fix",
"parse-conn-schema": "node parseConnectionSchema"
},
"browserslist": {
"production": [

View File

@ -0,0 +1,59 @@
/* eslint-disable */
const $RefParser = require('@apidevtools/json-schema-ref-parser');
const path = require('path');
const fs = require('fs');
const destDir = 'src/jsons/connectionSchemas/connections';
const srcDir =
'../../../../../catalog-rest-service/src/main/resources/json/schema/entity/services/connections';
const globalParserOptions = {
continueOnError: true,
dereference: {
circular: true,
},
};
async function parseSchema(filePath, destPath) {
try {
const parser = new $RefParser(globalParserOptions);
const schema = await parser.parse(filePath);
const api = await parser.bundle(schema);
const dirname = path.dirname(destPath);
if (!fs.existsSync(dirname)) {
try {
fs.mkdirSync(dirname, { recursive: true });
} catch (err) {
console.log(err);
}
}
fs.writeFileSync(destPath, JSON.stringify(api, null, 2));
} catch (err) {
console.log(err);
}
}
function traverseDirectory(Directory) {
fs.readdirSync(Directory).forEach((File) => {
const Absolute = path.join(Directory, File);
if (fs.statSync(Absolute).isDirectory()) {
return traverseDirectory(Absolute);
} else {
const name = Absolute.replace(srcDir, destDir);
return parseSchema(Absolute, name);
}
});
}
function main() {
try {
fs.rmdirSync(destDir, { recursive: true });
fs.mkdirSync(destDir, { recursive: true });
} catch (err) {
console.log(err);
}
traverseDirectory(srcDir);
}
main();

View File

@ -0,0 +1,116 @@
/*
* Copyright 2021 Collate
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ISubmitEvent } from '@rjsf/core';
import { cloneDeep, isNil } from 'lodash';
import { LoadingState } from 'Models';
import React, { FunctionComponent } from 'react';
import { ServiceCategory } from '../../enums/service.enum';
import {
DashboardConnection,
DashboardService,
} from '../../generated/entity/services/dashboardService';
import {
DatabaseConnection,
DatabaseService,
} from '../../generated/entity/services/databaseService';
import {
MessagingConnection,
MessagingService,
} from '../../generated/entity/services/messagingService';
import { PipelineService } from '../../generated/entity/services/pipelineService';
import { ConfigData } from '../../interface/service.interface';
import { getDashboardConfig } from '../../utils/DashboardServiceUtils';
import { getDatabaseConfig } from '../../utils/DatabaseServiceUtils';
import { getMessagingConfig } from '../../utils/MessagingServiceUtils';
import { getPipelineConfig } from '../../utils/PipelineServiceUtils';
import FormBuilder from '../common/FormBuilder/FormBuilder';
interface Props {
data: DatabaseService | MessagingService | DashboardService | PipelineService;
serviceCategory: ServiceCategory;
status: LoadingState;
onSave: (data: ISubmitEvent<ConfigData>) => void;
}
const ConnectionConfigForm: FunctionComponent<Props> = ({
data,
serviceCategory,
status,
onSave,
}: Props) => {
const config = !isNil(data)
? /* eslint-disable-next-line no-prototype-builtins */
data.hasOwnProperty('connection')
? ((data as DatabaseService | MessagingService | DashboardService)
.connection.config as ConfigData)
: ({ pipelineUrl: (data as PipelineService).pipelineUrl } as ConfigData)
: {};
const getDatabaseFields = () => {
let connSch = {
schema: {},
uiSchema: {},
};
const validConfig = cloneDeep(config || {});
for (const [key, value] of Object.entries(validConfig)) {
if (isNil(value)) {
delete validConfig[key as keyof ConfigData];
}
}
switch (serviceCategory) {
case ServiceCategory.DATABASE_SERVICES: {
connSch = getDatabaseConfig(
validConfig as DatabaseConnection['config']
);
break;
}
case ServiceCategory.MESSAGING_SERVICES: {
connSch = getMessagingConfig(
validConfig as MessagingConnection['config']
);
break;
}
case ServiceCategory.DASHBOARD_SERVICES: {
connSch = getDashboardConfig(
validConfig as DashboardConnection['config']
);
break;
}
case ServiceCategory.PIPELINE_SERVICES: {
connSch = getPipelineConfig();
break;
}
}
return (
<FormBuilder
formData={validConfig}
schema={connSch.schema}
status={status}
uiSchema={connSch.uiSchema}
onSubmit={onSave}
/>
);
};
return <>{getDatabaseFields()}</>;
};
export default ConnectionConfigForm;

View File

@ -0,0 +1,102 @@
/*
* Copyright 2021 Collate
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import Form, { FormProps } from '@rjsf/core';
import classNames from 'classnames';
import { LoadingState } from 'Models';
import React, { FunctionComponent } from 'react';
import { ConfigData } from '../../../interface/service.interface';
import { Button } from '../../buttons/Button/Button';
import Loader from '../../Loader/Loader';
interface Props extends FormProps<ConfigData> {
showFormHeader?: boolean;
status?: LoadingState;
onCancel?: () => void;
}
const FormBuilder: FunctionComponent<Props> = ({
showFormHeader = false,
status = 'initial',
onCancel,
onSubmit,
...props
}: Props) => {
let oForm: Form<ConfigData> | null;
const handleCancel = () => {
if (onCancel) {
onCancel();
}
};
const handleSubmit = () => {
if (oForm?.submit) {
oForm.submit();
}
};
return (
<Form
className={classNames('rjsf', props.className, {
'no-header': !showFormHeader,
})}
ref={(form) => {
oForm = form;
}}
onSubmit={onSubmit}
{...props}>
<div className="tw-mt-6 tw-text-right" data-testid="buttons">
<Button
size="regular"
theme="primary"
variant="text"
onClick={handleCancel}>
Discard
</Button>
{status === 'waiting' ? (
<Button
disabled
className="tw-w-16 tw-h-10 disabled:tw-opacity-100"
size="regular"
theme="primary"
variant="contained">
<Loader size="small" type="white" />
</Button>
) : status === 'success' ? (
<Button
disabled
className="tw-w-16 tw-h-10 disabled:tw-opacity-100"
size="regular"
theme="primary"
variant="contained">
<FontAwesomeIcon icon="check" />
</Button>
) : (
<Button
className="tw-w-16 tw-h-10"
data-testid="saveManageTab"
size="regular"
theme="primary"
variant="contained"
onClick={handleSubmit}>
Save
</Button>
)}
</div>
</Form>
);
};
export default FormBuilder;

View File

@ -122,3 +122,9 @@ export const STEPS_FOR_ADD_SERVICE: Array<StepperStepType> = [
{ name: 'Configure Service', step: 2 },
{ name: 'Connection Details', step: 3 },
];
export const COMMON_UI_SCHEMA = {
supportsMetadataExtraction: { 'ui:widget': 'hidden', 'ui:hideError': true },
supportsUsageExtraction: { 'ui:widget': 'hidden', 'ui:hideError': true },
type: { 'ui:widget': 'hidden' },
};

View File

@ -12,6 +12,7 @@
*/
import { DynamicObj, Paging } from 'Models';
import { DashboardService } from '../generated/entity/services/dashboardService';
import { DatabaseService } from '../generated/entity/services/databaseService';
import { MessagingService } from '../generated/entity/services/messagingService';
import { PipelineService } from '../generated/entity/services/pipelineService';
@ -21,24 +22,6 @@ export interface IngestionSchedule {
startDate: string;
}
export interface DashboardService {
description: string;
href: string;
id: string;
name: string;
serviceType: string;
ingestionSchedule?: IngestionSchedule;
dashboardUrl?: string;
username?: string;
password?: string;
url?: string;
api_key?: string;
site_name?: string;
api_version?: string;
server?: string;
env?: string;
}
export interface DatabaseConnection {
hostPort: string;
password: string;
@ -83,3 +66,11 @@ export interface ServiceResponse {
data: Array<ServiceDataObj>;
paging: Paging;
}
export type ConfigData =
| DatabaseService['connection']
| MessagingService['connection']
| DashboardService['connection']
| {
pipelineUrl: string;
};

View File

@ -0,0 +1,34 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/connectionBasicType.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ConnectionType",
"description": "This schema defines basic common types that are used by other schemas.",
"definitions": {
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
}
}

View File

@ -0,0 +1,47 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/lookerConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "LookerConnection",
"description": "Looker Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.LookerConnection",
"definitions": {
"lookerType": {
"description": "Looker service type",
"type": "string",
"enum": ["Looker"],
"default": "Looker"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/lookerType",
"default": "Looker"
},
"username": {
"description": "username to connect to the Looker. This user should have privileges to read all the metadata in Looker.",
"type": "string"
},
"password": {
"description": "password to connect to the Looker.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "URL to Looker instance.",
"type": "string",
"format": "uri"
},
"env": {
"description": "Looker Environment",
"type": "string"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,46 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/metabaseConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "MetabaseConnection",
"description": "Metabase Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.MetabaseConnection",
"definitions": {
"metabaseType": {
"description": "Metabase service type",
"type": "string",
"enum": ["Metabase"],
"default": "Metabase"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/metabaseType",
"default": "Metabase"
},
"username": {
"description": "username to connect to the Metabase. This user should have privileges to read all the metadata in Metabase.",
"type": "string"
},
"password": {
"description": "password to connect to the Metabase.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and Port of Metabase instance.",
"type": "string"
},
"dbServiceName": {
"description": "Database Service Name for creation of lineage",
"type": "string"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,60 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/powerBIConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PowerBIConnection",
"description": "PowerBI Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.PowerBIConnection",
"definitions": {
"powerBiType": {
"description": "PowerBI service type",
"type": "string",
"enum": ["PowerBI"],
"default": "PowerBI"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/powerBiType",
"default": "PowerBI"
},
"clientId": {
"description": "client_id for the PowerBI.",
"type": "string"
},
"clientSecret": {
"description": "clientSecret for the PowerBI.",
"type": "string",
"format": "password"
},
"credentials": {
"description": "Credentials for the PowerBI.",
"type": "string"
},
"redirectURI": {
"description": "Dashboard redirect URI for the PowerBI.",
"type": "string"
},
"dashboardURL": {
"description": "Dashboard URL for the power BI.",
"type": "string",
"format": "uri",
"default": "https://analysis.windows.net/powerbi"
},
"scope": {
"description": "PowerBI secrets.",
"type": "array",
"items": {
"type": "string"
},
"default": null
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,43 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/redashConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "RedashConnection",
"description": "Redash Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.RedashConnection",
"definitions": {
"redashType": {
"description": "Redash service type",
"type": "string",
"enum": ["Redash"],
"default": "Redash"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/redashType",
"default": "Redash"
},
"username": {
"description": "username for the Redash",
"type": "string"
},
"redashURL": {
"description": "URL for the redash instance",
"type": "string",
"format": "uri",
"default": "http://localhost:5000"
},
"apiKey": {
"description": "API key of the redash instance to access.",
"type": "string"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,58 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/supersetConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SupersetConnection",
"description": "Superset Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.SupersetConnection",
"definitions": {
"supersetType": {
"description": "Superset service type",
"type": "string",
"enum": ["Superset"],
"default": "Superset"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/supersetType",
"default": "Superset"
},
"supersetURL": {
"description": "URL for the superset instance",
"type": "string",
"format": "uri",
"default": "http://localhost:8088"
},
"username": {
"description": "username for the Superset",
"type": "string"
},
"password": {
"description": "password for the Superset",
"type": "string",
"format": "password"
},
"provider": {
"description": "authenticaiton provider for the Superset",
"type": "string",
"default": "db"
},
"dbServiceConnection": {
"description": "Database Service to create lineage",
"type": "string",
"default": null
},
"connectionOptions": {
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,62 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/dashboard/tableauConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "TableauConnection",
"description": "Tableau Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.dashboard.TableauConnection",
"definitions": {
"tableauType": {
"description": "Tableau service type",
"type": "string",
"enum": ["Tableau"],
"default": "Tableau"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/tableauType",
"default": "Tableau"
},
"hostPort": {
"description": "Tableau Server",
"type": "string"
},
"username": {
"description": "username for the Tableau",
"type": "string"
},
"password": {
"description": "password for the Tableau",
"type": "string",
"format": "password"
},
"apiVersion": {
"description": "Tableau API version",
"type": "string"
},
"siteName": {
"description": "Tableau Site Name",
"type": "string"
},
"personalAccessTokenName": {
"description": "Personal Access Token Name",
"type": "string"
},
"personalAccessTokenSecret": {
"description": "Personal Access Token Secret",
"type": "string"
},
"env": {
"description": "Tableau Environment Name",
"type": "string"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,85 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/athenaConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "AthenaConnection",
"description": "AWS Athena Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.AthenaConnection",
"definitions": {
"athenaType": {
"description": "Service type.",
"type": "string",
"enum": ["Athena"],
"default": "Athena"
},
"athenaScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["awsathena+rest"],
"default": "awsathena+rest"
}
},
"properties": {
"serviceType": {
"description": "Service Type",
"$ref": "#/definitions/athenaType",
"default": "Athena"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/athenaScheme",
"default": "awsathena+rest"
},
"username": {
"description": "username to connect to the Athena. This user should have privileges to read all the metadata in Athena.",
"type": "string"
},
"password": {
"description": "password to connect to the Athena.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Athena",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Athena.",
"type": "string"
},
"awsRegion": {
"description": "AWS Athena AWS Region. ",
"type": "string"
},
"s3StagingDir": {
"description": "S3 Staging Directory.",
"type": "string"
},
"workgroup": {
"description": "Athena workgroup.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,78 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/azureSQLConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "AzureSQLConnection",
"description": "Azure SQL Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.AzureSQLConnection",
"definitions": {
"azureSQLType": {
"description": "Service type.",
"type": "string",
"enum": ["AzureSQL"],
"default": "AzureSQL"
},
"azureSQLScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["mssql+pyodbc"],
"default": "mssql+pyodbc"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/azureSQLType",
"default": "AzureSQL"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/azureSQLScheme",
"default": "mssql+pyodbc"
},
"username": {
"description": "username to connect to the Athena. This user should have privileges to read all the metadata in Azure SQL.",
"type": "string"
},
"password": {
"description": "password to connect to the Athena.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Athena",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Azure SQL.",
"type": "string"
},
"driver": {
"description": "SQLAlchemy driver for Azure SQL",
"type": "string",
"default": "{ODBC Driver 17 for SQL Server}"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,103 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/bigQueryConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "BigQueryConnection",
"description": "Google BigQuery Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.BigQueryConnection",
"definitions": {
"bigqueryType": {
"description": "Service type.",
"type": "string",
"enum": ["BigQuery"],
"default": "BigQuery"
},
"bigqueryScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["bigquery"],
"default": "bigquery"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/bigqueryType",
"default": "BigQuery"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/bigqueryScheme",
"default": "bigquery"
},
"hostPort": {
"description": "BigQuery APIs URL",
"type": "string",
"default": "bigquery.googleapis.com"
},
"username": {
"description": "username to connect to the Athena. This user should have privileges to read all the metadata in Athena.",
"type": "string"
},
"projectID": {
"description": "Google BigQuery project id.",
"type": "string"
},
"enablePolicyTagImport": {
"description": "Enable importing policy tags of BigQuery into OpenMetadata",
"type": "boolean",
"default": true
},
"tagCategoryName": {
"description": "OpenMetadata Tag category name if enablePolicyTagImport is set to true.",
"type": "string",
"default": "BigqueryPolicyTags"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Athena.",
"type": "string"
},
"partitionQueryDuration": {
"description": "Duration for partitioning bigquery tables",
"type": "integer",
"default": 1
},
"partitionQuery": {
"description": "Partitioning query for bigquery tables",
"type": "string",
"default": "select * from {}.{} WHERE {} = \"{}\" LIMIT 1000"
},
"partitionField": {
"description": "Column name on which bigquery table will be partitioned",
"type": "string",
"default": "_PARTITIONTIME"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,82 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/clickhouseConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ClickhouseConnection",
"description": "Clickhouse Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.ClickhouseConnection",
"definitions": {
"clickhouseType": {
"description": "Service type.",
"type": "string",
"enum": ["ClickHouse"],
"default": "ClickHouse"
},
"clickhouseScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["clickhouse+http"],
"default": "clickhouse+http"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/clickhouseType",
"default": "ClickHouse"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/clickhouseScheme",
"default": "clickhouse+http"
},
"username": {
"description": "username to connect to the Clickhouse. This user should have privileges to read all the metadata in Clickhouse.",
"type": "string"
},
"password": {
"description": "password to connect to the Clickhouse.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Clickhouse",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Clickhouse.",
"type": "string"
},
"duration": {
"description": "Clickhouse SQL connection duration",
"type": "integer"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,77 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/databricksConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DatabricksConnection",
"description": "Databricks Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.DatabricksConnection",
"definitions": {
"databricksType": {
"description": "Service type.",
"type": "string",
"enum": ["Databricks"],
"default": "Databricks"
},
"databricksScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["databricks+connector"],
"default": "databricks+connector"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/databricksType",
"default": "Databricks"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/databricksScheme",
"default": "databricks+connector"
},
"username": {
"description": "username to connect to the Databricks. This user should have privileges to read all the metadata in Databricks.",
"type": "string"
},
"password": {
"description": "password to connect to the Databricks.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Databricks",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Databricks.",
"type": "string"
},
"token": {
"description": "",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/db2Connection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DB2Connection",
"description": "DB2 Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.DB2Connection",
"definitions": {
"db2Type": {
"description": "Service type.",
"type": "string",
"enum": ["Db2"],
"default": "Db2"
},
"db2Scheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["db2+ibm_db"],
"default": "db2+ibm_db"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/db2Type",
"default": "Db2"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/db2Scheme",
"default": "db2+ibm_db"
},
"username": {
"description": "username to connect to the DB2. This user should have privileges to read all the metadata in DB2.",
"type": "string"
},
"password": {
"description": "password to connect to the DB2.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the DB2",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in DB2.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,57 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/deltaLakeConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DeltaLakeConnection",
"description": "DeltaLake Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.DeltaLakeConnection",
"definitions": {
"deltaLakeType": {
"description": "Service type.",
"type": "string",
"enum": ["DeltaLake"],
"default": "DeltaLake"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/deltaLakeType",
"default": "DeltaLake"
},
"metastoreHostPort": {
"description": "Host and port of remote Hive Metastore.",
"type": "string"
},
"metastoreFilePath": {
"description": "File path of local Hive Metastore.",
"type": "string"
},
"appName": {
"description": "pySpark App Name",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/druidConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DruidConnection",
"description": "Druid Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.DruidConnection",
"definitions": {
"druidType": {
"description": "Service type.",
"type": "string",
"enum": ["Druid"],
"default": "Druid"
},
"druidScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["druid"],
"default": "druid"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/druidType",
"default": "Druid"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/druidScheme",
"default": "druid"
},
"username": {
"description": "username to connect to the Druid. This user should have privileges to read all the metadata in Druid.",
"type": "string"
},
"password": {
"description": "password to connect to the Druid.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Druid",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Druid.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,75 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/dynamoDBConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "DynamoDBConnection",
"description": "DynamoDB Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.DynamoDBConnection",
"definitions": {
"dynamoDBType": {
"description": "Service type.",
"type": "string",
"enum": ["DynamoDB"],
"default": "DynamoDB"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/dynamoDBType",
"default": "DynamoDB"
},
"hostPort": {
"description": "Host and port of the DynamoDB",
"type": "string"
},
"endPointURL": {
"description": "EndPoint URL for the Dynamo DB",
"type": "string"
},
"awsAccessKeyId": {
"description": "AWS Access key ID.",
"typ": "string"
},
"awsSecretAccessKey": {
"description": "AWS Secret Access Key.",
"type": "string",
"format": "password"
},
"awsSessionToken": {
"description": "AWS Session Token.",
"type": "string"
},
"awsRegion": {
"description": "AWS Region Name.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Druid.",
"type": "string",
"default": "DynamoDB"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,83 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/glueConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GlueConnection",
"description": "Glue Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.GlueConnection",
"definitions": {
"glueType": {
"description": "Service type.",
"type": "string",
"enum": ["Glue"],
"default": "Glue"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/glueType",
"default": "Glue"
},
"hostPort": {
"description": "Host and port of the Glue",
"type": "string"
},
"endPointURL": {
"description": "EndPoint URL for the Glue",
"type": "string"
},
"awsAccessKeyId": {
"description": "AWS Access key ID.",
"type": "string"
},
"awsSecretAccessKey": {
"description": "AWS Secret Access Key.",
"type": "string",
"format": "password"
},
"awsSessionToken": {
"description": "AWS Session Token.",
"type": "string"
},
"storageServiceName": {
"description": "AWS storageServiceName Name.",
"type": "string"
},
"pipelineServiceName": {
"description": "AWS pipelineServiceName Name.",
"type": "string"
},
"awsRegion": {
"description": "AWS Region Name.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Glue.",
"type": "string",
"default": "Glue"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,77 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/hiveSQLConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "HiveSQLConnection",
"description": "Hive SQL Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.HiveSQLConnection",
"definitions": {
"hiveType": {
"description": "Service type.",
"type": "string",
"enum": ["Hive"],
"default": "Hive"
},
"hiveScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["hive"],
"default": "hive"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/hiveType",
"default": "Hive"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/hiveScheme",
"default": "hive"
},
"username": {
"description": "username to connect to the Athena. This user should have privileges to read all the metadata in Hive.",
"type": "string"
},
"password": {
"description": "password to connect to the Hive.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Hive.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Hive.",
"type": "string"
},
"authOptions": {
"description": "Authentication options to pass to Hive connector. These options are based on SQLAlchemy.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/mariaDBConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "MariaDBConnection",
"description": "MariaDB Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.MariaDBConnection",
"definitions": {
"mariaDBType": {
"description": "Service type.",
"type": "string",
"enum": ["MariaDB"],
"default": "MariaDB"
},
"mariaDBScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["mysql+pymysql"],
"default": "mysql+pymysql"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/mariaDBType",
"default": "MariaDB"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/mariaDBScheme",
"default": "mysql+pymysql"
},
"username": {
"description": "username to connect to the MariaDB. This user should have privileges to read all the metadata in MariaDB.",
"type": "string"
},
"password": {
"description": "password to connect to the MariaDB.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in MariaDB.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,77 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/mssqlConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "MssqlConnection",
"description": "Mssql Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.MssqlConnection",
"definitions": {
"mssqlType": {
"description": "Service type.",
"type": "string",
"enum": ["MSSQL"],
"default": "MSSQL"
},
"mssqlScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["mssql+pyodbc", "mssql+pytds", "mssql+pymssql"],
"default": "mysql+pymysql"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/mssqlType",
"default": "MSSQL"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/mssqlScheme",
"default": "mssql+pytds"
},
"username": {
"description": "username to connect to the MsSQL. This user should have privileges to read all the metadata in MsSQL.",
"type": "string"
},
"password": {
"description": "password to connect to the MsSQL.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the MsSQL.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in MsSQL.",
"type": "string"
},
"uriString": {
"description": "Connection URI In case of pyodbc",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/mysqlConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "MysqlConnection",
"description": "Mysql Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.MysqlConnection",
"definitions": {
"mySQLType": {
"description": "Service type.",
"type": "string",
"enum": ["MySQL"],
"default": "MySQL"
},
"mySQLScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["mysql+pymysql"],
"default": "mysql+pymysql"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/mySQLType",
"default": "MySQL"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/mySQLScheme",
"default": "mysql+pymysql"
},
"username": {
"description": "username to connect to the SingleStore. This user should have privileges to read all the metadata in SingleStore.",
"type": "string"
},
"password": {
"description": "password to connect to the SingleStore.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in SingleStore.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,78 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/oracleConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "OracleConnection",
"description": "Oracle Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.OracleConnection",
"definitions": {
"oracleType": {
"description": "Service type.",
"type": "string",
"enum": ["Oracle"],
"default": "Oracle"
},
"oracleScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["oracle+cx_oracle"],
"default": "oracle+cx_oracle"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/oracleType",
"default": "Oracle"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/oracleScheme",
"default": "oracle+cx_oracle"
},
"username": {
"description": "username to connect to the Oracle. This user should have privileges to read all the metadata in Oracle.",
"type": "string"
},
"password": {
"description": "password to connect to the Oracle.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Oracle.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Oracle.",
"type": "string"
},
"oracleServiceName": {
"description": "Oracle Service Name to be passed. Note: either Database or Oracle service name can be sent, not both.",
"type": "string",
"default": null
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/postgresConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PostgresConnection",
"description": "Postgres Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.PostgresConnection",
"definitions": {
"postgresType": {
"description": "Service type.",
"type": "string",
"enum": ["Postgres"],
"default": "Postgres"
},
"postgresScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["postgresql+psycopg2"],
"default": "postgresql+psycopg2"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/postgresType",
"default": "Postgres"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/postgresScheme",
"default": "postgresql+psycopg2"
},
"username": {
"description": "username to connect to the Postgres. This user should have privileges to read all the metadata in Postgres.",
"type": "string"
},
"password": {
"description": "password to connect to the Postgres.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Postgres.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Postgres.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,77 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/prestoConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PrestoConnection",
"description": "Presto Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.PrestoConnection",
"definitions": {
"prestoType": {
"description": "Service type.",
"type": "string",
"enum": ["Presto"],
"default": "Presto"
},
"prestoScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["presto"],
"default": "presto"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/prestoType",
"default": "Presto"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/prestoScheme",
"default": "presto"
},
"username": {
"description": "username to connect to the Postgres. This user should have privileges to read all the metadata in Postgres.",
"type": "string"
},
"password": {
"description": "password to connect to the Postgres.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Postgres.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Postgres.",
"type": "string"
},
"catalog": {
"description": "Presto catalog",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/redshiftConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "RedshiftConnection",
"description": "Redshift Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.RedshiftConnection",
"definitions": {
"redshiftType": {
"description": "Service type.",
"type": "string",
"enum": ["Redshift"],
"default": "Redshift"
},
"redshiftScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["redshift+psycopg2"],
"default": "redshift+psycopg2"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/redshiftType",
"default": "Redshift"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/redshiftScheme",
"default": "redshift+psycopg2"
},
"username": {
"description": "username to connect to the Redshift. This user should have privileges to read all the metadata in Redshift.",
"type": "string"
},
"password": {
"description": "password to connect to the Redshift.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the Redshift.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Redshift.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,77 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/salesforceConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SalesforceConnection",
"description": "Salesforce Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.SalesforceConnection",
"definitions": {
"salesforceType": {
"description": "Service type.",
"type": "string",
"enum": ["Salesforce"],
"default": "Salesforce"
},
"salesforceScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["salesforce"],
"default": "salesforce"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/salesforceType",
"default": "Salesforce"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/salesforceScheme",
"default": "salesforce"
},
"username": {
"description": "username to connect to the Redshift. This user should have privileges to read all the metadata in Redshift.",
"type": "string"
},
"password": {
"description": "password to connect to the Redshift.",
"type": "string",
"format": "password"
},
"securityToken": {
"description": "Salesforce Security Token.",
"type": "string"
},
"hostPort": {
"description": "Host and port of the Redshift.",
"type": "string"
},
"sobjectName": {
"description": "Salesforce Object Name.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,60 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/sampleDataConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SampleDataConnection",
"description": "Sample Data Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.SampleDataConnection",
"definitions": {
"sampledataType": {
"description": "Service type.",
"type": "string",
"enum": ["SampleData"],
"default": "SampleData"
},
"sampledataScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["sampledata"],
"default": "sampledata"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/sampledataType",
"default": "BigQuery"
},
"sampleDataFolder": {
"description": "Sample Data File Path",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,73 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/singleStoreConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SingleStoreConnection",
"description": "SingleStore Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.SingleStoreConnection",
"definitions": {
"singleStoreType": {
"description": "Service type.",
"type": "string",
"enum": ["SingleStore"],
"default": "SingleStore"
},
"singleStoreScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["mysql+pymysql"],
"default": "mysql+pymysql"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/singleStoreType",
"default": "SingleStore"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/singleStoreScheme",
"default": "mysql+pymysql"
},
"username": {
"description": "username to connect to the MySQL. This user should have privileges to read all the metadata in MySQL.",
"type": "string"
},
"password": {
"description": "password to connect to the MYSQL.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in MySQL.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,90 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/snowflakeConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SnowflakeConnection",
"description": "Snowflake Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.SnowflakeConnection",
"definitions": {
"snowflakeType": {
"description": "Service type.",
"type": "string",
"enum": ["Snowflake"],
"default": "Snowflake"
},
"snowflakeScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["snowflake"],
"default": "snowflake"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/snowflakeType",
"default": "Snowflake"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/snowflakeScheme",
"default": "snowflake"
},
"username": {
"description": "username to connect to the Snowflake. This user should have privileges to read all the metadata in Snowflake.",
"type": "string"
},
"password": {
"description": "password to connect to the Snowflake.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"account": {
"description": "Snowflake Account.",
"type": "string"
},
"role": {
"description": "Snowflake Role.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Snowflake.",
"type": "string"
},
"warehouse": {
"description": "Snowflake warehouse.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,78 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/sqliteConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SQLiteConnection",
"description": "SQLite Database Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.SQLiteConnection",
"definitions": {
"SQLiteType": {
"description": "Service type.",
"type": "string",
"enum": ["SQLite"],
"default": "SQLite"
},
"SQLiteScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["sqlite+pysqlite"],
"default": "sqlite+pysqlite"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/SQLiteType",
"default": "SQLite"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/SQLiteScheme",
"default": "sqlite+pysqlite"
},
"username": {
"description": "username to connect to the SQLite. Blank for in-memory database.",
"type": "string"
},
"password": {
"description": "password to connect to SQLite. Blank for in-memory database.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source. Blank for in-memory database.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases.",
"type": "string"
},
"databaseMode": {
"description": "How to run the SQLite database. :memory: by default.",
"type": "string",
"default": ":memory:"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,85 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/trinoConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "TrinoConnection",
"description": "Trino Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.TrinoConnection",
"definitions": {
"trinoType": {
"description": "Service type.",
"type": "string",
"enum": ["Trino"],
"default": "Trino"
},
"trinoScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["trino"],
"default": "trino"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/trinoType",
"default": "Trino"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/trinoScheme",
"default": "trino"
},
"username": {
"description": "username to connect to Trino. This user should have privileges to read all the metadata in Trino.",
"type": "string"
},
"password": {
"description": "password to connect to the Trino.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"catalog": {
"description": "Catalog of the data source.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in the selected catalog in Trino.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"proxies": {
"description": "Proxies for the connection to Trino data source",
"type": "object"
},
"params": {
"description": "URL parameters for connection to the Trino data source",
"type": "object"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,78 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/database/verticaConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "VerticaConnection",
"description": "Vertica Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.database.VerticaConnection",
"definitions": {
"verticaType": {
"description": "Service type.",
"type": "string",
"enum": ["Vertica"],
"default": "Vertica"
},
"verticaScheme": {
"description": "SQLAlchemy driver scheme options.",
"type": "string",
"enum": ["vertica+vertica_python"],
"default": "vertica+vertica_python"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/verticaType",
"default": "Vertica"
},
"scheme": {
"description": "SQLAlchemy driver scheme options.",
"$ref": "#/definitions/verticaScheme",
"default": "vertica+vertica_python"
},
"username": {
"description": "username to connect to the Vertica. This user should have privileges to read all the metadata in Vertica.",
"type": "string"
},
"password": {
"description": "password to connect to the Vertica.",
"type": "string",
"format": "password"
},
"hostPort": {
"description": "Host and port of the data source.",
"type": "string"
},
"database": {
"description": "Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank , OpenMetadata Ingestion attempts to scan all the databases in Vertica.",
"type": "string"
},
"connectionOptions": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionOptions",
"description": "Additional connection options that can be sent to service during the connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"connectionArguments": {
"javaType": "org.openmetadata.catalog.services.connections.database.ConnectionArguments",
"description": "Additional connection arguments such as security or protocol configs that can be sent to service during connection.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
},
"supportsUsageExtraction": {
"description": "Supports Usage Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,40 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/messaging/kafkaConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "KafkaConnection",
"description": "Kafka Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.messaging.KafkaConnection",
"definitions": {
"kafkaType": {
"description": "Kafka service type",
"type": "string",
"enum": ["Kafka"],
"default": "Kafka"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/kafkaType",
"default": "Kafka"
},
"bootstrapServers": {
"description": "Kafka bootstrap servers. add them in comma separated values ex: host1:9092,host2:9092",
"type": "string",
"default": "localhost:9092"
},
"schemaRegistryURL": {
"description": "Confluent Kafka Schema Registry URL.",
"type": "string",
"format": "uri",
"default": "http://localhost:8081"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -0,0 +1,29 @@
{
"$id": "https://open-metadata.org/schema/entity/services/connections/messaging/pulsarConnection.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PulsarConnection",
"description": "Pulsar Connection Config",
"type": "object",
"javaType": "org.openmetadata.catalog.services.connections.messaging.PulsarConnection",
"definitions": {
"pulsarType": {
"description": "Pulsar service type",
"type": "string",
"enum": ["Pulsar"],
"default": "Pulsar"
}
},
"properties": {
"type": {
"description": "Service Type",
"$ref": "#/definitions/pulsarType",
"default": "Pulsar"
},
"supportsMetadataExtraction": {
"description": "Supports Metadata Extraction.",
"type": "boolean",
"default": true
}
},
"additionalProperties": false
}

View File

@ -179,6 +179,10 @@ jest.mock(
})
);
jest.mock('../../components/ServiceConfig/ServiceConfig', () => {
return jest.fn().mockReturnValue(<p>ServiceConfig</p>);
});
describe('Test ServicePage Component', () => {
it('Component should render', async () => {
const { container } = render(<ServicePage />, {

View File

@ -466,18 +466,32 @@ const ServicePage: FunctionComponent = () => {
});
};
const handleConfigUpdate = (updatedData: ServicesData) => {
const configData = {
databaseConnection: updatedData.databaseConnection,
name: updatedData.name,
serviceType: updatedData.serviceType,
brokers: updatedData.brokers,
schemaRegistry: updatedData.schemaRegistry,
dashboardUrl: updatedData.dashboardUrl,
username: updatedData.username,
password: updatedData.password,
pipelineUrl: updatedData.pipelineUrl,
};
const handleConfigUpdate = (
updatedData: ServicesData,
serviceCategory: ServiceCategory
) => {
const configData =
serviceCategory === ServiceCategory.PIPELINE_SERVICES
? {
databaseConnection: updatedData.databaseConnection,
name: updatedData.name,
serviceType: updatedData.serviceType,
brokers: updatedData.brokers,
schemaRegistry: updatedData.schemaRegistry,
dashboardUrl: updatedData.dashboardUrl,
username: updatedData.username,
password: updatedData.password,
pipelineUrl: updatedData.pipelineUrl,
}
: {
name: serviceDetails?.name,
serviceType: serviceDetails?.serviceType,
description: serviceDetails?.description,
owner: serviceDetails?.owner,
connection: {
config: updatedData,
},
};
return new Promise<void>((resolve, reject) => {
updateService(serviceName, serviceDetails?.id, configData)
@ -806,9 +820,9 @@ const ServicePage: FunctionComponent = () => {
case ServiceCategory.DASHBOARD_SERVICES:
return {
dashboardUrl: serviceDetails?.dashboardUrl,
username: serviceDetails?.username,
password: serviceDetails?.password,
dashboardUrl: serviceDetails?.connection?.config?.dashboardURL,
username: serviceDetails?.connection?.config?.username,
password: serviceDetails?.connection?.config?.password,
};
case ServiceCategory.PIPELINE_SERVICES:

View File

@ -83,6 +83,14 @@ jest.mock('../../axiosAPIs/serviceAPI', () => ({
updateService: jest.fn(),
}));
jest.mock('../../utils/MessagingServiceUtils', () => ({
getBrokers: jest.fn(() => '--'),
}));
jest.mock('../../utils/DashboardServiceUtils', () => ({
getDashboardURL: jest.fn(() => '--'),
}));
jest.mock(
'../../components/common/rich-text-editor/RichTextEditorPreviewer',
() => {
@ -215,9 +223,6 @@ describe('Test Messaging Service Cards', () => {
expect(kafkaServiceName).toBeInTheDocument();
expect(kafkaServiceBrokers).toBeInTheDocument();
expect(kafkaServiceBrokers).toHaveTextContent(
mockKafkaService.connection.config.bootstrapServers
);
expect(kafkaServiceType).toBeInTheDocument();
expect(kafkaServiceType).toHaveTextContent(
`Type:${mockKafkaService.serviceType}`
@ -308,9 +313,6 @@ describe('Test Dashboard Service Cards', () => {
expect(lookerServiceName).toBeInTheDocument();
expect(lookerServiceURL).toBeInTheDocument();
expect(lookerServiceURL).toHaveTextContent(
mockLookerService.connection.config.url
);
expect(lookerServiceType).toBeInTheDocument();
expect(lookerServiceType).toHaveTextContent(
`Type:${mockLookerService.serviceType}`
@ -341,9 +343,6 @@ describe('Test Dashboard Service Cards', () => {
expect(metabaseServiceName).toBeInTheDocument();
expect(metabaseServiceURL).toBeInTheDocument();
expect(metabaseServiceURL).toHaveTextContent(
mockMetabaseService.connection.config.hostPort
);
expect(metabaseServiceType).toBeInTheDocument();
expect(metabaseServiceType).toHaveTextContent(
`Type:${mockMetabaseService.serviceType}`
@ -374,9 +373,6 @@ describe('Test Dashboard Service Cards', () => {
expect(powerBIServiceName).toBeInTheDocument();
expect(powerBIServiceURL).toBeInTheDocument();
expect(powerBIServiceURL).toHaveTextContent(
mockPowerBIService.connection.config.dashboardURL
);
expect(powerBIServiceType).toBeInTheDocument();
expect(powerBIServiceType).toHaveTextContent(
`Type:${mockPowerBIService.serviceType}`
@ -407,9 +403,6 @@ describe('Test Dashboard Service Cards', () => {
expect(redashServiceName).toBeInTheDocument();
expect(redashServiceURL).toBeInTheDocument();
expect(redashServiceURL).toHaveTextContent(
mockRedashService.connection.config.redashURL
);
expect(redashServiceType).toBeInTheDocument();
expect(redashServiceType).toHaveTextContent(
`Type:${mockRedashService.serviceType}`
@ -440,9 +433,6 @@ describe('Test Dashboard Service Cards', () => {
expect(supersetServiceName).toBeInTheDocument();
expect(supersetServiceURL).toBeInTheDocument();
expect(supersetServiceURL).toHaveTextContent(
mockSupersetService.connection.config.supersetURL
);
expect(supersetServiceType).toBeInTheDocument();
expect(supersetServiceType).toHaveTextContent(
`Type:${mockSupersetService.serviceType}`
@ -473,9 +463,6 @@ describe('Test Dashboard Service Cards', () => {
expect(tableauServiceName).toBeInTheDocument();
expect(tableauServiceURL).toBeInTheDocument();
expect(tableauServiceURL).toHaveTextContent(
mockTableauService.connection.config.siteURL
);
expect(tableauServiceType).toBeInTheDocument();
expect(tableauServiceType).toHaveTextContent(
`Type:${mockTableauService.serviceType}`

View File

@ -353,6 +353,31 @@
transform: rotate(180deg);
}
.rjsf.no-header #root__title,
.rjsf.no-header #root__description {
@apply tw-hidden;
}
.rjsf .form-group.field {
@apply tw-my-3;
}
.rjsf .control-label {
@apply tw-capitalize;
}
.rjsf .control-label .required {
@apply tw-text-red-600 tw-ml-0.5;
}
.rjsf .field-description {
@apply tw-text-grey-muted tw-text-xs tw-my-0.5;
}
.rjsf .form-control {
@apply tw-w-full tw-px-3 tw-py-1 tw-text-grey-body tw-rounded tw-border tw-border-main
focus:tw-outline-none focus:tw-border-focus hover:tw-border-hover;
}
@keyframes highlight {
0% {
@apply tw-bg-warning-lite;

View File

@ -11,11 +11,18 @@
* limitations under the License.
*/
import { isUndefined } from 'lodash';
import { cloneDeep, isUndefined } from 'lodash';
import { COMMON_UI_SCHEMA } from '../constants/services.const';
import {
DashboardConnection,
DashboardServiceType,
} from '../generated/entity/services/dashboardService';
import lookerConnection from '../jsons/connectionSchemas/connections/dashboard/lookerConnection.json';
import metabaseConnection from '../jsons/connectionSchemas/connections/dashboard/metabaseConnection.json';
import powerBIConnection from '../jsons/connectionSchemas/connections/dashboard/powerBIConnection.json';
import redashConnection from '../jsons/connectionSchemas/connections/dashboard/redashConnection.json';
import supersetConnection from '../jsons/connectionSchemas/connections/dashboard/supersetConnection.json';
import tableauConnection from '../jsons/connectionSchemas/connections/dashboard/tableauConnection.json';
export const getDashboardURL = (config: DashboardConnection['config']) => {
let retVal: string | undefined;
@ -54,3 +61,42 @@ export const getDashboardURL = (config: DashboardConnection['config']) => {
return !isUndefined(retVal) ? retVal : '--';
};
export const getDashboardConfig = (config?: DashboardConnection['config']) => {
let schema = {};
const uiSchema = { ...COMMON_UI_SCHEMA };
switch (config?.type) {
case DashboardServiceType.Looker: {
schema = lookerConnection;
break;
}
case DashboardServiceType.Metabase: {
schema = metabaseConnection;
break;
}
case DashboardServiceType.PowerBI: {
schema = powerBIConnection;
break;
}
case DashboardServiceType.Redash: {
schema = redashConnection;
break;
}
case DashboardServiceType.Superset: {
schema = supersetConnection;
break;
}
case DashboardServiceType.Tableau: {
schema = tableauConnection;
break;
}
}
return cloneDeep({ schema, uiSchema });
};

View File

@ -0,0 +1,178 @@
/*
* Copyright 2021 Collate
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { cloneDeep } from 'lodash';
import { COMMON_UI_SCHEMA } from '../constants/services.const';
import {
DatabaseConnection,
DatabaseServiceType,
} from '../generated/entity/services/databaseService';
import athenaConnection from '../jsons/connectionSchemas/connections/database/athenaConnection.json';
import azureSQLConnection from '../jsons/connectionSchemas/connections/database/azureSQLConnection.json';
import bigQueryConnection from '../jsons/connectionSchemas/connections/database/bigQueryConnection.json';
import clickhouseConnection from '../jsons/connectionSchemas/connections/database/clickhouseConnection.json';
import databricksConnection from '../jsons/connectionSchemas/connections/database/databricksConnection.json';
import db2Connection from '../jsons/connectionSchemas/connections/database/db2Connection.json';
import deltaLakeConnection from '../jsons/connectionSchemas/connections/database/deltaLakeConnection.json';
import druidConnection from '../jsons/connectionSchemas/connections/database/druidConnection.json';
import dynamoDBConnection from '../jsons/connectionSchemas/connections/database/dynamoDBConnection.json';
import glueConnection from '../jsons/connectionSchemas/connections/database/glueConnection.json';
import hiveConnection from '../jsons/connectionSchemas/connections/database/hiveConnection.json';
import mariaDBConnection from '../jsons/connectionSchemas/connections/database/mariaDBConnection.json';
import mssqlConnection from '../jsons/connectionSchemas/connections/database/mssqlConnection.json';
import mysqlConnection from '../jsons/connectionSchemas/connections/database/mysqlConnection.json';
import oracleConnection from '../jsons/connectionSchemas/connections/database/oracleConnection.json';
import postgresConnection from '../jsons/connectionSchemas/connections/database/postgresConnection.json';
import prestoConnection from '../jsons/connectionSchemas/connections/database/prestoConnection.json';
import redshiftConnection from '../jsons/connectionSchemas/connections/database/redshiftConnection.json';
import salesforceConnection from '../jsons/connectionSchemas/connections/database/salesforceConnection.json';
import sampleDataConnection from '../jsons/connectionSchemas/connections/database/sampleDataConnection.json';
import singleStoreConnection from '../jsons/connectionSchemas/connections/database/singleStoreConnection.json';
import snowflakeConnection from '../jsons/connectionSchemas/connections/database/snowflakeConnection.json';
import sqliteConnection from '../jsons/connectionSchemas/connections/database/sqliteConnection.json';
import trinoConnection from '../jsons/connectionSchemas/connections/database/trinoConnection.json';
import verticaConnection from '../jsons/connectionSchemas/connections/database/verticaConnection.json';
export const getDatabaseConfig = (config?: DatabaseConnection['config']) => {
let schema = {};
const uiSchema = { ...COMMON_UI_SCHEMA };
switch (config?.type as unknown as DatabaseServiceType) {
case DatabaseServiceType.Athena: {
schema = athenaConnection;
break;
}
case DatabaseServiceType.AzureSQL: {
schema = azureSQLConnection;
break;
}
case DatabaseServiceType.BigQuery: {
schema = bigQueryConnection;
break;
}
case DatabaseServiceType.ClickHouse: {
schema = clickhouseConnection;
break;
}
case DatabaseServiceType.Databricks: {
schema = databricksConnection;
break;
}
case DatabaseServiceType.Db2: {
schema = db2Connection;
break;
}
case DatabaseServiceType.DeltaLake: {
schema = deltaLakeConnection;
break;
}
case DatabaseServiceType.Druid: {
schema = druidConnection;
break;
}
case DatabaseServiceType.DynamoDB: {
schema = dynamoDBConnection;
break;
}
case DatabaseServiceType.Glue: {
schema = glueConnection;
break;
}
case DatabaseServiceType.Hive: {
schema = hiveConnection;
break;
}
case DatabaseServiceType.MariaDB: {
schema = mariaDBConnection;
break;
}
case DatabaseServiceType.Mssql: {
schema = mssqlConnection;
break;
}
case DatabaseServiceType.MySQL: {
schema = mysqlConnection;
break;
}
case DatabaseServiceType.Oracle: {
schema = oracleConnection;
break;
}
case DatabaseServiceType.Postgres: {
schema = postgresConnection;
break;
}
case DatabaseServiceType.Presto: {
schema = prestoConnection;
break;
}
case DatabaseServiceType.Redshift: {
schema = redshiftConnection;
break;
}
case DatabaseServiceType.Salesforce: {
schema = salesforceConnection;
break;
}
case DatabaseServiceType.SingleStore: {
schema = singleStoreConnection;
break;
}
case DatabaseServiceType.Snowflake: {
schema = snowflakeConnection;
break;
}
case DatabaseServiceType.SQLite: {
schema = sqliteConnection;
break;
}
case DatabaseServiceType.Trino: {
schema = trinoConnection;
break;
}
case DatabaseServiceType.Vertica: {
schema = verticaConnection;
break;
}
default: {
schema = sampleDataConnection;
break;
}
}
return cloneDeep({ schema, uiSchema });
};

View File

@ -11,11 +11,13 @@
* limitations under the License.
*/
import { isUndefined } from 'lodash';
import { cloneDeep, isUndefined } from 'lodash';
import { COMMON_UI_SCHEMA } from '../constants/services.const';
import {
MessagingConnection,
MessagingServiceType,
} from '../generated/entity/services/messagingService';
import kafkaConnection from '../jsons/connectionSchemas/connections/messaging/kafkaConnection.json';
export const getBrokers = (config: MessagingConnection['config']) => {
let retVal: string | undefined;
@ -27,3 +29,13 @@ export const getBrokers = (config: MessagingConnection['config']) => {
return !isUndefined(retVal) ? retVal : '--';
};
export const getMessagingConfig = (config: MessagingConnection['config']) => {
let schema = {};
const uiSchema = { ...COMMON_UI_SCHEMA };
if (config?.type === MessagingServiceType.Kafka) {
schema = kafkaConnection;
}
return cloneDeep({ schema, uiSchema });
};

View File

@ -0,0 +1,35 @@
/*
* Copyright 2021 Collate
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { JSONSchema7 } from 'json-schema';
import { cloneDeep } from 'lodash';
export const getPipelineConfig = () => {
const schema = {
$schema: 'http://json-schema.org/draft-07/schema#',
title: 'PipelineConnection',
description: 'Pipeline Connection Config',
type: 'object',
properties: {
pipelineUrl: {
description: 'Pipeline Service Management/UI URL.',
type: 'string',
format: 'uri',
},
},
additionalProperties: false,
} as JSONSchema7;
const uiSchema = {};
return cloneDeep({ schema, uiSchema });
};

View File

@ -2,6 +2,16 @@
# yarn lockfile v1
"@apidevtools/json-schema-ref-parser@^9.0.9":
version "9.0.9"
resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b"
integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==
dependencies:
"@jsdevtools/ono" "^7.1.3"
"@types/json-schema" "^7.0.6"
call-me-maybe "^1.0.1"
js-yaml "^4.1.0"
"@auth0/auth0-react@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@auth0/auth0-react/-/auth0-react-1.9.0.tgz#957041fa9756a5cf20412116f19f2d1367aa66b6"
@ -1541,6 +1551,11 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@jsdevtools/ono@^7.1.3":
version "7.1.3"
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@ -1626,6 +1641,21 @@
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.15.tgz#6a9d143f7f4f49db2d782f9e1c8839a29b43ae23"
integrity sha512-15spi3V28QdevleWBNXE4pIls3nFZmBbUGrW9IVPwiQczuSb9n76TCB4bsk8TSel+I1OkHEdPhu5QKMfY6rQHA==
"@rjsf/core@^4.1.1":
version "4.1.1"
resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-4.1.1.tgz#6ba23585b0fc891247e795bed1ab2c6ce44755fa"
integrity sha512-/R37fLwnhAavQVlYoILwYIha0ymgKtMWdtehgiODcf++rl4/jq38RjXhqF5wQT9uOYAHmtutokJsTFei1VY4bw==
dependencies:
"@types/json-schema" "^7.0.7"
ajv "^6.7.0"
core-js-pure "^3.6.5"
json-schema-merge-allof "^0.6.0"
jsonpointer "^5.0.0"
lodash "^4.17.15"
nanoid "^3.1.23"
prop-types "^15.7.2"
react-is "^16.9.0"
"@sheerun/mutationobserver-shim@^0.3.2":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
@ -2249,6 +2279,11 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
"@types/json-schema@^7.0.6":
version "7.0.11"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@ -2902,7 +2937,7 @@ ajv@^5.5.2:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.4.0:
ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.4.0, ajv@^6.7.0:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@ -3001,6 +3036,11 @@ argparse@^1.0.10, argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
aria-query@^4.0.2, aria-query@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
@ -4174,6 +4214,25 @@ compression@^1.7.4:
safe-buffer "5.1.2"
vary "~1.1.2"
compute-gcd@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/compute-gcd/-/compute-gcd-1.2.1.tgz#34d639f3825625e1357ce81f0e456a6249d8c77f"
integrity sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==
dependencies:
validate.io-array "^1.0.3"
validate.io-function "^1.0.2"
validate.io-integer-array "^1.0.0"
compute-lcm@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/compute-lcm/-/compute-lcm-1.1.2.tgz#9107c66b9dca28cefb22b4ab4545caac4034af23"
integrity sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==
dependencies:
compute-gcd "^1.2.1"
validate.io-array "^1.0.3"
validate.io-function "^1.0.2"
validate.io-integer-array "^1.0.0"
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -4299,7 +4358,7 @@ core-js-pure@^3.16.0:
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.16.1.tgz#b997df2669c957a5b29f06e95813a171f993592e"
integrity sha512-TyofCdMzx0KMhi84mVRS8rL1XsRk2SPUNz2azmth53iRN0/08Uim9fdhQTaZTG1LqaXHYVci4RDHka6WrXfnvg==
core-js-pure@^3.20.2:
core-js-pure@^3.20.2, core-js-pure@^3.6.5:
version "3.21.1"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51"
integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==
@ -8041,6 +8100,13 @@ js-yaml@^3.12.1, js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@ -8138,6 +8204,22 @@ json-pointer@^0.6.0:
dependencies:
foreach "^2.0.4"
json-schema-compare@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/json-schema-compare/-/json-schema-compare-0.2.2.tgz#dd601508335a90c7f4cfadb6b2e397225c908e56"
integrity sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==
dependencies:
lodash "^4.17.4"
json-schema-merge-allof@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz#64d48820fec26b228db837475ce3338936bf59a5"
integrity sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==
dependencies:
compute-lcm "^1.1.0"
json-schema-compare "^0.2.2"
lodash "^4.17.4"
json-schema-ref-parser@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz#30af34aeab5bee0431da805dac0eb21b574bf63d"
@ -8232,6 +8314,11 @@ jsonpointer@^4.0.1:
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc"
integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==
jsonpointer@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@ -11060,7 +11147,7 @@ react-google-login@^5.2.2:
"@types/react" "*"
prop-types "^15.6.0"
react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6:
react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@ -13691,6 +13778,36 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
validate.io-array@^1.0.3:
version "1.0.6"
resolved "https://registry.yarnpkg.com/validate.io-array/-/validate.io-array-1.0.6.tgz#5b5a2cafd8f8b85abb2f886ba153f2d93a27774d"
integrity sha1-W1osr9j4uFq7L4hroVPy2Tond00=
validate.io-function@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/validate.io-function/-/validate.io-function-1.0.2.tgz#343a19802ed3b1968269c780e558e93411c0bad7"
integrity sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=
validate.io-integer-array@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz#2cabde033293a6bcbe063feafe91eaf46b13a089"
integrity sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=
dependencies:
validate.io-array "^1.0.3"
validate.io-integer "^1.0.4"
validate.io-integer@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz#168496480b95be2247ec443f2233de4f89878068"
integrity sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=
dependencies:
validate.io-number "^1.0.3"
validate.io-number@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8"
integrity sha1-9j/+2iSL8opnqNSODjtGGhZluvg=
value-equal@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"