openmetadata-ingestion 1.2.3.1__py3-none-any.whl → 1.2.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (496) hide show
  1. metadata/generated/schema/analytics/__init__.py +1 -1
  2. metadata/generated/schema/analytics/basic.py +1 -1
  3. metadata/generated/schema/analytics/reportData.py +1 -1
  4. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  5. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  6. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  7. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  10. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  11. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  12. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  15. metadata/generated/schema/api/__init__.py +1 -1
  16. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  17. metadata/generated/schema/api/analytics/__init__.py +1 -1
  18. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  19. metadata/generated/schema/api/automations/__init__.py +1 -1
  20. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  21. metadata/generated/schema/api/bulkAssets.py +1 -1
  22. metadata/generated/schema/api/classification/__init__.py +1 -1
  23. metadata/generated/schema/api/classification/createClassification.py +1 -1
  24. metadata/generated/schema/api/classification/createTag.py +1 -1
  25. metadata/generated/schema/api/classification/loadTags.py +1 -1
  26. metadata/generated/schema/api/createBot.py +1 -1
  27. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  28. metadata/generated/schema/api/createType.py +1 -1
  29. metadata/generated/schema/api/data/__init__.py +1 -1
  30. metadata/generated/schema/api/data/createChart.py +1 -1
  31. metadata/generated/schema/api/data/createContainer.py +1 -1
  32. metadata/generated/schema/api/data/createCustomProperty.py +32 -0
  33. metadata/generated/schema/api/data/createDashboard.py +1 -1
  34. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  35. metadata/generated/schema/api/data/createDatabase.py +1 -1
  36. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  37. metadata/generated/schema/api/data/createGlossary.py +1 -1
  38. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  39. metadata/generated/schema/api/data/createMlModel.py +1 -1
  40. metadata/generated/schema/api/data/createPipeline.py +1 -1
  41. metadata/generated/schema/api/data/createQuery.py +1 -1
  42. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  43. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  44. metadata/generated/schema/api/data/createTable.py +1 -1
  45. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  46. metadata/generated/schema/api/data/createTopic.py +1 -1
  47. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  48. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  49. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  50. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  51. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  52. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  53. metadata/generated/schema/api/docStore/__init__.py +1 -1
  54. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  55. metadata/generated/schema/api/domains/__init__.py +1 -1
  56. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  57. metadata/generated/schema/api/domains/createDomain.py +1 -1
  58. metadata/generated/schema/api/feed/__init__.py +1 -1
  59. metadata/generated/schema/api/feed/closeTask.py +1 -1
  60. metadata/generated/schema/api/feed/createPost.py +1 -1
  61. metadata/generated/schema/api/feed/createThread.py +1 -1
  62. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  63. metadata/generated/schema/api/feed/threadCount.py +1 -1
  64. metadata/generated/schema/api/lineage/__init__.py +1 -1
  65. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  66. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  67. metadata/generated/schema/api/policies/__init__.py +1 -1
  68. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  69. metadata/generated/schema/api/services/__init__.py +1 -1
  70. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  71. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  72. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  73. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  74. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  75. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  76. metadata/generated/schema/api/services/createSearchService.py +1 -1
  77. metadata/generated/schema/api/services/createStorageService.py +1 -1
  78. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  79. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  80. metadata/generated/schema/api/setOwner.py +1 -1
  81. metadata/generated/schema/api/teams/__init__.py +1 -1
  82. metadata/generated/schema/api/teams/createPersona.py +1 -1
  83. metadata/generated/schema/api/teams/createRole.py +1 -1
  84. metadata/generated/schema/api/teams/createTeam.py +1 -1
  85. metadata/generated/schema/api/teams/createUser.py +1 -1
  86. metadata/generated/schema/api/tests/__init__.py +1 -1
  87. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  88. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  89. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  90. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  91. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  92. metadata/generated/schema/api/voteRequest.py +1 -1
  93. metadata/generated/schema/auth/__init__.py +1 -1
  94. metadata/generated/schema/auth/basicAuth.py +1 -1
  95. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  96. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  97. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  98. metadata/generated/schema/auth/emailRequest.py +1 -1
  99. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  100. metadata/generated/schema/auth/generateToken.py +1 -1
  101. metadata/generated/schema/auth/jwtAuth.py +1 -1
  102. metadata/generated/schema/auth/loginRequest.py +1 -1
  103. metadata/generated/schema/auth/logoutRequest.py +1 -1
  104. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  105. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  106. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  107. metadata/generated/schema/auth/refreshToken.py +1 -1
  108. metadata/generated/schema/auth/registrationRequest.py +1 -1
  109. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  110. metadata/generated/schema/auth/revokeToken.py +1 -1
  111. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  112. metadata/generated/schema/auth/ssoAuth.py +1 -1
  113. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  114. metadata/generated/schema/configuration/__init__.py +1 -1
  115. metadata/generated/schema/configuration/authConfig.py +1 -1
  116. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  117. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  118. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  119. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  120. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  121. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  122. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  123. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  124. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  125. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  126. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  127. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  128. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  129. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  130. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  131. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  132. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  133. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  134. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  135. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  136. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  137. metadata/generated/schema/dataInsight/__init__.py +1 -1
  138. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  139. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  140. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  141. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  142. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  143. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  144. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  145. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  146. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  147. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  148. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  149. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  150. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  151. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  152. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  153. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  154. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  155. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  156. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  157. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  158. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  159. metadata/generated/schema/email/__init__.py +1 -1
  160. metadata/generated/schema/email/emailRequest.py +1 -1
  161. metadata/generated/schema/email/smtpSettings.py +1 -1
  162. metadata/generated/schema/entity/__init__.py +1 -1
  163. metadata/generated/schema/entity/applications/__init__.py +1 -1
  164. metadata/generated/schema/entity/applications/app.py +1 -1
  165. metadata/generated/schema/entity/applications/appConfig.py +1 -1
  166. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  167. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  168. metadata/generated/schema/entity/applications/configuration/dataInsightsApp.py +1 -1
  169. metadata/generated/schema/entity/applications/configuration/externalAppIngestionConfig.py +1 -1
  170. metadata/generated/schema/entity/applications/configuration/searchIndexingApp.py +1 -1
  171. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  172. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  173. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  174. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  175. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  176. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  177. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  178. metadata/generated/schema/entity/automations/__init__.py +1 -1
  179. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  180. metadata/generated/schema/entity/automations/workflow.py +1 -1
  181. metadata/generated/schema/entity/bot.py +1 -1
  182. metadata/generated/schema/entity/classification/__init__.py +1 -1
  183. metadata/generated/schema/entity/classification/classification.py +1 -1
  184. metadata/generated/schema/entity/classification/tag.py +1 -1
  185. metadata/generated/schema/entity/data/__init__.py +1 -1
  186. metadata/generated/schema/entity/data/chart.py +1 -1
  187. metadata/generated/schema/entity/data/container.py +1 -1
  188. metadata/generated/schema/entity/data/dashboard.py +1 -1
  189. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  190. metadata/generated/schema/entity/data/database.py +1 -1
  191. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  192. metadata/generated/schema/entity/data/glossary.py +1 -1
  193. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  194. metadata/generated/schema/entity/data/metrics.py +1 -1
  195. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  196. metadata/generated/schema/entity/data/pipeline.py +1 -1
  197. metadata/generated/schema/entity/data/query.py +1 -1
  198. metadata/generated/schema/entity/data/report.py +1 -1
  199. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  200. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  201. metadata/generated/schema/entity/data/table.py +1 -1
  202. metadata/generated/schema/entity/data/topic.py +1 -1
  203. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  204. metadata/generated/schema/entity/docStore/document.py +1 -1
  205. metadata/generated/schema/entity/domains/__init__.py +1 -1
  206. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  207. metadata/generated/schema/entity/domains/domain.py +1 -1
  208. metadata/generated/schema/entity/events/__init__.py +1 -1
  209. metadata/generated/schema/entity/events/webhook.py +1 -1
  210. metadata/generated/schema/entity/feed/__init__.py +1 -1
  211. metadata/generated/schema/entity/feed/thread.py +1 -1
  212. metadata/generated/schema/entity/policies/__init__.py +1 -1
  213. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  214. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  215. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  216. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  217. metadata/generated/schema/entity/policies/filters.py +1 -1
  218. metadata/generated/schema/entity/policies/policy.py +1 -1
  219. metadata/generated/schema/entity/services/__init__.py +1 -1
  220. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  221. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  222. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  223. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  224. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  225. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  226. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  227. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  228. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  229. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  230. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  231. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  232. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  233. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  234. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  235. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  236. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  237. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  238. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  239. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  240. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  241. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  242. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  243. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  244. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  245. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  246. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  247. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  248. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  249. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  250. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  251. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  252. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  253. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  254. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  255. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  256. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  257. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  258. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  259. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  260. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  261. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  262. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  263. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  264. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  265. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  266. metadata/generated/schema/entity/services/connections/database/mongoDB/__init__.py +1 -1
  267. metadata/generated/schema/entity/services/connections/database/mongoDB/mongoDBValues.py +1 -1
  268. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  269. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  270. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  271. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  272. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  273. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  274. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  275. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  276. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  277. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  278. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  279. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  280. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  281. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  282. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  283. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  284. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  285. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  287. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  288. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  289. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  290. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  291. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +62 -0
  292. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  296. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  297. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  302. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  306. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  310. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  314. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  316. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  317. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  318. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  320. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  321. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  322. metadata/generated/schema/entity/services/connections/storage/adlsConection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  324. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  325. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  326. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  327. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  328. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  329. metadata/generated/schema/entity/services/databaseService.py +1 -1
  330. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  331. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  332. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  333. metadata/generated/schema/entity/services/messagingService.py +1 -1
  334. metadata/generated/schema/entity/services/metadataService.py +4 -1
  335. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  336. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  337. metadata/generated/schema/entity/services/searchService.py +1 -1
  338. metadata/generated/schema/entity/services/serviceType.py +1 -1
  339. metadata/generated/schema/entity/services/storageService.py +1 -1
  340. metadata/generated/schema/entity/teams/__init__.py +1 -1
  341. metadata/generated/schema/entity/teams/persona.py +1 -1
  342. metadata/generated/schema/entity/teams/role.py +1 -1
  343. metadata/generated/schema/entity/teams/team.py +1 -1
  344. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  345. metadata/generated/schema/entity/teams/user.py +1 -1
  346. metadata/generated/schema/entity/type.py +1 -1
  347. metadata/generated/schema/entity/utils/__init__.py +1 -1
  348. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  349. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  350. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  351. metadata/generated/schema/events/__init__.py +1 -1
  352. metadata/generated/schema/events/api/__init__.py +1 -1
  353. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  354. metadata/generated/schema/events/dataInsightAlertConfig.py +1 -1
  355. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  356. metadata/generated/schema/events/entitySpelFilters.py +1 -1
  357. metadata/generated/schema/events/eventFilterRule.py +1 -1
  358. metadata/generated/schema/events/eventSubscription.py +1 -1
  359. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  360. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  361. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  362. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  363. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  364. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  365. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  366. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  367. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  368. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  369. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  370. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  371. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  372. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  373. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  374. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  375. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  376. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  377. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  378. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  379. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  380. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  381. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  382. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  383. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  384. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  385. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  386. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  387. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  388. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  389. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  390. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  391. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  392. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  393. metadata/generated/schema/monitoring/__init__.py +1 -1
  394. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  395. metadata/generated/schema/security/__init__.py +1 -1
  396. metadata/generated/schema/security/client/__init__.py +1 -1
  397. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  398. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  399. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  400. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  401. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  402. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  403. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  404. metadata/generated/schema/security/credentials/__init__.py +1 -1
  405. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  406. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +18 -0
  407. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  408. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  409. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  410. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  411. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  412. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  413. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  414. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  415. metadata/generated/schema/security/secrets/__init__.py +1 -1
  416. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  417. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  418. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  419. metadata/generated/schema/security/securityConfiguration.py +1 -1
  420. metadata/generated/schema/security/ssl/__init__.py +1 -1
  421. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  422. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  423. metadata/generated/schema/settings/__init__.py +1 -1
  424. metadata/generated/schema/settings/settings.py +1 -1
  425. metadata/generated/schema/system/__init__.py +1 -1
  426. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  427. metadata/generated/schema/system/ui/__init__.py +1 -1
  428. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  429. metadata/generated/schema/system/ui/page.py +1 -1
  430. metadata/generated/schema/tests/__init__.py +1 -1
  431. metadata/generated/schema/tests/basic.py +1 -1
  432. metadata/generated/schema/tests/customMetric.py +1 -1
  433. metadata/generated/schema/tests/testCase.py +1 -1
  434. metadata/generated/schema/tests/testDefinition.py +1 -1
  435. metadata/generated/schema/tests/testSuite.py +1 -1
  436. metadata/generated/schema/type/__init__.py +1 -1
  437. metadata/generated/schema/type/auditLog.py +1 -1
  438. metadata/generated/schema/type/basic.py +1 -1
  439. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  440. metadata/generated/schema/type/changeEvent.py +1 -1
  441. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  442. metadata/generated/schema/type/csvDocumentation.py +1 -1
  443. metadata/generated/schema/type/csvErrorType.py +1 -1
  444. metadata/generated/schema/type/csvFile.py +1 -1
  445. metadata/generated/schema/type/csvImportResult.py +1 -1
  446. metadata/generated/schema/type/dailyCount.py +1 -1
  447. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  448. metadata/generated/schema/type/entityHistory.py +1 -1
  449. metadata/generated/schema/type/entityLineage.py +1 -1
  450. metadata/generated/schema/type/entityReference.py +1 -1
  451. metadata/generated/schema/type/entityReferenceList.py +1 -1
  452. metadata/generated/schema/type/entityRelationship.py +1 -1
  453. metadata/generated/schema/type/entityUsage.py +1 -1
  454. metadata/generated/schema/type/filterPattern.py +1 -1
  455. metadata/generated/schema/type/function.py +1 -1
  456. metadata/generated/schema/type/include.py +1 -1
  457. metadata/generated/schema/type/jdbcConnection.py +1 -1
  458. metadata/generated/schema/type/lifeCycle.py +1 -1
  459. metadata/generated/schema/type/paging.py +1 -1
  460. metadata/generated/schema/type/profile.py +1 -1
  461. metadata/generated/schema/type/queryParserData.py +1 -1
  462. metadata/generated/schema/type/reaction.py +1 -1
  463. metadata/generated/schema/type/schedule.py +1 -1
  464. metadata/generated/schema/type/schema.py +1 -1
  465. metadata/generated/schema/type/tableQuery.py +1 -1
  466. metadata/generated/schema/type/tableUsageCount.py +1 -1
  467. metadata/generated/schema/type/tagLabel.py +1 -1
  468. metadata/generated/schema/type/usageDetails.py +1 -1
  469. metadata/generated/schema/type/usageRequest.py +1 -1
  470. metadata/generated/schema/type/votes.py +1 -1
  471. metadata/ingestion/api/parser.py +79 -26
  472. metadata/ingestion/api/topology_runner.py +15 -1
  473. metadata/ingestion/lineage/parser.py +20 -14
  474. metadata/ingestion/models/custom_properties.py +63 -0
  475. metadata/ingestion/ometa/mixins/custom_property_mixin.py +80 -0
  476. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +3 -2
  477. metadata/ingestion/ometa/mixins/patch_mixin_utils.py +0 -5
  478. metadata/ingestion/ometa/mixins/server_mixin.py +4 -2
  479. metadata/ingestion/ometa/ometa_api.py +4 -0
  480. metadata/ingestion/sink/metadata_rest.py +9 -0
  481. metadata/ingestion/source/dashboard/superset/api_source.py +25 -14
  482. metadata/ingestion/source/dashboard/superset/db_source.py +72 -36
  483. metadata/ingestion/source/dashboard/superset/mixin.py +23 -17
  484. metadata/ingestion/source/database/dbt/constants.py +2 -0
  485. metadata/ingestion/source/database/dbt/metadata.py +13 -3
  486. metadata/ingestion/source/database/salesforce/metadata.py +1 -1
  487. metadata/ingestion/source/pipeline/airflow/metadata.py +27 -8
  488. metadata/profiler/interface/sqlalchemy/profiler_interface.py +1 -1
  489. metadata/utils/logger.py +13 -0
  490. metadata/utils/tag_utils.py +2 -2
  491. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/METADATA +197 -197
  492. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/RECORD +496 -491
  493. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/LICENSE +0 -0
  494. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/WHEEL +0 -0
  495. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/entry_points.txt +0 -0
  496. {openmetadata_ingestion-1.2.3.1.dist-info → openmetadata_ingestion-1.2.4.0.dist-info}/top_level.txt +0 -0
