This is an automated email from the ASF dual-hosted git repository. madhan pushed a commit to branch RANGER-3923 in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 5597dedd7c2a3144ac4f9981b69fb5b1341d1749 Author: Subhrat Chaudhary <such...@yahoo.com> AuthorDate: Mon Oct 2 12:11:11 2023 -0700 RANGER-4426: added approver in GDS request entities Signed-off-by: Madhan Neethiraj <mad...@apache.org> --- .../main/java/org/apache/ranger/plugin/model/RangerGds.java | 12 ++++++++++++ .../db/mysql/optimized/current/ranger_core_db_mysql.sql | 4 ++++ .../postgres/optimized/current/ranger_core_db_postgres.sql | 4 ++++ .../org/apache/ranger/entity/XXGdsDataShareInDataset.java | 12 ++++++++++-- .../java/org/apache/ranger/entity/XXGdsDatasetInProject.java | 12 ++++++++++-- .../ranger/service/RangerGdsDataShareInDatasetService.java | 9 +++++++++ .../ranger/service/RangerGdsDatasetInProjectService.java | 9 +++++++++ 7 files changed, 58 insertions(+), 4 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 a1c883356..fd27f54a9 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 @@ -329,6 +329,7 @@ public class RangerGds { private GdsShareStatus status; private RangerValiditySchedule validitySchedule; private Set<String> profiles; + private String approver; public RangerDataShareInDataset() { } @@ -353,6 +354,10 @@ public class RangerGds { public void setProfiles(Set<String> profiles) { this.profiles = profiles; } + public String getApprover() { return approver; } + + public void setApprover(String approver) { this.approver = approver; } + @Override public StringBuilder toString(StringBuilder sb) { sb.append("RangerDataShareInDataset={"); @@ -364,6 +369,7 @@ public class RangerGds { .append("status={").append(status).append("} ") .append("validitySchedule={").append(validitySchedule).append("} ") .append("profiles={").append(profiles).append("} ") + .append("approver={").append(approver).append("} ") .append("}"); return sb; @@ -383,6 +389,7 @@ public class RangerGds { private GdsShareStatus status; private RangerValiditySchedule validitySchedule; private Set<String> profiles; + private String approver; public RangerDatasetInProject() { } @@ -407,6 +414,10 @@ public class RangerGds { public void setProfiles(Set<String> profiles) { this.profiles = profiles; } + public String getApprover() { return approver; } + + public void setApprover(String approver) { this.approver = approver; } + @Override public StringBuilder toString(StringBuilder sb) { sb.append("RangerDatasetInProject={"); @@ -418,6 +429,7 @@ public class RangerGds { .append("status={").append(status).append("} ") .append("validitySchedule={").append(validitySchedule).append("} ") .append("profiles={").append(profiles).append("} ") + .append("approver={").append(approver).append("} ") .append("}"); return sb; 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 424f38d9e..e71facf8e 100755 --- a/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql +++ b/security-admin/db/mysql/optimized/current/ranger_core_db_mysql.sql @@ -1828,12 +1828,14 @@ CREATE TABLE `x_gds_data_share_in_dataset`( , `profiles` TEXT NULL DEFAULT NULL , `options` TEXT NULL DEFAULT NULL , `additional_info` TEXT NULL DEFAULT NULL + , `approver_id` BIGINT(20) NULL DEFAULT NULL , PRIMARY KEY(`id`) , UNIQUE KEY `x_gds_dshid_UK_data_share_id_dataset_id` (`data_share_id`, `dataset_id`) , CONSTRAINT `x_gds_dshid_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`) , CONSTRAINT `x_gds_dshid_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`) , CONSTRAINT `x_gds_dshid_FK_data_share_id` FOREIGN KEY(`data_share_id`) REFERENCES `x_gds_data_share`(`id`) , CONSTRAINT `x_gds_dshid_FK_dataset_id` FOREIGN KEY(`dataset_id`) REFERENCES `x_gds_dataset`(`id`) + , CONSTRAINT `x_gds_dshid_FK_approver_id` FOREIGN KEY(`approver_id`) REFERENCES `x_portal_user`(`id`) ); CREATE INDEX `x_gds_dshid_guid` ON `x_gds_data_share_in_dataset`(`guid`); CREATE INDEX `x_gds_dshid_data_share_id` ON `x_gds_data_share_in_dataset`(`data_share_id`); @@ -1857,12 +1859,14 @@ CREATE TABLE `x_gds_dataset_in_project`( , `profiles` TEXT NULL DEFAULT NULL , `options` TEXT NULL DEFAULT NULL , `additional_info` TEXT NULL DEFAULT NULL + , `approver_id` BIGINT(20) NULL DEFAULT NULL , PRIMARY KEY(`id`) , UNIQUE KEY `x_gds_dip_UK_data_share_id_dataset_id`(`dataset_id`, `project_id`) , CONSTRAINT `x_gds_dip_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`) , CONSTRAINT `x_gds_dip_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`) , CONSTRAINT `x_gds_dip_FK_dataset_id` FOREIGN KEY(`dataset_id`) REFERENCES `x_gds_dataset`(`id`) , CONSTRAINT `x_gds_dip_FK_project_id` FOREIGN KEY(`project_id`) REFERENCES `x_gds_project`(`id`) + , CONSTRAINT `x_gds_dip_FK_approver_id` FOREIGN KEY(`approver_id`) REFERENCES `x_portal_user`(`id`) ); CREATE INDEX `x_gds_dip_guid` ON `x_gds_dataset_in_project`(`guid`); CREATE INDEX `x_gds_dip_dataset_id` ON `x_gds_dataset_in_project`(`dataset_id`); 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 5ffa23f33..8536f651e 100755 --- a/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql +++ b/security-admin/db/postgres/optimized/current/ranger_core_db_postgres.sql @@ -1822,12 +1822,14 @@ CREATE TABLE x_gds_data_share_in_dataset( , profiles TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL + , approver_id BIGINT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dshid_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dshid_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dshid_FK_data_share_id FOREIGN KEY(data_share_id) REFERENCES x_gds_data_share(id) , CONSTRAINT x_gds_dshid_FK_dataset_id FOREIGN KEY(dataset_id) REFERENCES x_gds_dataset(id) , CONSTRAINT x_gds_dshid_UK_data_share_id_dataset_id UNIQUE(data_share_id, dataset_id) + , CONSTRAINT x_gds_dshid_FK_approver_id FOREIGN KEY(approver_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_dshid_guid ON x_gds_data_share_in_dataset(guid); CREATE INDEX x_gds_dshid_data_share_id ON x_gds_data_share_in_dataset(data_share_id); @@ -1853,12 +1855,14 @@ CREATE TABLE x_gds_dataset_in_project( , profiles TEXT NULL DEFAULT NULL , options TEXT NULL DEFAULT NULL , additional_info TEXT NULL DEFAULT NULL + , approver_id BIGINT NULL DEFAULT NULL , PRIMARY KEY(id) , CONSTRAINT x_gds_dip_FK_added_by_id FOREIGN KEY(added_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dip_FK_upd_by_id FOREIGN KEY(upd_by_id) REFERENCES x_portal_user(id) , CONSTRAINT x_gds_dip_FK_dataset_id FOREIGN KEY(dataset_id) REFERENCES x_gds_dataset(id) , CONSTRAINT x_gds_dip_FK_project_id FOREIGN KEY(project_id) REFERENCES x_gds_project(id) , CONSTRAINT x_gds_dip_UK_data_share_id_dataset_id UNIQUE(dataset_id, project_id) + , CONSTRAINT x_gds_dip_FK_approver_id FOREIGN KEY(approver_id) REFERENCES x_portal_user(id) ); CREATE INDEX x_gds_dip_guid ON x_gds_dataset_in_project(guid); CREATE INDEX x_gds_dip_dataset_id ON x_gds_dataset_in_project(dataset_id); diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataShareInDataset.java b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataShareInDataset.java index 8c59e0898..5c06e152c 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataShareInDataset.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDataShareInDataset.java @@ -73,6 +73,8 @@ public class XXGdsDataShareInDataset extends XXDBBase implements Serializable { @Column(name = "additional_info") protected String additionalInfo; + @Column(name = "approver_id") + protected Long approverId; @Override public void setId(Long id) { this.id = id; } @@ -124,12 +126,16 @@ public class XXGdsDataShareInDataset extends XXDBBase implements Serializable { public void setAdditionalInfo(String additionalInfo) { this.additionalInfo = additionalInfo; } + public Long getApproverId() { return approverId; } + + public void setApproverId(Long approverId) { this.approverId = approverId; } + @Override public int getMyClassType() { return AppConstants.CLASS_TYPE_GDS_DATA_SHARE_IN_DATASET; } @Override public int hashCode() { - return Objects.hash(id, guid, dataShareId, datasetId, status, validityPeriod, profiles, options, additionalInfo); + return Objects.hash(id, guid, dataShareId, datasetId, status, validityPeriod, profiles, options, additionalInfo, approverId); } @Override @@ -154,7 +160,8 @@ public class XXGdsDataShareInDataset extends XXDBBase implements Serializable { Objects.equals(validityPeriod, other.validityPeriod) && Objects.equals(profiles, other.profiles) && Objects.equals(options, other.options) && - Objects.equals(additionalInfo, other.additionalInfo); + Objects.equals(additionalInfo, other.additionalInfo) && + Objects.equals(approverId, other.approverId); } @Override @@ -176,6 +183,7 @@ public class XXGdsDataShareInDataset extends XXDBBase implements Serializable { .append("profiles={").append(profiles).append("} ") .append("options={").append(options).append("} ") .append("additionalInfo={").append(additionalInfo).append("} ") + .append("approverId={").append(approverId).append("} ") .append(" }"); return sb; diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDatasetInProject.java b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDatasetInProject.java index 6babde527..49bb4ab6b 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDatasetInProject.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXGdsDatasetInProject.java @@ -73,6 +73,8 @@ public class XXGdsDatasetInProject extends XXDBBase implements Serializable { @Column(name = "additional_info") protected String additionalInfo; + @Column(name = "approver_id") + protected Long approverId; @Override public void setId(Long id) { this.id = id; } @@ -124,12 +126,16 @@ public class XXGdsDatasetInProject extends XXDBBase implements Serializable { public void setAdditionalInfo(String additionalInfo) { this.additionalInfo = additionalInfo; } + public Long getApproverId() { return approverId; } + + public void setApproverId(Long approverId) { this.approverId = approverId; } + @Override public int getMyClassType() { return AppConstants.CLASS_TYPE_GDS_DATASET_IN_PROJECT; } @Override public int hashCode() { - return Objects.hash(id, guid, datasetId, projectId, status, validityPeriod, profiles, options, additionalInfo); + return Objects.hash(id, guid, datasetId, projectId, status, validityPeriod, profiles, options, additionalInfo, approverId); } @Override @@ -155,7 +161,8 @@ public class XXGdsDatasetInProject extends XXDBBase implements Serializable { Objects.equals(validityPeriod, other.validityPeriod) && Objects.equals(profiles, other.profiles) && Objects.equals(options, other.options) && - Objects.equals(additionalInfo, other.additionalInfo); + Objects.equals(additionalInfo, other.additionalInfo) && + Objects.equals(approverId, other.approverId); } @Override @@ -178,6 +185,7 @@ public class XXGdsDatasetInProject extends XXDBBase implements Serializable { .append("profiles={").append(profiles).append("} ") .append("options={").append(options).append("} ") .append("additionalInfo={").append(additionalInfo).append("} ") + .append("approverId={").append(approverId).append("} ") .append(" }"); return sb; diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDataShareInDatasetService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDataShareInDatasetService.java index d32282c27..4a6963fa4 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDataShareInDatasetService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDataShareInDatasetService.java @@ -25,9 +25,11 @@ import org.apache.ranger.common.GUIDUtil; import org.apache.ranger.common.MessageEnums; import org.apache.ranger.common.SearchField; import org.apache.ranger.common.SortField; +import org.apache.ranger.db.XXPortalUserDao; import org.apache.ranger.entity.XXGdsDataShare; import org.apache.ranger.entity.XXGdsDataShareInDataset; import org.apache.ranger.entity.XXGdsDataset; +import org.apache.ranger.entity.XXPortalUser; import org.apache.ranger.plugin.model.RangerGds.RangerDataShareInDataset; import org.apache.ranger.plugin.model.RangerValiditySchedule; import org.apache.ranger.plugin.util.SearchFilter; @@ -51,6 +53,9 @@ public class RangerGdsDataShareInDatasetService extends RangerGdsBaseModelServic @Autowired GUIDUtil guidUtil; + @Autowired + XXPortalUserDao xxPortalUserDao; + public RangerGdsDataShareInDatasetService() { super(); @@ -222,6 +227,9 @@ public class RangerGdsDataShareInDatasetService extends RangerGdsBaseModelServic xObj.setOptions(JsonUtils.mapToJson(vObj.getOptions())); xObj.setAdditionalInfo(JsonUtils.mapToJson(vObj.getAdditionalInfo())); + final XXPortalUser user = xxPortalUserDao.findByLoginId(vObj.getApprover()); + xObj.setApproverId(user == null? null : user.getId()); + return xObj; } @@ -238,6 +246,7 @@ public class RangerGdsDataShareInDatasetService extends RangerGdsBaseModelServic vObj.setProfiles(JsonUtils.jsonToSetString(xObj.getProfiles())); vObj.setOptions(JsonUtils.jsonToMapStringString(xObj.getOptions())); vObj.setAdditionalInfo(JsonUtils.jsonToMapStringString(xObj.getAdditionalInfo())); + vObj.setApprover(getUserName(xObj.getApproverId())); return vObj; } diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetInProjectService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetInProjectService.java index 0d839346b..5954183b7 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetInProjectService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerGdsDatasetInProjectService.java @@ -25,9 +25,11 @@ import org.apache.ranger.common.GUIDUtil; import org.apache.ranger.common.MessageEnums; import org.apache.ranger.common.SearchField; import org.apache.ranger.common.SortField; +import org.apache.ranger.db.XXPortalUserDao; import org.apache.ranger.entity.XXGdsProject; import org.apache.ranger.entity.XXGdsDatasetInProject; import org.apache.ranger.entity.XXGdsDataset; +import org.apache.ranger.entity.XXPortalUser; import org.apache.ranger.plugin.model.RangerGds.RangerDatasetInProject; import org.apache.ranger.plugin.model.RangerValiditySchedule; import org.apache.ranger.plugin.util.SearchFilter; @@ -51,6 +53,9 @@ public class RangerGdsDatasetInProjectService extends RangerGdsBaseModelService< @Autowired GUIDUtil guidUtil; + @Autowired + XXPortalUserDao xxPortalUserDao; + public RangerGdsDatasetInProjectService() { super(); @@ -222,6 +227,9 @@ public class RangerGdsDatasetInProjectService extends RangerGdsBaseModelService< xObj.setOptions(JsonUtils.mapToJson(vObj.getOptions())); xObj.setAdditionalInfo(JsonUtils.mapToJson(vObj.getAdditionalInfo())); + final XXPortalUser user = xxPortalUserDao.findByLoginId(vObj.getApprover()); + xObj.setApproverId(user == null? null : user.getId()); + return xObj; } @@ -238,6 +246,7 @@ public class RangerGdsDatasetInProjectService extends RangerGdsBaseModelService< vObj.setProfiles(JsonUtils.jsonToSetString(xObj.getProfiles())); vObj.setOptions(JsonUtils.jsonToMapStringString(xObj.getOptions())); vObj.setAdditionalInfo(JsonUtils.jsonToMapStringString(xObj.getAdditionalInfo())); + vObj.setApprover(getUserName(xObj.getApproverId())); return vObj; }