Committed by
Gerrit Code Review
ONOS-1896 : enum Permission added, DefaultPermission removed
Change-Id: Ie75313acc9adeaee9c5a55978b5ec8e8fb5bf9b6
Showing
5 changed files
with
48 additions
and
127 deletions
| 1 | -/* | ||
| 2 | - * Copyright 2015 Open Networking Laboratory | ||
| 3 | - * | ||
| 4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | - * you may not use this file except in compliance with the License. | ||
| 6 | - * You may obtain a copy of the License at | ||
| 7 | - * | ||
| 8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | - * | ||
| 10 | - * Unless required by applicable law or agreed to in writing, software | ||
| 11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | - * See the License for the specific language governing permissions and | ||
| 14 | - * limitations under the License. | ||
| 15 | - */ | ||
| 16 | - | ||
| 17 | -package org.onosproject.core; | ||
| 18 | - | ||
| 19 | -import java.security.BasicPermission; | ||
| 20 | - | ||
| 21 | -/** | ||
| 22 | - * Default implementation of ONOS application permissions for API-level access control. | ||
| 23 | - */ | ||
| 24 | -public class DefaultPermission extends BasicPermission implements Permission { | ||
| 25 | - | ||
| 26 | - public enum Type { | ||
| 27 | - APP_READ, | ||
| 28 | - APP_EVENT, | ||
| 29 | - CONFIG_READ, | ||
| 30 | - CONFIG_WRITE, | ||
| 31 | - CLUSTER_READ, | ||
| 32 | - CLUSTER_WRITE, | ||
| 33 | - CLUSTER_EVENT, | ||
| 34 | - DEVICE_READ, | ||
| 35 | - DEVICE_EVENT, | ||
| 36 | - DRIVER_READ, | ||
| 37 | - DRIVER_WRITE, | ||
| 38 | - FLOWRULE_READ, | ||
| 39 | - FLOWRULE_WRITE, | ||
| 40 | - FLOWRULE_EVENT, | ||
| 41 | - GROUP_READ, | ||
| 42 | - GROUP_WRITE, | ||
| 43 | - GROUP_EVENT, | ||
| 44 | - HOST_READ, | ||
| 45 | - HOST_WRITE, | ||
| 46 | - HOST_EVENT, | ||
| 47 | - INTENT_READ, | ||
| 48 | - INTENT_WRITE, | ||
| 49 | - INTENT_EVENT, | ||
| 50 | - LINK_READ, | ||
| 51 | - LINK_WRITE, | ||
| 52 | - LINK_EVENT, | ||
| 53 | - PACKET_READ, | ||
| 54 | - PACKET_WRITE, | ||
| 55 | - PACKET_EVENT, | ||
| 56 | - STATISTIC_READ, | ||
| 57 | - TOPOLOGY_READ, | ||
| 58 | - TOPOLOGY_EVENT, | ||
| 59 | - TUNNEL_READ, | ||
| 60 | - TUNNEL_WRITE, | ||
| 61 | - TUNNEL_EVENT, | ||
| 62 | - STORAGE_WRITE | ||
| 63 | - } | ||
| 64 | - | ||
| 65 | - /** | ||
| 66 | - * Creates a new DefaultPermission. | ||
| 67 | - * @param name name of the permission | ||
| 68 | - * @param actions optional action field | ||
| 69 | - */ | ||
| 70 | - public DefaultPermission(String name, String actions) { | ||
| 71 | - super(name, actions); | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - /** | ||
| 75 | - * Creates a new DefaultPermission. | ||
| 76 | - * @param name name of the permission | ||
| 77 | - */ | ||
| 78 | - public DefaultPermission(String name) { | ||
| 79 | - super(name, ""); | ||
| 80 | - } | ||
| 81 | - | ||
| 82 | - public DefaultPermission(Type permtype) { | ||
| 83 | - super(permtype.name(), ""); | ||
| 84 | - } | ||
| 85 | - | ||
| 86 | - @Override | ||
| 87 | - public String name() { | ||
| 88 | - return super.getName(); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | - @Override | ||
| 92 | - public String actions() { | ||
| 93 | - return super.getActions(); | ||
| 94 | - } | ||
| 95 | -} |
| ... | @@ -18,17 +18,41 @@ package org.onosproject.core; | ... | @@ -18,17 +18,41 @@ package org.onosproject.core; |
| 18 | /** | 18 | /** |
| 19 | * Representation of an application permission. | 19 | * Representation of an application permission. |
| 20 | */ | 20 | */ |
| 21 | -public interface Permission { | 21 | +public enum Permission { |
| 22 | - | 22 | + APP_READ, |
| 23 | - /** | 23 | + APP_EVENT, |
| 24 | - * Returns the name of the permission. | 24 | + CONFIG_READ, |
| 25 | - * @return a string value | 25 | + CONFIG_WRITE, |
| 26 | - */ | 26 | + CLUSTER_READ, |
| 27 | - String name(); | 27 | + CLUSTER_WRITE, |
| 28 | - | 28 | + CLUSTER_EVENT, |
| 29 | - /** | 29 | + DEVICE_READ, |
| 30 | - * Returns the actions string of the permission if specified. | 30 | + DEVICE_EVENT, |
| 31 | - * @return a string value | 31 | + DRIVER_READ, |
| 32 | - */ | 32 | + DRIVER_WRITE, |
| 33 | - String actions(); | 33 | + FLOWRULE_READ, |
| 34 | + FLOWRULE_WRITE, | ||
| 35 | + FLOWRULE_EVENT, | ||
| 36 | + GROUP_READ, | ||
| 37 | + GROUP_WRITE, | ||
| 38 | + GROUP_EVENT, | ||
| 39 | + HOST_READ, | ||
| 40 | + HOST_WRITE, | ||
| 41 | + HOST_EVENT, | ||
| 42 | + INTENT_READ, | ||
| 43 | + INTENT_WRITE, | ||
| 44 | + INTENT_EVENT, | ||
| 45 | + LINK_READ, | ||
| 46 | + LINK_WRITE, | ||
| 47 | + LINK_EVENT, | ||
| 48 | + PACKET_READ, | ||
| 49 | + PACKET_WRITE, | ||
| 50 | + PACKET_EVENT, | ||
| 51 | + STATISTIC_READ, | ||
| 52 | + TOPOLOGY_READ, | ||
| 53 | + TOPOLOGY_EVENT, | ||
| 54 | + TUNNEL_READ, | ||
| 55 | + TUNNEL_WRITE, | ||
| 56 | + TUNNEL_EVENT, | ||
| 57 | + STORAGE_WRITE | ||
| 34 | } | 58 | } | ... | ... |
| ... | @@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableList; | ... | @@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableList; |
| 19 | import com.google.common.collect.ImmutableSet; | 19 | import com.google.common.collect.ImmutableSet; |
| 20 | import org.junit.Test; | 20 | import org.junit.Test; |
| 21 | import org.onosproject.core.ApplicationRole; | 21 | import org.onosproject.core.ApplicationRole; |
| 22 | -import org.onosproject.core.DefaultPermission; | ||
| 23 | import org.onosproject.core.Permission; | 22 | import org.onosproject.core.Permission; |
| 24 | import org.onosproject.core.Version; | 23 | import org.onosproject.core.Version; |
| 25 | 24 | ||
| ... | @@ -29,8 +28,6 @@ import java.util.Set; | ... | @@ -29,8 +28,6 @@ import java.util.Set; |
| 29 | 28 | ||
| 30 | import static org.junit.Assert.assertEquals; | 29 | import static org.junit.Assert.assertEquals; |
| 31 | import static org.junit.Assert.assertTrue; | 30 | import static org.junit.Assert.assertTrue; |
| 32 | -import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_WRITE; | ||
| 33 | -import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_READ; | ||
| 34 | 31 | ||
| 35 | 32 | ||
| 36 | /** | 33 | /** |
| ... | @@ -43,8 +40,7 @@ public class DefaultApplicationDescriptionTest { | ... | @@ -43,8 +40,7 @@ public class DefaultApplicationDescriptionTest { |
| 43 | public static final String DESC = "Awesome application from Circus"; | 40 | public static final String DESC = "Awesome application from Circus"; |
| 44 | public static final String ORIGIN = "Circus"; | 41 | public static final String ORIGIN = "Circus"; |
| 45 | public static final ApplicationRole ROLE = ApplicationRole.ADMIN; | 42 | public static final ApplicationRole ROLE = ApplicationRole.ADMIN; |
| 46 | - public static final Set<Permission> PERMS = ImmutableSet.of(new DefaultPermission(FLOWRULE_WRITE), | 43 | + public static final Set<Permission> PERMS = ImmutableSet.of(Permission.FLOWRULE_WRITE, Permission.FLOWRULE_READ); |
| 47 | - new DefaultPermission(FLOWRULE_READ)); | ||
| 48 | public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features"); | 44 | public static final URI FURL = URI.create("mvn:org.foo-features/1.2a/xml/features"); |
| 49 | public static final List<String> FEATURES = ImmutableList.of("foo", "bar"); | 45 | public static final List<String> FEATURES = ImmutableList.of("foo", "bar"); |
| 50 | 46 | ... | ... |
| ... | @@ -28,7 +28,6 @@ import org.onosproject.app.ApplicationException; | ... | @@ -28,7 +28,6 @@ import org.onosproject.app.ApplicationException; |
| 28 | import org.onosproject.app.ApplicationStoreDelegate; | 28 | import org.onosproject.app.ApplicationStoreDelegate; |
| 29 | import org.onosproject.app.DefaultApplicationDescription; | 29 | import org.onosproject.app.DefaultApplicationDescription; |
| 30 | import org.onosproject.core.ApplicationRole; | 30 | import org.onosproject.core.ApplicationRole; |
| 31 | -import org.onosproject.core.DefaultPermission; | ||
| 32 | import org.onosproject.core.Permission; | 31 | import org.onosproject.core.Permission; |
| 33 | import org.onosproject.core.Version; | 32 | import org.onosproject.core.Version; |
| 34 | import org.onosproject.store.AbstractStore; | 33 | import org.onosproject.store.AbstractStore; |
| ... | @@ -378,21 +377,20 @@ public class ApplicationArchive | ... | @@ -378,21 +377,20 @@ public class ApplicationArchive |
| 378 | 377 | ||
| 379 | // Returns the set of Permissions specified in the app.xml file | 378 | // Returns the set of Permissions specified in the app.xml file |
| 380 | private ImmutableSet<Permission> getPermissions(XMLConfiguration cfg) { | 379 | private ImmutableSet<Permission> getPermissions(XMLConfiguration cfg) { |
| 381 | - List<Permission> perms = new ArrayList(); | 380 | + List<Permission> permissionList = new ArrayList(); |
| 382 | for (Object o : cfg.getList(PERMISSIONS)) { | 381 | for (Object o : cfg.getList(PERMISSIONS)) { |
| 383 | - DefaultPermission perm = null; | 382 | + String name = (String) o; |
| 384 | - if (o != null) { | 383 | + try { |
| 385 | - String permStr = (String) o; | 384 | + Permission perm = Permission.valueOf(name); |
| 386 | - perm = new DefaultPermission(permStr); | 385 | + permissionList.add(perm); |
| 387 | - } | 386 | + } catch (IllegalArgumentException e) { |
| 388 | - if (perm != null) { | 387 | + log.debug("Unknown permission specified: %s", name); |
| 389 | - perms.add(perm); | ||
| 390 | } | 388 | } |
| 391 | } | 389 | } |
| 392 | - | 390 | + return ImmutableSet.copyOf(permissionList); |
| 393 | - return ImmutableSet.copyOf(perms); | ||
| 394 | } | 391 | } |
| 395 | 392 | ||
| 393 | + // | ||
| 396 | // Returns application role type | 394 | // Returns application role type |
| 397 | public ApplicationRole getRole(String value) { | 395 | public ApplicationRole getRole(String value) { |
| 398 | if (value == null) { | 396 | if (value == null) { | ... | ... |
| ... | @@ -25,11 +25,9 @@ import org.onosproject.common.app.ApplicationArchive; | ... | @@ -25,11 +25,9 @@ import org.onosproject.common.app.ApplicationArchive; |
| 25 | import org.onosproject.core.Application; | 25 | import org.onosproject.core.Application; |
| 26 | import org.onosproject.core.ApplicationId; | 26 | import org.onosproject.core.ApplicationId; |
| 27 | import org.onosproject.core.Permission; | 27 | import org.onosproject.core.Permission; |
| 28 | -import org.onosproject.core.DefaultPermission; | ||
| 29 | import org.onosproject.core.ApplicationIdStoreAdapter; | 28 | import org.onosproject.core.ApplicationIdStoreAdapter; |
| 30 | import org.onosproject.core.DefaultApplicationId; | 29 | import org.onosproject.core.DefaultApplicationId; |
| 31 | 30 | ||
| 32 | -import static org.onosproject.core.DefaultPermission.Type.FLOWRULE_WRITE; | ||
| 33 | import static org.junit.Assert.assertEquals; | 31 | import static org.junit.Assert.assertEquals; |
| 34 | import static org.onosproject.app.ApplicationEvent.Type.APP_INSTALLED; | 32 | import static org.onosproject.app.ApplicationEvent.Type.APP_INSTALLED; |
| 35 | import static org.onosproject.app.ApplicationEvent.Type.APP_DEACTIVATED; | 33 | import static org.onosproject.app.ApplicationEvent.Type.APP_DEACTIVATED; |
| ... | @@ -106,7 +104,7 @@ public class SimpleApplicationStoreTest { | ... | @@ -106,7 +104,7 @@ public class SimpleApplicationStoreTest { |
| 106 | @Test | 104 | @Test |
| 107 | public void permissions() { | 105 | public void permissions() { |
| 108 | Application app = createTestApp(); | 106 | Application app = createTestApp(); |
| 109 | - ImmutableSet<Permission> permissions = ImmutableSet.of(new DefaultPermission(FLOWRULE_WRITE)); | 107 | + ImmutableSet<Permission> permissions = ImmutableSet.of(Permission.FLOWRULE_WRITE); |
| 110 | store.setPermissions(app.id(), permissions); | 108 | store.setPermissions(app.id(), permissions); |
| 111 | assertEquals("incorrect app perms", 1, store.getPermissions(app.id()).size()); | 109 | assertEquals("incorrect app perms", 1, store.getPermissions(app.id()).size()); |
| 112 | assertEquals("incorrect app state", INSTALLED, store.getState(app.id())); | 110 | assertEquals("incorrect app state", INSTALLED, store.getState(app.id())); | ... | ... |
-
Please register or login to post a comment