@@ -11,12 +11,12 @@
11
11
  """
12
12
  Helper to parse workflow configurations
13
13
  """
14
- from typing import Optional, Type, TypeVar, Union
14
+ from typing import Type, TypeVar, Union
15
15
 
16
16
  from pydantic import BaseModel, ValidationError
17
17
 
18
- from metadata.generated.schema.entity.automations.testServiceConnection import (
19
- TestServiceConnectionRequest,
18
+ from metadata.generated.schema.entity.automations.workflow import (
19
+ Workflow as AutomationWorkflow,
20
20
  )
21
21
  from metadata.generated.schema.entity.services.dashboardService import (
22
22
  DashboardConnection,
@@ -26,6 +26,9 @@ from metadata.generated.schema.entity.services.databaseService import (
26
26
  DatabaseConnection,
27
27
  DatabaseServiceType,
28
28
  )
29
+ from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipeline import (
30
+ IngestionPipeline,
31
+ )
29
32
  from metadata.generated.schema.entity.services.messagingService import (
30
33
  MessagingConnection,
31
34
  MessagingServiceType,
@@ -271,13 +274,11 @@ def _parse_inner_connection(config_dict: dict, source_type: str) -> None:
271
274
  :param config_dict: JSON configuration
272
275
  :param source_type: source type name, e.g., Airflow.
273
276
  """
274
- inner_source_type = config_dict["source"]["serviceConnection"]["config"][
275
- "connection"
276
- ]["type"]
277
+ inner_source_type = config_dict["type"]
277
278
  inner_service_type = get_service_type(inner_source_type)
278
279
  inner_connection_class = get_connection_class(inner_source_type, inner_service_type)
279
280
  _unsafe_parse_config(
280
- config=config_dict["source"]["serviceConnection"]["config"]["connection"],
281
+ config=config_dict,
281
282
  cls=inner_connection_class,
282
283
  message=f"Error parsing the inner service connection for {source_type}",
283
284
  )
@@ -304,7 +305,12 @@ def parse_service_connection(config_dict: dict) -> None:
304
305
 
305
306
  if source_type in HAS_INNER_CONNECTION:
306
307
  # We will first parse the inner `connection` configuration
307
- _parse_inner_connection(config_dict, source_type)
308
+ _parse_inner_connection(
309
+ config_dict["source"]["serviceConnection"]["config"]["connection"][
310
+ "config"
311
+ ]["connection"],
312
+ source_type,
313
+ )
308
314
 
309
315
  # Parse the service connection dictionary with the scoped class
310
316
  _unsafe_parse_config(
@@ -434,37 +440,84 @@ def parse_workflow_config_gracefully(
434
440
  raise ParsingConfigurationError("Uncaught error when parsing the workflow!")
435
441
 
436
442
 
437
- def parse_test_connection_request_gracefully(
443
+ def parse_ingestion_pipeline_config_gracefully(
438
444
  config_dict: dict,
439
- ) -> Optional[TestServiceConnectionRequest]:
445
+ ) -> IngestionPipeline:
440
446
  """
441
- This function either correctly parses the pydantic class,
442
- or throws a scoped error while fetching the required source
443
- connection class
447
+ This function either correctly parses the pydantic class, or
448
+ throws a scoped error while fetching the required source connection
449
+ class.
444
450
 
445
- :param config_dict: JSON workflow config
446
- :return: TestServiceConnectionRequest or scoped error
451
+ :param config_dict: JSON ingestion pipeline config
452
+ :return:Ingestion Pipeline config or scoped error
447
453
  """
448
454
 
449
455
  try:
450
- test_service_connection = TestServiceConnectionRequest.parse_obj(config_dict)
451
- return test_service_connection
456
+ ingestion_pipeline = IngestionPipeline.parse_obj(config_dict)
457
+ return ingestion_pipeline
452
458
 
453
- except ValidationError as err:
454
- # Unsafe access to the keys. Allow a KeyError if the config is not well formatted
455
- source_type = config_dict["connection"]["config"]["type"]
456
- logger.warning(
457
- f"Error parsing the Workflow Configuration for {source_type} ingestion: {err}"
459
+ except ValidationError:
460
+ source_config_type = config_dict["sourceConfig"]["config"].get("type")
461
+
462
+ if source_config_type is None:
463
+ raise InvalidWorkflowException("Missing type in the sourceConfig config")
464
+
465
+ source_config_class = get_source_config_class(source_config_type)
466
+
467
+ _unsafe_parse_config(
468
+ config=config_dict["sourceConfig"]["config"],
469
+ cls=source_config_class,
470
+ message="Error parsing the source config",
471
+ )
472
+
473
+ raise ParsingConfigurationError(
474
+ "Uncaught error when parsing the Ingestion Pipeline!"
475
+ )
476
+
477
+
478
+ def parse_automation_workflow_gracefully(
479
+ config_dict: dict,
480
+ ) -> AutomationWorkflow:
481
+ """
482
+ This function either correctly parses the pydantic class, or
483
+ throws a scoped error while fetching the required source connection
484
+ class.
485
+
486
+ :param config_dict: JSON AutomationWorkflow config
487
+ :return: AutomationWorkflow config or scoped error
488
+ """
489
+
490
+ try:
491
+ automation_workflow = AutomationWorkflow.parse_obj(config_dict)
492
+ return automation_workflow
493
+
494
+ except ValidationError:
495
+ source_type = config_dict["request"]["connection"]["config"].get("type")
496
+
497
+ if source_type is None:
498
+ raise InvalidWorkflowException("Missing type in the connection config")
499
+
500
+ logger.debug(
501
+ f"Error parsing the Workflow Configuration for {source_type} ingestion"
458
502
  )
459
503
 
460
504
  service_type = get_service_type(source_type)
461
505
  connection_class = get_connection_class(source_type, service_type)
462
506
 
463
- # Parse the dictionary with the scoped class
507
+ if source_type in HAS_INNER_CONNECTION:
508
+ # We will first parse the inner `connection` configuration
509
+ _parse_inner_connection(
510
+ config_dict["request"]["connection"]["config"]["connection"],
511
+ source_type,
512
+ )
513
+
514
+ # Parse the service connection dictionary with the scoped class
464
515
  _unsafe_parse_config(
465
- config=config_dict["connection"]["config"],
516
+ config=config_dict["request"]["connection"]["config"],
466
517
  cls=connection_class,
467
- message="Error parsing the connection config",
518
+ message="Error parsing the service connection",
468
519
  )
469
520
 
470
- raise ParsingConfigurationError("Uncaught error when parsing the workflow!")
521
+ raise ParsingConfigurationError(
522
+ "Uncaught error when parsing the Ingestion Pipeline!"
523
+ )
@@ -26,6 +26,7 @@ from metadata.generated.schema.entity.data.database import Database
26
26
  from metadata.generated.schema.entity.data.databaseSchema import DatabaseSchema
27
27
  from metadata.generated.schema.entity.data.storedProcedure import StoredProcedure
28
28
  from metadata.ingestion.api.models import Either, Entity
29
+ from metadata.ingestion.models.custom_properties import OMetaCustomProperties
29
30
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
30
31
  from metadata.ingestion.models.patch_request import PatchRequest
31
32
  from metadata.ingestion.models.topology import (
@@ -387,6 +388,19 @@ class TopologyRunnerMixin(Generic[C]):
387
388
  # We'll keep the tag fqn in the context and use if required
388
389
  self.update_context(stage=stage, context=right)
389
390
 
391
+ @yield_and_update_context.register
392
+ def _(
393
+ self,
394
+ right: OMetaCustomProperties,
395
+ stage: NodeStage,
396
+ entity_request: Either[C],
397
+ ) -> Iterable[Either[Entity]]:
398
+ """Custom Property implementation for the context information"""
399
+ yield entity_request
400
+
401
+ # We'll keep the tag fqn in the context and use if required
402
+ self.update_context(stage=stage, context=right)
403
+
390
404
  @yield_and_update_context.register
391
405
  def _(
392
406
  self,
@@ -426,7 +440,7 @@ class TopologyRunnerMixin(Generic[C]):
426
440
  # Either use the received request or the acknowledged Entity
427
441
  entity = entity_request.right if entity_request else None
428
442
 
429
- if not stage.nullable and entity is None:
443
+ if not stage.nullable and entity is None and entity_request.left is None:
430
444
  raise ValueError("Value unexpectedly None")
431
445
 
432
446
  if entity_request is not None:
@@ -117,26 +117,32 @@ class LineageParser:
117
117
  # These are @lazy_property, not properly being picked up by IDEs. Ignore the warning
118
118
  return self.retrieve_tables(self.parser.target_tables)
119
119
 
120
+ # pylint: disable=protected-access
120
121
  @cached_property
121
122
  def column_lineage(self) -> List[Tuple[Column, Column]]:
122
123
  """
123
124
  Get a list of tuples of column lineage
124
125
  """
125
- if self.parser._dialect == SQLPARSE_DIALECT: # pylint: disable=protected-access
126
- return self.parser.get_column_lineage()
127
126
  column_lineage = []
128
- for col_lineage in self.parser.get_column_lineage():
129
- # In case of column level lineage it is possible that we get
130
- # two or more columns as there might be some intermediate columns
131
- # but the source columns will be the first value and
132
- # the target column always will be the last columns
133
- src_column = col_lineage[0]
134
- tgt_column = col_lineage[-1]
135
- src_col = Column(src_column.raw_name)
136
- src_col._parent = src_column._parent # pylint: disable=protected-access
137
- tgt_col = Column(tgt_column.raw_name)
138
- tgt_col._parent = tgt_column._parent # pylint: disable=protected-access
139
- column_lineage.append((src_col, tgt_col))
127
+ try:
128
+ if self.parser._dialect == SQLPARSE_DIALECT:
129
+ return self.parser.get_column_lineage()
130
+
131
+ for col_lineage in self.parser.get_column_lineage():
132
+ # In case of column level lineage it is possible that we get
133
+ # two or more columns as there might be some intermediate columns
134
+ # but the source columns will be the first value and
135
+ # the target column always will be the last columns
136
+ src_column = col_lineage[0]
137
+ tgt_column = col_lineage[-1]
138
+ src_col = Column(src_column.raw_name)
139
+ src_col._parent = src_column._parent # pylint: disable=protected-access
140
+ tgt_col = Column(tgt_column.raw_name)
141
+ tgt_col._parent = tgt_column._parent # pylint: disable=protected-access
142
+ column_lineage.append((src_col, tgt_col))
143
+ except Exception as err:
144
+ logger.warning(f"Failed to fetch column level lineage due to: {err}")
145
+ logger.debug(traceback.format_exc())
140
146
  return column_lineage
141
147
 
142
148
  @cached_property
@@ -0,0 +1,63 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ Custom models for custom properties
13
+ """
14
+ from enum import Enum
15
+ from typing import Optional, Type, TypeVar
16
+
17
+ from pydantic import BaseModel
18
+
19
+ from metadata.generated.schema.api.data.createCustomProperty import (
20
+ CreateCustomPropertyRequest,
21
+ )
22
+ from metadata.generated.schema.type import basic, entityHistory
23
+
24
+ T = TypeVar("T", bound=BaseModel)
25
+
26
+
27
+ class CustomPropertyDataTypes(Enum):
28
+ STRING = "string"
29
+ INTEGER = "integer"
30
+ MARKDOWN = "markdown"
31
+ DATE = "date"
32
+ DATETIME = "dateTime"
33
+ DURATION = "duration"
34
+ EMAIL = "email"
35
+ NUMBER = "number"
36
+ SQLQUERY = "sqlQuery"
37
+ TIME = "time"
38
+ TIMEINTERVAL = "timeInterval"
39
+ TIMESTAMP = "timestamp"
40
+
41
+
42
+ class OMetaCustomProperties(BaseModel):
43
+ entity_type: Type[T]
44
+ custom_property_type: Optional[CustomPropertyDataTypes]
45
+ createCustomPropertyRequest: CreateCustomPropertyRequest
46
+
47
+
48
+ class CustomPropertyType(BaseModel):
49
+ """
50
+ Pydantic Model for custom properties
51
+ """
52
+
53
+ id: basic.Uuid
54
+ name: basic.EntityName
55
+ displayName: Optional[str]
56
+ fullyQualifiedName: Optional[basic.FullyQualifiedEntityName]
57
+ description: Optional[basic.Markdown]
58
+ category: Optional[str]
59
+ nameSpace: Optional[str]
60
+ version: Optional[entityHistory.EntityVersion]
61
+ updatedAt: Optional[basic.Timestamp]
62
+ updatedBy: Optional[str]
63
+ href: Optional[basic.Href]
@@ -0,0 +1,80 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+ """
12
+ Mixin class containing Custom Property specific methods
13
+
14
+ To be used by OpenMetadata class
15
+ """
16
+ from typing import Dict
17
+
18
+ from metadata.generated.schema.api.data.createCustomProperty import PropertyType
19
+ from metadata.ingestion.models.custom_properties import (
20
+ CustomPropertyDataTypes,
21
+ CustomPropertyType,
22
+ OMetaCustomProperties,
23
+ )
24
+ from metadata.ingestion.ometa.client import REST
25
+ from metadata.utils.constants import ENTITY_REFERENCE_TYPE_MAP
26
+ from metadata.utils.logger import ometa_logger
27
+
28
+ logger = ometa_logger()
29
+
30
+
31
+ class OMetaCustomPropertyMixin:
32
+ """
33
+ OpenMetadata API methods related to CustomProperty.
34
+
35
+ To be inherited by OpenMetadata
36
+ """
37
+
38
+ client: REST
39
+
40
+ def create_or_update_custom_property(
41
+ self, ometa_custom_property: OMetaCustomProperties
42
+ ) -> Dict:
43
+ """Create or update custom property. If custom property name matches an existing
44
+ one then it will be updated.
45
+
46
+ Args:
47
+ ometa_custom_property (OMetaCustomProperties): custom property to be create or updated
48
+ """
49
+ # Get the json schema id of the entity to be updated
50
+ entity_type = ENTITY_REFERENCE_TYPE_MAP.get(
51
+ ometa_custom_property.entity_type.__name__
52
+ )
53
+ entity_schema = self.client.get(
54
+ f"/metadata/types/name/{entity_type}?category=field"
55
+ )
56
+
57
+ # Get the data type of the custom property
58
+ if not ometa_custom_property.createCustomPropertyRequest.propertyType:
59
+ custom_property_type = self.get_custom_property_type(
60
+ data_type=ometa_custom_property.custom_property_type
61
+ )
62
+ property_type = PropertyType(id=custom_property_type.id, type="type")
63
+ ometa_custom_property.createCustomPropertyRequest.propertyType = (
64
+ property_type
65
+ )
66
+
67
+ resp = self.client.put(
68
+ f"/metadata/types/{entity_schema.get('id')}",
69
+ data=ometa_custom_property.createCustomPropertyRequest.json(),
70
+ )
71
+ return resp
72
+
73
+ def get_custom_property_type(
74
+ self, data_type: CustomPropertyDataTypes
75
+ ) -> CustomPropertyType:
76
+ """
77
+ Get all the supported datatypes for the custom properties
78
+ """
79
+ resp = self.client.get(f"/metadata/types/name/{data_type.value}?category=field")
80
+ return CustomPropertyType(**resp)
@@ -20,6 +20,7 @@ from metadata.generated.schema.entity.services.ingestionPipelines.ingestionPipel
20
20
  IngestionPipeline,
21
21
  PipelineStatus,
22
22
  )
23
+ from metadata.ingestion.api.parser import parse_ingestion_pipeline_config_gracefully
23
24
  from metadata.ingestion.ometa.client import REST
24
25
  from metadata.utils.logger import ometa_logger
25
26
 
@@ -79,7 +80,7 @@ class OMetaIngestionPipelineMixin:
79
80
  f"{self.get_suffix(IngestionPipeline)}/trigger/{ingestion_pipeline_id}"
80
81
  )
81
82
 
82
- return IngestionPipeline.parse_obj(resp)
83
+ return parse_ingestion_pipeline_config_gracefully(resp)
83
84
 
84
85
  def get_pipeline_status_between_ts(
85
86
  self,
@@ -125,6 +126,6 @@ class OMetaIngestionPipelineMixin:
125
126
  )
126
127
 
127
128
  if hasattr(resp, "sourceConfig"):
128
- return IngestionPipeline.parse_obj(resp)
129
+ return parse_ingestion_pipeline_config_gracefully(resp)
129
130
 
130
131
  return None
@@ -21,10 +21,8 @@ from typing import Generic, List, Optional, Type, TypeVar, Union
21
21
  from pydantic import BaseModel
22
22
 
23
23
  from metadata.generated.schema.type import basic
24
- from metadata.utils.logger import ometa_logger
25
24
 
26
25
  T = TypeVar("T", bound=BaseModel)
27
- logger = ometa_logger()
28
26
 
29
27
 
30
28
  class PatchField(str, Enum):
@@ -140,9 +138,6 @@ class OMetaPatchMixinBase(Generic[T]):
140
138
  instance = self.get_by_id(entity=entity, entity_id=entity_id, fields=fields)
141
139
 
142
140
  if not instance:
143
- logger.warning(
144
- f"Cannot find an instance of '{entity.__class__.__name__}' with id [{str(entity_id)}]."
145
- )
146
141
  return None
147
142
 
148
143
  return instance
@@ -60,11 +60,13 @@ class OMetaServerMixin:
60
60
  Validate Server & Client versions. They should match.
61
61
  Otherwise, raise VersionMismatchException
62
62
  """
63
- logger.debug("Validating client and server versions")
64
-
65
63
  server_version = self.get_server_version()
66
64
  client_version = get_client_version()
67
65
 
66
+ logger.info(
67
+ f"OpenMetadata client running with Server version [{server_version}] and Client version [{client_version}]"
68
+ )
69
+
68
70
  # Server version will be 0.13.2, vs 0.13.2.X from the client.
69
71
  # If the server version is contained in the client version, then we're good to go
70
72
  if server_version not in client_version:
@@ -33,6 +33,9 @@ from metadata.generated.schema.type.entityReference import EntityReference
33
33
  from metadata.ingestion.models.encoders import show_secrets_encoder
34
34
  from metadata.ingestion.ometa.auth_provider import AuthenticationProvider
35
35
  from metadata.ingestion.ometa.client import REST, APIError, ClientConfig
36
+ from metadata.ingestion.ometa.mixins.custom_property_mixin import (
37
+ OMetaCustomPropertyMixin,
38
+ )
36
39
  from metadata.ingestion.ometa.mixins.dashboard_mixin import OMetaDashboardMixin
37
40
  from metadata.ingestion.ometa.mixins.data_insight_mixin import DataInsightMixin
38
41
  from metadata.ingestion.ometa.mixins.es_mixin import ESMixin
@@ -110,6 +113,7 @@ class OpenMetadata(
110
113
  OMetaQueryMixin,
111
114
  OMetaRolePolicyMixin,
112
115
  OMetaSearchIndexMixin,
116
+ OMetaCustomPropertyMixin,
113
117
  Generic[T, C],
114
118
  ):
115
119
  """
@@ -51,6 +51,7 @@ from metadata.generated.schema.tests.testSuite import TestSuite
51
51
  from metadata.generated.schema.type.schema import Topic
52
52
  from metadata.ingestion.api.models import Either, Entity, StackTraceError
53
53
  from metadata.ingestion.api.steps import Sink
54
+ from metadata.ingestion.models.custom_properties import OMetaCustomProperties
54
55
  from metadata.ingestion.models.data_insight import OMetaDataInsightSample
55
56
  from metadata.ingestion.models.delete_entity import DeleteEntity
56
57
  from metadata.ingestion.models.life_cycle import OMetaLifeCycleData
@@ -172,6 +173,14 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
172
173
  )
