You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/01/07 20:32:22 UTC
[23/27] incubator-ranger git commit: Ranger-203 : Add pluggable logic
to UI code
Ranger-203 : Add pluggable logic to UI code
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/9d85cb76
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/9d85cb76
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/9d85cb76
Branch: refs/heads/stack
Commit: 9d85cb76a05f1e1bf57039047dc710b1034c059e
Parents: 418b0fa
Author: Gautam Borad <gb...@gmail.com>
Authored: Mon Jan 5 23:45:09 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Wed Jan 7 11:18:37 2015 -0800
----------------------------------------------------------------------
security-admin/pom.xml | 5 -
.../java/org/apache/ranger/rest/AssetREST.java | 376 ++++++-----
.../org/apache/ranger/rest/ServiceREST.java | 5 +-
.../collection_bases/RangerPolicyListBase.js | 66 ++
.../RangerPolicyResourceListBase.js | 66 ++
.../RangerServiceDefListBase.js | 70 +++
.../collection_bases/RangerServiceListBase.js | 66 ++
.../scripts/collections/RangerPolicyList.js | 34 +
.../collections/RangerPolicyResourceList.js | 34 +
.../scripts/collections/RangerServiceDefList.js | 36 ++
.../scripts/collections/RangerServiceList.js | 36 ++
.../webapp/scripts/controllers/Controller.js | 137 +++-
.../scripts/model_bases/RangerPolicyBase.js | 90 +++
.../model_bases/RangerPolicyResourceBase.js | 90 +++
.../scripts/model_bases/RangerServiceBase.js | 90 +++
.../scripts/model_bases/RangerServiceDefBase.js | 105 ++++
.../main/webapp/scripts/models/RangerPolicy.js | 107 ++++
.../scripts/models/RangerPolicyResource.js | 71 +++
.../main/webapp/scripts/models/RangerService.js | 72 +++
.../webapp/scripts/models/RangerServiceDef.js | 95 +++
.../src/main/webapp/scripts/modules/XALinks.js | 28 +-
.../main/webapp/scripts/modules/XAOverrides.js | 2 +-
.../src/main/webapp/scripts/routers/Router.js | 16 +-
.../src/main/webapp/scripts/utils/XAEnums.js | 11 +-
.../src/main/webapp/scripts/utils/XAUtils.js | 71 +--
.../scripts/views/policies/GroupPermList.js | 429 +++++++++++++
.../views/policies/RangerPolicyCreate.js | 322 ++++++++++
.../scripts/views/policies/RangerPolicyForm.js | 617 +++++++++++++++++++
.../views/policies/RangerPolicyTableLayout.js | 388 ++++++++++++
.../scripts/views/policies/UserPermList.js | 430 +++++++++++++
.../views/policymanager/ServiceLayout.js | 106 ++++
.../scripts/views/service/ServiceCreate.js | 285 +++++++++
.../webapp/scripts/views/service/ServiceForm.js | 189 ++++++
.../scripts/views/service/ServiceTableLayout.js | 164 +++++
security-admin/src/main/webapp/styles/xa.css | 15 +
.../common/ServiceManagerLayout_tmpl.html | 67 ++
.../templates/common/UserPermissionItem.html | 2 +-
.../main/webapp/templates/helpers/XAHelpers.js | 30 +
.../templates/policies/GroupPermItem.html | 54 ++
.../templates/policies/GroupPermList.html | 42 ++
.../policies/RangerPolicyForm_tmpl.html | 59 ++
.../policies/RangerPolicyTableLayout_tmpl.html | 30 +
.../webapp/templates/policies/UserPermItem.html | 51 ++
.../webapp/templates/policies/UserPermList.html | 42 ++
.../templates/service/ServiceCreate_tmpl.html | 36 ++
.../templates/service/ServiceForm_tmpl.html | 46 ++
.../service/ServiceTableLayout_tmpl.html | 29 +
47 files changed, 4993 insertions(+), 219 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/pom.xml
----------------------------------------------------------------------
diff --git a/security-admin/pom.xml b/security-admin/pom.xml
index 264c53d..d602b47 100644
--- a/security-admin/pom.xml
+++ b/security-admin/pom.xml
@@ -413,11 +413,6 @@
<scope>runtime</scope>
</dependency>
<dependency>
- <groupId>cn.guoyukun.jdbc</groupId>
- <artifactId>oracle-ojdbc6</artifactId>
- <version>11.2.0.3.0</version>
- </dependency>
- <dependency>
<groupId>org.apache.ranger</groupId>
<artifactId>plugin-common</artifactId>
<version>0.4.0</version>
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
index 27c3119..f160382 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
@@ -22,7 +22,7 @@
import java.io.File;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
-import java.util.Collection;
+import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.DELETE;
@@ -42,10 +42,12 @@ import org.apache.ranger.biz.AssetMgr;
import org.apache.ranger.biz.RangerBizUtil;
import org.apache.ranger.common.PropertiesUtil;
import org.apache.ranger.common.RESTErrorUtil;
-import org.apache.ranger.common.RangerCommonEnums;
import org.apache.ranger.common.RangerSearchUtil;
import org.apache.ranger.common.SearchCriteria;
+import org.apache.ranger.common.ServiceUtil;
import org.apache.ranger.common.StringUtil;
+import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.common.annotation.RangerAnnotationClassName;
import org.apache.ranger.common.annotation.RangerAnnotationJSMgrName;
import org.apache.ranger.service.AbstractBaseResourceService;
@@ -120,26 +122,73 @@ public class AssetREST {
@Autowired
XAccessAuditService xAccessAuditService;
-
+
+ @Autowired
+ ServiceUtil serviceUtil;
+
+ @Autowired
+ ServiceREST serviceREST;
+
+
@GET
@Path("/assets/{id}")
@Produces({ "application/xml", "application/json" })
public VXAsset getXAsset(@PathParam("id") Long id) {
- return assetMgr.getXAsset(id);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.getXAsset(" + id + ")");
+ }
+
+ RangerService service = serviceREST.getService(id);
+
+ VXAsset ret = serviceUtil.toVXAsset(service);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.getXAsset(" + id + "): " + ret);
+ }
+
+ return ret;
}
@POST
@Path("/assets")
@Produces({ "application/xml", "application/json" })
public VXAsset createXAsset(VXAsset vXAsset) {
- return assetMgr.createXAsset(vXAsset);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.createXAsset(" + vXAsset + ")");
+ }
+
+ RangerService service = serviceUtil.toRangerService(vXAsset);
+
+ RangerService createdService = serviceREST.createService(service);
+
+ VXAsset ret = serviceUtil.toVXAsset(createdService);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.createXAsset(" + vXAsset + "): " + ret);
+ }
+
+ return ret;
}
@PUT
@Path("/assets/{id}")
@Produces({ "application/xml", "application/json" })
public VXAsset updateXAsset(VXAsset vXAsset) {
- return assetMgr.updateXAsset(vXAsset);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.updateXAsset(" + vXAsset + ")");
+ }
+
+ RangerService service = serviceUtil.toRangerService(vXAsset);
+
+ RangerService updatedService = serviceREST.updateService(service);
+
+ VXAsset ret = serviceUtil.toVXAsset(updatedService);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.updateXAsset(" + vXAsset + "): " + ret);
+ }
+
+ return ret;
}
@DELETE
@@ -148,79 +197,154 @@ public class AssetREST {
@RangerAnnotationClassName(class_name = VXAsset.class)
public void deleteXAsset(@PathParam("id") Long id,
@Context HttpServletRequest request) {
- boolean force = true;
- assetMgr.deleteXAsset(id, force);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.deleteXAsset(" + id + ")");
+ }
+
+ serviceREST.deleteService(id);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.deleteXAsset(" + id + ")");
+ }
}
@POST
@Path("/assets/testConfig")
@Produces({ "application/xml", "application/json" })
public VXResponse testConfig(VXAsset vXAsset) {
- return assetMgr.testConfig(vXAsset);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.testConfig(" + vXAsset + ")");
+ }
+
+ RangerService service = serviceUtil.toRangerService(vXAsset);
+
+ VXResponse ret = serviceREST.validateConfig(service);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.testConfig(" + vXAsset + "): " + ret);
+ }
+
+ return ret;
}
@GET
@Path("/assets")
@Produces({ "application/xml", "application/json" })
- @SuppressWarnings("rawtypes")
public VXAssetList searchXAssets(@Context HttpServletRequest request) {
- SearchCriteria searchCriteria = searchUtil.extractCommonCriterias(
- request, xAssetService.sortFields);
-
- searchUtil.extractIntList(request, searchCriteria, "status", "status",
- "status");
- // searchUtil.extractStringList(request, searchCriteria, "status",
- // "status", "status", null, StringUtil.VALIDATION_TEXT);
- Object status = searchCriteria.getParamValue("status");
- if (status == null || ((Collection) status).size() == 0) {
- ArrayList<Integer> valueList = new ArrayList<Integer>();
- valueList.add(RangerCommonEnums.STATUS_DISABLED);
- valueList.add(RangerCommonEnums.STATUS_ENABLED);
- searchCriteria.addParam("status", valueList);
- }
- return assetMgr.searchXAssets(searchCriteria);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.searchXAssets()");
+ }
+
+ VXAssetList ret = new VXAssetList();
+
+ List<RangerService> services = serviceREST.getServices(request);
+
+ if(services != null) {
+ List<VXAsset> assets = new ArrayList<VXAsset>(services.size());
+
+ for(RangerService service : services) {
+ assets.add(serviceUtil.toVXAsset(service));
+ }
+
+ ret.setVXAssets(assets);
+ }
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.searchXAssets(): count=" + (ret == null ? 0 : ret.getListSize()));
+ }
+
+ return ret;
}
@GET
@Path("/assets/count")
@Produces({ "application/xml", "application/json" })
public VXLong countXAssets(@Context HttpServletRequest request) {
- SearchCriteria searchCriteria = searchUtil.extractCommonCriterias(
- request, xAssetService.sortFields);
-
- searchUtil.extractIntList(request, searchCriteria, "status", "status",
- "status");
- Object status = searchCriteria.getParamValue("status");
- if (status == null || ((Collection) status).size() == 0) {
- ArrayList<Integer> valueList = new ArrayList<Integer>();
- valueList.add(RangerCommonEnums.STATUS_DISABLED);
- valueList.add(RangerCommonEnums.STATUS_ENABLED);
- searchCriteria.addParam("status", valueList);
- }
- return assetMgr.getXAssetSearchCount(searchCriteria);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.countXAssets()");
+ }
+
+ VXLong ret = new VXLong();
+
+ Long svcCount = serviceREST.countServices(request);
+
+ ret.setValue(svcCount == null ? 0 : svcCount.longValue());
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.countXAssets(): " + ret);
+ }
+
+ return ret;
}
@GET
@Path("/resources/{id}")
@Produces({ "application/xml", "application/json" })
public VXResource getXResource(@PathParam("id") Long id) {
- return assetMgr.getXResource(id);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.getXResource(" + id + ")");
+ }
+
+ RangerPolicy policy = null;
+ RangerService service = null;
+
+ policy = serviceREST.getPolicy(id);
+
+ if(policy != null) {
+ service = serviceREST.getServiceByName(policy.getService());
+ }
+
+ VXResource ret = serviceUtil.toVXResource(policy, service);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.getXResource(" + id + "): " + ret);
+ }
+
+ return ret;
}
@POST
@Path("/resources")
@Produces({ "application/xml", "application/json" })
public VXResource createXResource(VXResource vXResource) {
- vXResource=assetMgr.createXResource(vXResource);
- return vXResource;
-
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.createXResource(" + vXResource + ")");
+ }
+
+ RangerService service = serviceREST.getService(vXResource.getAssetId());
+ RangerPolicy policy = serviceUtil.toRangerPolicy(vXResource, service);
+
+ RangerPolicy createdPolicy = serviceREST.createPolicy(policy);
+
+ VXResource ret = serviceUtil.toVXResource(createdPolicy, service);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.createXResource(" + vXResource + "): " + ret);
+ }
+
+ return ret;
}
@PUT
@Path("/resources/{id}")
@Produces({ "application/xml", "application/json" })
public VXResource updateXResource(VXResource vXResource) {
- return assetMgr.updateXResource(vXResource);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.updateXResource(" + vXResource + ")");
+ }
+
+ RangerService service = serviceREST.getService(vXResource.getAssetId());
+ RangerPolicy policy = serviceUtil.toRangerPolicy(vXResource, service);
+
+ RangerPolicy updatedPolicy = serviceREST.updatePolicy(policy);
+
+ VXResource ret = serviceUtil.toVXResource(updatedPolicy, service);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.updateXResource(" + vXResource + "): " + ret);
+ }
+
+ return ret;
}
@DELETE
@@ -229,110 +353,70 @@ public class AssetREST {
@RangerAnnotationClassName(class_name = VXResource.class)
public void deleteXResource(@PathParam("id") Long id,
@Context HttpServletRequest request) {
- boolean force = false;
- assetMgr.deleteXResource(id, force);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.deleteXResource(" + id + ")");
+ }
+
+ serviceREST.deletePolicy(id);
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.deleteXResource(" + id + ")");
+ }
}
@GET
@Path("/resources")
@Produces({ "application/xml", "application/json" })
public VXResourceList searchXResources(@Context HttpServletRequest request) {
- SearchCriteria searchCriteria = searchUtil.extractCommonCriterias(
- request, xResourceService.sortFields);
- // searchUtil.extractStringList(request, searchCriteria, "name", "Name",
- // "name", null, StringUtil.VALIDATION_TEXT);
-
- searchUtil.extractString(request, searchCriteria, "name",
- "Resource Path", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "policyName",
- "Policy name", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "columns",
- "Column name", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "columnFamilies",
- "Column Family", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "tables",
- "Tables", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "udfs",
- "UDFs", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "databases",
- "Databases", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "groupName",
- "Group Name", StringUtil.VALIDATION_TEXT);
- searchUtil.extractInt(request, searchCriteria, "resourceType",
- "Resource Type");
- searchUtil.extractInt(request, searchCriteria, "assetType",
- "Asset Type");
- searchUtil.extractInt(request, searchCriteria, "isEncrypt",
- "Is Encrypt");
- searchUtil.extractInt(request, searchCriteria, "isRecursive",
- "Is Recursive");
- searchUtil.extractLong(request, searchCriteria, "assetId", "Asset Id");
- searchUtil.extractString(request, searchCriteria, "userName",
- "User Name", StringUtil.VALIDATION_TEXT);
-
- searchUtil.extractLongList(request, searchCriteria, "userId",
- "User Id", "userId");
- // searchUtil.extractLong(request, searchCriteria, "userId",
- // "User Id");
- // searchUtil.extractLong(request, searchCriteria, "groupId",
- // "Group Id");
- searchUtil.extractLongList(request, searchCriteria, "groupId",
- "Group Id", "groupId");
-
- searchUtil.extractString(request, searchCriteria, "topologies",
- "Topology Name", StringUtil.VALIDATION_TEXT);
- searchUtil.extractString(request, searchCriteria, "services",
- "Service Name", StringUtil.VALIDATION_TEXT);
-
- // searchUtil.extractIntList(request, searchCriteria, "status",
- // "status", "status");
-
- // SearchGroup outerGroup = new SearchGroup(SearchGroup.CONDITION.OR);
- // // Get the search fields for objectClassType and objectId
- // SearchField userId = null;
- // SearchField groupId = null;
- // SearchField resourceId = null;
- // List<SearchField> searchFields = xResourceService.searchFields;
- // for (SearchField searchField : searchFields) {
- // if (searchField.getClientFieldName().equals("userId") &&
- // request.getParameterValues("userId")!=null) {
- // userId = searchField;
- // } else if (searchField.getClientFieldName().equals("groupId") &&
- // request.getParameterValues("groupId")!=null) {
- // groupId = searchField;
- // }else if (searchField.getClientFieldName().equals("name") &&
- // request.getParameterValues("name")!=null) {
- // resourceId = searchField;
- // }
- // }
- // if (groupId != null || userId != null || resourceId != null) {
- // SearchGroup innerGroup = new SearchGroup(SearchGroup.CONDITION.AND);
- // SearchValue searchValue=null;
- // if(userId!=null){
- // searchValue = new SearchValue(userId,
- // searchCriteria.getParamValue("userId"));
- //
- // innerGroup.addValue(searchValue);
- // }
- // if(groupId!=null){
- // searchValue = new SearchValue(groupId,
- // searchCriteria.getParamValue("groupId"));
- // innerGroup.addValue(searchValue);
- // }
- // if(resourceId!=null){
- //
- // searchValue = new SearchValue(resourceId,
- // searchCriteria.getParamValue("name"));
- // innerGroup.addValue(searchValue);
- // }
- //
- // outerGroup.addSearchGroup(innerGroup);
- // searchUtil.addSearchGroup(searchCriteria, outerGroup);
- //
- // }
- searchCriteria.setDistinct(true);
-
- return assetMgr.searchXResources(searchCriteria);
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.searchXResources()");
+ }
+
+ VXResourceList ret = new VXResourceList();
+
+ String arg = request.getParameter("assetId");
+ Long assetId = (arg == null || arg.isEmpty()) ? null : Long.parseLong(arg);
+
+ List<RangerPolicy> policies = assetId != null ? serviceREST.getServicePolicies(assetId, request) : serviceREST.getPolicies(request);
+
+ if(policies != null) {
+ List<VXResource> resources = new ArrayList<VXResource>(policies.size());
+
+ for(RangerPolicy policy : policies) {
+ RangerService service = serviceREST.getServiceByName(policy.getService());
+
+ resources.add(serviceUtil.toVXResource(policy, service));
+ }
+
+ ret.setVXResources(resources);
+ }
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.searchXResources(): count=" + ret.getResultSize());
+ }
+
+ return ret;
+ }
+
+ @GET
+ @Path("/resources/count")
+ @Produces({ "application/xml", "application/json" })
+ public VXLong countXResources(@Context HttpServletRequest request) {
+ if(logger.isDebugEnabled()) {
+ logger.debug("==> AssetREST.countXResources()");
+ }
+
+ VXLong ret = new VXLong();
+
+ Long count = serviceREST.countPolicies(request);
+
+ ret.setValue(count == null ? 0 : count.longValue());
+
+ if(logger.isDebugEnabled()) {
+ logger.debug("<== AssetREST.countXAssets(): " + ret);
+ }
+
+ return ret;
}
@GET
@@ -385,16 +469,6 @@ public class AssetREST {
String topologyName = request.getParameter("topologyName");
return assetMgr.getStormResources(dataSourceName, topologyName);
}
-
- @GET
- @Path("/resources/count")
- @Produces({ "application/xml", "application/json" })
- public VXLong countXResources(@Context HttpServletRequest request) {
- SearchCriteria searchCriteria = searchUtil.extractCommonCriterias(
- request, xResourceService.sortFields);
-
- return assetMgr.getXResourceSearchCount(searchCriteria);
- }
@GET
@Path("/credstores/{id}")
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
----------------------------------------------------------------------
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 cc3161a..9080cd9 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
@@ -336,7 +336,7 @@ public class ServiceREST {
}
@PUT
- @Path("/services")
+ @Path("/services/{id}")
@Produces({ "application/json", "application/xml" })
public RangerService updateService(RangerService service) {
if(LOG.isDebugEnabled()) {
@@ -441,7 +441,8 @@ public class ServiceREST {
List<RangerPolicy> ret = null;
try {
- ret = svcMgr.getAllPolicies();
+ Long serviceId = Long.parseLong(request.getParameter("serviceId"));
+ ret = svcMgr.getPolicies(serviceId);
} catch(Exception excp) {
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyListBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyListBase.js b/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyListBase.js
new file mode 100644
index 0000000..a63e4b2
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyListBase.js
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseCollection = require('collections/XABaseCollection');
+ var XAGlobals = require('utils/XAGlobals');
+ var RangerPolicy = require('models/RangerPolicy');
+
+ var RangerPolicyListBase = XABaseCollection.extend(
+ /** @lends RangerPolicyListBase.prototype */
+ {
+ url: XAGlobals.baseURL + 'plugins/policies',
+
+ model : RangerPolicy,
+
+ /**
+ * RangerPolicyListBase initialize method
+ * @augments XABaseCollection
+ * @constructs
+ */
+ initialize : function() {
+ this.modelName = 'RangerPolicy';
+ this.modelAttrName = 'RangerPolicies';
+ this.bindErrorEvents();
+ },
+ /**
+ * override the parseRecords of PageableCollection for our use
+ */
+ parseRecords : function(resp, options){
+ return resp;
+ }
+ },{
+ // static class members
+ /**
+ * Table Cols to be passed to Backgrid
+ * UI has to use this as base and extend this.
+ *
+ */
+
+ tableCols : {}
+
+ });
+
+ return RangerPolicyListBase;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyResourceListBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyResourceListBase.js b/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyResourceListBase.js
new file mode 100644
index 0000000..6a79729
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collection_bases/RangerPolicyResourceListBase.js
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseCollection = require('collections/XABaseCollection');
+ var XAGlobals = require('utils/XAGlobals');
+ var RangerPolicyResource = require('models/RangerPolicyResource');
+
+ var RangerPolicyResourceListBase = XABaseCollection.extend(
+ /** @lends RangerPolicyResourceListBase.prototype */
+ {
+// url: XAGlobals.baseURL + 'plugins/policies',
+
+ model : RangerPolicyResource,
+
+ /**
+ * RangerPolicyListBase initialize method
+ * @augments XABaseCollection
+ * @constructs
+ */
+ initialize : function() {
+ this.modelName = 'RangerPolicyResource';
+ this.modelAttrName = 'RangerPolicyResources';
+ this.bindErrorEvents();
+ },
+ /**
+ * override the parseRecords of PageableCollection for our use
+ */
+ parseRecords : function(resp, options){
+ return resp;
+ }
+ },{
+ // static class members
+ /**
+ * Table Cols to be passed to Backgrid
+ * UI has to use this as base and extend this.
+ *
+ */
+
+ tableCols : {}
+
+ });
+
+ return RangerPolicyResourceListBase;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceDefListBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceDefListBase.js b/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceDefListBase.js
new file mode 100644
index 0000000..2754f62
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceDefListBase.js
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseCollection = require('collections/XABaseCollection');
+ var XAGlobals = require('utils/XAGlobals');
+ var RangerServiceDef = require('models/RangerServiceDef');
+
+ var RangerServiceDefListBase = XABaseCollection.extend(
+ /** @lends RangerServiceDefListBase.prototype */
+ {
+ url: XAGlobals.baseURL + 'plugins/definitions',
+
+ model : RangerServiceDef,
+
+ /**
+ * RangerServiceDefListBase initialize method
+ * @augments XABaseCollection
+ * @constructs
+ */
+ initialize : function() {
+ this.modelName = 'RangerServiceDef';
+ this.modelAttrName = 'RangerServiceDefs';
+ this.bindErrorEvents();
+ },
+ /**
+ * override the parseRecords of PageableCollection for our use
+ */
+ parseRecords : function(resp, options){
+ return resp;
+ },
+ comparator: function(def) {
+ return def.get('id');
+ }
+
+ },{
+ // static class members
+ /**
+ * Table Cols to be passed to Backgrid
+ * UI has to use this as base and extend this.
+ *
+ */
+
+ tableCols : {}
+
+ });
+
+ return RangerServiceDefListBase;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceListBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceListBase.js b/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceListBase.js
new file mode 100644
index 0000000..99d1533
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collection_bases/RangerServiceListBase.js
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseCollection = require('collections/XABaseCollection');
+ var XAGlobals = require('utils/XAGlobals');
+ var RangerService = require('models/RangerService');
+
+ var RangerServiceListBase = XABaseCollection.extend(
+ /** @lends RangerServiceListBase.prototype */
+ {
+ url: XAGlobals.baseURL + 'plugins/services',
+
+ model : RangerService,
+
+ /**
+ * RangerServiceListBase initialize method
+ * @augments XABaseCollection
+ * @constructs
+ */
+ initialize : function() {
+ this.modelName = 'RangerService';
+ this.modelAttrName = 'RangerServices';
+ this.bindErrorEvents();
+ },
+ /**
+ * override the parseRecords of PageableCollection for our use
+ */
+ parseRecords : function(resp, options){
+ return resp;
+ }
+ },{
+ // static class members
+ /**
+ * Table Cols to be passed to Backgrid
+ * UI has to use this as base and extend this.
+ *
+ */
+
+ tableCols : {}
+
+ });
+
+ return RangerServiceListBase;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collections/RangerPolicyList.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collections/RangerPolicyList.js b/security-admin/src/main/webapp/scripts/collections/RangerPolicyList.js
new file mode 100644
index 0000000..a597722
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collections/RangerPolicyList.js
@@ -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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerPolicyListBase = require('collection_bases/RangerPolicyListBase');
+
+ var RangerPolicyList = RangerPolicyListBase.extend(
+ /** @lends RangerPolicyList.prototype */
+ {
+ },{
+ // static class members
+ });
+
+ return RangerPolicyList;
+});
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collections/RangerPolicyResourceList.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collections/RangerPolicyResourceList.js b/security-admin/src/main/webapp/scripts/collections/RangerPolicyResourceList.js
new file mode 100644
index 0000000..a200f7e
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collections/RangerPolicyResourceList.js
@@ -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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerPolicyResourceListBase = require('collection_bases/RangerPolicyResourceListBase');
+
+ var RangerPolicyResourceList = RangerPolicyResourceListBase.extend(
+ /** @lends RangerPolicyResourceList.prototype */
+ {
+ },{
+ // static class members
+ });
+
+ return RangerPolicyResourceList;
+});
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collections/RangerServiceDefList.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collections/RangerServiceDefList.js b/security-admin/src/main/webapp/scripts/collections/RangerServiceDefList.js
new file mode 100644
index 0000000..4c04f86
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collections/RangerServiceDefList.js
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerServiceDefListBase = require('collection_bases/RangerServiceDefListBase');
+
+ var RangerServiceDefList = RangerServiceDefListBase.extend(
+ /** @lends RangerServiceDefList.prototype */
+ {
+ },{
+ // static class members
+ });
+
+ return RangerServiceDefList;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/collections/RangerServiceList.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/collections/RangerServiceList.js b/security-admin/src/main/webapp/scripts/collections/RangerServiceList.js
new file mode 100644
index 0000000..4a1af29
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/collections/RangerServiceList.js
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerServiceListBase = require('collection_bases/RangerServiceListBase');
+
+ var RangerServiceList = RangerServiceListBase.extend(
+ /** @lends RangerServiceList.prototype */
+ {
+ },{
+ // static class members
+ });
+
+ return RangerServiceList;
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/controllers/Controller.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/controllers/Controller.js b/security-admin/src/main/webapp/scripts/controllers/Controller.js
index 8b19533..9dc44b5 100644
--- a/security-admin/src/main/webapp/scripts/controllers/Controller.js
+++ b/security-admin/src/main/webapp/scripts/controllers/Controller.js
@@ -58,8 +58,8 @@ define(function(require) {
policyManagerAction :function(){
MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
console.log('Policy Manager action called..');
- var view = require('views/policymanager/PolicyManagerLayout');
- var VXAssetList = require('collections/VXAssetList');
+ var view = require('views/policymanager/PolicyManagerLayout');
+ var VXAssetList = require('collections/VXAssetList');
var collection = new VXAssetList();
collection.fetch({
@@ -611,6 +611,137 @@ define(function(require) {
model : group
}));
});
- }
+ },
+
+
+ /************************************************************/
+ //************** Generic design Related *********************/
+ /************************************************************/
+
+ serviceManagerAction :function(){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+ console.log('Policy Manager action called..');
+ var view = require('views/policymanager/ServiceLayout');
+ var RangerServiceDefList = require('collections/RangerServiceDefList');
+ var collection = new RangerServiceDefList();
+ collection.queryParams.sortBy = 'id';
+ collection.fetch({
+ cache : false,
+ async:false
+ }).done(function(){
+ if(App.rContent.currentView) App.rContent.currentView.close();
+ //TODO FROM SERVER SIDE IT SHOULD GIVE SORTBY `ID` BY DEFAULT
+// collection = collection.sort()
+ App.rContent.show(new view({
+ collection : collection
+ }));
+ });
+ },
+
+ serviceCreateAction :function(serviceTypeId){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+ var view = require('views/service/ServiceCreate');
+ var RangerServiceDef = require('models/RangerServiceDef');
+ var RangerService = require('models/RangerService');
+
+ var rangerServiceDefModel = new RangerServiceDef({id:serviceTypeId});
+ var rangerServiceModel = new RangerService();
+// rangerServiceDefModel.fetch({
+// cache:true
+// }).done(function(){
+ App.rContent.show(new view({
+ model : rangerServiceModel,
+ serviceTypeId : serviceTypeId
+ }));
+// });
+ },
+ serviceEditAction :function(serviceTypeId, serviceId){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+ var view = require('views/service/ServiceCreate');
+ var RangerServiceDef = require('models/RangerServiceDef');
+ var RangerService = require('models/RangerService');
+
+ var rangerServiceDefModel = new RangerServiceDef({ id : serviceTypeId });
+ var rangerService = new RangerService({ 'id' : serviceId });
+
+ rangerService.fetch({
+ cache:false
+ }).done(function(){
+ App.rContent.show(new view({
+ model : rangerService,
+ serviceTypeId :serviceTypeId
+ }));
+ });
+ },
+
+ policyManageAction :function(serviceId){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+ var view = require('views/policies/RangerPolicyTableLayout');
+ var RangerService = require('models/RangerService');
+ var RangerPolicyList = require('collections/RangerPolicyList');
+
+ var rangerService = new RangerService({id : serviceId});
+ var rangerPolicyList = new RangerPolicyList();
+ /*var rangerPolicyList = new RangerPolicyList([],{
+ queryParams : {
+ 'serviceId' : serviceId
+ }
+ });*/
+ rangerPolicyList.url = "service/plugins/services/"+serviceId+"/policies"
+
+ rangerService.fetch({
+ cache : false,
+ async : false
+ });
+
+ rangerPolicyList.fetch({
+ cache : false,
+ }).done(function(){
+ App.rContent.show(new view({
+ collection : rangerPolicyList,
+ rangerService : rangerService
+ }));
+ });
+ },
+ RangerPolicyCreateAction :function(serviceId){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+
+ var view = require('views/policies/RangerPolicyCreate');
+ var RangerService = require('models/RangerService');
+ var RangerPolicy = require('models/RangerPolicy');
+
+ var rangerService = new RangerService({id : serviceId});
+ rangerService.fetch({
+ cache : false,
+ }).done(function(){
+ App.rContent.show(new view({
+ model : new RangerPolicy(),
+ rangerService : rangerService,
+ }));
+ });
+ },
+ RangerPolicyEditAction :function(serviceId, policyId){
+ MAppState.set({ 'currentTab' : XAGlobals.AppTabs.PolicyManager.value });
+
+ var view = require('views/policies/RangerPolicyCreate');
+ var RangerService = require('models/RangerService');
+ var RangerPolicy = require('models/RangerPolicy');
+
+ var rangerService = new RangerService({id : serviceId});
+ var rangerPolicy = new RangerPolicy({ id : policyId});
+ rangerService.fetch({
+ cache : false,
+ async : false,
+ });
+ rangerPolicy.fetch({
+ cache : false,
+ }).done(function(){
+ App.rContent.show(new view({
+ model : rangerPolicy,
+ rangerService :rangerService
+ }));
+ });
+ },
+
});
});
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyBase.js b/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyBase.js
new file mode 100644
index 0000000..24341e0
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyBase.js
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseModel = require('models/XABaseModel');
+ var XAGlobals = require('utils/XAGlobals');
+
+ var RangerPolicyBase = XABaseModel.extend(
+ /** @lends RangerPolicyBase.prototype */
+ {
+ urlRoot: XAGlobals.baseURL + 'plugins/policies',
+
+ defaults: {},
+
+ serverSchema : {
+ "id" : {
+ "dataType" : "Long"
+ },
+ "guid" : {
+ "dataType" : "String"
+ },
+ "version" : {
+ "dataType" : "int"
+ },
+ "createTime" : {
+ "dataType" : "Date"
+ },
+ "updateTime" : {
+ "dataType" : "Date"
+ },
+ "permList" : {
+ "dataType" : "list",
+ "listType" : "VNameValue"
+ },
+ "status" : {
+ "dataType" : "int"
+ },
+ "name" : {
+ "dataType" : "String"
+ },
+ "label" : {
+ "dataType" : "String"
+ },
+ "description" : {
+ "dataType" : "String"
+ }
+ },
+
+
+ idAttribute: 'id',
+
+ /**
+ * RangerPolicyBase initialize method
+ * @augments XABaseModel
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerPolicyBase';
+ //this.bind("error", XAUtils.defaultErrorHandler);
+ this.bindErrorEvents();
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerPolicyBase;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyResourceBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyResourceBase.js b/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyResourceBase.js
new file mode 100644
index 0000000..da86aeb
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/model_bases/RangerPolicyResourceBase.js
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseModel = require('models/XABaseModel');
+ var XAGlobals = require('utils/XAGlobals');
+
+ var RangerPolicyResourceBase = XABaseModel.extend(
+ /** @lends RangerPolicyResourceBase.prototype */
+ {
+// urlRoot: XAGlobals.baseURL + 'plugins/policies',
+
+ defaults: {},
+
+ serverSchema : {
+ "id" : {
+ "dataType" : "Long"
+ },
+ "guid" : {
+ "dataType" : "String"
+ },
+ "version" : {
+ "dataType" : "int"
+ },
+ "createTime" : {
+ "dataType" : "Date"
+ },
+ "updateTime" : {
+ "dataType" : "Date"
+ },
+ "permList" : {
+ "dataType" : "list",
+ "listType" : "VNameValue"
+ },
+ "status" : {
+ "dataType" : "int"
+ },
+ "name" : {
+ "dataType" : "String"
+ },
+ "label" : {
+ "dataType" : "String"
+ },
+ "description" : {
+ "dataType" : "String"
+ }
+ },
+
+
+ idAttribute: 'id',
+
+ /**
+ * RangerPolicyResource initialize method
+ * @augments XABaseModel
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerPolicyResource';
+ //this.bind("error", XAUtils.defaultErrorHandler);
+ this.bindErrorEvents();
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerPolicyResourceBase;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/model_bases/RangerServiceBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/RangerServiceBase.js b/security-admin/src/main/webapp/scripts/model_bases/RangerServiceBase.js
new file mode 100644
index 0000000..a4abfda
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/model_bases/RangerServiceBase.js
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseModel = require('models/XABaseModel');
+ var XAGlobals = require('utils/XAGlobals');
+
+ var RangerServiceBase = XABaseModel.extend(
+ /** @lends RangerServiceBase.prototype */
+ {
+ urlRoot: XAGlobals.baseURL + 'plugins/services',
+
+ defaults: {},
+
+ serverSchema : {
+ "id" : {
+ "dataType" : "Long"
+ },
+ "guid" : {
+ "dataType" : "String"
+ },
+ "version" : {
+ "dataType" : "int"
+ },
+ "createTime" : {
+ "dataType" : "Date"
+ },
+ "updateTime" : {
+ "dataType" : "Date"
+ },
+ "permList" : {
+ "dataType" : "list",
+ "listType" : "VNameValue"
+ },
+ "status" : {
+ "dataType" : "int"
+ },
+ "name" : {
+ "dataType" : "String"
+ },
+ "label" : {
+ "dataType" : "String"
+ },
+ "description" : {
+ "dataType" : "String"
+ }
+ },
+
+
+ idAttribute: 'id',
+
+ /**
+ * RangerServiceBase initialize method
+ * @augments XABaseModel
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerServiceBase';
+ //this.bind("error", XAUtils.defaultErrorHandler);
+ this.bindErrorEvents();
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerServiceBase;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/model_bases/RangerServiceDefBase.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/model_bases/RangerServiceDefBase.js b/security-admin/src/main/webapp/scripts/model_bases/RangerServiceDefBase.js
new file mode 100644
index 0000000..7fb6e12
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/model_bases/RangerServiceDefBase.js
@@ -0,0 +1,105 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var XABaseModel = require('models/XABaseModel');
+ var XAGlobals = require('utils/XAGlobals');
+
+ var RangerServiceDefBase = XABaseModel.extend(
+ /** @lends RangerServiceDefBase.prototype */
+ {
+ urlRoot: XAGlobals.baseURL + 'plugins/definitions',
+
+ defaults: {},
+
+ serverSchema : {
+ "id" : {
+ "dataType" : "Long"
+ },
+ "guid" : {
+ "dataType" : "String"
+ },
+ "version" : {
+ "dataType" : "int"
+ },
+ "createTime" : {
+ "dataType" : "Date"
+ },
+ "updateTime" : {
+ "dataType" : "Date"
+ },
+ "permList" : {
+ "dataType" : "list",
+ "listType" : "VNameValue"
+ },
+ "status" : {
+ "dataType" : "int"
+ },
+ "name" : {
+ "dataType" : "String"
+ },
+ "label" : {
+ "dataType" : "String"
+ },
+ "description" : {
+ "dataType" : "String"
+ },
+ "configs" : {
+ "dataType" : "string"
+ },
+ "resources" : {
+ "dataType" : "string"
+ },
+ "accessTypes" : {
+ "dataType" : "string"
+ },
+ "policyConditions" : {
+ "dataType" : "string"
+ },
+ "enums" : {
+ "dataType" : "string"
+ }
+ },
+
+
+ idAttribute: 'id',
+
+ /**
+ * RangerServiceDefBase initialize method
+ * @augments XABaseModel
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerServiceDefBase';
+ //this.bind("error", XAUtils.defaultErrorHandler);
+ this.bindErrorEvents();
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerServiceDefBase;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/RangerPolicy.js b/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
new file mode 100644
index 0000000..70de6f7
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/models/RangerPolicy.js
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerPolicyBase = require('model_bases/RangerPolicyBase');
+ var XAUtils = require('utils/XAUtils');
+ var XAEnums = require('utils/XAEnums');
+ var localization= require('utils/XALangSupport');
+
+ var RangerPolicy = RangerPolicyBase.extend(
+ /** @lends RangerPolicy.prototype */
+ {
+ /**
+ * RangerPolicy initialize method
+ * @augments RangerPolicyBase
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerPolicy';
+ this.bindErrorEvents();
+ },
+ /**
+ * @function schema
+ * This method is meant to be used by UI,
+ * by default we will remove the unrequired attributes from serverSchema
+ */
+
+ schemaBase : function(){
+ var attrs = _.omit(this.serverSchema, 'id', 'createDate', 'updateDate', "version",
+ "createDate", "updateDate", "permList", "status", "updatedBy", "isSystem");
+
+ _.each(attrs, function(o){
+ o.type = 'Hidden';
+ });
+
+ // Overwrite your schema definition here
+ return _.extend(attrs,{
+ name : {
+ type : 'Text',
+ title : 'Policy Name *',
+ validators : ['required'],
+ editorAttrs :{ maxlength: 255},
+
+ },
+ description : {
+ type : 'TextArea',
+ title : 'Description',
+ validators : []
+ },
+ isEnabled : {
+ type : 'Switch',
+ title : '',//localization.tt("lbl.policyStatus"),
+ onText : 'enabled',
+ offText : 'disabled',
+ width : '80',
+ switchOn : true
+ },
+ isRecursive : {
+ type : 'Switch',
+ title : localization.tt('lbl.includesAllPathsRecursively'),
+ onText : 'YES',
+ offText : 'NO',
+ switchOn : false,
+ },
+ isAuditEnabled : {
+ type : 'Switch',
+ title : localization.tt("lbl.auditLogging"),
+ onText : 'YES',
+ offText : 'NO',
+ switchOn : true
+ },
+ });
+ },
+
+ /** This models toString() */
+ toString : function(){
+ return this.get('name');
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerPolicy;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/models/RangerPolicyResource.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/RangerPolicyResource.js b/security-admin/src/main/webapp/scripts/models/RangerPolicyResource.js
new file mode 100644
index 0000000..22444d1
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/models/RangerPolicyResource.js
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerPolicyResourceBase = require('model_bases/RangerPolicyResourceBase');
+ var XAUtils = require('utils/XAUtils');
+ var XAEnums = require('utils/XAEnums');
+ var localization= require('utils/XALangSupport');
+
+ var RangerPolicyResource = RangerPolicyResourceBase.extend(
+ /** @lends RangerPolicyResource.prototype */
+ {
+ /**
+ * RangerPolicy initialize method
+ * @augments RangerPolicyResource
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerPolicyResource';
+ this.bindErrorEvents();
+ },
+ /**
+ * @function schema
+ * This method is meant to be used by UI,
+ * by default we will remove the unrequired attributes from serverSchema
+ */
+
+ schemaBase : function(){
+ var attrs = _.omit(this.serverSchema, 'id', 'createDate', 'updateDate', "version",
+ "createDate", "updateDate", "permList", "status", "updatedBy", "isSystem");
+
+ _.each(attrs, function(o){
+ o.type = 'Hidden';
+ });
+ return;
+
+ },
+
+ /** This models toString() */
+ toString : function(){
+ return this.get('name');
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerPolicyResource;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/models/RangerService.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/RangerService.js b/security-admin/src/main/webapp/scripts/models/RangerService.js
new file mode 100644
index 0000000..9d380db
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/models/RangerService.js
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerServiceBase = require('model_bases/RangerServiceBase');
+ var XAUtils = require('utils/XAUtils');
+ var XAEnums = require('utils/XAEnums');
+ var localization= require('utils/XALangSupport');
+
+ var RangerService = RangerServiceBase.extend(
+ /** @lends RangerService.prototype */
+ {
+ /**
+ * RangerService initialize method
+ * @augments RangerServiceBase
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerService';
+ this.bindErrorEvents();
+ },
+ /**
+ * @function schema
+ * This method is meant to be used by UI,
+ * by default we will remove the unrequired attributes from serverSchema
+ */
+
+ schemaBase : function(){
+ var attrs = _.omit(this.serverSchema, 'id', 'createDate', 'updateDate', "version",
+ "createDate", "updateDate", "permList", "status", "updatedBy", "isSystem");
+
+ _.each(attrs, function(o){
+ o.type = 'Hidden';
+ });
+
+ // Overwrite your schema definition here
+ return _.extend(attrs,{});
+ },
+
+ /** This models toString() */
+ toString : function(){
+ return this.get('name');
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerService;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js b/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js
new file mode 100644
index 0000000..e628ee5
--- /dev/null
+++ b/security-admin/src/main/webapp/scripts/models/RangerServiceDef.js
@@ -0,0 +1,95 @@
+/*
+ * 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.
+ */
+
+
+define(function(require){
+ 'use strict';
+
+ var RangerServiceDefBase = require('model_bases/RangerServiceDefBase');
+ var XAUtils = require('utils/XAUtils');
+ var XAEnums = require('utils/XAEnums');
+ var localization= require('utils/XALangSupport');
+
+ var RangerServiceDef = RangerServiceDefBase.extend(
+ /** @lends RangerServiceDef.prototype */
+ {
+ /**
+ * RangerServiceDef initialize method
+ * @augments RangerServiceDefBase
+ * @constructs
+ */
+ initialize: function() {
+ this.modelName = 'RangerServiceDef';
+ this.bindErrorEvents();
+ },
+ /**
+ * @function schema
+ * This method is meant to be used by UI,
+ * by default we will remove the unrequired attributes from serverSchema
+ */
+
+ schemaBase : function(){
+ var attrs = _.omit(this.serverSchema, 'id', 'createDate', 'updateDate', "version",
+ "createDate", "updateDate", "displayOption",
+ "permList", "status", "updatedBy");
+
+ _.each(attrs, function(o){
+ o.type = 'Hidden';
+ });
+
+ // Overwrite your schema definition here
+ return _.extend(attrs,{
+ name : {
+ type : 'Text',
+ title : 'Repository Name *',
+ validators : ['required'],
+ editorAttrs :{ maxlength: 255},
+
+ },
+ description : {
+ type : 'TextArea',
+ title : 'Description',
+ validators : []
+ },
+ isEnabled : {
+ type : 'Radio',
+ title : 'Active Status',
+ options : function(callback, editor){
+ var activeStatus = _.filter(XAEnums.ActiveStatus,function(m){return m.label != 'Deleted'});
+ var nvPairs = XAUtils.enumToSelectPairs(activeStatus);
+ callback(_.sortBy(nvPairs, function(n){ return !n.val; }));
+ }
+ }
+ });
+ },
+
+ /** This models toString() */
+ toString : function(){
+ return this.get('name');
+ }
+
+ }, {
+ // static class members
+ });
+
+ return RangerServiceDef;
+
+});
+
+
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/modules/XALinks.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/XALinks.js b/security-admin/src/main/webapp/scripts/modules/XALinks.js
index 9ea26be..52e6c01 100644
--- a/security-admin/src/main/webapp/scripts/modules/XALinks.js
+++ b/security-admin/src/main/webapp/scripts/modules/XALinks.js
@@ -182,10 +182,36 @@ define(function(require) {
title: 'lbl.editAsset'
};
},
+
+ ServiceCreate : function(options){
+ var href = '#!/service/create';
+ if(_.has(options,'model')){
+ href = '#!/service/create/'+options.model.get('assetType');
+ }
+ return {
+ href : href,
+ text : 'lbl.createAsset',
+ title: 'lbl.createAsset'
+ };
+ },
+ ServiceEdit : function(options){
+ var href = "javascript:void(0);";
+ if(_.has(options,'model')){
+ href = '#!/service/'+options.model.get('id');
+ }
+ if(_.has(options,'id')){
+ href = '#!/service/'+options.id;
+ }
+ return {
+ href : href,
+ text : 'lbl.editAsset',
+ title: 'lbl.editAsset'
+ };
+ },
ManagePolicies : function(options){
var href = "javascript:void(0);";
if(_.has(options,'model')){
- href = '#!/hdfs/'+options.model.id+"/policies";
+ href = '#!/service/'+options.model.id+"/policies";
}
return {
href : href,
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
index e842647..72bcaab 100644
--- a/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
+++ b/security-admin/src/main/webapp/scripts/modules/XAOverrides.js
@@ -310,7 +310,7 @@
},
getValue: function() {
- return this.$el.find('.toggle-slide').hasClass('active')? XAEnums.BooleanValue.BOOL_TRUE.value : XAEnums.BooleanValue.BOOL_FALSE.value ;
+ return this.$el.find('.toggle-slide').hasClass('active')? true: false;
//return this.$el.find('.active').text() == "ON" ? true : false;
},
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/routers/Router.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/routers/Router.js b/security-admin/src/main/webapp/scripts/routers/Router.js
index bd1aa36..3cafdae 100644
--- a/security-admin/src/main/webapp/scripts/routers/Router.js
+++ b/security-admin/src/main/webapp/scripts/routers/Router.js
@@ -27,8 +27,8 @@ function(Backbone){
return Backbone.Marionette.AppRouter.extend({
/** Backbone routes hash */
appRoutes: {
- "" : "policyManagerAction",//"dashboardAction",
- "!/policymanager" : "policyManagerAction",
+ "" : "serviceManagerAction",//"dashboardAction",
+ "!/policymanager" : "serviceManagerAction",
/* HDFS related */
"!/hdfs" : "hdfsManageAction",
@@ -79,7 +79,17 @@ function(Backbone){
"!/user/:id" : "userEditAction",
"!/group/create" : "groupCreateAction",
- "!/group/:id" : "groupEditAction"
+ "!/group/:id" : "groupEditAction",
+
+ /************GENERIC UI *****************************************/
+ /****** Service related **********************/
+ "!/service/:serviceType/create" : "serviceCreateAction",
+ "!/service/:serviceType/edit/:id" : "serviceEditAction",
+
+ "!/service/:serviceId/policies" : "policyManageAction",
+ "!/service/:serviceId/policies/create" : "RangerPolicyCreateAction",
+ "!/service/:serviceId/policies/:id/edit": "RangerPolicyEditAction"
+
}
});
});
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/utils/XAEnums.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAEnums.js b/security-admin/src/main/webapp/scripts/utils/XAEnums.js
index 694bf11..1a28c11 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAEnums.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAEnums.js
@@ -88,6 +88,15 @@ define(function(require) {
ASSET_KNOX:{value:5, label:'Knox', rbkey:'xa.enum.AssetType.ASSET_KNOX', tt: 'lbl.AssetType_ASSET_KNOX'},
ASSET_STORM:{value:6, label:'Storm', rbkey:'xa.enum.AssetType.ASSET_STORM', tt: 'lbl.AssetType_ASSET_STORM'}
});
+
+ XAEnums.ServiceType = mergeParams(XAEnums.ServiceType, {
+ Service_UNKNOWN:{value:0, label:'Unknown', rbkey:'xa.enum.AssetType.ASSET_UNKNOWN', tt: 'lbl.AssetType_ASSET_UNKNOWN'},
+ Service_HDFS:{value:1, label:'hdfs', rbkey:'xa.enum.AssetType.ASSET_HDFS', tt: 'lbl.AssetType_ASSET_HDFS'},
+ Service_HIVE:{value:2, label:'hive', rbkey:'xa.enum.AssetType.ASSET_HIVE', tt: 'lbl.AssetType_ASSET_HIVE'},
+ Service_HBASE:{value:3, label:'hbase', rbkey:'xa.enum.AssetType.ASSET_HBASE', tt: 'lbl.AssetType_ASSET_HBASE'},
+ Service_KNOX:{value:4, label:'knox', rbkey:'xa.enum.AssetType.ASSET_KNOX', tt: 'lbl.AssetType_ASSET_KNOX'},
+ Service_STORM:{value:5, label:'storm', rbkey:'xa.enum.AssetType.ASSET_STORM', tt: 'lbl.AssetType_ASSET_STORM'}
+ });
XAEnums.AuthStatus = mergeParams(XAEnums.AuthStatus, {
AUTH_STATUS_UNKNOWN:{value:0, label:'Unknown', rbkey:'xa.enum.AuthStatus.AUTH_STATUS_UNKNOWN', tt: 'lbl.AuthStatus_AUTH_STATUS_UNKNOWN'},
@@ -324,4 +333,4 @@ define(function(require) {
});
return XAEnums;
-});
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/9d85cb76/security-admin/src/main/webapp/scripts/utils/XAUtils.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index 68b25a7..41ebe43 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -374,37 +374,22 @@ define(function(require) {
// [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4} ]
// [2] => [ {id: 18, groupId : 2, permType :5} ]
if(!model.isNew()){
- if(!_.isUndefined(model.get('permMapList'))){
- var vPermMapList = model.get('permMapList'); //model.get('_vPermMapList');
- var groupPerms = _.filter(vPermMapList,function(m){if(m.permFor == XAEnums.XAPermForType.XA_PERM_FOR_GROUP.value ) return m;});
- var permsGroupBy = _.groupBy(groupPerms,function(m) { return m.permGroup; });
- _.each(permsGroupBy,function(values, g){
- if(g != 'undefined'){
- var idPermMapArr = []; // This should be array of integers of perms eg. [1,2,5]
- var groupIds=[],groupNames=[];
- _.each(values, function(v){
- if(groupIds.indexOf(v.groupId) == -1)
- groupIds.push(v.groupId);
- if(groupNames.indexOf(v.groupName ) == -1)
- groupNames.push(v.groupName);
- if(_.isEmpty(_.findWhere(idPermMapArr, {permType: v.permType})))
- idPermMapArr.push( { id : v.id,permType :v.permType, groupId :v.groupId} );
- });
-
+ if(!_.isUndefined(model.get('policyItems'))){
+ var policyItems = model.get('policyItems');
+ var groupPolicyItems = _.filter(policyItems,function(m){if(!_.isEmpty(m.groups)) return m;});
+ _.each(groupPolicyItems,function(obj){
var m = new Backbone.Model({
- groupId : groupIds.join(','),
- groupName : groupNames.join(','),
- ipAddress : values[0].ipAddress,
+// groupId : groupIds.join(','),
+ groupName : obj.groups.join(','),
+// ipAddress : values[0].ipAddress,
editMode : true,
-
+ accesses : obj.accesses
});
- m.set('_vPermList', idPermMapArr);
formInputColl.add(m);
- }
});
}
- }
+ }
return formInputColl;
};
@@ -415,38 +400,22 @@ define(function(require) {
// [1] => [ {id: 18, groupId : 1, permType :5}, {id: 18, groupId : 1, permType :4} ]
// [2] => [ {id: 18, groupId : 2, permType :5} ]
if(!model.isNew()){
- if(!_.isUndefined(model.get('permMapList'))){
- var vPermMapList = model.get('permMapList');//model.get('_vPermMapList');
- var userPerms = _.filter(vPermMapList, function(m){if(m.permFor == XAEnums.XAPermForType.XA_PERM_FOR_USER.value) return m;});
- var userPermsGroupBy = _.groupBy(userPerms,function(m) { return m.permGroup; });
- _.each(userPermsGroupBy,function(values, g){
- if(g != 'undefined'){
- var idPermMapArr = []; // This should be array of integers of perms eg. [1,2,5]
-
- var userIds=[],userNames=[];
- _.each(values, function(v){
- if(userIds.indexOf(v.userId) == -1)
- userIds.push(v.userId);
- if(userNames.indexOf(v.userName) == -1)
- userNames.push(v.userName);
- if(_.isEmpty(_.findWhere(idPermMapArr, {permType: v.permType})))
- idPermMapArr.push( { id : v.id,permType :v.permType, userId :v.userId } );
- });
-
+ if(!_.isUndefined(model.get('policyItems'))){
+ var policyItems = model.get('policyItems');
+ var userPolicyItems = _.filter(policyItems,function(m){if(!_.isEmpty(m.users)) return m;});
+ _.each(userPolicyItems,function(obj){
var m = new Backbone.Model({
- userId : userIds.join(','),
- userName : userNames.join(','),
- ipAddress : values[0].ipAddress,
- editMode : true
+// userId : groupIds.join(','),
+ userName : obj.users.join(','),
+// ipAddress : values[0].ipAddress,
+ editMode : true,
+ accesses : obj.accesses
});
-
- m.set('_vPermList', idPermMapArr);
coll.add(m);
- }
- });
+ });
}
- }
+ }
return coll;
};
XAUtils.checkDirtyField = function(arg1, arg2, $elem) {