Resource group to share resources between intents

Change-Id: I5bf7d4261197449924d07dabac841cf8ccbe9389
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
index f0f0046..f2283a0 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/HostToHostIntentCompiler.java
@@ -182,6 +182,7 @@
                 .applyTreatmentOnEgress(true)
                 .constraints(intent.constraints())
                 .priority(intent.priority())
+                .resourceGroup(intent.resourceGroup())
                 .build();
     }
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentFlowObjectiveCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentFlowObjectiveCompiler.java
index 6a0081f..0aa4e87 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentFlowObjectiveCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/LinkCollectionIntentFlowObjectiveCompiler.java
@@ -119,7 +119,10 @@
             });
         }
         return Collections.singletonList(
-                new FlowObjectiveIntent(appId, intent.key(), devices, objectives, intent.resources()));
+                new FlowObjectiveIntent(appId, intent.key(), devices,
+                                        objectives,
+                                        intent.resources(),
+                                        intent.resourceGroup()));
     }
 
     @Override
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
index 758c21b5..3b4dca9 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MultiPointToSinglePointIntentCompiler.java
@@ -122,6 +122,7 @@
                 .filteredEgressPoints(ImmutableSet.of(intent.filteredEgressPoint()))
                 .priority(intent.priority())
                 .constraints(intent.constraints())
+                .resourceGroup(intent.resourceGroup())
                 .build();
 
         return Collections.singletonList(result);
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
index a2c26dd..0b0569a 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
@@ -88,7 +88,9 @@
                                                    intent.key(),
                                                    rules,
                                                    intent.resources(),
-                                                   intent.type()));
+                                                   intent.type(),
+                                                   intent.resourceGroup()
+        ));
     }
 
     @Override
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentFlowObjectiveCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentFlowObjectiveCompiler.java
index 521d6fc..7c466285 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentFlowObjectiveCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentFlowObjectiveCompiler.java
@@ -93,7 +93,9 @@
                                                         intent.key(),
                                                         devices,
                                                         objectives,
-                                                        intent.resources()));
+                                                        intent.resources(),
+                                                        intent.resourceGroup()
+        ));
     }
 
     @Override
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
index c3fc348..94fe6ed 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PointToPointIntentCompiler.java
@@ -259,7 +259,8 @@
                                                          intent.key(),
                                                          createFailoverFlowRules(intent),
                                                          asList(ingressPoint.deviceId()),
-                                                         PathIntent.ProtectionType.FAILOVER);
+                                                         PathIntent.ProtectionType.FAILOVER,
+                                                         intent.resourceGroup());
             intentList.add(frIntent);
         } else {
             updateFailoverGroup(intent, links);
@@ -320,6 +321,7 @@
                 .constraints(intent.constraints())
                 .priority(intent.priority())
                 .setType(type)
+                .resourceGroup(intent.resourceGroup())
                 .build();
     }
 
@@ -353,6 +355,7 @@
                 .constraints(intent.constraints())
                 .priority(intent.priority())
                 .cost(cost)
+                .resourceGroup(intent.resourceGroup())
                 .build();
     }
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
index a3f7c49..504e4f3 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/SinglePointToMultiPointIntentCompiler.java
@@ -101,6 +101,7 @@
                 .priority(intent.priority())
                 .applyTreatmentOnEgress(true)
                 .constraints(intent.constraints())
+                .resourceGroup(intent.resourceGroup())
                 .build();
 
         return Collections.singletonList(result);
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
index 6deba8f..862a845 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/TwoWayP2PIntentCompiler.java
@@ -54,6 +54,7 @@
                         .egressPoint(intent.two())
                         .constraints(intent.constraints())
                         .priority(intent.priority())
+                        .resourceGroup(intent.resourceGroup())
                         .build(),
                 PointToPointIntent.builder()
                         .appId(intent.appId())
@@ -64,6 +65,7 @@
                         .egressPoint(intent.one())
                         .constraints(intent.constraints())
                         .priority(intent.priority())
+                        .resourceGroup(intent.resourceGroup())
                         .build());
     }
 }
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
index 5eac0d4..2222b50 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
@@ -180,6 +180,7 @@
                 .constraints(intent.constraints())
                 .selector(intent.selector())
                 .treatment(intent.treatment())
+                .resourceGroup(intent.resourceGroup())
                 .build();
         log.debug("Submitting physical intent: " + physicalIntent);
         intentService.submit(physicalIntent);