173
174
  return Either(right=entity)
174
175
 
176
+ @_run_dispatch.register
177
+ def write_custom_properties(self, record: OMetaCustomProperties) -> Either[Dict]:
178
+ """
179
+ Create or update the custom properties
180
+ """
181
+ custom_property = self.metadata.create_or_update_custom_property(record)
182
+ return Either(right=custom_property)
183
+
175
184
  @_run_dispatch.register
176
185
  def write_datamodel(self, datamodel_link: DataModelLink) -> Either[DataModel]:
177
186
  """
@@ -123,19 +123,30 @@ class SupersetAPISource(SupersetSourceMixin):
123
123
  ) -> Iterable[Either[CreateChartRequest]]:
124
124
  """Method to fetch charts linked to dashboard"""
125
125
  for chart_id in self._get_charts_of_dashboard(dashboard_details):
126
- chart_json = self.all_charts.get(chart_id)
127
- if not chart_json:
128
- logger.warning(f"chart details for id: {chart_id} not found, skipped")
129
- continue
130
- chart = CreateChartRequest(
131
- name=chart_json.id,
132
- displayName=chart_json.slice_name,
133
- description=chart_json.description,
134
- chartType=get_standard_chart_type(chart_json.viz_type),
135
- sourceUrl=f"{clean_uri(self.service_connection.hostPort)}{chart_json.url}",
136
- service=self.context.dashboard_service,
137
- )
138
- yield Either(right=chart)
126
+ try:
127
+ chart_json = self.all_charts.get(chart_id)
128
+ if not chart_json:
129
+ logger.warning(
130
+ f"chart details for id: {chart_id} not found, skipped"
131
+ )
132
+ continue
133
+ chart = CreateChartRequest(
134
+ name=chart_json.id,
135
+ displayName=chart_json.slice_name,
136
+ description=chart_json.description,
137
+ chartType=get_standard_chart_type(chart_json.viz_type),
138
+ sourceUrl=f"{clean_uri(self.service_connection.hostPort)}{chart_json.url}",
139
+ service=self.context.dashboard_service,
140
+ )
141
+ yield Either(right=chart)
142
+ except Exception as exc: # pylint: disable=broad-except
143
+ yield Either(
144
+ left=StackTraceError(
145
+ name=chart_json.id,
146
+ error=f"Error creating chart [{chart_json.id} - {chart_json.slice_name}]: {exc}",
147
+ stack_trace=traceback.format_exc(),
148
+ )
149
+ )
139
150
 
140
151
  def _get_datasource_fqn(
141
152
  self, datasource_id: str, db_service_entity: DatabaseService
@@ -166,7 +177,7 @@ class SupersetAPISource(SupersetSourceMixin):
166
177
  service_name=db_service_entity.name.__root__,
167
178
  )
168
179
  return dataset_fqn
169
- except KeyError as err:
180
+ except Exception as err:
170
181
  logger.debug(traceback.format_exc())
171
182
  logger.warning(
172
183
  f"Failed to fetch Datasource with id [{datasource_id}]: {err}"