RANGER-1352 : Improving message for importing policies
Signed-off-by: Velmurugan Periasamy <vel@apache.org>
diff --git a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
index b0bc2b9..5614c16 100755
--- a/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
+++ b/kms/src/main/java/org/apache/hadoop/crypto/key/RangerMasterKey.java
@@ -205,7 +205,7 @@
}
private byte[] encryptKey(byte[] data, PBEKeySpec keyspec) throws Throwable {
SecretKey key = getPasswordKey(keyspec);
- if(keyspec != null && keyspec.getSalt() != null){
+ if(keyspec.getSalt() != null) {
PBEParameterSpec paramSpec = new PBEParameterSpec(keyspec.getSalt(), keyspec.getIterationCount());
Cipher c = Cipher.getInstance(key.getAlgorithm());
c.init(Cipher.ENCRYPT_MODE, key,paramSpec);
@@ -219,7 +219,7 @@
}
private byte[] decryptKey(byte[] encrypted, PBEKeySpec keyspec) throws Throwable {
SecretKey key = getPasswordKey(keyspec);
- if(keyspec != null && keyspec.getSalt() != null){
+ if(keyspec.getSalt() != null) {
PBEParameterSpec paramSpec = new PBEParameterSpec(keyspec.getSalt(), keyspec.getIterationCount());
Cipher c = Cipher.getInstance(key.getAlgorithm());
c.init(Cipher.DECRYPT_MODE, key, paramSpec);
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 89cc32f..daf3c8e 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -1591,8 +1591,8 @@
if (CollectionUtils.isNotEmpty(policyLists)){
svcStore.getPoliciesInExcel(policyLists, response);
}else{
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
LOG.error("No policies found to download!");
- throw restErrorUtil.createRESTException(HttpServletResponse.SC_NO_CONTENT, "No policies found to download!", true);
}
RangerExportPolicyList rangerExportPolicyList = new RangerExportPolicyList();
@@ -1638,8 +1638,8 @@
if (CollectionUtils.isNotEmpty(policyLists)){
svcStore.getPoliciesInCSV(policyLists, response);
}else{
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
LOG.error("No policies found to download!");
- throw restErrorUtil.createRESTException(HttpServletResponse.SC_NO_CONTENT, "No policies found to download!", true);
}
RangerExportPolicyList rangerExportPolicyList = new RangerExportPolicyList();
@@ -1689,8 +1689,9 @@
if (CollectionUtils.isNotEmpty(policyLists)) {
svcStore.getPoliciesInJson(policyLists, response);
} else {
+ checkPoliciesExists = true;
+ response.setStatus(HttpServletResponse.SC_NO_CONTENT);
LOG.error("There is no Policy to Export!!");
- throw restErrorUtil.createRESTException(HttpServletResponse.SC_NO_CONTENT, "There is no Policy to Export!!", true);
}
if(!checkPoliciesExists){
RangerExportPolicyList rangerExportPolicyList = new RangerExportPolicyList();
@@ -1814,17 +1815,25 @@
Gson gson = new Gson();
String policiesString = IOUtils.toString(uploadedInputStream);
+ policiesString = policiesString.trim();
if (StringUtils.isNotEmpty(policiesString)){
gson.fromJson(policiesString, RangerExportPolicyList.class);
rangerExportPolicyList = new ObjectMapper().readValue(policiesString, RangerExportPolicyList.class);
+ } else {
+ LOG.error("Provided json file is empty!!");
+ throw restErrorUtil.createRESTException("Provided json file is empty!!");
}
if (!CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getMetaDataInfo())){
metaDataInfo = new ObjectMapper().writeValueAsString(rangerExportPolicyList.getMetaDataInfo());
+ } else {
+ LOG.info("metadata info is not provided!!");
}
if (!CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getPolicies())){
policies = rangerExportPolicyList.getPolicies();
+ } else {
+ LOG.error("Provided json file does not contain any policy!!");
+ throw restErrorUtil.createRESTException("Provided json file does not contain any policy!!");
}
-
if (CollectionUtils.sizeIsEmpty(servicesMappingMap) && isOverride){
if(!CollectionUtils.sizeIsEmpty(policies)){
for (RangerPolicy policyInJson: policies){
@@ -1917,7 +1926,8 @@
}
}
} catch (IOException e) {
- e.printStackTrace();
+ LOG.error(e.getMessage());
+ throw restErrorUtil.createRESTException(e.getMessage());
}
}else{
LOG.error("Provided file format is not supported!!");
@@ -1932,7 +1942,7 @@
}
trxLogListError.add(xxTrxLogError);
bizUtil.createTrxLog(trxLogListError);
- throw ex;
+ throw restErrorUtil.createRESTException(ex.getMessage());
}catch (WebApplicationException excp) {
LOG.error("Error while importing policy from file!!", excp);
xxTrxLogError.setAction("IMPORT ERROR");
diff --git a/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js b/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
index a963370..338fffb 100644
--- a/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
+++ b/security-admin/src/main/webapp/scripts/views/UploadServicePolicy.js
@@ -45,7 +45,7 @@
},
initialize : function(options) {
- _.extend(this, _.pick(options, 'collection','serviceNames'));
+ _.extend(this, _.pick(options, 'collection','serviceNames','services'));
},
onSourceChange : function(e){
@@ -54,14 +54,24 @@
},
onDestinationSelect : function(e) {
this.model.set('destination', _.isEmpty(e.currentTarget.value) ? undefined : e.currentTarget.value);
-
+ var serviceTypes = _.find( this.services.models , function(m){
+ return m.get('name') == e.currentTarget.value
+ });
+ if(!_.isUndefined(serviceTypes)){
+ this.model.set('serviceType' , serviceTypes.get('type') );
+ }else{
+ this.model.set('serviceType' , " " );
+ }
},
onDeleteMapClick : function(){
this.collection.remove(this.model)
},
onRender : function() {
+ var that = this;
var options = _.map(this.serviceNames, function(m, key){ return { 'id' : m.name, 'text' : m.name}; });
+ this.ui.sourceInput.val(this.model.get('source'));
+ this.ui.destinationSelect.val(this.model.get('destination'));
this.ui.destinationSelect.select2({
closeOnSelect: true,
placeholder: 'Select service name',
@@ -89,6 +99,7 @@
return {
'collection' : this.collection,
'serviceNames' : this.serviceNames,
+ 'services': this.services,
};
},
initialize: function(options) {
@@ -237,7 +248,19 @@
});
var names = componentServices.map(function(m){ return { 'name' : m.get('name') } });
that.serviceNames = names;
- that.collection.trigger('reset')
+ if(!_.isUndefined(e.removed)){
+ _.each(that.collection.models , function(m){
+ if(m.get('serviceType') == e.removed.id){
+ var mapModels = that.collection.filter(function(m){
+ return m.get('serviceType') == e.removed.id;
+ })
+ if(!_.isUndefined(mapModels)){
+ that.collection.remove(mapModels);
+ }
+ }
+ });
+ }
+ that.collection.trigger('reset');
}).trigger('change');
},
importPolicy : function(e){
diff --git a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
index 7a1933e..197bc84 100644
--- a/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
+++ b/security-admin/src/main/webapp/scripts/views/reports/UserAccessLayout.js
@@ -472,8 +472,7 @@
onDownload: function(e){
var that = this, url = '';
if(!this.allowDownload){
- XAUtil.alertBoxWithTimeSet(localization.tt('msg.noPolicytoExport'))
-
+ return XAUtil.alertBoxWithTimeSet(localization.tt('msg.noPolicytoExport'))
}
if(!this.searchedFlag) {
url = this.previousSearchUrl;