diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/tour-page/TourPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/tour-page/TourPage.component.tsx
index 77a2d2c92ed..e3fa2da0b87 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/tour-page/TourPage.component.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/tour-page/TourPage.component.tsx
@@ -127,6 +127,7 @@ const TourPage = () => {
return (
edge.toEntity === n.id);
if (!isUndefined(edge.lineageDetails)) {
- edge.lineageDetails.columnsLineage.forEach((e) => {
+ edge.lineageDetails.columnsLineage?.forEach((e) => {
const toColumn = e.toColumn || '';
if (e.fromColumns && e.fromColumns.length > 0) {
e.fromColumns.forEach((fromColumn) => {
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/MlmodelServiceUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/MlmodelServiceUtils.ts
new file mode 100644
index 00000000000..61bb61215aa
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/MlmodelServiceUtils.ts
@@ -0,0 +1,37 @@
+/*
+ * 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 { MlModelServiceType } from '../generated/entity/services/mlmodelService';
+import mlflowConnection from '../jsons/connectionSchemas/connections/mlmodel/mlflowConnection.json';
+import sklearnConnection from '../jsons/connectionSchemas/connections/mlmodel/sklearnConnection.json';
+
+export const getMlmodelConfig = (type: MlModelServiceType) => {
+ let schema = {};
+ const uiSchema = { ...COMMON_UI_SCHEMA };
+ switch (type) {
+ case MlModelServiceType.Mlflow: {
+ schema = mlflowConnection;
+
+ break;
+ }
+ case MlModelServiceType.Sklearn: {
+ schema = sklearnConnection;
+
+ break;
+ }
+ }
+
+ return cloneDeep({ schema, uiSchema });
+};
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx
index e98d8d7977f..cfb5c63e31a 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx
@@ -52,6 +52,7 @@ import {
LOOKER,
MARIADB,
METABASE,
+ MLFLOW,
MSSQL,
MYSQL,
ORACLE,
@@ -64,6 +65,7 @@ import {
REDASH,
REDSHIFT,
SALESFORCE,
+ SCIKIT,
serviceTypes,
SINGLESTORE,
SNOWFLAKE,
@@ -76,6 +78,7 @@ import {
} from '../constants/services.const';
import { ServiceCategory } from '../enums/service.enum';
import { ConnectionType } from '../generated/api/services/ingestionPipelines/testServiceConnection';
+import { MlModelServiceType } from '../generated/entity/data/mlmodel';
import { DashboardServiceType } from '../generated/entity/services/dashboardService';
import { DatabaseServiceType } from '../generated/entity/services/databaseService';
import { PipelineType as IngestionPipelineType } from '../generated/entity/services/ingestionPipelines/ingestionPipeline';
@@ -186,6 +189,12 @@ export const serviceTypeLogo = (type: string) => {
case PipelineServiceType.Prefect:
return PREFECT;
+
+ case MlModelServiceType.Mlflow:
+ return MLFLOW;
+
+ case MlModelServiceType.Sklearn:
+ return SCIKIT;
default: {
let logo;
if (serviceTypes.messagingServices.includes(type)) {
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/SvgUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/SvgUtils.tsx
index f191be1b01b..4e9b8a8456c 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/SvgUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/SvgUtils.tsx
@@ -110,6 +110,7 @@ import LogoMonogram from '../assets/svg/logo-monogram.svg';
import Logo from '../assets/svg/logo.svg';
import IconManageColor from '../assets/svg/manage-color.svg';
import IconMinus from '../assets/svg/minus.svg';
+import IconMlModal from '../assets/svg/mlmodal.svg';
import IconPaperPlanePrimary from '../assets/svg/paper-plane-primary.svg';
import IconPaperPlane from '../assets/svg/paper-plane.svg';
import IconPendingBadge from '../assets/svg/pending-badge.svg';
@@ -238,6 +239,7 @@ export const Icons = {
EXTERNAL_LINK_GREY: 'external-link-grey',
PROFILER: 'icon-profiler',
PIPELINE: 'pipeline',
+ MLMODAL: 'mlmodal',
PIPELINE_GREY: 'pipeline-grey',
DBTMODEL_GREY: 'dbtmodel-grey',
DBTMODEL_LIGHT_GREY: 'dbtmodel-light-grey',
@@ -570,6 +572,10 @@ const SVGIcons: FunctionComponent = ({
case Icons.TOPIC:
IconComponent = IconTopic;
+ break;
+ case Icons.MLMODAL:
+ IconComponent = IconMlModal;
+
break;
case Icons.DASHBOARD:
IconComponent = IconDashboard;
diff --git a/openmetadata-ui/src/main/resources/ui/tailwind.config.js b/openmetadata-ui/src/main/resources/ui/tailwind.config.js
index d26842f6ede..c71ee154597 100644
--- a/openmetadata-ui/src/main/resources/ui/tailwind.config.js
+++ b/openmetadata-ui/src/main/resources/ui/tailwind.config.js
@@ -173,6 +173,7 @@ module.exports = {
'screen-xxl': '2160px',
'full-hd': '1080px',
600: '600px',
+ 700: '700px',
},
minWidth: {
badgeCount: '30px',