This is an automated email from the ASF dual-hosted git repository.
rmani pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new 8038af6b2 RANGER-4933: Ranger API to Summary View of DataShares in GDS
8038af6b2 is described below
commit 8038af6b22eb83eaf146ae23f499f28f1a78b6d7
Author: Radhika Kundam <[email protected]>
AuthorDate: Thu Oct 24 13:06:15 2024 -0700
RANGER-4933: Ranger API to Summary View of DataShares in GDS
Signed-off-by: Ramesh Mani <[email protected]>
---
.../org/apache/ranger/plugin/model/RangerGds.java | 50 ++++++++++++++++++++++
.../apache/ranger/plugin/util/SearchFilter.java | 2 +
.../optimized/current/ranger_core_db_mysql.sql | 1 +
...y_schedule-labels-keywords-in-x_gds_dataset.sql | 37 ++++++++++++++++
.../optimized/current/ranger_core_db_oracle.sql | 1 +
...y_schedule-labels-keywords-in-x_gds_dataset.sql | 34 +++++++++++++++
.../optimized/current/ranger_core_db_postgres.sql | 1 +
...y_schedule-labels-keywords-in-x_gds_dataset.sql | 42 ++++++++++++++++++
.../current/ranger_core_db_sqlanywhere.sql | 2 +
...y_schedule-labels-keywords-in-x_gds_dataset.sql | 28 ++++++++++++
.../optimized/current/ranger_core_db_sqlserver.sql | 1 +
...y_schedule-labels-keywords-in-x_gds_dataset.sql | 34 +++++++++++++++
.../java/org/apache/ranger/biz/GdsDBStore.java | 3 ++
.../org/apache/ranger/common/RangerSearchUtil.java | 17 +++++---
.../org/apache/ranger/entity/XXGdsDataset.java | 44 ++++++++++++++++++-
.../main/java/org/apache/ranger/rest/GdsREST.java | 3 ++
.../ranger/service/RangerGdsDatasetService.java | 9 ++++
17 files changed, 302 insertions(+), 7 deletions(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
index d582e420f..68216fd45 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
@@ -93,6 +93,8 @@ public class RangerGds {
private RangerGdsObjectACL acl;
private RangerValiditySchedule validitySchedule;
private String termsOfUse;
+ private List<String> labels;
+ private List<String> keywords;
public RangerDataset() { }
@@ -112,6 +114,22 @@ public class RangerGds {
public void setTermsOfUse(String termsOfUse) { this.termsOfUse =
termsOfUse; }
+ public List<String> getLabels() {
+ return labels;
+ }
+
+ public void setLabels(List<String> labels) {
+ this.labels = labels;
+ }
+
+ public List<String> getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(List<String> keywords) {
+ this.keywords = keywords;
+ }
+
@Override
public StringBuilder toString(StringBuilder sb) {
sb.append("RangerDataset={");
@@ -122,6 +140,8 @@ public class RangerGds {
.append("acl={").append(acl).append("} ")
.append("validitySchedule={").append(validitySchedule).append("}
")
.append("termsOfUse={").append(termsOfUse).append("} ")
+ .append("labels={").append(validitySchedule).append("} ")
+ .append("keywords={").append(termsOfUse).append("} ")
.append("}");
return sb;
@@ -568,6 +588,9 @@ public class RangerGds {
private Long projectsCount;
private Long totalResourceCount;
private List<DataShareInDatasetSummary> dataShares;
+ private RangerValiditySchedule validitySchedule;
+ private List<String> labels;
+ private List<String> keywords;
public DatasetSummary() {
super();
@@ -631,6 +654,30 @@ public class RangerGds {
this.aclPrincipalsCount = aclPrincipalsCount;
}
+ public RangerValiditySchedule getValiditySchedule() {
+ return validitySchedule;
+ }
+
+ public void setValiditySchedule(RangerValiditySchedule
validitySchedule) {
+ this.validitySchedule = validitySchedule;
+ }
+
+ public List<String> getLabels() {
+ return labels;
+ }
+
+ public void setLabels(List<String> labels) {
+ this.labels = labels;
+ }
+
+ public List<String> getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(List<String> keywords) {
+ this.keywords = keywords;
+ }
+
@Override
public String toString() {
return toString(new StringBuilder()).toString();
@@ -649,6 +696,9 @@ public class RangerGds {
.append("aclPrincipalsCount={").append(aclPrincipalsCount).append("} ")
.append("totalResourceCount={").append(totalResourceCount).append("} ")
.append("dataShares={").append(dataShares).append("} ")
+
.append("validitySchedule={").append(totalResourceCount).append("} ")
+ .append("labels={").append(totalResourceCount).append("} ")
+ .append("keywords={").append(totalResourceCount).append("} ")
.append("}");
return sb;
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
index 0da5f2aaf..6c5550bfa 100755
---
a/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
@@ -112,6 +112,8 @@ public class SearchFilter {
public static final String DATASET_NAME = "datasetName";
// search, sort
public static final String DATASET_NAME_PARTIAL =
"datasetNamePartial"; // search, sort
public static final String DATASET_ID = "datasetId";
// search, sort
+ public static final String DATASET_LABEL = "datasetLabel";
+ public static final String DATASET_KEYWORD = "datasetKeyword";
public static final String PROJECT_NAME = "projectName";
// search, sort
public static final String PROJECT_NAME_PARTIAL =
"projectNamePartial"; // search, sort
public static final String PROJECT_ID = "projectId";
// search, sort
diff --git a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
index 6c48c49f4..acec4f56a 100644
--- a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
+++ b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql
@@ -2042,6 +2042,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('072',UTC_TIMESTAMP(),'Ranger 3.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('073',UTC_TIMESTAMP(),'Ranger 3.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('074',UTC_TIMESTAMP(),'Ranger 3.0.0',UTC_TIMESTAMP(),'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('075',UTC_TIMESTAMP(),'Ranger 3.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('J10001',UTC_TIMESTAMP(),'Ranger 1.0.0',UTC_TIMESTAMP(),'localhost','Y');
diff --git
a/security-admin/db/mysql/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
b/security-admin/db/mysql/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
new file mode 100644
index 000000000..a1c631fa4
--- /dev/null
+++
b/security-admin/db/mysql/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
@@ -0,0 +1,37 @@
+-- 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
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+drop procedure if exists
add_validity_schedule_labels_keywords_in_x_gds_dataset();
+
+delimiter ;;
+create procedure add_validity_schedule_labels_keywords_in_x_gds_dataset() begin
+
+if not exists (select * from information_schema.columns where
table_schema=database() and table_name = 'x_gds_dataset' and
column_name='validity_schedule') then
+ ALTER TABLE x_gds_dataset ADD validity_schedule TEXT NULL DEFAULT NULL;
+end if;
+
+if not exists (select * from information_schema.columns where
table_schema=database() and table_name = 'x_gds_dataset' and
column_name='labels') then
+ ALTER TABLE x_gds_dataset ADD labels TEXT NULL DEFAULT NULL;
+end if;
+
+if not exists (select * from information_schema.columns where
table_schema=database() and table_name = 'x_gds_dataset' and
column_name='keywords') then
+ ALTER TABLE x_gds_dataset ADD keywords TEXT NULL DEFAULT NULL;
+end if;
+
+end;;
+
+delimiter ;
+
+call add_validity_schedule_labels_keywords_in_x_gds_dataset();
\ No newline at end of file
diff --git
a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
index ed6d20b3d..593cffe56 100644
--- a/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
+++ b/security-admin/db/oracle/optimized/current/ranger_core_db_oracle.sql
@@ -1989,6 +1989,7 @@ INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,act
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '066',sys_extract_utc(systimestamp),'Ranger
3.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '073',sys_extract_utc(systimestamp),'Ranger
3.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '074',sys_extract_utc(systimestamp),'Ranger
3.0.0',sys_extract_utc(systimestamp),'localhost','Y');
+INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, '075',sys_extract_utc(systimestamp),'Ranger
3.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_db_version_h
(id,version,inst_at,inst_by,updated_at,updated_by,active) VALUES
(X_DB_VERSION_H_SEQ.nextval, 'DB_PATCHES',sys_extract_utc(systimestamp),'Ranger
1.0.0',sys_extract_utc(systimestamp),'localhost','Y');
INSERT INTO x_user_module_perm
(id,user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(X_USER_MODULE_PERM_SEQ.nextval,getXportalUIdByLoginId('admin'),getModulesIdByName('Reports'),sys_extract_utc(systimestamp),sys_extract_utc(systimestamp),getXportalUIdByLoginId('admin'),getXportalUIdByLoginId('admin'),1);
diff --git
a/security-admin/db/oracle/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
b/security-admin/db/oracle/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
new file mode 100644
index 000000000..1dc874b03
--- /dev/null
+++
b/security-admin/db/oracle/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
@@ -0,0 +1,34 @@
+-- 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
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+DECLARE
+ v_count number:=0;
+BEGIN
+ select count(*) into v_count from user_tab_cols where
table_name='X_GDS_DATASET' and column_name='VALIDITY_SCHEDULE';
+ if (v_count = 0) then
+ execute immediate 'ALTER TABLE x_gds_dataset ADD
validity_schedule CLOB DEFAULT NULL NULL';
+ end if;
+
+ select count(*) into v_count from user_tab_cols where
table_name='X_GDS_DATASET' and column_name='LABELS';
+ if (v_count = 0) then
+ execute immediate 'ALTER TABLE x_gds_dataset ADD labels CLOB
DEFAULT NULL NULL';
+ end if;
+
+ select count(*) into v_count from user_tab_cols where
table_name='X_GDS_DATASET' and column_name='KEYWORDS';
+ if (v_count = 0) then
+ execute immediate 'ALTER TABLE x_gds_dataset ADD keywords CLOB
DEFAULT NULL NULL';
+ end if;
+ commit;
+END;/
\ No newline at end of file
diff --git
a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
index 34a092e89..523625b69 100644
--- a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
+++ b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql
@@ -2148,6 +2148,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('072',current_timestamp,'Ranger 3.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('073',current_timestamp,'Ranger 3.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('074',current_timestamp,'Ranger 3.0.0',current_timestamp,'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('075',current_timestamp,'Ranger 3.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',current_timestamp,'Ranger
1.0.0',current_timestamp,'localhost','Y');
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
diff --git
a/security-admin/db/postgres/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
b/security-admin/db/postgres/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
new file mode 100644
index 000000000..c9abbc35a
--- /dev/null
+++
b/security-admin/db/postgres/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
@@ -0,0 +1,42 @@
+-- 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
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+select 'delimiter start';
+CREATE OR REPLACE FUNCTION
add_validity_schedule_labels_keywords_in_x_gds_dataset()
+RETURNS void AS $$
+DECLARE
+ v_column_exists integer := 0;
+BEGIN
+ select count(*) into v_column_exists from pg_attribute where attrelid
in(select oid from pg_class where relname='x_gds_dataset') and
attname='validity_schedule';
+ IF v_column_exists = 0 THEN
+ ALTER TABLE x_gds_dataset ADD COLUMN validity_schedule TEXT DEFAULT NULL
NULL;
+ END IF;
+
+ select count(*) into v_column_exists from pg_attribute where attrelid
in(select oid from pg_class where relname='x_gds_dataset') and attname='labels';
+ IF v_column_exists = 0 THEN
+ ALTER TABLE x_gds_dataset ADD COLUMN labels TEXT DEFAULT NULL NULL;
+ END IF;
+
+ select count(*) into v_column_exists from pg_attribute where attrelid
in(select oid from pg_class where relname='x_gds_dataset') and
attname='keywords';
+ IF v_column_exists = 0 THEN
+ ALTER TABLE x_gds_dataset ADD COLUMN keywords TEXT DEFAULT NULL NULL;
+ END IF;
+END;
+$$ LANGUAGE plpgsql;
+select 'delimiter end';
+
+select add_validity_schedule_labels_keywords_in_x_gds_dataset();
+select 'delimiter end';
+commit;
\ No newline at end of file
diff --git
a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
index 72a9afb83..fa9832314 100644
---
a/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
+++
b/security-admin/db/sqlanywhere/optimized/current/ranger_core_db_sqlanywhere.sql
@@ -2288,6 +2288,8 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('074',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
GO
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('075',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
+GO
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger
1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
GO
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
diff --git
a/security-admin/db/sqlanywhere/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
b/security-admin/db/sqlanywhere/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
new file mode 100644
index 000000000..939e8ea3a
--- /dev/null
+++
b/security-admin/db/sqlanywhere/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
@@ -0,0 +1,28 @@
+-- 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
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_gds_dataset' and
cname = 'validity_schedule') THEN
+ ALTER TABLE dbo.x_gds_dataset ADD validity_schedule TEXT
DEFAULT NULL NULL;
+END IF;
+GO
+IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_gds_dataset' and
cname = 'labels') THEN
+ ALTER TABLE dbo.x_gds_dataset ADD labels TEXT DEFAULT NULL NULL;
+END IF;
+GO
+IF NOT EXISTS(select * from SYS.SYSCOLUMNS where tname = 'x_gds_dataset' and
cname = 'keywords') THEN
+ ALTER TABLE dbo.x_gds_dataset ADD keywords TEXT DEFAULT NULL
NULL;
+END IF;
+GO
+exit
\ No newline at end of file
diff --git
a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
index 70a2e00cd..a0e47004b 100644
--- a/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
+++ b/security-admin/db/sqlserver/optimized/current/ranger_core_db_sqlserver.sql
@@ -4145,6 +4145,7 @@ INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('066',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('073',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('074',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
+INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('075',CURRENT_TIMESTAMP,'Ranger 3.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_db_version_h
(version,inst_at,inst_by,updated_at,updated_by,active) VALUES
('DB_PATCHES',CURRENT_TIMESTAMP,'Ranger
1.0.0',CURRENT_TIMESTAMP,'localhost','Y');
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES
(dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Reports'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
INSERT INTO x_user_module_perm
(user_id,module_id,create_time,update_time,added_by_id,upd_by_id,is_allowed)
VALUES (dbo.getXportalUIdByLoginId('admin'),dbo.getModulesIdByName('Resource
Based
Policies'),CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,dbo.getXportalUIdByLoginId('admin'),dbo.getXportalUIdByLoginId('admin'),1);
diff --git
a/security-admin/db/sqlserver/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
b/security-admin/db/sqlserver/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
new file mode 100644
index 000000000..6da85914b
--- /dev/null
+++
b/security-admin/db/sqlserver/patches/075-add-validity_schedule-labels-keywords-in-x_gds_dataset.sql
@@ -0,0 +1,34 @@
+-- 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
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+GO
+IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name =
'x_gds_dataset' and column_name = 'validity_schedule')
+BEGIN
+ ALTER TABLE [dbo].[x_gds_dataset] ADD [validity_schedule]
[nvarchar](max) DEFAULT NULL NULL;
+END
+GO
+GO
+IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name =
'x_gds_dataset' and column_name = 'labels')
+BEGIN
+ ALTER TABLE [dbo].[x_gds_dataset] ADD [labels] [nvarchar](max) DEFAULT
NULL NULL;
+END
+GO
+GO
+IF NOT EXISTS(select * from INFORMATION_SCHEMA.columns where table_name =
'x_gds_dataset' and column_name = 'keywords')
+BEGIN
+ ALTER TABLE [dbo].[x_gds_dataset] ADD [keywords] [nvarchar](max)
DEFAULT NULL NULL;
+END
+GO
+exit
\ No newline at end of file
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
index 9bb946996..768192e84 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
@@ -1504,6 +1504,9 @@ public class GdsDBStore extends AbstractGdsStore {
datasetSummary.setGuid(dataset.getGuid());
datasetSummary.setVersion(dataset.getVersion());
datasetSummary.setPermissionForCaller(permissionForCaller);
+ datasetSummary.setValiditySchedule(dataset.getValiditySchedule());
+ datasetSummary.setLabels(dataset.getLabels());
+ datasetSummary.setKeywords(dataset.getKeywords());
ret.add(datasetSummary);
diff --git
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
index 42eb7dfaa..a6c6746b3 100755
---
a/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
+++
b/security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
@@ -124,6 +124,8 @@ public class RangerSearchUtil extends SearchUtil {
ret.setParam(SearchFilter.DATASET_NAME,
request.getParameter(SearchFilter.DATASET_NAME));
ret.setParam(SearchFilter.DATASET_NAME_PARTIAL,
request.getParameter(SearchFilter.DATASET_NAME_PARTIAL));
ret.setParam(SearchFilter.DATASET_ID,
request.getParameter(SearchFilter.DATASET_ID));
+ ret.setParam(SearchFilter.DATASET_LABEL,
request.getParameter(SearchFilter.DATASET_LABEL));
+ ret.setParam(SearchFilter.DATASET_KEYWORD,
request.getParameter(SearchFilter.DATASET_KEYWORD));
ret.setParam(SearchFilter.PROJECT_NAME,
request.getParameter(SearchFilter.PROJECT_NAME));
ret.setParam(SearchFilter.PROJECT_NAME_PARTIAL,
request.getParameter(SearchFilter.PROJECT_NAME_PARTIAL));
ret.setParam(SearchFilter.PROJECT_ID,
request.getParameter(SearchFilter.PROJECT_ID));
@@ -365,7 +367,7 @@ public class RangerSearchUtil extends SearchUtil {
whereClause.append(" and
").append(searchField.getCustomCondition());
}
}
- } else if (isMultiValue && searchField.getDataType() ==
SearchField.DATA_TYPE.STR_LIST) {
+ } else if (searchField.getDataType() ==
SearchField.DATA_TYPE.STR_LIST || (isMultiValue && searchField.getDataType() ==
SearchField.DATA_TYPE.STRING)) {
List<String> strValueList = new ArrayList<>();
for (Object value : multiValue) {
@@ -386,8 +388,9 @@ public class RangerSearchUtil extends SearchUtil {
whereClause.append(" or ");
}
-
whereClause.append(searchField.getFieldName()).append("= :")
-
.append(searchField.getClientFieldName()).append("_").append(count);
+
whereClause.append("LOWER(").append(searchField.getFieldName()).append(")")
+
.append(getSqlOperator(searchField.getSearchType()))
+
.append(":").append(searchField.getClientFieldName()).append("_").append(count);
}
if (strValueList.size()
> 1) {
@@ -513,7 +516,7 @@ public class RangerSearchUtil extends SearchUtil {
query.setParameter(searchField.getClientFieldName(), intValueList);
}
}
- } else if (isMultiValue && searchField.getDataType() ==
SearchField.DATA_TYPE.STR_LIST) {
+ } else if (searchField.getDataType() ==
SearchField.DATA_TYPE.STR_LIST || (isMultiValue && searchField.getDataType() ==
SearchField.DATA_TYPE.STRING)) {
List<String> strValueList = new ArrayList<>();
for (Object value : multiValue) {
@@ -523,7 +526,11 @@ public class RangerSearchUtil extends SearchUtil {
if (!strValueList.isEmpty()) {
if (strValueList.size() <=
dbMinInListLength) {
for (int idx = 0; idx <
strValueList.size(); idx++) {
-
query.setParameter(searchField.getClientFieldName() + "_" + idx,
strValueList.get(idx));
+ if
(searchField.getSearchType() == SearchField.SEARCH_TYPE.FULL) {
+
query.setParameter(searchField.getClientFieldName() + "_" + idx,
strValueList.get(idx).trim().toLowerCase());
+ } else {
+
query.setParameter(searchField.getClientFieldName() + "_" + idx, "%" +
strValueList.get(idx).trim().toLowerCase() + "%");
+ }
}
} else {
query.setParameter(searchField.getClientFieldName(), strValueList);
diff --git
a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataset.java
b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataset.java
index 6fdc5be95..7a1404d22 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataset.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataset.java
@@ -67,6 +67,15 @@ public class XXGdsDataset extends XXDBBase implements
Serializable {
@Column(name = "additional_info")
protected String additionalInfo;
+ @Column(name = "validity_schedule")
+ protected String validitySchedule;
+
+ @Column(name = "labels")
+ protected String labels;
+
+ @Column(name = "keywords")
+ protected String keywords;
+
@Override
public void setId(Long id) { this.id = id; }
@@ -110,12 +119,37 @@ public class XXGdsDataset extends XXDBBase implements
Serializable {
public void setAdditionalInfo(String additionalInfo) { this.additionalInfo
= additionalInfo; }
+ public String getValiditySchedule() {
+ return validitySchedule;
+ }
+
+ public void setValiditySchedule(String validitySchedule) {
+ this.validitySchedule = validitySchedule;
+ }
+
+ public String getLabels() {
+ return labels;
+ }
+
+ public void setLabels(String labels) {
+ this.labels = labels;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords;
+ }
+
@Override
public int getMyClassType() { return AppConstants.CLASS_TYPE_GDS_DATASET; }
@Override
public int hashCode() {
- return Objects.hash(id, guid, version, isEnabled, name, description,
acl, termsOfUse, options, additionalInfo);
+ return Objects.hash(id, guid, version, isEnabled, name, description,
acl, termsOfUse, options, additionalInfo,
+ validitySchedule, labels, keywords);
}
@Override
@@ -139,7 +173,10 @@ public class XXGdsDataset extends XXDBBase implements
Serializable {
Objects.equals(acl, other.acl) &&
Objects.equals(termsOfUse, other.termsOfUse) &&
Objects.equals(options, other.options) &&
- Objects.equals(additionalInfo, other.additionalInfo);
+ Objects.equals(additionalInfo, other.additionalInfo) &&
+ Objects.equals(validitySchedule, other.validitySchedule) &&
+ Objects.equals(labels, other.labels) &&
+ Objects.equals(keywords, other.keywords);
}
@Override
@@ -161,6 +198,9 @@ public class XXGdsDataset extends XXDBBase implements
Serializable {
.append("termsOfUse={").append(termsOfUse).append("} ")
.append("options={").append(options).append("} ")
.append("additionalInfo={").append(additionalInfo).append("} ")
+ .append("validitySchedule={").append(validitySchedule).append("} ")
+ .append("labels={").append(labels).append("} ")
+ .append("keywords={").append(keywords).append("} ")
.append(" }");
return sb;
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
index 525a5eca3..c66429834 100755
--- a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java
@@ -361,6 +361,9 @@ public class GdsREST {
filter = searchUtil.getSearchFilter(request,
datasetService.sortFields);
+ searchUtil.extractStringList(request, filter,
SearchFilter.DATASET_LABEL, "Dataset Label List", "datasetLabels", null, null);
+ searchUtil.extractStringList(request, filter,
SearchFilter.DATASET_KEYWORD, "Dataset Keyword List", "datasetKeywords", null,
null);
+
ret = gdsStore.searchDatasets(filter);
} catch(WebApplicationException excp) {
throw excp;
diff --git
a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetService.java
b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetService.java
index 659c07f16..0e3b733b1 100755
---
a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetService.java
+++
b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetService.java
@@ -30,6 +30,7 @@ import org.apache.ranger.common.view.VTrxLogAttr;
import org.apache.ranger.entity.*;
import org.apache.ranger.plugin.model.RangerGds;
import org.apache.ranger.plugin.model.RangerGds.RangerDataset;
+import org.apache.ranger.plugin.model.RangerValiditySchedule;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.view.RangerGdsVList.RangerDatasetList;
import org.apache.ranger.view.VXMessage;
@@ -69,6 +70,8 @@ public class RangerGdsDatasetService extends
RangerGdsBaseModelService<XXGdsData
searchFields.add(new SearchField(SearchFilter.PROJECT_NAME,
"proj.name", SearchField.DATA_TYPE.STRING,
SearchField.SEARCH_TYPE.FULL, "XXGdsDatasetInProject dip, XXGdsProject
proj", "obj.id = dip.datasetId and dip.projectId = proj.id"));
searchFields.add(new SearchField(SearchFilter.PROJECT_NAME_PARTIAL,
"proj.name", SearchField.DATA_TYPE.STRING,
SearchField.SEARCH_TYPE.PARTIAL, "XXGdsDatasetInProject dip, XXGdsProject
proj", "obj.id = dip.datasetId and dip.projectId = proj.id"));
searchFields.add(new SearchField(SearchFilter.CREATED_BY,
"obj.addedByUserId", SearchField.DATA_TYPE.INTEGER,
SearchField.SEARCH_TYPE.FULL));
+ searchFields.add(new SearchField(SearchFilter.DATASET_LABEL,
"obj.labels", SearchField.DATA_TYPE.STRING,
SearchField.SEARCH_TYPE.PARTIAL));
+ searchFields.add(new SearchField(SearchFilter.DATASET_KEYWORD,
"obj.keywords", SearchField.DATA_TYPE.STRING,
SearchField.SEARCH_TYPE.PARTIAL));
sortFields.add(new SortField(SearchFilter.CREATE_TIME,
"obj.createTime"));
sortFields.add(new SortField(SearchFilter.UPDATE_TIME,
"obj.updateTime"));
@@ -176,6 +179,9 @@ public class RangerGdsDatasetService extends
RangerGdsBaseModelService<XXGdsData
xObj.setTermsOfUse(vObj.getTermsOfUse());
xObj.setOptions(JsonUtils.mapToJson(vObj.getOptions()));
xObj.setAdditionalInfo(JsonUtils.mapToJson(vObj.getAdditionalInfo()));
+
xObj.setValiditySchedule(JsonUtils.objectToJson(vObj.getValiditySchedule()));
+ xObj.setLabels(JsonUtils.listToJson(vObj.getLabels()));
+ xObj.setKeywords(JsonUtils.listToJson(vObj.getKeywords()));
return xObj;
}
@@ -191,6 +197,9 @@ public class RangerGdsDatasetService extends
RangerGdsBaseModelService<XXGdsData
vObj.setTermsOfUse(xObj.getTermsOfUse());
vObj.setOptions(JsonUtils.jsonToMapStringString(xObj.getOptions()));
vObj.setAdditionalInfo(JsonUtils.jsonToMapStringString(xObj.getAdditionalInfo()));
+
vObj.setValiditySchedule(JsonUtils.jsonToObject(xObj.getValiditySchedule(),
RangerValiditySchedule.class));
+ vObj.setLabels(JsonUtils.jsonToListString(xObj.getLabels()));
+ vObj.setKeywords(JsonUtils.jsonToListString(xObj.getKeywords()));
return vObj;
}