Commit 4925ec35 by Sarath Subramanian

ATLAS-3070: Create patch framework to persist typedef patches applied to atlas

parent 2e1c5634
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_0000_001",
"description": "Add 'replicatedFrom' and 'replicatedTo' attributes to Referenceable",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "Referenceable", "typeName": "Referenceable",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_0000_002",
"description": "Set serviceType 'atlas_core' to Referenceable",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "Referenceable", "typeName": "Referenceable",
"applyToVersion": "1.0", "applyToVersion": "1.1",
"updateToVersion": "1.1", "updateToVersion": "1.2",
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_003",
"description": "Set serviceType 'atlas_core' to __internal",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "__internal", "typeName": "__internal",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -15,6 +19,8 @@ ...@@ -15,6 +19,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_004",
"description": "Set serviceType 'atlas_core' to Asset",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "Asset", "typeName": "Asset",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -22,6 +28,8 @@ ...@@ -22,6 +28,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_005",
"description": "Set serviceType 'atlas_core' to DataSet",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "DataSet", "typeName": "DataSet",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -29,6 +37,8 @@ ...@@ -29,6 +37,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_006",
"description": "Set serviceType 'atlas_core' to Infrastructure",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "Infrastructure", "typeName": "Infrastructure",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -36,6 +46,8 @@ ...@@ -36,6 +46,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_007",
"description": "Set serviceType 'atlas_core' to Process",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "Process", "typeName": "Process",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -43,6 +55,8 @@ ...@@ -43,6 +55,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_008",
"description": "Set serviceType 'atlas_core' to AtlasServer",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasServer", "typeName": "AtlasServer",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -50,6 +64,8 @@ ...@@ -50,6 +64,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_009",
"description": "Set serviceType 'atlas_core' to __AtlasUserProfile",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "__AtlasUserProfile", "typeName": "__AtlasUserProfile",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -57,6 +73,8 @@ ...@@ -57,6 +73,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_010",
"description": "Set serviceType 'atlas_core' to __AtlasUserSavedSearch",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "__AtlasUserSavedSearch", "typeName": "__AtlasUserSavedSearch",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -64,6 +82,8 @@ ...@@ -64,6 +82,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_011",
"description": "Set serviceType 'atlas_core' to __ExportImportAuditEntry",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "__ExportImportAuditEntry", "typeName": "__ExportImportAuditEntry",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -71,6 +91,8 @@ ...@@ -71,6 +91,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_012",
"description": "Set serviceType 'atlas_core' to dataset_process_inputs",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "dataset_process_inputs", "typeName": "dataset_process_inputs",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -78,6 +100,8 @@ ...@@ -78,6 +100,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_013",
"description": "Set serviceType 'atlas_core' to process_dataset_outputs",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "process_dataset_outputs", "typeName": "process_dataset_outputs",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -85,6 +109,8 @@ ...@@ -85,6 +109,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_014",
"description": "Set serviceType 'atlas_core' to __AtlasUserProfile_savedsearches",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "__AtlasUserProfile_savedsearches", "typeName": "__AtlasUserProfile_savedsearches",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -92,6 +118,8 @@ ...@@ -92,6 +118,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_015",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTermRelationshipStatus",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTermRelationshipStatus", "typeName": "AtlasGlossaryTermRelationshipStatus",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -99,6 +127,8 @@ ...@@ -99,6 +127,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_016",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTermAssignmentStatus",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTermAssignmentStatus", "typeName": "AtlasGlossaryTermAssignmentStatus",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -106,6 +136,8 @@ ...@@ -106,6 +136,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_017",
"description": "Set serviceType 'atlas_core' to AtlasGlossary",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossary", "typeName": "AtlasGlossary",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -113,6 +145,8 @@ ...@@ -113,6 +145,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_018",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTerm",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTerm", "typeName": "AtlasGlossaryTerm",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -120,6 +154,8 @@ ...@@ -120,6 +154,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_019",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryCategory",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryCategory", "typeName": "AtlasGlossaryCategory",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -127,6 +163,8 @@ ...@@ -127,6 +163,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_020",
"description": "Set serviceType 'atlas_core' to AtlasGlossarySemanticAssignment",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossarySemanticAssignment", "typeName": "AtlasGlossarySemanticAssignment",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -134,6 +172,8 @@ ...@@ -134,6 +172,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_021",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTermAnchor",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTermAnchor", "typeName": "AtlasGlossaryTermAnchor",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -141,6 +181,8 @@ ...@@ -141,6 +181,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_022",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTermCategorization",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTermCategorization", "typeName": "AtlasGlossaryTermCategorization",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -148,6 +190,8 @@ ...@@ -148,6 +190,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_023",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryCategoryAnchor",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryCategoryAnchor", "typeName": "AtlasGlossaryCategoryAnchor",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -155,6 +199,8 @@ ...@@ -155,6 +199,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_024",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryCategoryHierarchyLink",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryCategoryHierarchyLink", "typeName": "AtlasGlossaryCategoryHierarchyLink",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -162,6 +208,8 @@ ...@@ -162,6 +208,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_025",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryRelatedTerm",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryRelatedTerm", "typeName": "AtlasGlossaryRelatedTerm",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -169,6 +217,8 @@ ...@@ -169,6 +217,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_026",
"description": "Set serviceType 'atlas_core' to AtlasGlossarySynonym",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossarySynonym", "typeName": "AtlasGlossarySynonym",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -176,6 +226,8 @@ ...@@ -176,6 +226,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_027",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryAntonym",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryAntonym", "typeName": "AtlasGlossaryAntonym",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -183,6 +235,8 @@ ...@@ -183,6 +235,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_028",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryPreferredTerm",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryPreferredTerm", "typeName": "AtlasGlossaryPreferredTerm",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -190,6 +244,8 @@ ...@@ -190,6 +244,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_029",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryReplacementTerm",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryReplacementTerm", "typeName": "AtlasGlossaryReplacementTerm",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -197,6 +253,8 @@ ...@@ -197,6 +253,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_030",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryTranslation",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryTranslation", "typeName": "AtlasGlossaryTranslation",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -204,6 +262,8 @@ ...@@ -204,6 +262,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_031",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryIsARelationship",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryIsARelationship", "typeName": "AtlasGlossaryIsARelationship",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -211,6 +271,8 @@ ...@@ -211,6 +271,8 @@
"serviceType": "atlas_core" "serviceType": "atlas_core"
}, },
{ {
"id": "TYPEDEF_PATCH_0000_032",
"description": "Set serviceType 'atlas_core' to AtlasGlossaryValidValue",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "AtlasGlossaryValidValue", "typeName": "AtlasGlossaryValidValue",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_033",
"description": "Add 'position' attribute to hive_column",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "hive_column", "typeName": "hive_column",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_034",
"description": "Add 'schemaAttributes' typeDefOptions to hive_column",
"action": "UPDATE_TYPEDEF_OPTIONS", "action": "UPDATE_TYPEDEF_OPTIONS",
"typeName": "hive_column", "typeName": "hive_column",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -10,6 +12,8 @@ ...@@ -10,6 +12,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_1000_035",
"description": "Add 'schemaElementsAttribute' typeDefOptions to hive_table",
"action": "UPDATE_TYPEDEF_OPTIONS", "action": "UPDATE_TYPEDEF_OPTIONS",
"typeName": "hive_table", "typeName": "hive_table",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_036",
"description": "Update 'table' attribute in hive_column",
"action": "UPDATE_ATTRIBUTE", "action": "UPDATE_ATTRIBUTE",
"typeName": "hive_column", "typeName": "hive_column",
"applyToVersion": "1.2", "applyToVersion": "1.2",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_037",
"description": "Add 'parameters', 'createTime' and 'modifiedTime' attributes to hbase_table",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "hbase_table", "typeName": "hbase_table",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -34,6 +36,8 @@ ...@@ -34,6 +36,8 @@
] ]
}, },
{ {
"id": "TYPEDEF_PATCH_1000_038",
"description": "Add 'createTime' and 'modifiedTime' attributes to hbase_column_family",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "hbase_column_family", "typeName": "hbase_column_family",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_039",
"description": "Add attributes to hbase_table",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "hbase_table", "typeName": "hbase_table",
"applyToVersion": "1.2", "applyToVersion": "1.2",
...@@ -59,6 +61,8 @@ ...@@ -59,6 +61,8 @@
] ]
}, },
{ {
"id": "TYPEDEF_PATCH_1000_040",
"description": "Add attributes to hbase_column_family",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "hbase_column_family", "typeName": "hbase_column_family",
"applyToVersion": "1.1", "applyToVersion": "1.1",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_041",
"description": "Add 'partitionCount' attribute to kafka_topic",
"action": "ADD_ATTRIBUTE", "action": "ADD_ATTRIBUTE",
"typeName": "kafka_topic", "typeName": "kafka_topic",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_042",
"description": "Set serviceType 'file_system' to file_action",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "file_action", "typeName": "file_action",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -8,6 +10,8 @@ ...@@ -8,6 +10,8 @@
"serviceType": "file_system" "serviceType": "file_system"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_043",
"description": "Set serviceType 'file_system' to fs_permissions",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "fs_permissions", "typeName": "fs_permissions",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -15,6 +19,8 @@ ...@@ -15,6 +19,8 @@
"serviceType": "file_system" "serviceType": "file_system"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_044",
"description": "Set serviceType 'file_system' to fs_path",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "fs_path", "typeName": "fs_path",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -22,6 +28,8 @@ ...@@ -22,6 +28,8 @@
"serviceType": "file_system" "serviceType": "file_system"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_045",
"description": "Set serviceType 'file_system' to hdfs_path",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hdfs_path", "typeName": "hdfs_path",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -29,6 +37,8 @@ ...@@ -29,6 +37,8 @@
"serviceType": "file_system" "serviceType": "file_system"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_046",
"description": "Set serviceType 'hive' to hive_principal_type",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_principal_type", "typeName": "hive_principal_type",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -36,6 +46,8 @@ ...@@ -36,6 +46,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_047",
"description": "Set serviceType 'hive' to hive_order",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_order", "typeName": "hive_order",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -43,6 +55,8 @@ ...@@ -43,6 +55,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_048",
"description": "Set serviceType 'hive' to hive_serde",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_serde", "typeName": "hive_serde",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -50,6 +64,8 @@ ...@@ -50,6 +64,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_049",
"description": "Set serviceType 'hive' to hive_process",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_process", "typeName": "hive_process",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -57,6 +73,8 @@ ...@@ -57,6 +73,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_050",
"description": "Set serviceType 'hive' to hive_table",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_table", "typeName": "hive_table",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -64,6 +82,8 @@ ...@@ -64,6 +82,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_051",
"description": "Set serviceType 'hive' to hive_storagedesc",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_storagedesc", "typeName": "hive_storagedesc",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -71,6 +91,8 @@ ...@@ -71,6 +91,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_052",
"description": "Set serviceType 'hive' to hive_db",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_db", "typeName": "hive_db",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -78,6 +100,8 @@ ...@@ -78,6 +100,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_053",
"description": "Set serviceType 'hive' to hive_column",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_column", "typeName": "hive_column",
"applyToVersion": "1.3", "applyToVersion": "1.3",
...@@ -85,6 +109,8 @@ ...@@ -85,6 +109,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_054",
"description": "Set serviceType 'hive' to hive_column_lineage",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_column_lineage", "typeName": "hive_column_lineage",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -92,6 +118,8 @@ ...@@ -92,6 +118,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_055",
"description": "Set serviceType 'hive' to hive_table_db",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_table_db", "typeName": "hive_table_db",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -99,6 +127,8 @@ ...@@ -99,6 +127,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_056",
"description": "Set serviceType 'hive' to hive_table_columns",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_table_columns", "typeName": "hive_table_columns",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -106,6 +136,8 @@ ...@@ -106,6 +136,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_057",
"description": "Set serviceType 'hive' to hive_table_partitionkeys",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_table_partitionkeys", "typeName": "hive_table_partitionkeys",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -113,6 +145,8 @@ ...@@ -113,6 +145,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_058",
"description": "Set serviceType 'hive' to hive_table_storagedesc",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_table_storagedesc", "typeName": "hive_table_storagedesc",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -120,6 +154,8 @@ ...@@ -120,6 +154,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_059",
"description": "Set serviceType 'hive' to hive_process_column_lineage",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hive_process_column_lineage", "typeName": "hive_process_column_lineage",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -127,6 +163,8 @@ ...@@ -127,6 +163,8 @@
"serviceType": "hive" "serviceType": "hive"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_060",
"description": "Set serviceType 'sqoop' to sqoop_process",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "sqoop_process", "typeName": "sqoop_process",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -134,6 +172,8 @@ ...@@ -134,6 +172,8 @@
"serviceType": "sqoop" "serviceType": "sqoop"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_061",
"description": "Set serviceType 'sqoop' to sqoop_dbdatastore",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "sqoop_dbdatastore", "typeName": "sqoop_dbdatastore",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -141,6 +181,8 @@ ...@@ -141,6 +181,8 @@
"serviceType": "sqoop" "serviceType": "sqoop"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_062",
"description": "Set serviceType 'falcon' to falcon_feed_replication",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_feed_replication", "typeName": "falcon_feed_replication",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -148,6 +190,8 @@ ...@@ -148,6 +190,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_063",
"description": "Set serviceType 'falcon' to falcon_cluster",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_cluster", "typeName": "falcon_cluster",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -155,6 +199,8 @@ ...@@ -155,6 +199,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_064",
"description": "Set serviceType 'falcon' to falcon_feed",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_feed", "typeName": "falcon_feed",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -162,6 +208,8 @@ ...@@ -162,6 +208,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_065",
"description": "Set serviceType 'falcon' to falcon_process",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_process", "typeName": "falcon_process",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -169,6 +217,8 @@ ...@@ -169,6 +217,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_066",
"description": "Set serviceType 'falcon' to falcon_feed_creation",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_feed_creation", "typeName": "falcon_feed_creation",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -176,6 +226,8 @@ ...@@ -176,6 +226,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_067",
"description": "Set serviceType 'falcon' to falcon_feed_cluster",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_feed_cluster", "typeName": "falcon_feed_cluster",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -183,6 +235,8 @@ ...@@ -183,6 +235,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_068",
"description": "Set serviceType 'falcon' to falcon_cluster_process",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_cluster_process", "typeName": "falcon_cluster_process",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -190,6 +244,8 @@ ...@@ -190,6 +244,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_069",
"description": "Set serviceType 'falcon' to falcon_cluster_feed_creation",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "falcon_cluster_feed_creation", "typeName": "falcon_cluster_feed_creation",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -197,6 +253,8 @@ ...@@ -197,6 +253,8 @@
"serviceType": "falcon" "serviceType": "falcon"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_070",
"description": "Set serviceType 'hbase' to hbase_namespace",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_namespace", "typeName": "hbase_namespace",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -204,6 +262,8 @@ ...@@ -204,6 +262,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_071",
"description": "Set serviceType 'hbase' to hbase_table",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_table", "typeName": "hbase_table",
"applyToVersion": "1.3", "applyToVersion": "1.3",
...@@ -211,6 +271,8 @@ ...@@ -211,6 +271,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_072",
"description": "Set serviceType 'hbase' to hbase_column_family",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_column_family", "typeName": "hbase_column_family",
"applyToVersion": "1.2", "applyToVersion": "1.2",
...@@ -218,6 +280,8 @@ ...@@ -218,6 +280,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_073",
"description": "Set serviceType 'hbase' to hbase_column",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_column", "typeName": "hbase_column",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -225,6 +289,8 @@ ...@@ -225,6 +289,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_074",
"description": "Set serviceType 'hbase' to hbase_table_namespace",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_table_namespace", "typeName": "hbase_table_namespace",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -232,6 +298,8 @@ ...@@ -232,6 +298,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_075",
"description": "Set serviceType 'hbase' to hbase_table_column_families",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_table_column_families", "typeName": "hbase_table_column_families",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -239,6 +307,8 @@ ...@@ -239,6 +307,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_076",
"description": "Set serviceType 'hbase' to hbase_column_family_columns",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "hbase_column_family_columns", "typeName": "hbase_column_family_columns",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -246,6 +316,8 @@ ...@@ -246,6 +316,8 @@
"serviceType": "hbase" "serviceType": "hbase"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_077",
"description": "Set serviceType 'avro' to avro_type",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_type", "typeName": "avro_type",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -253,6 +325,8 @@ ...@@ -253,6 +325,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_078",
"description": "Set serviceType 'avro' to avro_field",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_field", "typeName": "avro_field",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -260,6 +334,8 @@ ...@@ -260,6 +334,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_079",
"description": "Set serviceType 'avro' to avro_record",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_record", "typeName": "avro_record",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -267,6 +343,8 @@ ...@@ -267,6 +343,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_080",
"description": "Set serviceType 'avro' to avro_schema",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_schema", "typeName": "avro_schema",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -274,6 +352,8 @@ ...@@ -274,6 +352,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_081",
"description": "Set serviceType 'avro' to avro_primitive",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_primitive", "typeName": "avro_primitive",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -281,6 +361,8 @@ ...@@ -281,6 +361,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_082",
"description": "Set serviceType 'avro' to avro_fixed",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_fixed", "typeName": "avro_fixed",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -288,6 +370,8 @@ ...@@ -288,6 +370,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_083",
"description": "Set serviceType 'avro' to avro_enum",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_enum", "typeName": "avro_enum",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -295,6 +379,8 @@ ...@@ -295,6 +379,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_084",
"description": "Set serviceType 'avro' to avro_collection",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_collection", "typeName": "avro_collection",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -302,6 +388,8 @@ ...@@ -302,6 +388,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_085",
"description": "Set serviceType 'avro' to avro_schema_associatedEntities",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_schema_associatedEntities", "typeName": "avro_schema_associatedEntities",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -309,6 +397,8 @@ ...@@ -309,6 +397,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_086",
"description": "Set serviceType 'avro' to avro_record_fields",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_record_fields", "typeName": "avro_record_fields",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -316,6 +406,8 @@ ...@@ -316,6 +406,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_087",
"description": "Set serviceType 'avro' to avro_field_types",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "avro_field_types", "typeName": "avro_field_types",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -323,6 +415,8 @@ ...@@ -323,6 +415,8 @@
"serviceType": "avro" "serviceType": "avro"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_088",
"description": "Set serviceType 'kafka' to kafka_topic",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "kafka_topic", "typeName": "kafka_topic",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -330,6 +424,8 @@ ...@@ -330,6 +424,8 @@
"serviceType": "kafka" "serviceType": "kafka"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_089",
"description": "Set serviceType 'kafka' to jms_topic",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "jms_topic", "typeName": "jms_topic",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -337,6 +433,8 @@ ...@@ -337,6 +433,8 @@
"serviceType": "kafka" "serviceType": "kafka"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_090",
"description": "Set serviceType 'kafka' to kafka_topic_avroSchema",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "kafka_topic_avroSchema", "typeName": "kafka_topic_avroSchema",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -344,6 +442,8 @@ ...@@ -344,6 +442,8 @@
"serviceType": "kafka" "serviceType": "kafka"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_091",
"description": "Set serviceType 'storm' to storm_topology",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "storm_topology", "typeName": "storm_topology",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -351,6 +451,8 @@ ...@@ -351,6 +451,8 @@
"serviceType": "storm" "serviceType": "storm"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_092",
"description": "Set serviceType 'storm' to storm_node",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "storm_node", "typeName": "storm_node",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -358,6 +460,8 @@ ...@@ -358,6 +460,8 @@
"serviceType": "storm" "serviceType": "storm"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_093",
"description": "Set serviceType 'storm' to storm_spout",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "storm_spout", "typeName": "storm_spout",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -365,6 +469,8 @@ ...@@ -365,6 +469,8 @@
"serviceType": "storm" "serviceType": "storm"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_094",
"description": "Set serviceType 'storm' to storm_bolt",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "storm_bolt", "typeName": "storm_bolt",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -372,6 +478,8 @@ ...@@ -372,6 +478,8 @@
"serviceType": "storm" "serviceType": "storm"
}, },
{ {
"id": "TYPEDEF_PATCH_1000_095",
"description": "Set serviceType 'storm' to storm_topology_nodes",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "storm_topology_nodes", "typeName": "storm_topology_nodes",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_1000_096",
"description": "Remove legacy reference attribute 'db' from hive_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "hive_table_db", "typeName": "hive_table_db",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -10,6 +12,8 @@ ...@@ -10,6 +12,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_1000_097",
"description": "Remove legacy reference attribute 'columns' from hive_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "hive_table_columns", "typeName": "hive_table_columns",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -19,6 +23,8 @@ ...@@ -19,6 +23,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_1000_098",
"description": "Remove legacy reference attribute 'partitionkeys' from hive_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "hive_table_partitionkeys", "typeName": "hive_table_partitionkeys",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -28,6 +34,8 @@ ...@@ -28,6 +34,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_1000_099",
"description": "Remove legacy reference attribute 'sd' from hive_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "hive_table_storagedesc", "typeName": "hive_table_storagedesc",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -37,6 +45,8 @@ ...@@ -37,6 +45,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_1000_100",
"description": "Remove legacy reference attribute 'query' from hive_column_lineage",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "hive_process_column_lineage", "typeName": "hive_process_column_lineage",
"applyToVersion": "1.1", "applyToVersion": "1.1",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_2000_101",
"description": "Add 'schemaAttributes' typeDefOptions to rdbms_column",
"action": "UPDATE_TYPEDEF_OPTIONS", "action": "UPDATE_TYPEDEF_OPTIONS",
"typeName": "rdbms_column", "typeName": "rdbms_column",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -10,6 +12,8 @@ ...@@ -10,6 +12,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_102",
"description": "Add 'schemaElementsAttribute' typeDefOptions to rdbms_table",
"action": "UPDATE_TYPEDEF_OPTIONS", "action": "UPDATE_TYPEDEF_OPTIONS",
"typeName": "rdbms_table", "typeName": "rdbms_table",
"applyToVersion": "1.1", "applyToVersion": "1.1",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_2000_103",
"description": "Set serviceType 'rdbms' to rdbms_instance",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_instance", "typeName": "rdbms_instance",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -8,6 +10,8 @@ ...@@ -8,6 +10,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_104",
"description": "Set serviceType 'rdbms' to rdbms_db",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_db", "typeName": "rdbms_db",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -15,6 +19,8 @@ ...@@ -15,6 +19,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_105",
"description": "Set serviceType 'rdbms' to rdbms_table",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_table", "typeName": "rdbms_table",
"applyToVersion": "1.2", "applyToVersion": "1.2",
...@@ -22,6 +28,8 @@ ...@@ -22,6 +28,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_106",
"description": "Set serviceType 'rdbms' to rdbms_column",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_column", "typeName": "rdbms_column",
"applyToVersion": "1.2", "applyToVersion": "1.2",
...@@ -29,6 +37,8 @@ ...@@ -29,6 +37,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_107",
"description": "Set serviceType 'rdbms' to rdbms_index",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_index", "typeName": "rdbms_index",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -36,6 +46,8 @@ ...@@ -36,6 +46,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_108",
"description": "Set serviceType 'rdbms' to rdbms_foreign_key",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_foreign_key", "typeName": "rdbms_foreign_key",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -43,6 +55,8 @@ ...@@ -43,6 +55,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_109",
"description": "Set serviceType 'rdbms' to rdbms_instance_databases",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_instance_databases", "typeName": "rdbms_instance_databases",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -50,6 +64,8 @@ ...@@ -50,6 +64,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_110",
"description": "Set serviceType 'rdbms' to rdbms_db_tables",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_db_tables", "typeName": "rdbms_db_tables",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -57,6 +73,8 @@ ...@@ -57,6 +73,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_111",
"description": "Set serviceType 'rdbms' to rdbms_table_columns",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_table_columns", "typeName": "rdbms_table_columns",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -64,6 +82,8 @@ ...@@ -64,6 +82,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_112",
"description": "Set serviceType 'rdbms' to rdbms_table_indexes",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_table_indexes", "typeName": "rdbms_table_indexes",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -71,6 +91,8 @@ ...@@ -71,6 +91,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_113",
"description": "Set serviceType 'rdbms' to rdbms_index_columns",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_index_columns", "typeName": "rdbms_index_columns",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -78,6 +100,8 @@ ...@@ -78,6 +100,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_114",
"description": "Set serviceType 'rdbms' to rdbms_table_foreign_key",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_table_foreign_key", "typeName": "rdbms_table_foreign_key",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -85,6 +109,8 @@ ...@@ -85,6 +109,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_115",
"description": "Set serviceType 'rdbms' to rdbms_foreign_key_key_columns",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_foreign_key_key_columns", "typeName": "rdbms_foreign_key_key_columns",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -92,6 +118,8 @@ ...@@ -92,6 +118,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_116",
"description": "Set serviceType 'rdbms' to rdbms_foreign_key_table_references",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_foreign_key_table_references", "typeName": "rdbms_foreign_key_table_references",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -99,6 +127,8 @@ ...@@ -99,6 +127,8 @@
"serviceType": "rdbms" "serviceType": "rdbms"
}, },
{ {
"id": "TYPEDEF_PATCH_2000_117",
"description": "Set serviceType 'rdbms' to rdbms_foreign_key_column_references",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "rdbms_foreign_key_column_references", "typeName": "rdbms_foreign_key_column_references",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_2000_118",
"description": "Remove legacy reference attribute 'databases' from rdbms_instance",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_instance_databases", "typeName": "rdbms_instance_databases",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -11,6 +13,8 @@ ...@@ -11,6 +13,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_119",
"description": "Remove legacy reference attribute 'tables' from rdbms_db",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_db_tables", "typeName": "rdbms_db_tables",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -21,6 +25,8 @@ ...@@ -21,6 +25,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_120",
"description": "Remove legacy reference attribute 'columns' from rdbms_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_table_columns", "typeName": "rdbms_table_columns",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -31,6 +37,8 @@ ...@@ -31,6 +37,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_121",
"description": "Remove legacy reference attribute 'indexes' from rdbms_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_table_indexes", "typeName": "rdbms_table_indexes",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -41,6 +49,8 @@ ...@@ -41,6 +49,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_122",
"description": "Remove legacy reference attribute 'foreign_keys' from rdbms_table",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_table_foreign_key", "typeName": "rdbms_table_foreign_key",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -51,6 +61,8 @@ ...@@ -51,6 +61,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_123",
"description": "Remove legacy reference attribute 'columns' from rdbms_index",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_index_columns", "typeName": "rdbms_index_columns",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -60,6 +72,8 @@ ...@@ -60,6 +72,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_124",
"description": "Remove legacy reference attribute 'key_columns' from rdbms_foreign_key",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_foreign_key_key_columns", "typeName": "rdbms_foreign_key_key_columns",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -69,6 +83,8 @@ ...@@ -69,6 +83,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_125",
"description": "Remove legacy reference attribute 'references_table' from rdbms_foreign_key",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_foreign_key_table_references", "typeName": "rdbms_foreign_key_table_references",
"applyToVersion": "1.1", "applyToVersion": "1.1",
...@@ -78,6 +94,8 @@ ...@@ -78,6 +94,8 @@
} }
}, },
{ {
"id": "TYPEDEF_PATCH_2000_126",
"description": "Remove legacy reference attribute 'references_columns' from rdbms_foreign_key",
"action": "REMOVE_LEGACY_REF_ATTRIBUTES", "action": "REMOVE_LEGACY_REF_ATTRIBUTES",
"typeName": "rdbms_foreign_key_column_references", "typeName": "rdbms_foreign_key_column_references",
"applyToVersion": "1.1", "applyToVersion": "1.1",
......
{ {
"patches": [ "patches": [
{ {
"id": "TYPEDEF_PATCH_3000_127",
"description": "Set serviceType 'aws' to aws_tag",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_tag", "typeName": "aws_tag",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -8,6 +10,8 @@ ...@@ -8,6 +10,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_128",
"description": "Set serviceType 'aws' to aws_cloud_watch_metric",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_cloud_watch_metric", "typeName": "aws_cloud_watch_metric",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -15,6 +19,8 @@ ...@@ -15,6 +19,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_129",
"description": "Set serviceType 'aws' to aws_s3_bucket_lifeCycleRule",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_bucket_lifeCycleRule", "typeName": "aws_s3_bucket_lifeCycleRule",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -22,6 +28,8 @@ ...@@ -22,6 +28,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_130",
"description": "Set serviceType 'aws' to aws_s3_access_policy",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_access_policy", "typeName": "aws_s3_access_policy",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -29,6 +37,8 @@ ...@@ -29,6 +37,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_131",
"description": "Set serviceType 'aws' to aws_s3_object",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_object", "typeName": "aws_s3_object",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -36,6 +46,8 @@ ...@@ -36,6 +46,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_132",
"description": "Set serviceType 'aws' to aws_s3_pseudo_dir",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_pseudo_dir", "typeName": "aws_s3_pseudo_dir",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -43,6 +55,8 @@ ...@@ -43,6 +55,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_133",
"description": "Set serviceType 'aws' to aws_s3_bucket",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_bucket", "typeName": "aws_s3_bucket",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -50,6 +64,8 @@ ...@@ -50,6 +64,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_134",
"description": "Set serviceType 'aws' to aws_s3_bucket_aws_s3_pseudo_dirs",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_bucket_aws_s3_pseudo_dirs", "typeName": "aws_s3_bucket_aws_s3_pseudo_dirs",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -57,6 +73,8 @@ ...@@ -57,6 +73,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_135",
"description": "Set serviceType 'aws' to aws_s3_pseudo_dir_aws_objects",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_pseudo_dir_aws_objects", "typeName": "aws_s3_pseudo_dir_aws_objects",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -64,6 +82,8 @@ ...@@ -64,6 +82,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_136",
"description": "Set serviceType 'aws' to aws_s3_object_avro_schema",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_object_avro_schema", "typeName": "aws_s3_object_avro_schema",
"applyToVersion": "1.0", "applyToVersion": "1.0",
...@@ -71,6 +91,8 @@ ...@@ -71,6 +91,8 @@
"serviceType": "aws" "serviceType": "aws"
}, },
{ {
"id": "TYPEDEF_PATCH_3000_137",
"description": "Set serviceType 'aws' to aws_s3_pseudo_dir_avro_schema",
"action": "SET_SERVICE_TYPE", "action": "SET_SERVICE_TYPE",
"typeName": "aws_s3_pseudo_dir_avro_schema", "typeName": "aws_s3_pseudo_dir_avro_schema",
"applyToVersion": "1.0", "applyToVersion": "1.0",
......
...@@ -86,6 +86,15 @@ public final class Constants { ...@@ -86,6 +86,15 @@ public final class Constants {
public static final String MODIFIED_BY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "modifiedBy"); public static final String MODIFIED_BY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "modifiedBy");
/** /**
* Patch vertices property keys.
*/
public static final String PATCH_ID_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "patch.id");
public static final String PATCH_DESCRIPTION_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "patch.description");
public static final String PATCH_TYPE_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "patch.type");
public static final String PATCH_ACTION_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "patch.action");
public static final String PATCH_STATE_PROPERTY_KEY = encodePropertyKey(INTERNAL_PROPERTY_KEY_PREFIX + "patch.state");
/**
* The homeId field is used when saving into Atlas a copy of an object that is being imported from another * The homeId field is used when saving into Atlas a copy of an object that is being imported from another
* repository. The homeId will be set to a String that identifies the other repository. The specific format * repository. The homeId will be set to a String that identifies the other repository. The specific format
* of repository identifiers is domain dependent. Where it is set by Open Metadata Repository Services it will * of repository identifiers is domain dependent. Where it is set by Open Metadata Repository Services it will
......
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* 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.
*/
package org.apache.atlas.model.patches;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
/**
* Display all atlas patches.
*/
@JsonAutoDetect(getterVisibility = PUBLIC_ONLY, setterVisibility = PUBLIC_ONLY, fieldVisibility = NONE)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class AtlasPatch implements Serializable {
private String id;
private String description;
private String type;
private String action;
private String updatedBy;
private String createdBy;
private long createdTime;
private long updatedTime;
private PatchStatus status;
public enum PatchStatus { APPLIED, SKIPPED, FAILED, UNKNOWN }
public AtlasPatch() { }
public AtlasPatch(String id, String patchName, String type, String action, PatchStatus status, String updatedBy,
String createdBy, long createdTime, long updatedTime) {
this.id = id;
this.description = patchName;
this.type = type;
this.action = action;
this.status = status;
this.updatedBy = updatedBy;
this.createdBy = createdBy;
this.createdTime = createdTime;
this.updatedTime = updatedTime;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public PatchStatus getStatus() {
return status;
}
public void setStatus(PatchStatus status) {
this.status = status;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public long getCreatedTime() {
return createdTime;
}
public void setCreatedTime(long createdTime) {
this.createdTime = createdTime;
}
public long getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(long updatedTime) {
this.updatedTime = updatedTime;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AtlasPatch that = (AtlasPatch) o;
return createdTime == that.createdTime &&
updatedTime == that.updatedTime &&
Objects.equals(id, that.id) &&
Objects.equals(description, that.description) &&
Objects.equals(type, that.type) &&
Objects.equals(action, that.action) &&
Objects.equals(updatedBy, that.updatedBy) &&
Objects.equals(createdBy, that.createdBy) &&
status == that.status;
}
@Override
public int hashCode() {
return Objects.hash(id, description, type, action, updatedBy, createdBy, createdTime, updatedTime, status);
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("AtlasPatch{");
sb.append("id=").append(id);
sb.append(", description='").append(description).append('\'');
sb.append(", type='").append(type).append('\'');
sb.append(", action='").append(action).append('\'');
sb.append(", updatedBy='").append(updatedBy).append('\'');
sb.append(", createdBy='").append(createdBy).append('\'');
sb.append(", createdTime=").append(createdTime);
sb.append(", updatedTime=").append(updatedTime);
sb.append(", status=").append(status);
sb.append('}');
return sb.toString();
}
@JsonAutoDetect(getterVisibility = PUBLIC_ONLY, setterVisibility = PUBLIC_ONLY, fieldVisibility = NONE)
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public static class AtlasPatches implements Serializable {
private List<AtlasPatch> patches;
public AtlasPatches(List<AtlasPatch> patches) {
this.patches = patches;
}
public AtlasPatches() {
}
public List<AtlasPatch> getPatches() {
return patches;
}
public void setPatches(List<AtlasPatch> patches) {
this.patches = patches;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AtlasPatches that = (AtlasPatches) o;
return Objects.equals(patches, that.patches);
}
@Override
public int hashCode() {
return Objects.hash(patches);
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("AtlasPatches{");
sb.append("patches=").append(patches);
sb.append('}');
return sb.toString();
}
}
}
\ No newline at end of file
...@@ -332,6 +332,8 @@ public class AtlasTypeUtil { ...@@ -332,6 +332,8 @@ public class AtlasTypeUtil {
if (typeDef != null) { if (typeDef != null) {
if (typeDef.getClass().equals(AtlasEntityDef.class)) { if (typeDef.getClass().equals(AtlasEntityDef.class)) {
ret.getEntityDefs().add((AtlasEntityDef) typeDef); ret.getEntityDefs().add((AtlasEntityDef) typeDef);
} else if (typeDef.getClass().equals(AtlasRelationshipDef.class)) {
ret.getRelationshipDefs().add((AtlasRelationshipDef) typeDef);
} else if (typeDef.getClass().equals(AtlasClassificationDef.class)) { } else if (typeDef.getClass().equals(AtlasClassificationDef.class)) {
ret.getClassificationDefs().add((AtlasClassificationDef) typeDef); ret.getClassificationDefs().add((AtlasClassificationDef) typeDef);
} else if (typeDef.getClass().equals(AtlasStructDef.class)) { } else if (typeDef.getClass().equals(AtlasStructDef.class)) {
......
...@@ -280,6 +280,12 @@ public class GraphBackedSearchIndexer implements SearchIndexer, ActiveStateChang ...@@ -280,6 +280,12 @@ public class GraphBackedSearchIndexer implements SearchIndexer, ActiveStateChang
createVertexIndex(management, TRAIT_NAMES_PROPERTY_KEY, UniqueKind.NONE, String.class, SET, true, true); createVertexIndex(management, TRAIT_NAMES_PROPERTY_KEY, UniqueKind.NONE, String.class, SET, true, true);
createVertexIndex(management, PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, UniqueKind.NONE, String.class, LIST, true, true); createVertexIndex(management, PROPAGATED_TRAIT_NAMES_PROPERTY_KEY, UniqueKind.NONE, String.class, LIST, true, true);
createVertexIndex(management, PATCH_ID_PROPERTY_KEY, UniqueKind.GLOBAL_UNIQUE, String.class, SINGLE, true, false);
createVertexIndex(management, PATCH_DESCRIPTION_PROPERTY_KEY, UniqueKind.NONE, String.class, SINGLE, true, false);
createVertexIndex(management, PATCH_TYPE_PROPERTY_KEY, UniqueKind.NONE, String.class, SINGLE, true, false);
createVertexIndex(management, PATCH_ACTION_PROPERTY_KEY, UniqueKind.NONE, String.class, SINGLE, true, false);
createVertexIndex(management, PATCH_STATE_PROPERTY_KEY, UniqueKind.NONE, String.class, SINGLE, true, false);
// create vertex-centric index // create vertex-centric index
createVertexCentricIndex(management, CLASSIFICATION_LABEL, AtlasEdgeDirection.BOTH, CLASSIFICATION_EDGE_NAME_PROPERTY_KEY, String.class, SINGLE); createVertexCentricIndex(management, CLASSIFICATION_LABEL, AtlasEdgeDirection.BOTH, CLASSIFICATION_EDGE_NAME_PROPERTY_KEY, String.class, SINGLE);
createVertexCentricIndex(management, CLASSIFICATION_LABEL, AtlasEdgeDirection.BOTH, CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY, Boolean.class, SINGLE); createVertexCentricIndex(management, CLASSIFICATION_LABEL, AtlasEdgeDirection.BOTH, CLASSIFICATION_EDGE_IS_PROPAGATED_PROPERTY_KEY, Boolean.class, SINGLE);
......
...@@ -29,6 +29,7 @@ import org.apache.atlas.authorize.AtlasAuthorizerFactory; ...@@ -29,6 +29,7 @@ import org.apache.atlas.authorize.AtlasAuthorizerFactory;
import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.ha.HAConfiguration; import org.apache.atlas.ha.HAConfiguration;
import org.apache.atlas.listener.ActiveStateChangeHandler; import org.apache.atlas.listener.ActiveStateChangeHandler;
import org.apache.atlas.model.patches.AtlasPatch.PatchStatus;
import org.apache.atlas.model.typedef.AtlasBaseTypeDef; import org.apache.atlas.model.typedef.AtlasBaseTypeDef;
import org.apache.atlas.model.typedef.AtlasClassificationDef; import org.apache.atlas.model.typedef.AtlasClassificationDef;
import org.apache.atlas.model.typedef.AtlasEntityDef; import org.apache.atlas.model.typedef.AtlasEntityDef;
...@@ -40,6 +41,10 @@ import org.apache.atlas.model.typedef.AtlasRelationshipEndDef; ...@@ -40,6 +41,10 @@ import org.apache.atlas.model.typedef.AtlasRelationshipEndDef;
import org.apache.atlas.model.typedef.AtlasStructDef; import org.apache.atlas.model.typedef.AtlasStructDef;
import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef; import org.apache.atlas.model.typedef.AtlasStructDef.AtlasAttributeDef;
import org.apache.atlas.model.typedef.AtlasTypesDef; import org.apache.atlas.model.typedef.AtlasTypesDef;
import org.apache.atlas.repository.graph.AtlasGraphProvider;
import org.apache.atlas.repository.graphdb.AtlasGraph;
import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.repository.store.graph.v2.AtlasTypeDefGraphStoreV2;
import org.apache.atlas.store.AtlasTypeDefStore; import org.apache.atlas.store.AtlasTypeDefStore;
import org.apache.atlas.type.AtlasEntityType; import org.apache.atlas.type.AtlasEntityType;
import org.apache.atlas.type.AtlasStructType.AtlasAttribute; import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
...@@ -71,27 +76,46 @@ import java.util.Map; ...@@ -71,27 +76,46 @@ import java.util.Map;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
import static org.apache.atlas.model.patches.AtlasPatch.PatchStatus.APPLIED;
import static org.apache.atlas.model.patches.AtlasPatch.PatchStatus.FAILED;
import static org.apache.atlas.model.patches.AtlasPatch.PatchStatus.SKIPPED;
import static org.apache.atlas.model.patches.AtlasPatch.PatchStatus.UNKNOWN;
import static org.apache.atlas.repository.Constants.CREATED_BY_KEY;
import static org.apache.atlas.repository.Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.MODIFIED_BY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_ACTION_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_ID_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_DESCRIPTION_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_STATE_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_TYPE_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.findByPatchId;
import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.initPatchesRegistry;
import static org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2.setEncodedProperty;
/** /**
* Class that handles initial loading of models and patches into typedef store * Class that handles initial loading of models and patches into typedef store
*/ */
@Service @Service
public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
private static final Logger LOG = LoggerFactory.getLogger(AtlasTypeDefStoreInitializer.class); public static final Logger LOG = LoggerFactory.getLogger(AtlasTypeDefStoreInitializer.class);
public static final String PATCHES_FOLDER_NAME = "patches"; public static final String PATCHES_FOLDER_NAME = "patches";
public static final String RELATIONSHIP_LABEL = "relationshipLabel"; public static final String RELATIONSHIP_LABEL = "relationshipLabel";
public static final String RELATIONSHIP_CATEGORY = "relationshipCategory"; public static final String RELATIONSHIP_CATEGORY = "relationshipCategory";
public static final String RELATIONSHIP_SWAP_ENDS = "swapEnds"; public static final String RELATIONSHIP_SWAP_ENDS = "swapEnds";
public static final String TYPEDEF_PATCH_TYPE = "TYPEDEF_PATCH";
private final AtlasTypeDefStore atlasTypeDefStore; private final AtlasTypeDefStore atlasTypeDefStore;
private final AtlasTypeRegistry atlasTypeRegistry; private final AtlasTypeRegistry atlasTypeRegistry;
private final AtlasGraph atlasGraph;
private final Configuration conf; private final Configuration conf;
@Inject @Inject
public AtlasTypeDefStoreInitializer(AtlasTypeDefStore atlasTypeDefStore, AtlasTypeRegistry atlasTypeRegistry, Configuration conf) { public AtlasTypeDefStoreInitializer(AtlasTypeDefStore atlasTypeDefStore, AtlasTypeRegistry atlasTypeRegistry,
AtlasGraph atlasGraph, Configuration conf) {
this.atlasTypeDefStore = atlasTypeDefStore; this.atlasTypeDefStore = atlasTypeDefStore;
this.atlasTypeRegistry = atlasTypeRegistry; this.atlasTypeRegistry = atlasTypeRegistry;
this.atlasGraph = atlasGraph;
this.conf = conf; this.conf = conf;
} }
...@@ -134,6 +158,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -134,6 +158,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
// look for folders we need to load models from // look for folders we need to load models from
File topModeltypesDir = new File(modelsDirName); File topModeltypesDir = new File(modelsDirName);
File[] modelsDirContents = topModeltypesDir.exists() ? topModeltypesDir.listFiles() : null; File[] modelsDirContents = topModeltypesDir.exists() ? topModeltypesDir.listFiles() : null;
Map<String, PatchStatus> patchesRegistry = initPatchesRegistry();
if (modelsDirContents != null && modelsDirContents.length > 0) { if (modelsDirContents != null && modelsDirContents.length > 0) {
Arrays.sort(modelsDirContents); Arrays.sort(modelsDirContents);
...@@ -144,13 +169,13 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -144,13 +169,13 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
continue; continue;
} else if (!folder.getName().equals(PATCHES_FOLDER_NAME)){ } else if (!folder.getName().equals(PATCHES_FOLDER_NAME)){
// load the models alphabetically in the subfolders apart from patches // load the models alphabetically in the subfolders apart from patches
loadModelsInFolder(folder); loadModelsInFolder(folder, patchesRegistry);
} }
} }
} }
// load any files in the top models folder and any associated patches. // load any files in the top models folder and any associated patches.
loadModelsInFolder(topModeltypesDir); loadModelsInFolder(topModeltypesDir, patchesRegistry);
} }
LOG.info("<== AtlasTypeDefStoreInitializer.loadBootstrapTypeDefs()"); LOG.info("<== AtlasTypeDefStoreInitializer.loadBootstrapTypeDefs()");
} }
...@@ -158,8 +183,9 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -158,8 +183,9 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
/** /**
* Load all the model files in the supplied folder followed by the contents of the patches folder. * Load all the model files in the supplied folder followed by the contents of the patches folder.
* @param typesDir * @param typesDir
* @param patchesRegistry
*/ */
private void loadModelsInFolder(File typesDir) { private void loadModelsInFolder(File typesDir, Map<String, PatchStatus> patchesRegistry) {
LOG.info("==> AtlasTypeDefStoreInitializer({})", typesDir); LOG.info("==> AtlasTypeDefStoreInitializer({})", typesDir);
String typesDirName = typesDir.getName(); String typesDirName = typesDir.getName();
...@@ -201,7 +227,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -201,7 +227,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
} }
applyTypePatches(typesDir.getPath()); applyTypePatches(typesDir.getPath(), patchesRegistry);
} }
LOG.info("<== AtlasTypeDefStoreInitializer({})", typesDir); LOG.info("<== AtlasTypeDefStoreInitializer({})", typesDir);
} }
...@@ -399,7 +425,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -399,7 +425,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
return ret; return ret;
} }
private void applyTypePatches(String typesDirName) { private void applyTypePatches(String typesDirName, Map<String, PatchStatus> patchesRegistry) {
String typePatchesDirName = typesDirName + File.separator + PATCHES_FOLDER_NAME; String typePatchesDirName = typesDirName + File.separator + PATCHES_FOLDER_NAME;
File typePatchesDir = new File(typePatchesDirName); File typePatchesDir = new File(typePatchesDirName);
File[] typePatchFiles = typePatchesDir.exists() ? typePatchesDir.listFiles() : null; File[] typePatchFiles = typePatchesDir.exists() ? typePatchesDir.listFiles() : null;
...@@ -430,43 +456,99 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -430,43 +456,99 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
for (File typePatchFile : typePatchFiles) { for (File typePatchFile : typePatchFiles) {
if (typePatchFile.isFile()) { if (typePatchFile.isFile()) {
String patchFile = typePatchFile.getAbsolutePath();
LOG.info("Applying patches in file {}", typePatchFile.getAbsolutePath()); LOG.info("Applying patches in file {}", patchFile);
try { try {
String jsonStr = new String(Files.readAllBytes(typePatchFile.toPath()), StandardCharsets.UTF_8); String jsonStr = new String(Files.readAllBytes(typePatchFile.toPath()), StandardCharsets.UTF_8);
TypeDefPatches patches = AtlasType.fromJson(jsonStr, TypeDefPatches.class); TypeDefPatches patches = AtlasType.fromJson(jsonStr, TypeDefPatches.class);
if (patches == null || CollectionUtils.isEmpty(patches.getPatches())) { if (patches == null || CollectionUtils.isEmpty(patches.getPatches())) {
LOG.info("No patches in file {}", typePatchFile.getAbsolutePath()); LOG.info("No patches in file {}", patchFile);
continue; continue;
} }
int patchIndex = 0;
for (TypeDefPatch patch : patches.getPatches()) { for (TypeDefPatch patch : patches.getPatches()) {
PatchHandler patchHandler = patchHandlerRegistry.get(patch.getAction()); PatchHandler patchHandler = patchHandlerRegistry.get(patch.getAction());
if (patchHandler == null) { if (patchHandler == null) {
LOG.error("Unknown patch action {} in file {}. Ignored", LOG.error("Unknown patch action {} in file {}. Ignored", patch.getAction(), patchFile);
patch.getAction(), typePatchFile.getAbsolutePath());
continue; continue;
} }
String patchId = patch.getId();
if (StringUtils.isEmpty(patchId)) {
patchId = typePatchFile.getName() + "_" + patchIndex;
patch.setId(patchId);
}
if (isPatchApplicable(patchId, patchesRegistry)) {
PatchStatus status;
try { try {
patchHandler.applyPatch(patch); status = patchHandler.applyPatch(patch);
} catch (AtlasBaseException excp) { } catch (AtlasBaseException ex) {
LOG.error("Failed to apply {} patch in file {}. Ignored", patch.getAction(), typePatchFile.getAbsolutePath(), excp); status = FAILED;
LOG.error("Failed to apply {} (status: {}; action: {}) in file: {}. Ignored.",
patchId, status.toString(), patch.getAction(), patchFile);
}
createOrUpdatePatchVertex(patch, status, patchesRegistry);
LOG.info("{} (status: {}; action: {}) in file: {}", patchId, status.toString(), patch.getAction(), patchFile);
} else {
LOG.info("{} in file: {} already {}. Ignoring.", patchId, patchFile, patchesRegistry.get(patchId).toString());
} }
patchIndex++;
} }
} catch (Throwable t) { } catch (Throwable t) {
LOG.error("Failed to apply patches in file {}. Ignored", typePatchFile.getAbsolutePath(), t); LOG.error("Failed to apply patches in file {}. Ignored", patchFile, t);
} }
} }
} }
} }
} }
private boolean isPatchApplicable(String patchId, Map<String, PatchStatus> patchesRegistry) {
if (MapUtils.isEmpty(patchesRegistry) || !patchesRegistry.containsKey(patchId)) {
return true;
}
PatchStatus status = patchesRegistry.get(patchId);
if (status == FAILED || status == UNKNOWN) {
return true;
}
return false;
}
private void createOrUpdatePatchVertex(TypeDefPatch patch, PatchStatus patchStatus, Map<String, PatchStatus> patchesRegistry) {
String patchId = patch.getId();
boolean isPatchRegistered = MapUtils.isNotEmpty(patchesRegistry) && patchesRegistry.containsKey(patchId);
AtlasVertex patchVertex = isPatchRegistered ? findByPatchId(patchId) : atlasGraph.addVertex();
setEncodedProperty(patchVertex, PATCH_ID_PROPERTY_KEY, patchId);
setEncodedProperty(patchVertex, PATCH_DESCRIPTION_PROPERTY_KEY, patch.getDescription());
setEncodedProperty(patchVertex, PATCH_TYPE_PROPERTY_KEY, TYPEDEF_PATCH_TYPE);
setEncodedProperty(patchVertex, PATCH_ACTION_PROPERTY_KEY, patch.getAction());
setEncodedProperty(patchVertex, PATCH_STATE_PROPERTY_KEY, patchStatus.toString());
setEncodedProperty(patchVertex, TIMESTAMP_PROPERTY_KEY, RequestContext.get().getRequestTime());
setEncodedProperty(patchVertex, MODIFICATION_TIMESTAMP_PROPERTY_KEY, RequestContext.get().getRequestTime());
setEncodedProperty(patchVertex, CREATED_BY_KEY, AtlasTypeDefGraphStoreV2.getCurrentUser());
setEncodedProperty(patchVertex, MODIFIED_BY_KEY, AtlasTypeDefGraphStoreV2.getCurrentUser());
AtlasGraphProvider.getGraphInstance().commit();
}
/** /**
* typedef patch details * typedef patch details
*/ */
...@@ -476,6 +558,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -476,6 +558,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
@XmlRootElement @XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY) @XmlAccessorType(XmlAccessType.PROPERTY)
static class TypeDefPatch { static class TypeDefPatch {
private String id;
private String description;
private String action; private String action;
private String typeName; private String typeName;
private String applyToVersion; private String applyToVersion;
...@@ -485,6 +569,22 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -485,6 +569,22 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
private Map<String, String> typeDefOptions; private Map<String, String> typeDefOptions;
private String serviceType; private String serviceType;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAction() { public String getAction() {
return action; return action;
} }
...@@ -583,7 +683,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -583,7 +683,7 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
public String[] getSupportedActions() { return supportedActions; } public String[] getSupportedActions() { return supportedActions; }
public abstract void applyPatch(TypeDefPatch patch) throws AtlasBaseException; public abstract PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException;
protected boolean isPatchApplicable(TypeDefPatch patch, AtlasBaseTypeDef currentTypeDef) { protected boolean isPatchApplicable(TypeDefPatch patch, AtlasBaseTypeDef currentTypeDef) {
String currentVersion = currentTypeDef.getTypeVersion(); String currentVersion = currentTypeDef.getTypeVersion();
...@@ -601,9 +701,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -601,9 +701,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
@Override @Override
public void applyPatch(TypeDefPatch patch) throws AtlasBaseException { public PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException {
String typeName = patch.getTypeName(); String typeName = patch.getTypeName();
AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName); AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName);
PatchStatus ret;
if (typeDef == null) { if (typeDef == null) {
throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName); throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName);
...@@ -616,35 +717,48 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -616,35 +717,48 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) { for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) {
updatedDef.addAttribute(attributeDef); updatedDef.addAttribute(attributeDef);
} }
updatedDef.setTypeVersion(patch.getUpdateToVersion()); updatedDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateEntityDefByName(typeName, updatedDef); typeDefStore.updateEntityDefByName(typeName, updatedDef);
ret = APPLIED;
} else if (typeDef.getClass().equals(AtlasClassificationDef.class)) { } else if (typeDef.getClass().equals(AtlasClassificationDef.class)) {
AtlasClassificationDef updatedDef = new AtlasClassificationDef((AtlasClassificationDef)typeDef); AtlasClassificationDef updatedDef = new AtlasClassificationDef((AtlasClassificationDef)typeDef);
for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) { for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) {
updatedDef.addAttribute(attributeDef); updatedDef.addAttribute(attributeDef);
} }
updatedDef.setTypeVersion(patch.getUpdateToVersion()); updatedDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateClassificationDefByName(typeName, updatedDef); typeDefStore.updateClassificationDefByName(typeName, updatedDef);
ret = APPLIED;
} else if (typeDef.getClass().equals(AtlasStructDef.class)) { } else if (typeDef.getClass().equals(AtlasStructDef.class)) {
AtlasStructDef updatedDef = new AtlasStructDef((AtlasStructDef)typeDef); AtlasStructDef updatedDef = new AtlasStructDef((AtlasStructDef)typeDef);
for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) { for (AtlasAttributeDef attributeDef : patch.getAttributeDefs()) {
updatedDef.addAttribute(attributeDef); updatedDef.addAttribute(attributeDef);
} }
updatedDef.setTypeVersion(patch.getUpdateToVersion()); updatedDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateStructDefByName(typeName, updatedDef); typeDefStore.updateStructDefByName(typeName, updatedDef);
ret = APPLIED;
} else { } else {
throw new AtlasBaseException(AtlasErrorCode.PATCH_NOT_APPLICABLE_FOR_TYPE, throw new AtlasBaseException(AtlasErrorCode.PATCH_NOT_APPLICABLE_FOR_TYPE, patch.getAction(), typeDef.getClass().getSimpleName());
patch.getAction(), typeDef.getClass().getSimpleName());
} }
} else { } else {
LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}",
patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion()); patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion());
ret = SKIPPED;
} }
return ret;
} }
} }
...@@ -654,9 +768,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -654,9 +768,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
@Override @Override
public void applyPatch(TypeDefPatch patch) throws AtlasBaseException { public PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException {
String typeName = patch.getTypeName(); String typeName = patch.getTypeName();
AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName); AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName);
PatchStatus ret;
if (typeDef == null) { if (typeDef == null) {
throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName); throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName);
...@@ -671,6 +786,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -671,6 +786,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
updatedDef.setTypeVersion(patch.getUpdateToVersion()); updatedDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateEntityDefByName(typeName, updatedDef); typeDefStore.updateEntityDefByName(typeName, updatedDef);
ret = APPLIED;
} else if (typeDef.getClass().equals(AtlasClassificationDef.class)) { } else if (typeDef.getClass().equals(AtlasClassificationDef.class)) {
AtlasClassificationDef updatedDef = new AtlasClassificationDef((AtlasClassificationDef)typeDef); AtlasClassificationDef updatedDef = new AtlasClassificationDef((AtlasClassificationDef)typeDef);
...@@ -679,6 +796,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -679,6 +796,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
updatedDef.setTypeVersion(patch.getUpdateToVersion()); updatedDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateClassificationDefByName(typeName, updatedDef); typeDefStore.updateClassificationDefByName(typeName, updatedDef);
ret = APPLIED;
} else if (typeDef.getClass().equals(AtlasStructDef.class)) { } else if (typeDef.getClass().equals(AtlasStructDef.class)) {
AtlasStructDef updatedDef = new AtlasStructDef((AtlasStructDef)typeDef); AtlasStructDef updatedDef = new AtlasStructDef((AtlasStructDef)typeDef);
...@@ -688,14 +807,18 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -688,14 +807,18 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
typeDefStore.updateStructDefByName(typeName, updatedDef); typeDefStore.updateStructDefByName(typeName, updatedDef);
ret = APPLIED;
} else { } else {
throw new AtlasBaseException(AtlasErrorCode.PATCH_NOT_APPLICABLE_FOR_TYPE, throw new AtlasBaseException(AtlasErrorCode.PATCH_NOT_APPLICABLE_FOR_TYPE, patch.getAction(), typeDef.getClass().getSimpleName());
patch.getAction(), typeDef.getClass().getSimpleName());
} }
} else { } else {
LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}",
patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion()); patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion());
ret = SKIPPED;
} }
return ret;
} }
private void addOrUpdateAttributes(AtlasStructDef structDef, List<AtlasAttributeDef> attributesToUpdate) { private void addOrUpdateAttributes(AtlasStructDef structDef, List<AtlasAttributeDef> attributesToUpdate) {
...@@ -717,9 +840,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -717,9 +840,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
@Override @Override
public void applyPatch(TypeDefPatch patch) throws AtlasBaseException { public PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException {
String typeName = patch.getTypeName(); String typeName = patch.getTypeName();
AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName); AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName);
PatchStatus ret = null;
if (typeDef == null) { if (typeDef == null) {
throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName); throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName);
...@@ -810,6 +934,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -810,6 +934,8 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
RequestContext.get().setInTypePatching(true); // to allow removal of attributes RequestContext.get().setInTypePatching(true); // to allow removal of attributes
typeDefStore.updateTypesDef(typesDef); typeDefStore.updateTypesDef(typesDef);
ret = APPLIED;
} finally { } finally {
RequestContext.get().setInTypePatching(false); RequestContext.get().setInTypePatching(false);
} }
...@@ -817,7 +943,11 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -817,7 +943,11 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} else { } else {
LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}",
patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion()); patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion());
ret = SKIPPED;
} }
return ret;
} }
} }
...@@ -827,9 +957,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -827,9 +957,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
@Override @Override
public void applyPatch(TypeDefPatch patch) throws AtlasBaseException { public PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException {
String typeName = patch.getTypeName(); String typeName = patch.getTypeName();
AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName); AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName);
PatchStatus ret;
if (typeDef == null) { if (typeDef == null) {
throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName); throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName);
...@@ -848,10 +979,16 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -848,10 +979,16 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
typeDef.setTypeVersion(patch.getUpdateToVersion()); typeDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateTypesDef(AtlasTypeUtil.getTypesDef(typeDef)); typeDefStore.updateTypesDef(AtlasTypeUtil.getTypesDef(typeDef));
ret = APPLIED;
} else { } else {
LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}",
patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion()); patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion());
ret = SKIPPED;
} }
return ret;
} }
} }
...@@ -861,9 +998,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -861,9 +998,10 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
} }
@Override @Override
public void applyPatch(TypeDefPatch patch) throws AtlasBaseException { public PatchStatus applyPatch(TypeDefPatch patch) throws AtlasBaseException {
String typeName = patch.getTypeName(); String typeName = patch.getTypeName();
AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName); AtlasBaseTypeDef typeDef = typeRegistry.getTypeDefByName(typeName);
PatchStatus ret;
if (typeDef == null) { if (typeDef == null) {
throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName); throw new AtlasBaseException(AtlasErrorCode.PATCH_FOR_UNKNOWN_TYPE, patch.getAction(), typeName);
...@@ -874,10 +1012,16 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler { ...@@ -874,10 +1012,16 @@ public class AtlasTypeDefStoreInitializer implements ActiveStateChangeHandler {
typeDef.setTypeVersion(patch.getUpdateToVersion()); typeDef.setTypeVersion(patch.getUpdateToVersion());
typeDefStore.updateTypesDef(AtlasTypeUtil.getTypesDef(typeDef)); typeDefStore.updateTypesDef(AtlasTypeUtil.getTypesDef(typeDef));
ret = APPLIED;
} else { } else {
LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", LOG.info("patch skipped: typeName={}; applyToVersion={}; updateToVersion={}", patch.getTypeName(),
patch.getTypeName(), patch.getApplyToVersion(), patch.getUpdateToVersion()); patch.getApplyToVersion(), patch.getUpdateToVersion());
ret = SKIPPED;
} }
return ret;
} }
} }
} }
...@@ -23,10 +23,14 @@ import org.apache.atlas.AtlasErrorCode; ...@@ -23,10 +23,14 @@ import org.apache.atlas.AtlasErrorCode;
import org.apache.atlas.GraphTransactionInterceptor; import org.apache.atlas.GraphTransactionInterceptor;
import org.apache.atlas.RequestContext; import org.apache.atlas.RequestContext;
import org.apache.atlas.SortOrder; import org.apache.atlas.SortOrder;
import org.apache.atlas.annotation.GraphTransaction;
import org.apache.atlas.discovery.SearchProcessor; import org.apache.atlas.discovery.SearchProcessor;
import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.model.TypeCategory; import org.apache.atlas.model.TypeCategory;
import org.apache.atlas.model.instance.AtlasEntity; import org.apache.atlas.model.instance.AtlasEntity;
import org.apache.atlas.model.patches.AtlasPatch;
import org.apache.atlas.model.patches.AtlasPatch.AtlasPatches;
import org.apache.atlas.model.patches.AtlasPatch.PatchStatus;
import org.apache.atlas.model.typedef.AtlasBaseTypeDef; import org.apache.atlas.model.typedef.AtlasBaseTypeDef;
import org.apache.atlas.repository.Constants; import org.apache.atlas.repository.Constants;
import org.apache.atlas.repository.graph.AtlasGraphProvider; import org.apache.atlas.repository.graph.AtlasGraphProvider;
...@@ -35,12 +39,14 @@ import org.apache.atlas.repository.graphdb.AtlasEdge; ...@@ -35,12 +39,14 @@ import org.apache.atlas.repository.graphdb.AtlasEdge;
import org.apache.atlas.repository.graphdb.AtlasElement; import org.apache.atlas.repository.graphdb.AtlasElement;
import org.apache.atlas.repository.graphdb.AtlasGraphQuery; import org.apache.atlas.repository.graphdb.AtlasGraphQuery;
import org.apache.atlas.repository.graphdb.AtlasIndexQuery; import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
import org.apache.atlas.repository.graphdb.AtlasIndexQuery.Result;
import org.apache.atlas.repository.graphdb.AtlasVertex; import org.apache.atlas.repository.graphdb.AtlasVertex;
import org.apache.atlas.type.AtlasEntityType; import org.apache.atlas.type.AtlasEntityType;
import org.apache.atlas.type.AtlasStructType; import org.apache.atlas.type.AtlasStructType;
import org.apache.atlas.type.AtlasStructType.AtlasAttribute; import org.apache.atlas.type.AtlasStructType.AtlasAttribute;
import org.apache.atlas.type.AtlasType; import org.apache.atlas.type.AtlasType;
import org.apache.atlas.utils.AtlasPerfMetrics.MetricRecorder; import org.apache.atlas.utils.AtlasPerfMetrics.MetricRecorder;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -51,13 +57,25 @@ import java.util.ArrayList; ...@@ -51,13 +57,25 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import static org.apache.atlas.model.patches.AtlasPatch.PatchStatus.UNKNOWN;
import static org.apache.atlas.repository.Constants.CREATED_BY_KEY;
import static org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT; import static org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
import static org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY; import static org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY;
import static org.apache.atlas.repository.Constants.MODIFICATION_TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.MODIFIED_BY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_ACTION_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_ID_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_DESCRIPTION_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_STATE_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.PATCH_TYPE_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.TIMESTAMP_PROPERTY_KEY;
import static org.apache.atlas.repository.Constants.VERTEX_INDEX;
import static org.apache.atlas.repository.graphdb.AtlasGraphQuery.SortOrder.*; import static org.apache.atlas.repository.graphdb.AtlasGraphQuery.SortOrder.*;
/** /**
...@@ -320,6 +338,22 @@ public class AtlasGraphUtilsV2 { ...@@ -320,6 +338,22 @@ public class AtlasGraphUtilsV2 {
return vertex; return vertex;
} }
public static AtlasVertex findByPatchId(String patchId) {
AtlasVertex ret = null;
String indexQuery = getIndexSearchPrefix() + "\"" + PATCH_ID_PROPERTY_KEY + "\" : ("+ patchId +")";
Iterator<Result<Object, Object>> results = AtlasGraphProvider.getGraphInstance().indexQuery(VERTEX_INDEX, indexQuery).vertices();
while (results != null && results.hasNext()) {
ret = results.next().getVertex();
if (ret != null) {
break;
}
}
return ret;
}
public static AtlasVertex findByGuid(String guid) { public static AtlasVertex findByGuid(String guid) {
AtlasVertex ret = GraphTransactionInterceptor.getVertexFromCache(guid); AtlasVertex ret = GraphTransactionInterceptor.getVertexFromCache(guid);
...@@ -433,6 +467,64 @@ public class AtlasGraphUtilsV2 { ...@@ -433,6 +467,64 @@ public class AtlasGraphUtilsV2 {
return vertex; return vertex;
} }
public static Map<String, PatchStatus> initPatchesRegistry() {
Map<String, PatchStatus> ret = new HashMap<>();
AtlasPatches patches = getPatches();
for (AtlasPatch patch : patches.getPatches()) {
String patchId = patch.getId();
PatchStatus patchStatus = patch.getStatus();
if (patchId != null && patchStatus != null) {
ret.put(patchId, patchStatus);
}
}
return ret;
}
public static AtlasPatches getPatches() {
List<AtlasPatch> patches = new ArrayList<>();
String indexQuery = getIndexSearchPrefix() + "\"" + PATCH_ID_PROPERTY_KEY + "\" : (*)";
Iterator<Result<Object, Object>> results = AtlasGraphProvider.getGraphInstance().indexQuery(VERTEX_INDEX, indexQuery).vertices();
while (results != null && results.hasNext()) {
AtlasVertex patchVertex = results.next().getVertex();
AtlasPatch patch = toAtlasPatch(patchVertex);
patches.add(patch);
}
// Sort the patches based on patch id
if (CollectionUtils.isNotEmpty(patches)) {
Collections.sort(patches, (p1, p2) -> p1.getId().compareTo(p2.getId()));
}
return new AtlasPatches(patches);
}
private static AtlasPatch toAtlasPatch(AtlasVertex vertex) {
AtlasPatch ret = new AtlasPatch();
ret.setId(getEncodedProperty(vertex, PATCH_ID_PROPERTY_KEY, String.class));
ret.setDescription(getEncodedProperty(vertex, PATCH_DESCRIPTION_PROPERTY_KEY, String.class));
ret.setType(getEncodedProperty(vertex, PATCH_TYPE_PROPERTY_KEY, String.class));
ret.setAction(getEncodedProperty(vertex, PATCH_ACTION_PROPERTY_KEY, String.class));
ret.setCreatedBy(getEncodedProperty(vertex, CREATED_BY_KEY, String.class));
ret.setUpdatedBy(getEncodedProperty(vertex, MODIFIED_BY_KEY, String.class));
ret.setCreatedTime(getEncodedProperty(vertex, TIMESTAMP_PROPERTY_KEY, Long.class));
ret.setUpdatedTime(getEncodedProperty(vertex, MODIFICATION_TIMESTAMP_PROPERTY_KEY, Long.class));
ret.setStatus(getPatchStatus(vertex));
return ret;
}
private static PatchStatus getPatchStatus(AtlasVertex vertex) {
String patchStatus = AtlasGraphUtilsV2.getEncodedProperty(vertex, PATCH_STATE_PROPERTY_KEY, String.class);
return patchStatus != null ? PatchStatus.valueOf(patchStatus) : UNKNOWN;
}
public static List<String> findEntityGUIDsByType(String typename, SortOrder sortOrder) { public static List<String> findEntityGUIDsByType(String typename, SortOrder sortOrder) {
AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query() AtlasGraphQuery query = AtlasGraphProvider.getGraphInstance().query()
.has(Constants.ENTITY_TYPE_PROPERTY_KEY, typename); .has(Constants.ENTITY_TYPE_PROPERTY_KEY, typename);
...@@ -555,8 +647,8 @@ public class AtlasGraphUtilsV2 { ...@@ -555,8 +647,8 @@ public class AtlasGraphUtilsV2 {
String propertyName = attribute.getVertexPropertyName(); String propertyName = attribute.getVertexPropertyName();
AtlasIndexQuery query = getIndexQuery(entityType, propertyName, attrVal.toString()); AtlasIndexQuery query = getIndexQuery(entityType, propertyName, attrVal.toString());
for (Iterator<AtlasIndexQuery.Result> iter = query.vertices(); iter.hasNext(); ) { for (Iterator<Result> iter = query.vertices(); iter.hasNext(); ) {
AtlasIndexQuery.Result result = iter.next(); Result result = iter.next();
AtlasVertex vertex = result.getVertex(); AtlasVertex vertex = result.getVertex();
// skip non-entity vertices, if any got returned // skip non-entity vertices, if any got returned
......
...@@ -534,7 +534,7 @@ public class AtlasTypeDefGraphStoreV2 extends AtlasTypeDefGraphStore { ...@@ -534,7 +534,7 @@ public class AtlasTypeDefGraphStoreV2 extends AtlasTypeDefGraphStore {
vertex.setProperty(Constants.VERSION_PROPERTY_KEY, newVersion); vertex.setProperty(Constants.VERSION_PROPERTY_KEY, newVersion);
} }
private String getCurrentUser() { public static String getCurrentUser() {
String ret = RequestContext.getCurrentUser(); String ret = RequestContext.getCurrentUser();
if (StringUtils.isBlank(ret)) { if (StringUtils.isBlank(ret)) {
......
...@@ -28,7 +28,6 @@ import org.apache.atlas.authorize.AtlasPrivilege; ...@@ -28,7 +28,6 @@ import org.apache.atlas.authorize.AtlasPrivilege;
import org.apache.atlas.authorize.AtlasAuthorizationUtils; import org.apache.atlas.authorize.AtlasAuthorizationUtils;
import org.apache.atlas.discovery.SearchContext; import org.apache.atlas.discovery.SearchContext;
import org.apache.atlas.exception.AtlasBaseException; import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.model.discovery.AtlasSearchResult;
import org.apache.atlas.model.impexp.AtlasServer; import org.apache.atlas.model.impexp.AtlasServer;
import org.apache.atlas.model.impexp.AtlasExportRequest; import org.apache.atlas.model.impexp.AtlasExportRequest;
import org.apache.atlas.model.impexp.AtlasExportResult; import org.apache.atlas.model.impexp.AtlasExportResult;
...@@ -39,6 +38,7 @@ import org.apache.atlas.model.impexp.MigrationStatus; ...@@ -39,6 +38,7 @@ import org.apache.atlas.model.impexp.MigrationStatus;
import org.apache.atlas.model.instance.AtlasCheckStateRequest; import org.apache.atlas.model.instance.AtlasCheckStateRequest;
import org.apache.atlas.model.instance.AtlasCheckStateResult; import org.apache.atlas.model.instance.AtlasCheckStateResult;
import org.apache.atlas.model.metrics.AtlasMetrics; import org.apache.atlas.model.metrics.AtlasMetrics;
import org.apache.atlas.model.patches.AtlasPatch.AtlasPatches;
import org.apache.atlas.repository.impexp.AtlasServerService; import org.apache.atlas.repository.impexp.AtlasServerService;
import org.apache.atlas.repository.impexp.ExportImportAuditService; import org.apache.atlas.repository.impexp.ExportImportAuditService;
import org.apache.atlas.repository.impexp.ExportService; import org.apache.atlas.repository.impexp.ExportService;
...@@ -47,6 +47,7 @@ import org.apache.atlas.repository.impexp.MigrationProgressService; ...@@ -47,6 +47,7 @@ import org.apache.atlas.repository.impexp.MigrationProgressService;
import org.apache.atlas.repository.impexp.ZipSink; import org.apache.atlas.repository.impexp.ZipSink;
import org.apache.atlas.repository.impexp.ZipSource; import org.apache.atlas.repository.impexp.ZipSource;
import org.apache.atlas.repository.store.graph.AtlasEntityStore; import org.apache.atlas.repository.store.graph.AtlasEntityStore;
import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
import org.apache.atlas.services.MetricsService; import org.apache.atlas.services.MetricsService;
import org.apache.atlas.type.AtlasType; import org.apache.atlas.type.AtlasType;
import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.atlas.type.AtlasTypeRegistry;
...@@ -555,6 +556,23 @@ public class AdminResource { ...@@ -555,6 +556,23 @@ public class AdminResource {
} }
} }
@GET
@Path("patches")
@Produces(Servlets.JSON_MEDIA_TYPE)
public AtlasPatches getAtlasPatches() {
if (LOG.isDebugEnabled()) {
LOG.debug("==> AdminResource.getAtlasPatches()");
}
AtlasPatches ret = AtlasGraphUtilsV2.getPatches();
if (LOG.isDebugEnabled()) {
LOG.debug("<== AdminResource.getAtlasPatches()");
}
return ret;
}
private String getEditableEntityTypes(Configuration config) { private String getEditableEntityTypes(Configuration config) {
String ret = DEFAULT_EDITABLE_ENTITY_TYPES; String ret = DEFAULT_EDITABLE_ENTITY_TYPES;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment