ONOS-7887 Rename action profile-related entities
Members can exist outside of a group. Previous naming was ambiguous
about this.
Action group -> action profile group
Action group member -> action profile member
Change-Id: I5097e92253353d355b864e689f9653df2d318230
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeActionGroupProgrammable.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeActionGroupProgrammable.java
index c20c899..4a48897 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeActionGroupProgrammable.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeActionGroupProgrammable.java
@@ -23,8 +23,8 @@
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Striped;
import org.onlab.util.SharedExecutors;
+import org.onosproject.drivers.p4runtime.mirror.P4RuntimeActionProfileGroupMirror;
import org.onosproject.drivers.p4runtime.mirror.P4RuntimeActionProfileMemberMirror;
-import org.onosproject.drivers.p4runtime.mirror.P4RuntimeGroupMirror;
import org.onosproject.drivers.p4runtime.mirror.TimedEntry;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.DeviceId;
@@ -40,11 +40,11 @@
import org.onosproject.net.pi.model.PiActionProfileId;
import org.onosproject.net.pi.model.PiActionProfileModel;
import org.onosproject.net.pi.runtime.PiAction;
-import org.onosproject.net.pi.runtime.PiActionGroup;
-import org.onosproject.net.pi.runtime.PiActionGroupHandle;
-import org.onosproject.net.pi.runtime.PiActionGroupMember;
-import org.onosproject.net.pi.runtime.PiActionGroupMemberHandle;
-import org.onosproject.net.pi.runtime.PiActionGroupMemberId;
+import org.onosproject.net.pi.runtime.PiActionProfileGroup;
+import org.onosproject.net.pi.runtime.PiActionProfileGroupHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileMember;
+import org.onosproject.net.pi.runtime.PiActionProfileMemberHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileMemberId;
import org.onosproject.net.pi.service.PiGroupTranslator;
import org.onosproject.net.pi.service.PiTranslatedEntity;
import org.onosproject.net.pi.service.PiTranslationException;
@@ -80,7 +80,7 @@
private static final String MAX_MEM_SIZE = "maxMemSize";
protected GroupStore groupStore;
- private P4RuntimeGroupMirror groupMirror;
+ private P4RuntimeActionProfileGroupMirror groupMirror;
private P4RuntimeActionProfileMemberMirror memberMirror;
private PiGroupTranslator groupTranslator;
@@ -93,7 +93,7 @@
if (!super.setupBehaviour()) {
return false;
}
- groupMirror = this.handler().get(P4RuntimeGroupMirror.class);
+ groupMirror = this.handler().get(P4RuntimeActionProfileGroupMirror.class);
memberMirror = this.handler().get(P4RuntimeActionProfileMemberMirror.class);
groupStore = handler().get(GroupStore.class);
groupTranslator = translationService.groupTranslator();
@@ -140,14 +140,14 @@
.stream()
.map(PiActionProfileModel::id)
.collect(Collectors.toList());
- final List<PiActionGroup> groupsOnDevice = actionProfileIds.stream()
+ final List<PiActionProfileGroup> groupsOnDevice = actionProfileIds.stream()
.flatMap(this::streamGroupsFromDevice)
.collect(Collectors.toList());
- final Set<PiActionGroupMemberHandle> membersOnDevice = actionProfileIds
+ final Set<PiActionProfileMemberHandle> membersOnDevice = actionProfileIds
.stream()
.flatMap(actProfId -> getMembersFromDevice(actProfId)
.stream()
- .map(memberId -> PiActionGroupMemberHandle.of(
+ .map(memberId -> PiActionProfileMemberHandle.of(
deviceId, actProfId, memberId)))
.collect(Collectors.toSet());
@@ -160,10 +160,10 @@
syncMemberMirror(membersOnDevice);
final List<Group> result = Lists.newArrayList();
- final List<PiActionGroup> inconsistentGroups = Lists.newArrayList();
- final List<PiActionGroup> validGroups = Lists.newArrayList();
+ final List<PiActionProfileGroup> inconsistentGroups = Lists.newArrayList();
+ final List<PiActionProfileGroup> validGroups = Lists.newArrayList();
- for (PiActionGroup piGroup : groupsOnDevice) {
+ for (PiActionProfileGroup piGroup : groupsOnDevice) {
final Group pdGroup = forgeGroupEntry(piGroup);
if (pdGroup == null) {
// Entry is on device but unknown to translation service or
@@ -178,11 +178,11 @@
// Trigger clean up of inconsistent groups and members. This will also
// remove all members that are not used by any group, and update the
// mirror accordingly.
- final Set<PiActionGroupMemberHandle> membersToKeep = validGroups.stream()
+ final Set<PiActionProfileMemberHandle> membersToKeep = validGroups.stream()
.flatMap(g -> g.members().stream())
- .map(m -> PiActionGroupMemberHandle.of(deviceId, m))
+ .map(m -> PiActionProfileMemberHandle.of(deviceId, m))
.collect(Collectors.toSet());
- final Set<PiActionGroupMemberHandle> inconsistentMembers = Sets.difference(
+ final Set<PiActionProfileMemberHandle> inconsistentMembers = Sets.difference(
membersOnDevice, membersToKeep);
SharedExecutors.getSingleThreadExecutor().execute(
() -> cleanUpInconsistentGroupsAndMembers(
@@ -191,15 +191,15 @@
return result;
}
- private void syncGroupMirror(Collection<PiActionGroup> groups) {
- Map<PiActionGroupHandle, PiActionGroup> handleMap = Maps.newHashMap();
- groups.forEach(g -> handleMap.put(PiActionGroupHandle.of(deviceId, g), g));
+ private void syncGroupMirror(Collection<PiActionProfileGroup> groups) {
+ Map<PiActionProfileGroupHandle, PiActionProfileGroup> handleMap = Maps.newHashMap();
+ groups.forEach(g -> handleMap.put(PiActionProfileGroupHandle.of(deviceId, g), g));
groupMirror.sync(deviceId, handleMap);
}
- private void syncMemberMirror(Collection<PiActionGroupMemberHandle> memberHandles) {
- Map<PiActionGroupMemberHandle, PiActionGroupMember> handleMap = Maps.newHashMap();
- memberHandles.forEach(handle -> handleMap.put(
+ private void syncMemberMirror(Collection<PiActionProfileMemberHandle> memberHandles) {
+ Map<PiActionProfileMemberHandle, PiActionProfileMember> handleMap = Maps.newHashMap();
+ memberHandles.forEach(handle -> handleMap.put(
handle, dummyMember(handle.actionProfileId(), handle.memberId())));
memberMirror.sync(deviceId, handleMap);
}
@@ -212,8 +212,8 @@
.collect(Collectors.toList());
}
- private void cleanUpInconsistentGroupsAndMembers(Collection<PiActionGroup> groupsToRemove,
- Collection<PiActionGroupMemberHandle> membersToRemove) {
+ private void cleanUpInconsistentGroupsAndMembers(Collection<PiActionProfileGroup> groupsToRemove,
+ Collection<PiActionProfileMemberHandle> membersToRemove) {
if (!groupsToRemove.isEmpty()) {
log.warn("Found {} inconsistent action profile groups on {}, removing them...",
groupsToRemove.size(), deviceId);
@@ -227,33 +227,33 @@
membersToRemove.size(), deviceId);
// FIXME: implement client call to remove members from multiple
// action profiles in one shot.
- final ListMultimap<PiActionProfileId, PiActionGroupMemberId>
+ final ListMultimap<PiActionProfileId, PiActionProfileMemberId>
membersByActProfId = ArrayListMultimap.create();
membersToRemove.forEach(m -> membersByActProfId.put(
m.actionProfileId(), m.memberId()));
membersByActProfId.keySet().forEach(actProfId -> {
- List<PiActionGroupMemberId> removedMembers = getFutureWithDeadline(
+ List<PiActionProfileMemberId> removedMembers = getFutureWithDeadline(
client.removeActionProfileMembers(
actProfId, membersByActProfId.get(actProfId), pipeconf),
"cleaning up action profile members", Collections.emptyList());
// Update member mirror.
removedMembers.stream()
- .map(id -> PiActionGroupMemberHandle.of(deviceId, actProfId, id))
+ .map(id -> PiActionProfileMemberHandle.of(deviceId, actProfId, id))
.forEach(memberMirror::remove);
});
}
}
- private Stream<PiActionGroup> streamGroupsFromDevice(PiActionProfileId actProfId) {
+ private Stream<PiActionProfileGroup> streamGroupsFromDevice(PiActionProfileId actProfId) {
// TODO: implement P4Runtime client call to read all groups with one call
// Good if pipeline has multiple action profiles.
- final Collection<PiActionGroup> groups = getFutureWithDeadline(
- client.dumpGroups(actProfId, pipeconf),
+ final Collection<PiActionProfileGroup> groups = getFutureWithDeadline(
+ client.dumpActionProfileGroups(actProfId, pipeconf),
"dumping groups", Collections.emptyList());
return groups.stream();
}
- private List<PiActionGroupMemberId> getMembersFromDevice(PiActionProfileId actProfId) {
+ private List<PiActionProfileMemberId> getMembersFromDevice(PiActionProfileId actProfId) {
// TODO: implement P4Runtime client call to read all members with one call
// Good if pipeline has multiple action profiles.
return getFutureWithDeadline(
@@ -261,11 +261,11 @@
"dumping action profile ids", Collections.emptyList());
}
- private Group forgeGroupEntry(PiActionGroup piGroup) {
- final PiActionGroupHandle handle = PiActionGroupHandle.of(deviceId, piGroup);
- final Optional<PiTranslatedEntity<Group, PiActionGroup>>
+ private Group forgeGroupEntry(PiActionProfileGroup piGroup) {
+ final PiActionProfileGroupHandle handle = PiActionProfileGroupHandle.of(deviceId, piGroup);
+ final Optional<PiTranslatedEntity<Group, PiActionProfileGroup>>
translatedEntity = groupTranslator.lookup(handle);
- final TimedEntry<PiActionGroup> timedEntry = groupMirror.get(handle);
+ final TimedEntry<PiActionProfileGroup> timedEntry = groupMirror.get(handle);
// Is entry consistent with our state?
if (!translatedEntity.isPresent()) {
log.warn("Group handle not found in translation store: {}", handle);
@@ -292,7 +292,7 @@
}
private void processGroupOperation(Group pdGroup, GroupOperation.Type opType) {
- final PiActionGroup piGroup;
+ final PiActionProfileGroup piGroup;
try {
piGroup = groupTranslator.translate(pdGroup, pipeconf);
} catch (PiTranslationException e) {
@@ -305,10 +305,10 @@
processGroup(piGroup, pdGroup, operation);
}
- private void processGroup(PiActionGroup groupToApply,
+ private void processGroup(PiActionProfileGroup groupToApply,
Group pdGroup,
Operation operation) {
- final PiActionGroupHandle handle = PiActionGroupHandle.of(deviceId, groupToApply);
+ final PiActionProfileGroupHandle handle = PiActionProfileGroupHandle.of(deviceId, groupToApply);
STRIPED_LOCKS.get(handle).lock();
try {
switch (operation) {
@@ -332,7 +332,7 @@
}
}
- private boolean applyGroupWithMembersOrNothing(PiActionGroup group, PiActionGroupHandle handle) {
+ private boolean applyGroupWithMembersOrNothing(PiActionProfileGroup group, PiActionProfileGroupHandle handle) {
// First apply members, then group, if fails, delete members.
if (!applyAllMembersOrNothing(group.members())) {
return false;
@@ -344,7 +344,7 @@
return true;
}
- private boolean applyGroup(PiActionGroup group, PiActionGroupHandle handle) {
+ private boolean applyGroup(PiActionProfileGroup group, PiActionProfileGroupHandle handle) {
final int currentMemberSize = group.members().size();
if (groupMirror.get(handle) != null) {
String maxMemSize = "";
@@ -352,7 +352,7 @@
groupMirror.annotations(handle).value(MAX_MEM_SIZE) != null) {
maxMemSize = groupMirror.annotations(handle).value(MAX_MEM_SIZE);
}
- if (!maxMemSize.equals("") || currentMemberSize > Integer.parseInt(maxMemSize)) {
+ if (maxMemSize.equals("") || currentMemberSize > Integer.parseInt(maxMemSize)) {
deleteGroup(group, handle);
}
}
@@ -362,7 +362,7 @@
int currentMaxMemberSize = opType == INSERT ? (currentMemberSize + GROUP_MEMBERS_BUFFER_SIZE) : 0;
final boolean success = getFutureWithDeadline(
- client.writeActionGroup(group, opType, pipeconf, currentMaxMemberSize),
+ client.writeActionProfileGroup(group, opType, pipeconf, currentMaxMemberSize),
"performing action profile group " + opType, false);
if (success) {
groupMirror.put(handle, group);
@@ -376,9 +376,9 @@
return success;
}
- private boolean deleteGroup(PiActionGroup group, PiActionGroupHandle handle) {
+ private boolean deleteGroup(PiActionProfileGroup group, PiActionProfileGroupHandle handle) {
final boolean success = getFutureWithDeadline(
- client.writeActionGroup(group, DELETE, pipeconf, 0),
+ client.writeActionProfileGroup(group, DELETE, pipeconf, 0),
"performing action profile group " + DELETE, false);
if (success) {
groupMirror.remove(handle);
@@ -386,8 +386,8 @@
return success;
}
- private boolean applyAllMembersOrNothing(Collection<PiActionGroupMember> members) {
- Collection<PiActionGroupMember> appliedMembers = applyMembers(members);
+ private boolean applyAllMembersOrNothing(Collection<PiActionProfileMember> members) {
+ Collection<PiActionProfileMember> appliedMembers = applyMembers(members);
if (appliedMembers.size() == members.size()) {
return true;
} else {
@@ -396,22 +396,22 @@
}
}
- private Collection<PiActionGroupMember> applyMembers(
- Collection<PiActionGroupMember> members) {
+ private Collection<PiActionProfileMember> applyMembers(
+ Collection<PiActionProfileMember> members) {
return members.stream()
.filter(this::applyMember)
.collect(Collectors.toList());
}
- private boolean applyMember(PiActionGroupMember member) {
+ private boolean applyMember(PiActionProfileMember member) {
// If exists, modify, otherwise insert
- final PiActionGroupMemberHandle handle = PiActionGroupMemberHandle.of(
+ final PiActionProfileMemberHandle handle = PiActionProfileMemberHandle.of(
deviceId, member);
final P4RuntimeClient.WriteOperationType opType =
memberMirror.get(handle) == null ? INSERT : MODIFY;
final boolean success = getFutureWithDeadline(
- client.writeActionGroupMembers(Collections.singletonList(member),
- opType, pipeconf),
+ client.writeActionProfileMembers(Collections.singletonList(member),
+ opType, pipeconf),
"performing action profile member " + opType, false);
if (success) {
memberMirror.put(handle, dummyMember(member.actionProfile(), member.id()));
@@ -419,16 +419,16 @@
return success;
}
- private void deleteMembers(Collection<PiActionGroupMember> members) {
+ private void deleteMembers(Collection<PiActionProfileMember> members) {
members.forEach(this::deleteMember);
}
- private void deleteMember(PiActionGroupMember member) {
- final PiActionGroupMemberHandle handle = PiActionGroupMemberHandle.of(
+ private void deleteMember(PiActionProfileMember member) {
+ final PiActionProfileMemberHandle handle = PiActionProfileMemberHandle.of(
deviceId, member);
final boolean success = getFutureWithDeadline(
- client.writeActionGroupMembers(Collections.singletonList(member),
- DELETE, pipeconf),
+ client.writeActionProfileMembers(Collections.singletonList(member),
+ DELETE, pipeconf),
"performing action profile member " + DELETE, false);
if (success) {
memberMirror.remove(handle);
@@ -436,15 +436,13 @@
}
// FIXME: this is nasty, we have to rely on a dummy member of the mirror
- // because the PiActionGroupMember abstraction is broken, since it includes
+ // because the PiActionProfileMember abstraction is broken, since it includes
// attributes that are not part of a P4Runtime member, e.g. weight.
// We should remove weight from the class, and have client methods that
- // return the full PiActionGroupMember, not just the IDs. Also the naming
- // "ActionGroupMember" is wrong since it makes believe that members can
- // exists only inside a group, which is not true.
- private PiActionGroupMember dummyMember(
- PiActionProfileId actionProfileId, PiActionGroupMemberId memberId) {
- return PiActionGroupMember.builder()
+ // return the full PiActionProfileMember, not just the IDs.
+ private PiActionProfileMember dummyMember(
+ PiActionProfileId actionProfileId, PiActionProfileMemberId memberId) {
+ return PiActionProfileMember.builder()
.forActionProfile(actionProfileId)
.withId(memberId)
.withAction(PiAction.builder()
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileGroupMirror.java
similarity index 71%
rename from drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java
rename to drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileGroupMirror.java
index e07f417..ef2d6bd 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileGroupMirror.java
@@ -17,21 +17,21 @@
package org.onosproject.drivers.p4runtime.mirror;
import org.onlab.util.KryoNamespace;
-import org.onosproject.net.pi.runtime.PiActionGroup;
-import org.onosproject.net.pi.runtime.PiActionGroupHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileGroup;
+import org.onosproject.net.pi.runtime.PiActionProfileGroupHandle;
import org.onosproject.store.serializers.KryoNamespaces;
import org.osgi.service.component.annotations.Component;
/**
- * Distributed implementation of a P4Runtime group mirror.
+ * Distributed implementation of a P4Runtime action profile group mirror.
*/
-@Component(immediate = true, service = P4RuntimeGroupMirror.class)
-public final class DistributedP4RuntimeGroupMirror
+@Component(immediate = true, service = P4RuntimeActionProfileGroupMirror.class)
+public final class DistributedP4RuntimeActionProfileGroupMirror
extends AbstractDistributedP4RuntimeMirror
- <PiActionGroupHandle, PiActionGroup>
- implements P4RuntimeGroupMirror {
+ <PiActionProfileGroupHandle, PiActionProfileGroup>
+ implements P4RuntimeActionProfileGroupMirror {
- private static final String DIST_MAP_NAME = "onos-p4runtime-group-mirror";
+ private static final String DIST_MAP_NAME = "onos-p4runtime-act-prof-group-mirror";
@Override
String mapName() {
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileMemberMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileMemberMirror.java
index 5974ae2..5b2ff21 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileMemberMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeActionProfileMemberMirror.java
@@ -17,8 +17,8 @@
package org.onosproject.drivers.p4runtime.mirror;
import org.onlab.util.KryoNamespace;
-import org.onosproject.net.pi.runtime.PiActionGroupMember;
-import org.onosproject.net.pi.runtime.PiActionGroupMemberHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileMember;
+import org.onosproject.net.pi.runtime.PiActionProfileMemberHandle;
import org.onosproject.store.serializers.KryoNamespaces;
import org.osgi.service.component.annotations.Component;
@@ -28,7 +28,7 @@
@Component(immediate = true, service = P4RuntimeActionProfileMemberMirror.class)
public class DistributedP4RuntimeActionProfileMemberMirror
extends AbstractDistributedP4RuntimeMirror
- <PiActionGroupMemberHandle, PiActionGroupMember>
+ <PiActionProfileMemberHandle, PiActionProfileMember>
implements P4RuntimeActionProfileMemberMirror {
private static final String DIST_MAP_NAME = "onos-p4runtime-act-prof-member-mirror";
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeGroupMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileGroupMirror.java
similarity index 67%
rename from drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeGroupMirror.java
rename to drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileGroupMirror.java
index f363e71..d5ce7ff 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeGroupMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileGroupMirror.java
@@ -16,12 +16,12 @@
package org.onosproject.drivers.p4runtime.mirror;
-import org.onosproject.net.pi.runtime.PiActionGroup;
-import org.onosproject.net.pi.runtime.PiActionGroupHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileGroup;
+import org.onosproject.net.pi.runtime.PiActionProfileGroupHandle;
/**
- * Mirror of action groups installed on a P4Runtime device.
+ * Mirror of action profile groups installed on a P4Runtime device.
*/
-public interface P4RuntimeGroupMirror
- extends P4RuntimeMirror<PiActionGroupHandle, PiActionGroup> {
+public interface P4RuntimeActionProfileGroupMirror
+ extends P4RuntimeMirror<PiActionProfileGroupHandle, PiActionProfileGroup> {
}
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileMemberMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileMemberMirror.java
index 8ab1fa0..045f283 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileMemberMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/P4RuntimeActionProfileMemberMirror.java
@@ -16,12 +16,12 @@
package org.onosproject.drivers.p4runtime.mirror;
-import org.onosproject.net.pi.runtime.PiActionGroupMember;
-import org.onosproject.net.pi.runtime.PiActionGroupMemberHandle;
+import org.onosproject.net.pi.runtime.PiActionProfileMember;
+import org.onosproject.net.pi.runtime.PiActionProfileMemberHandle;
/**
* Mirror of action profile members installed on a P4Runtime device.
*/
public interface P4RuntimeActionProfileMemberMirror
- extends P4RuntimeMirror<PiActionGroupMemberHandle, PiActionGroupMember> {
+ extends P4RuntimeMirror<PiActionProfileMemberHandle, PiActionProfileMember> {
}