From 34935414ea2e81c47d38af9f07232173b3d0b00f Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Tue, 31 Mar 2020 16:16:05 +0200 Subject: [PATCH] Adding and fixing rules --- .../aggregator/RegexRulesAggregator.java | 6 +- .../validations/validators/TestRules.java | 7 +- .../rules/Catalogue-WS/Catalogue-WS-group.csv | 2 + .../Catalogue-WS/Catalogue-WS-group.json | 12 ++ .../Catalogue-WS/Catalogue-WS-groups.csv | 1 + .../Catalogue-WS/Catalogue-WS-groups.json | 12 ++ .../rules/Catalogue-WS/Catalogue-WS-item.csv | 4 + .../rules/Catalogue-WS/Catalogue-WS-item.json | 12 ++ .../rules/Catalogue-WS/Catalogue-WS-items.csv | 1 + ...nizations.json => Catalogue-WS-items.json} | 4 +- .../Catalogue-WS/Catalogue-WS-licenses.csv | 6 +- .../Catalogue-WS/Catalogue-WS-licenses.json | 4 +- .../Catalogue-WS-organization.csv | 1 + .../Catalogue-WS-organization.json | 12 ++ ...ons.csv => Catalogue-WS-organizations.csv} | 6 +- ...s.json => Catalogue-WS-organizations.json} | 2 +- .../Catalogue-WS/Catalogue-WS-profile.csv | 1 + .../Catalogue-WS/Catalogue-WS-profile.json | 12 ++ .../Catalogue-WS/Catalogue-WS-profiles.csv | 4 + .../Catalogue-WS/Catalogue-WS-profiles.json | 12 ++ .../Catalogue-WS/Catalogue-WS-resource.csv | 3 + .../Catalogue-WS/Catalogue-WS-resource.json | 12 ++ .../Catalogue-WS/Catalogue-WS-resources.csv | 1 + .../Catalogue-WS/Catalogue-WS-resources.json | 12 ++ .../Catalogue-WS-showOrganizations.csv | 6 - .../rules/DataMiner/DataMiner-OTHER.json | 2 +- .../GRSFPublisher/GRSFPublisher-OTHER.csv | 2 +- .../GRSFPublisher/GRSFPublisher-OTHER.json | 2 +- .../GRSFPublisher-getLicenses.csv | 7 ++ .../GRSFPublisher-getLicenses.json | 12 ++ .../GRSFPublisher/GRSFPublisher-update.csv | 1 + .../GRSFPublisher/GRSFPublisher-update.json | 2 +- .../rules/GeoNetwork/GeoNetwork-read.json | 2 +- .../HomeLibraryWebapp-all.csv | 99 +++++++++++++++ .../HomeLibraryWebapp-all.json | 12 ++ src/test/resources/rules/allRules.json.full | 117 ++++++++++++++++-- src/test/resources/rules/allRules.json.min | 2 +- .../dataminer-pool-manager-OTHER.csv | 3 + .../dataminer-pool-manager-OTHER.json | 12 ++ .../dataminer-pool-manager-all.csv | 10 ++ .../dataminer-pool-manager-all.json | 12 ++ 41 files changed, 421 insertions(+), 31 deletions(-) create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.csv rename src/test/resources/rules/Catalogue-WS/{Catalogue-WS-showOrganizations.json => Catalogue-WS-items.json} (62%) create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.json rename src/test/resources/rules/Catalogue-WS/{Catalogue-WS-listOrganizations.csv => Catalogue-WS-organizations.csv} (80%) rename src/test/resources/rules/Catalogue-WS/{Catalogue-WS-listOrganizations.json => Catalogue-WS-organizations.json} (64%) create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.json create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.csv create mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.json delete mode 100644 src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.csv create mode 100644 src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.csv create mode 100644 src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.json create mode 100644 src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.csv create mode 100644 src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.json create mode 100644 src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.csv create mode 100644 src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.json create mode 100644 src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.csv create mode 100644 src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.json diff --git a/src/main/java/org/gcube/accounting/aggregator/RegexRulesAggregator.java b/src/main/java/org/gcube/accounting/aggregator/RegexRulesAggregator.java index 3491e19..c714422 100644 --- a/src/main/java/org/gcube/accounting/aggregator/RegexRulesAggregator.java +++ b/src/main/java/org/gcube/accounting/aggregator/RegexRulesAggregator.java @@ -84,7 +84,11 @@ public class RegexRulesAggregator implements Runnable { return matcherReplace; } - + public void vacumRules() { + synchronized(matcherReplaceList) { + matcherReplaceList = new ArrayList<>(); + } + } public void readConfiguration() { diff --git a/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java b/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java index 6db1ea7..9f02a22 100644 --- a/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java +++ b/src/test/java/org/gcube/accounting/datamodel/validations/validators/TestRules.java @@ -56,6 +56,7 @@ public class TestRules extends ContextTest { } rulesFiles.addAll(Arrays.asList(dir.listFiles(filenameFilter))); RegexRulesAggregator regexRulesAggregator = RegexRulesAggregator.getInstance(); + regexRulesAggregator.vacumRules(); for(File rulesFile : rulesFiles) { ObjectMapper mapper = DSMapper.getObjectMapper(); MatcherReplace matcherReplace = mapper.readValue(rulesFile, MatcherReplace.class); @@ -123,6 +124,7 @@ public class TestRules extends ContextTest { sur.setServiceName(serviceName); sur.setCalledMethod(calledMethod); sur.validate(); + sur.validate(); // logger.trace("To Be aggregated ServiceUsageRecord {}", sur); long oldMinInvocationTime = aggregated.getMinInvocationTime(); @@ -212,12 +214,13 @@ public class TestRules extends ContextTest { "-----------------------------------------------------------------------------------------------------\n\n\n"); } + @Test public void testSingleRule() throws Exception { allRules(); File rulesDirectory = getRulesDirectory(); - File rulesDirFile = new File(rulesDirectory, "data-transfer-service"); - File rulesFile = new File(rulesDirFile, "data-transfer-service-transfer.json"); + File rulesDirFile = new File(rulesDirectory, "dataminer-pool-manager"); + File rulesFile = new File(rulesDirFile, "dataminer-pool-manager-OTHER.json"); testRule(rulesFile); } diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.csv new file mode 100644 index 0000000..4ba50b5 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.csv @@ -0,0 +1,2 @@ +Data-Catalogue,Catalogue-WS,/rest/api/groups/create +Data-Catalogue,Catalogue-WS,/rest/api/groups/show \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.json new file mode 100644 index 0000000..e91f683 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-group.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})group(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Group" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.csv new file mode 100644 index 0000000..4f64376 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.csv @@ -0,0 +1 @@ +Data-Catalogue,Catalogue-WS,/rest/api/groups/list \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.json new file mode 100644 index 0000000..b0a81e3 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-groups.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})group(s){0,1}\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Groups" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.csv new file mode 100644 index 0000000..0e12eea --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.csv @@ -0,0 +1,4 @@ +Data-Catalogue,Catalogue-WS,/rest/api/items/create +Data-Catalogue,Catalogue-WS,/rest/api/items/delete +Data-Catalogue,Catalogue-WS,/rest/api/items/purge +Data-Catalogue,Catalogue-WS,/rest/api/items/show \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.json new file mode 100644 index 0000000..59c837b --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-item.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})item(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Item" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.csv new file mode 100644 index 0000000..4d19e7b --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.csv @@ -0,0 +1 @@ +Data-Catalogue,Catalogue-WS,/rest/api/items/list \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.json similarity index 62% rename from src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.json rename to src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.json index e2c33fc..9b5e022 100644 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.json +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-items.json @@ -2,11 +2,11 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "^\/rest\/api\/organi(s|z)ation(s){0,1}\/show.*" + "calledMethodRegex": "(\/rest\/(api\/){0,1})item(s){0,1}\/(?list)(\/{0,1})" }, "replace": { "serviceClass": "DataPublishing", "serviceName": "Catalogue-WS", - "calledMethod": "showOrganizations" + "calledMethod": "${Action}Items" } } \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.csv index 0c64d36..96df74a 100644 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.csv +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.csv @@ -1,2 +1,6 @@ Data-Catalogue,Catalogue-WS,/rest/licenses/list -Data-Catalogue,Catalogue-WS,/rest/api/licenses/list \ No newline at end of file +Data-Catalogue,Catalogue-WS,/rest/api/licenses/list +Data-Catalogue,Catalogue-WS,/rest/api/licences/list +Data-Catalogue,Catalogue-WS,/rest/api/licenses/list/ +Data-Catalogue,Catalogue-WS,/rest/api/licences/list +Data-Catalogue,Catalogue-WS,/rest/api/licenses/list/ \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.json index e38ed36..62eee1e 100644 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.json +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-licenses.json @@ -2,11 +2,11 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "(^\/rest\/(api\/){0,1}licenses\/list)|(listLicenses)" + "calledMethodRegex": "^\/rest\/(api\/){0,1}licen(c|s)es\/(?list)(\/{0,1})" }, "replace": { "serviceClass": "DataPublishing", "serviceName": "Catalogue-WS", - "calledMethod": "listLicenses" + "calledMethod": "${Action}Licenses" } } \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.csv new file mode 100644 index 0000000..41ae12e --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.csv @@ -0,0 +1 @@ +Data-Catalogue,Catalogue-WS,/rest/api/organizations/create \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.json new file mode 100644 index 0000000..f986b45 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organization.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Organization" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.csv similarity index 80% rename from src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.csv rename to src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.csv index 8c78414..aa2100e 100644 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.csv +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.csv @@ -10,4 +10,8 @@ Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3finclude_dataset_count Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3flimit=2 Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3foffset=2 Data-Catalogue,Catalogue-WS,/rest/api/organizations/list%3forder_by=name -Data-Catalogue,Catalogue-WS,/rest/api/organizations/list/%3finclude_dataset_count=true \ No newline at end of file +Data-Catalogue,Catalogue-WS,/rest/api/organizations/list/%3finclude_dataset_count=true +Data-Catalogue,Catalogue-WS,listOrganizations +Data-Catalogue,Catalogue-WS,listOrganization +Data-Catalogue,Catalogue-WS,listOrganisations +Data-Catalogue,Catalogue-WS,listOrganisation \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.json similarity index 64% rename from src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.json rename to src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.json index fc64267..879db19 100644 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-listOrganizations.json +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-organizations.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "^\/rest\/api\/organi(s|z)ation(s){0,1}\/list.*" + "calledMethodRegex": "(\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?list)\/{0,1}.*)|(listOrgani(s|z)ation(s{0,1}))" }, "replace": { "serviceClass": "DataPublishing", diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.csv new file mode 100644 index 0000000..9d4c98c --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.csv @@ -0,0 +1 @@ +Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.json new file mode 100644 index 0000000..014d4d3 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profile.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(show|profile))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "showProfile" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.csv new file mode 100644 index 0000000..17b0d5c --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.csv @@ -0,0 +1,4 @@ +Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile_names +Data-Catalogue,Catalogue-WS,/rest/api/profiles/profile_names/ +Data-Catalogue,Catalogue-WS,/rest/api/profile/list +Data-Catalogue,Catalogue-WS,/rest/api/profiles/list \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.json new file mode 100644 index 0000000..2e2c84c --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-profiles.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(list|profile_names))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "listProfile" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.csv new file mode 100644 index 0000000..6d1a9c4 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.csv @@ -0,0 +1,3 @@ +Data-Catalogue,Catalogue-WS,/rest/api/resources/create +Data-Catalogue,Catalogue-WS,/rest/api/resources/delete +Data-Catalogue,Catalogue-WS,/rest/api/resources/show \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.json new file mode 100644 index 0000000..cb4b487 --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resource.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})resource(s){0,1}\/(?create|show|purge|delete)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Resource" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.csv new file mode 100644 index 0000000..5863fff --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.csv @@ -0,0 +1 @@ +Data-Catalogue,Catalogue-WS,/rest/api/resources/list \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.json b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.json new file mode 100644 index 0000000..c98704e --- /dev/null +++ b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-resources.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})resource(s){0,1}\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Resource" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.csv b/src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.csv deleted file mode 100644 index 2b8fbc5..0000000 --- a/src/test/resources/rules/Catalogue-WS/Catalogue-WS-showOrganizations.csv +++ /dev/null @@ -1,6 +0,0 @@ -Data-Catalogue,Catalogue-WS,/rest/api/organisations/show%3fid=biodiversitylab -Data-Catalogue,Catalogue-WS,/rest/api/organizations/show -Data-Catalogue,Catalogue-WS,/rest/api/organizations/show%3fid=aquamaps -Data-Catalogue,Catalogue-WS,/rest/api/organizations/show%3fid=biodiversitylab -Data-Catalogue,Catalogue-WS,/rest/api/organizations/show%3fid=egip -Data-Catalogue,Catalogue-WS,/rest/api/organizations/show%3fid=organization_name \ No newline at end of file diff --git a/src/test/resources/rules/DataMiner/DataMiner-OTHER.json b/src/test/resources/rules/DataMiner/DataMiner-OTHER.json index 9241cfc..fa75e10 100644 --- a/src/test/resources/rules/DataMiner/DataMiner-OTHER.json +++ b/src/test/resources/rules/DataMiner/DataMiner-OTHER.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "(WPS)|(DataAnalysis)", "serviceNameRegex": "DataMiner", - "calledMethodRegex": "^/{0,1}(WebProcessingService|UNKNOWN|OTHER|gcube\/resource\/scopes).*" + "calledMethodRegex": "^\/{0,1}(WebProcessingService|UNKNOWN|OTHER|(gcube\/resource\/scopes)).*" }, "replace": { "serviceClass": "DataAnalysis", diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.csv b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.csv index 8a4e7c4..34eadcc 100644 --- a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.csv +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.csv @@ -1,4 +1,4 @@ Data-Catalogue,GRSFPublisher,UNKNOWN Data-Catalogue,GRSFPublisher,OTHER Data-Catalogue,GRSFPublisher,/rest/firms/hello -Data-Catalogue,GRSFPublisher,/rest/ram/hello +Data-Catalogue,GRSFPublisher,/rest/ram/hello \ No newline at end of file diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.json b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.json index 18b3c1c..cfe9135 100644 --- a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.json +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-OTHER.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "GRSFPublisher", - "calledMethodRegex": ".*(hello)|(UNKNOWN)|(OTHER)|(get-licenses).*" + "calledMethodRegex": ".*((hello)|(UNKNOWN)|(OTHER)).*" }, "replace": { "serviceClass": "DataPublishing", diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.csv b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.csv new file mode 100644 index 0000000..1e30084 --- /dev/null +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.csv @@ -0,0 +1,7 @@ +Data-Catalogue,GRSFPublisher,/rest/ram/fishery/get-licenses +Data-Catalogue,GRSFPublisher,/rest/ram/stock/get-license +Data-Catalogue,GRSFPublisher,/rest/ram/stock/get-licenses +Data-Catalogue,GRSFPublisher,/rest/stock/fishery/get-licenses +Data-Catalogue,GRSFPublisher,/rest/stock/get-licenses +Data-Catalogue,GRSFPublisher,/rest/stock/ram/get-licenses +Data-Catalogue,GRSFPublisher,/rest/stock/rams/get-licenses \ No newline at end of file diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.json b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.json new file mode 100644 index 0000000..bc0cc2d --- /dev/null +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-getLicenses.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "GRSFPublisher", + "calledMethodRegex": ".*get-license(s{0,1}).*" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "GRSFPublisher", + "calledMethod": "getLicenses" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.csv b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.csv index 52be001..33f29da 100644 --- a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.csv +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.csv @@ -1 +1,2 @@ Data-Catalogue,GRSFPublisher,/rest/grsf/stock/update-product +Data-Catalogue,GRSFPublisher,update diff --git a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.json b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.json index 35bf023..e0a1191 100644 --- a/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.json +++ b/src/test/resources/rules/GRSFPublisher/GRSFPublisher-update.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "GRSFPublisher", - "calledMethodRegex": ".*update-product.*" + "calledMethodRegex": "(.*update-product.*)|(update)" }, "replace": { "serviceClass": "DataPublishing", diff --git a/src/test/resources/rules/GeoNetwork/GeoNetwork-read.json b/src/test/resources/rules/GeoNetwork/GeoNetwork-read.json index 0e79c20..6e6e158 100644 --- a/src/test/resources/rules/GeoNetwork/GeoNetwork-read.json +++ b/src/test/resources/rules/GeoNetwork/GeoNetwork-read.json @@ -2,7 +2,7 @@ "match": { "serviceClassRegex": "(SDI)|(SpatialData)", "serviceNameRegex": "GeoNetwork", - "calledMethodRegex": ".*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*))" + "calledMethodRegex": "(.*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*)))|(read@json)" }, "replace": { "serviceClass": "SDI", diff --git a/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.csv b/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.csv new file mode 100644 index 0000000..c784ceb --- /dev/null +++ b/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.csv @@ -0,0 +1,99 @@ +DataAccess,HomeLibraryWebapp,/CanAddChildren +DataAccess,HomeLibraryWebapp,/CanDelete +DataAccess,HomeLibraryWebapp,/CanModifyProperties +DataAccess,HomeLibraryWebapp,/CanReadNode +DataAccess,HomeLibraryWebapp,/ChangePass +DataAccess,HomeLibraryWebapp,/CreateCostumePrivilegeServlet +DataAccess,HomeLibraryWebapp,/CreateGroupServlet +DataAccess,HomeLibraryWebapp,/CreateSession +DataAccess,HomeLibraryWebapp,/CreateUserServlet +DataAccess,HomeLibraryWebapp,/DeleteAcesServlet +DataAccess,HomeLibraryWebapp,/DeleteAuthorizableServlet +DataAccess,HomeLibraryWebapp,/GetAccountingById +DataAccess,HomeLibraryWebapp,/GetDisplayNameServlet +DataAccess,HomeLibraryWebapp,/GetRegisteredPrivileges +DataAccess,HomeLibraryWebapp,/GetVersionServlet +DataAccess,HomeLibraryWebapp,/GroupMembershipServlet +DataAccess,HomeLibraryWebapp,/IsGroupServlet +DataAccess,HomeLibraryWebapp,/ListGroupsServlet +DataAccess,HomeLibraryWebapp,/ListUsersServlet +DataAccess,HomeLibraryWebapp,/ModifyAceServlet +DataAccess,HomeLibraryWebapp,/ReleaseSession +DataAccess,HomeLibraryWebapp,/SetVersionServlet +DataAccess,HomeLibraryWebapp,/UpdateGroupServlet +DataAccess,HomeLibraryWebapp,/acl/CanAddChildren +DataAccess,HomeLibraryWebapp,/acl/CanModifyProperties +DataAccess,HomeLibraryWebapp,/acl/CanReadNode +DataAccess,HomeLibraryWebapp,/acl/GetACL +DataAccess,HomeLibraryWebapp,/acl/GetACLByUser +DataAccess,HomeLibraryWebapp,/acl/GetEACL +DataAccess,HomeLibraryWebapp,/get/Clone +DataAccess,HomeLibraryWebapp,/get/Copy +DataAccess,HomeLibraryWebapp,/get/ExecuteQuery +DataAccess,HomeLibraryWebapp,/get/GetChildrenById +DataAccess,HomeLibraryWebapp,/get/GetChildrenCount +DataAccess,HomeLibraryWebapp,/get/GetItemById +DataAccess,HomeLibraryWebapp,/get/GetItemByPath +DataAccess,HomeLibraryWebapp,/get/GetParentsById +DataAccess,HomeLibraryWebapp,/get/GetReferences +DataAccess,HomeLibraryWebapp,/get/IsLocked +DataAccess,HomeLibraryWebapp,/get/LockSession +DataAccess,HomeLibraryWebapp,/get/Move +DataAccess,HomeLibraryWebapp,/get/SearchItems +DataAccess,HomeLibraryWebapp,/get/UnlockSession +DataAccess,HomeLibraryWebapp,/post/ChangePrimaryType +DataAccess,HomeLibraryWebapp,/post/MoveToTrashIds +DataAccess,HomeLibraryWebapp,/post/RemoveItem +DataAccess,HomeLibraryWebapp,/post/SaveAccountingItem +DataAccess,HomeLibraryWebapp,/post/SaveItem +DataAccess,HomeLibraryWebapp,/rest/CreateFolder +DataAccess,HomeLibraryWebapp,/rest/Delete +DataAccess,HomeLibraryWebapp,/rest/Download +DataAccess,HomeLibraryWebapp,/rest/List +DataAccess,HomeLibraryWebapp,/rest/Upload +DataAccess,HomeLibraryWebapp,/trash/DeleteFromTrash +DataAccess,HomeLibraryWebapp,/trash/EmptyTrash +DataAccess,HomeLibraryWebapp,/versioning/GetCurrentVersion +DataAccess,HomeLibraryWebapp,/versioning/GetVersion +DataAccess,HomeLibraryWebapp,/versioning/RemoveVersion +DataAccess,HomeLibraryWebapp,/versioning/RestoreVersion +DataAccess,HomeLibraryWebapp,/versioning/SaveCurrentVersion +DataAccess,HomeLibraryWebapp,/versioning/VersionHistory +DataAccess,HomeLibraryWebapp,CanAddChildren +DataAccess,HomeLibraryWebapp,CanDelete +DataAccess,HomeLibraryWebapp,CanModifyProperties +DataAccess,HomeLibraryWebapp,CanReadNode +DataAccess,HomeLibraryWebapp,CreateSession +DataAccess,HomeLibraryWebapp,CreateUserServlet +DataAccess,HomeLibraryWebapp,DeleteAcesServlet +DataAccess,HomeLibraryWebapp,GetAccountingById +DataAccess,HomeLibraryWebapp,GetDisplayNameServlet +DataAccess,HomeLibraryWebapp,GetVersionServlet +DataAccess,HomeLibraryWebapp,GroupMembershipServlet +DataAccess,HomeLibraryWebapp,IsGroupServlet +DataAccess,HomeLibraryWebapp,ListGroupsServlet +DataAccess,HomeLibraryWebapp,ModifyAceServlet +DataAccess,HomeLibraryWebapp,OTHER +DataAccess,HomeLibraryWebapp,ReleaseSession +DataAccess,HomeLibraryWebapp,SetVersionServlet +DataAccess,HomeLibraryWebapp,UpdateGroupServlet +DataAccess,HomeLibraryWebapp,acl/GetACL +DataAccess,HomeLibraryWebapp,acl/GetACLByUser +DataAccess,HomeLibraryWebapp,acl/GetEACL +DataAccess,HomeLibraryWebapp,get/Clone +DataAccess,HomeLibraryWebapp,get/Copy +DataAccess,HomeLibraryWebapp,get/ExecuteQuery +DataAccess,HomeLibraryWebapp,get/GetChildrenById +DataAccess,HomeLibraryWebapp,get/GetItemById +DataAccess,HomeLibraryWebapp,get/GetItemByPath +DataAccess,HomeLibraryWebapp,get/GetParentsById +DataAccess,HomeLibraryWebapp,get/GetReferences +DataAccess,HomeLibraryWebapp,get/IsLocked +DataAccess,HomeLibraryWebapp,get/LockSession +DataAccess,HomeLibraryWebapp,get/Move +DataAccess,HomeLibraryWebapp,get/UnlockSession +DataAccess,HomeLibraryWebapp,post/ChangePrimaryType +DataAccess,HomeLibraryWebapp,post/MoveToTrashIds +DataAccess,HomeLibraryWebapp,post/RemoveItem +DataAccess,HomeLibraryWebapp,post/SaveAccountingItem +DataAccess,HomeLibraryWebapp,post/SaveItem diff --git a/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.json b/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.json new file mode 100644 index 0000000..5e90494 --- /dev/null +++ b/src/test/resources/rules/HomeLibraryWebapp/HomeLibraryWebapp-all.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "DataAccess", + "serviceNameRegex": "HomeLibraryWebapp", + "calledMethodRegex": "\/{0,1}((acl|get|rest|post|trash|versioning)\/){0,1}(?[a-zA-Z]*)" + }, + "replace": { + "serviceClass": "DataAccess", + "serviceName": "HomeLibraryWebapp", + "calledMethod": "${Method}" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/allRules.json.full b/src/test/resources/rules/allRules.json.full index 2701153..db9a603 100644 --- a/src/test/resources/rules/allRules.json.full +++ b/src/test/resources/rules/allRules.json.full @@ -58,18 +58,73 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "(^\/rest\/(api\/){0,1}licenses\/list)|(listLicenses)" + "calledMethodRegex": "(\/rest\/(api\/){0,1})group(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" }, "replace": { "serviceClass": "DataPublishing", "serviceName": "Catalogue-WS", - "calledMethod": "listLicenses" + "calledMethod": "${Action}Group" } },{ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "^\/rest\/api\/organi(s|z)ation(s){0,1}\/list.*" + "calledMethodRegex": "(\/rest\/(api\/){0,1})group(s){0,1}\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Groups" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})item(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Item" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})item(s){0,1}\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Items" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "^\/rest\/(api\/){0,1}licen(c|s)es\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Licenses" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Organization" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?list)\/{0,1}.*)|(listOrgani(s|z)ation(s{0,1}))" }, "replace": { "serviceClass": "DataPublishing", @@ -91,12 +146,45 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "Catalogue-WS", - "calledMethodRegex": "^\/rest\/api\/organi(s|z)ation(s){0,1}\/show.*" + "calledMethodRegex": "(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(show|profile))(\/{0,1})" }, "replace": { "serviceClass": "DataPublishing", "serviceName": "Catalogue-WS", - "calledMethod": "showOrganizations" + "calledMethod": "showProfile" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(list|profile_names))(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "listProfile" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})resource(s){0,1}\/(?create|show|purge|delete)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Resource" + } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "Catalogue-WS", + "calledMethodRegex": "(\/rest\/(api\/){0,1})resource(s){0,1}\/(?list)(\/{0,1})" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "Catalogue-WS", + "calledMethod": "${Action}Resource" } },{ "match": { @@ -157,7 +245,7 @@ "match": { "serviceClassRegex": "(WPS)|(DataAnalysis)", "serviceNameRegex": "DataMiner", - "calledMethodRegex": "^/{0,1}(WebProcessingService|UNKNOWN|OTHER|gcube\/resource\/scopes).*" + "calledMethodRegex": "^\/{0,1}(WebProcessingService|UNKNOWN|OTHER|(gcube\/resource\/scopes)).*" }, "replace": { "serviceClass": "DataAnalysis", @@ -300,7 +388,7 @@ "match": { "serviceClassRegex": "(SDI)|(SpatialData)", "serviceNameRegex": "GeoNetwork", - "calledMethodRegex": ".*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*))" + "calledMethodRegex": "(.*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*)))|(read@json)" }, "replace": { "serviceClass": "SDI", @@ -374,6 +462,17 @@ "serviceName": "GRSFPublisher", "calledMethod": "delete" } +},{ + "match": { + "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", + "serviceNameRegex": "GRSFPublisher", + "calledMethodRegex": ".*get-license(s{0,1}).*" + }, + "replace": { + "serviceClass": "DataPublishing", + "serviceName": "GRSFPublisher", + "calledMethod": "getLicenses" + } },{ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", @@ -389,7 +488,7 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "GRSFPublisher", - "calledMethodRegex": ".*(hello)|(UNKNOWN)|(OTHER)|(get-licenses).*" + "calledMethodRegex": ".*((hello)|(UNKNOWN)|(OTHER)).*" }, "replace": { "serviceClass": "DataPublishing", @@ -400,7 +499,7 @@ "match": { "serviceClassRegex": "(Data-Catalogue)|(DataPublishing)", "serviceNameRegex": "GRSFPublisher", - "calledMethodRegex": ".*update-product.*" + "calledMethodRegex": "(.*update-product.*)|(update)" }, "replace": { "serviceClass": "DataPublishing", diff --git a/src/test/resources/rules/allRules.json.min b/src/test/resources/rules/allRules.json.min index 54bf362..354e7bb 100644 --- a/src/test/resources/rules/allRules.json.min +++ b/src/test/resources/rules/allRules.json.min @@ -1 +1 @@ -[{"match":{"serviceClassRegex":"(?.*)","serviceNameRegex":"(?.*)","calledMethodRegex":"UNKNOWN"},"replace":{"serviceClass":"${ServiceClass}","serviceName":"${ServiceName}","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"(?.*)"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"${CalledMethod}"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^/{0,1}gcube/service/generate.*"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"generate"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^/{0,1}gcube/service/retrieve.*"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"retrieve"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^((e\/)|\/){0,1}gcube\/resource\/scopes"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"scopes"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(^\/rest\/(api\/){0,1}licenses\/list)|(listLicenses)"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"listLicenses"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"^\/rest\/api\/organi(s|z)ation(s){0,1}\/list.*"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"listOrganizations"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"^\/rest$|^UNKNOWN$|^OTHER$"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"^\/rest\/api\/organi(s|z)ation(s){0,1}\/show.*"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"showOrganizations"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"CkanConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"CkanConnector","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"CkanConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/disconnect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"CkanConnector","calledMethod":"disconnect"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}DescribeProcess.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"describeProcess"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}GetCapabilities.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"getCapabilities"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}RetrieveResult.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"getResult"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}(WebProcessingService|UNKNOWN|OTHER|gcube\/resource\/scopes).*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}CancelComputation.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"stop"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":".*(c|C)apabilities.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"getCapabilities"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":".*TransferStatus.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"getTransferStatus"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":"\/{0,1}gcube\/service\/REST\/.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"transfer"}},{"match":{"serviceClassRegex":"ResourceManagement","serviceNameRegex":"FHNManager","calledMethodRegex":".*"},"replace":{"serviceClass":"ResourceManagement","serviceName":"FHNManager","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Index)|(DataRetrieval)","serviceNameRegex":"(FullTextIndexNode)|(FullTextFullTextIndexNodeNode)","calledMethodRegex":".*"},"replace":{"serviceClass":"DataRetrieval","serviceName":"FullTextIndexNode","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(geoanalytics)|(SDI)","serviceNameRegex":"geoanalytics-gos.*","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"geoanalytics-gos","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"geoanalytics","serviceNameRegex":"geoanalytics-main-service","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"geoanalytics-main-service","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.create(\\.form){0,1}|\\.insert|\\.xmlinsert\\.form)$"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"create"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.delete(\\.batch|@json|$))"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"delete"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.list(@json|$))"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"list"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":"^(?!.*(read|create|insert|delete|list|get|show|info|search|update|edit)).*$|^(.*(updated|editors|pwupdate|(systeminfo.*)|forget-password|getmap.png|(GetCapabilities.*)|(\/codelists\/.*)))$"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*))"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"read"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.|-|/|package_|open)search(\/.*|unused(.form){0,1}|\\..*|;jsessionid=.*|-.*|$)"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"search"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.update($|\\.finish)|\\.edit(!{0,1}|\\.save(only){0,1}|\\.commit)$|\\.infoedit$|\\.pwedit$)"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"update"}},{"match":{"serviceClassRegex":"(GeoServer)|(geoserver)|(SpatialData)|(SDI)","serviceNameRegex":"(GeoServer)|(geoserver)","calledMethodRegex":"^(?!.*\/(wfs|wms|wcs|wmts)).*$"},"replace":{"serviceClass":"SDI","serviceName":"GeoServer","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(GeoServer)|(geoserver)|(SpatialData)|(SDI)","serviceNameRegex":"(GeoServer)|(geoserver)","calledMethodRegex":"^.*\/(?(wfs|wms|wcs|wmts)).*$"},"replace":{"serviceClass":"SDI","serviceName":"GeoServer","calledMethod":"/${Protocol}","_comment" : "Do not remove the initial / to avoid that wms is replaced with OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":"(.*publish-product.*)|(.*create-product.*)|(create)"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"create"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":"(.*delete-product.*)|(delete)"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"delete"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*get-catalogue-id-(and-url-){0,1}from-name.*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"getURLandIdFromName"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*(hello)|(UNKNOWN)|(OTHER)|(get-licenses).*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*update-product.*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"update"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"HomeLibraryFileSystem","calledMethodRegex":".*"},"replace":{"serviceClass":"DataAccess","serviceName":"HomeLibraryFileSystem","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAnalysis","serviceNameRegex":"RConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"RConnector","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAnalysis","serviceNameRegex":"RConnector","calledMethodRegex":"UNKNOWN|OTHER|^\/{0,1}gcube\/resource\/scopes"},"replace":{"serviceClass":"DataAnalysis","serviceName":"RConnector","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"InformationSystem","serviceNameRegex":"(resource-registry)|(joint-resource-registry)","calledMethodRegex":"(?!(listContexts|createContext|readContext|updateContext|deleteContext|listInstances|existInstance|createInstance|readInstance|updateInstance|deleteInstance|createType|readType|addToContext|removeFromContext|query|rawQuery)).*"},"replace":{"serviceClass":"InformationSystem","serviceName":"resource-registry","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"sdi-service","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"sdi-service","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataPublishing","serviceNameRegex":"SDMXDataSource.*","calledMethodRegex":".*"},"replace":{"serviceClass":"DataPublishing","serviceName":"SDMXDataSource","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/disconnect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"disconnect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^(?!(\/{0,1}gcube\/service\/){0,1}((connect)|(disconnect)|(project))).*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/project.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"project"}},{"match":{"serviceClassRegex":"(Search)|(DataRetrieval)","serviceNameRegex":"SimulFishGrowthData","calledMethodRegex":".*"},"replace":{"serviceClass":"DataRetrieval","serviceName":"SimulFishGrowthData","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((launch)|(execute)|(POST .*executions)).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"execute"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getAvailablePlugins.*)|(GET \/plugins(\/){0,1}$))"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getAvailablePlugins"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getScheduledExecution.*)|(GET .*executions(\/){0,1}$))"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getScheduledExecution"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getStateEvolution)|(getState)|(GET .*executions\/.{1,})).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getState"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*(UNKNOWN)|(OTHER).*"},"replace":{"serviceClass":"VREManagement","serviceName":"smart-executor","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((stop)|(unSchedule)|(DELETE)|(PURGE)).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"stop"}},{"match":{"serviceClassRegex":"content-management","serviceNameRegex":"storage","calledMethodRegex":".*"},"replace":{"serviceClass":"content-management","serviceName":"storage","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"Application|DataAnalysis","serviceNameRegex":"TagMe","calledMethodRegex":"^((e\/)|\/){0,1}tag"},"replace":{"serviceClass":"Application","serviceName":"TagMe","calledMethod":"tag"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"Thredds","calledMethodRegex":"^(\/){1}(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?[a-zA-Z0-9_\\-%]*(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}[^\/]*((?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?[a-zA-Z0-9_\\-%]*)(\/){1}(.*\\.(nc|asc|tiff))$"},"replace":{"serviceClass":"SDI","serviceName":"Thredds","calledMethod":"${Protocol}::${Collection}"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"Thredds","calledMethodRegex":"^(\/){1}(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}[^\/]*(\\.(nc|asc|tiff))$"},"replace":{"serviceClass":"SDI","serviceName":"Thredds","calledMethod":"${Protocol}::OTHER"}}] \ No newline at end of file +[{"match":{"serviceClassRegex":"(?.*)","serviceNameRegex":"(?.*)","calledMethodRegex":"UNKNOWN"},"replace":{"serviceClass":"${ServiceClass}","serviceName":"${ServiceName}","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"(?.*)"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"${CalledMethod}"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^/{0,1}gcube/service/generate.*"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"generate"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^/{0,1}gcube/service/retrieve.*"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"retrieve"}},{"match":{"serviceClassRegex":"Common","serviceNameRegex":"AuthorizationService","calledMethodRegex":"^((e\/)|\/){0,1}gcube\/resource\/scopes"},"replace":{"serviceClass":"Common","serviceName":"AuthorizationService","calledMethod":"scopes"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})group(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Group"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})group(s){0,1}\/(?list)(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Groups"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})item(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Item"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})item(s){0,1}\/(?list)(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Items"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"^\/rest\/(api\/){0,1}licen(c|s)es\/(?list)(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Licenses"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?(create|show|purge|delete))(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Organization"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1}organi(s|z)ation(s){0,1}\/(?list)\/{0,1}.*)|(listOrgani(s|z)ation(s{0,1}))"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"listOrganizations"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"^\/rest$|^UNKNOWN$|^OTHER$"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(show|profile))(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"showProfile"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})profile(s){0,1}\/(?(list|profile_names))(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"listProfile"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})resource(s){0,1}\/(?create|show|purge|delete)(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Resource"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"Catalogue-WS","calledMethodRegex":"(\/rest\/(api\/){0,1})resource(s){0,1}\/(?list)(\/{0,1})"},"replace":{"serviceClass":"DataPublishing","serviceName":"Catalogue-WS","calledMethod":"${Action}Resource"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"CkanConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"CkanConnector","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"CkanConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/disconnect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"CkanConnector","calledMethod":"disconnect"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}DescribeProcess.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"describeProcess"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}GetCapabilities.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"getCapabilities"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}RetrieveResult.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"getResult"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^\/{0,1}(WebProcessingService|UNKNOWN|OTHER|(gcube\/resource\/scopes)).*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(WPS)|(DataAnalysis)","serviceNameRegex":"DataMiner","calledMethodRegex":"^/{0,1}CancelComputation.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"DataMiner","calledMethod":"stop"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":".*(c|C)apabilities.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"getCapabilities"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":".*TransferStatus.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"getTransferStatus"}},{"match":{"serviceClassRegex":"DataTransfer","serviceNameRegex":"data-transfer-service","calledMethodRegex":"\/{0,1}gcube\/service\/REST\/.*"},"replace":{"serviceClass":"DataTransfer","serviceName":"data-transfer-service","calledMethod":"transfer"}},{"match":{"serviceClassRegex":"ResourceManagement","serviceNameRegex":"FHNManager","calledMethodRegex":".*"},"replace":{"serviceClass":"ResourceManagement","serviceName":"FHNManager","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Index)|(DataRetrieval)","serviceNameRegex":"(FullTextIndexNode)|(FullTextFullTextIndexNodeNode)","calledMethodRegex":".*"},"replace":{"serviceClass":"DataRetrieval","serviceName":"FullTextIndexNode","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(geoanalytics)|(SDI)","serviceNameRegex":"geoanalytics-gos.*","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"geoanalytics-gos","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"geoanalytics","serviceNameRegex":"geoanalytics-main-service","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"geoanalytics-main-service","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.create(\\.form){0,1}|\\.insert|\\.xmlinsert\\.form)$"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"create"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.delete(\\.batch|@json|$))"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"delete"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.list(@json|$))"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"list"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":"^(?!.*(read|create|insert|delete|list|get|show|info|search|update|edit)).*$|^(.*(updated|editors|pwupdate|(systeminfo.*)|forget-password|getmap.png|(GetCapabilities.*)|(\/codelists\/.*)))$"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":"(.*(\\.get(\\..*|\/.*|$)|\\.show(\\..*|$)|((\\.|/)info(?!edit).*)))|(read@json)"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"read"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.|-|/|package_|open)search(\/.*|unused(.form){0,1}|\\..*|;jsessionid=.*|-.*|$)"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"search"}},{"match":{"serviceClassRegex":"(SDI)|(SpatialData)","serviceNameRegex":"GeoNetwork","calledMethodRegex":".*(\\.update($|\\.finish)|\\.edit(!{0,1}|\\.save(only){0,1}|\\.commit)$|\\.infoedit$|\\.pwedit$)"},"replace":{"serviceClass":"SDI","serviceName":"GeoNetwork","calledMethod":"update"}},{"match":{"serviceClassRegex":"(GeoServer)|(geoserver)|(SpatialData)|(SDI)","serviceNameRegex":"(GeoServer)|(geoserver)","calledMethodRegex":"^(?!.*\/(wfs|wms|wcs|wmts)).*$"},"replace":{"serviceClass":"SDI","serviceName":"GeoServer","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(GeoServer)|(geoserver)|(SpatialData)|(SDI)","serviceNameRegex":"(GeoServer)|(geoserver)","calledMethodRegex":"^.*\/(?(wfs|wms|wcs|wmts)).*$"},"replace":{"serviceClass":"SDI","serviceName":"GeoServer","calledMethod":"/${Protocol}","_comment" : "Do not remove the initial / to avoid that wms is replaced with OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":"(.*publish-product.*)|(.*create-product.*)|(create)"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"create"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":"(.*delete-product.*)|(delete)"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"delete"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*get-license(s{0,1}).*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"getLicenses"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*get-catalogue-id-(and-url-){0,1}from-name.*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"getURLandIdFromName"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":".*((hello)|(UNKNOWN)|(OTHER)).*"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"(Data-Catalogue)|(DataPublishing)","serviceNameRegex":"GRSFPublisher","calledMethodRegex":"(.*update-product.*)|(update)"},"replace":{"serviceClass":"DataPublishing","serviceName":"GRSFPublisher","calledMethod":"update"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"HomeLibraryFileSystem","calledMethodRegex":".*"},"replace":{"serviceClass":"DataAccess","serviceName":"HomeLibraryFileSystem","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAnalysis","serviceNameRegex":"RConnector","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAnalysis","serviceName":"RConnector","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAnalysis","serviceNameRegex":"RConnector","calledMethodRegex":"UNKNOWN|OTHER|^\/{0,1}gcube\/resource\/scopes"},"replace":{"serviceClass":"DataAnalysis","serviceName":"RConnector","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"InformationSystem","serviceNameRegex":"(resource-registry)|(joint-resource-registry)","calledMethodRegex":"(?!(listContexts|createContext|readContext|updateContext|deleteContext|listInstances|existInstance|createInstance|readInstance|updateInstance|deleteInstance|createType|readType|addToContext|removeFromContext|query|rawQuery)).*"},"replace":{"serviceClass":"InformationSystem","serviceName":"resource-registry","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"sdi-service","calledMethodRegex":".*"},"replace":{"serviceClass":"SDI","serviceName":"sdi-service","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataPublishing","serviceNameRegex":"SDMXDataSource.*","calledMethodRegex":".*"},"replace":{"serviceClass":"DataPublishing","serviceName":"SDMXDataSource","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/connect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"connect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/disconnect.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"disconnect"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^(?!(\/{0,1}gcube\/service\/){0,1}((connect)|(disconnect)|(project))).*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"DataAccess","serviceNameRegex":"ShareLatex","calledMethodRegex":"^\/{0,1}gcube\/service\/project.*"},"replace":{"serviceClass":"DataAccess","serviceName":"ShareLatex","calledMethod":"project"}},{"match":{"serviceClassRegex":"(Search)|(DataRetrieval)","serviceNameRegex":"SimulFishGrowthData","calledMethodRegex":".*"},"replace":{"serviceClass":"DataRetrieval","serviceName":"SimulFishGrowthData","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((launch)|(execute)|(POST .*executions)).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"execute"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getAvailablePlugins.*)|(GET \/plugins(\/){0,1}$))"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getAvailablePlugins"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getScheduledExecution.*)|(GET .*executions(\/){0,1}$))"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getScheduledExecution"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((getStateEvolution)|(getState)|(GET .*executions\/.{1,})).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"getState"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*(UNKNOWN)|(OTHER).*"},"replace":{"serviceClass":"VREManagement","serviceName":"smart-executor","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"VREManagement","serviceNameRegex":"(SmartExecutor)|(smart-executor)","calledMethodRegex":".*((stop)|(unSchedule)|(DELETE)|(PURGE)).*"},"replace":{"serviceClass":"VREManagement","serviceName":"SmartExecutor","calledMethod":"stop"}},{"match":{"serviceClassRegex":"content-management","serviceNameRegex":"storage","calledMethodRegex":".*"},"replace":{"serviceClass":"content-management","serviceName":"storage","calledMethod":"OTHER"}},{"match":{"serviceClassRegex":"Application|DataAnalysis","serviceNameRegex":"TagMe","calledMethodRegex":"^((e\/)|\/){0,1}tag"},"replace":{"serviceClass":"Application","serviceName":"TagMe","calledMethod":"tag"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"Thredds","calledMethodRegex":"^(\/){1}(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?[a-zA-Z0-9_\\-%]*(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}[^\/]*((?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}(?[a-zA-Z0-9_\\-%]*)(\/){1}(.*\\.(nc|asc|tiff))$"},"replace":{"serviceClass":"SDI","serviceName":"Thredds","calledMethod":"${Protocol}::${Collection}"}},{"match":{"serviceClassRegex":"SDI","serviceNameRegex":"Thredds","calledMethodRegex":"^(\/){1}(?[a-zA-Z0-9]*){1}(\/public\/netcdf\/){1}[^\/]*(\\.(nc|asc|tiff))$"},"replace":{"serviceClass":"SDI","serviceName":"Thredds","calledMethod":"${Protocol}::OTHER"}}] \ No newline at end of file diff --git a/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.csv b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.csv new file mode 100644 index 0000000..51a2b76 --- /dev/null +++ b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.csv @@ -0,0 +1,3 @@ +DataAnalysis,dataminer-pool-manager,api +DataAnalysis,dataminer-pool-manager,gcube/resource +dataanalysis,dataminer-pool-manager,OTHER \ No newline at end of file diff --git a/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.json b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.json new file mode 100644 index 0000000..08930cb --- /dev/null +++ b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-OTHER.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(DataAnalysis)|(data-analysis)|dataanalysis", + "serviceNameRegex": "dataminer-pool-manager", + "calledMethodRegex": "\/{0,1}(api|OTHER|(gcube\/resource))" + }, + "replace": { + "serviceClass": "DataAnalysis", + "serviceName": "dataminer-pool-manager", + "calledMethod": "OTHER" + } +} \ No newline at end of file diff --git a/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.csv b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.csv new file mode 100644 index 0000000..8097a59 --- /dev/null +++ b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.csv @@ -0,0 +1,10 @@ +DataAnalysis,dataminer-pool-manager,/api/algorithm/add +DataAnalysis,dataminer-pool-manager,/api/algorithm/stage +DataAnalysis,dataminer-pool-manager,/api/log +DataAnalysis,dataminer-pool-manager,/api/monitor +DataAnalysis,dataminer-pool-manager,api/algorithm/add +DataAnalysis,dataminer-pool-manager,api/algorithm/stage +DataAnalysis,dataminer-pool-manager,api/log +DataAnalysis,dataminer-pool-manager,api/monitor +dataanalysis,dataminer-pool-manager,api/algorithm/stage +dataanalysis,dataminer-pool-manager,api/log \ No newline at end of file diff --git a/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.json b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.json new file mode 100644 index 0000000..679d8cb --- /dev/null +++ b/src/test/resources/rules/dataminer-pool-manager/dataminer-pool-manager-all.json @@ -0,0 +1,12 @@ +{ + "match": { + "serviceClassRegex": "(DataAnalysis)|(data-analysis)|dataanalysis", + "serviceNameRegex": "dataminer-pool-manager", + "calledMethodRegex": "\/{0,1}api\/(algorithm\/){0,1}(?[a-zA-Z]*)" + }, + "replace": { + "serviceClass": "DataAnalysis", + "serviceName": "dataminer-pool-manager", + "calledMethod": "${Method}" + } +} \ No newline at end of file