From f5d5f94a7a50c16e544cf708b965203eb40b1c85 Mon Sep 17 00:00:00 2001
From: Gary Kotton <gkotton@vmware.com>
Date: Thu, 4 Jan 2018 05:22:20 -0800
Subject: [PATCH] TVD: get_address_scopes and get_subnet_pools support

Ensure that each return the specific project type

Change-Id: I2f0ec6e512b63fc6832844bbbeb74af4f529a2b2
---
 vmware_nsx/plugins/nsx/plugin.py | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/vmware_nsx/plugins/nsx/plugin.py b/vmware_nsx/plugins/nsx/plugin.py
index 10c248e87f..b41744dc6b 100644
--- a/vmware_nsx/plugins/nsx/plugin.py
+++ b/vmware_nsx/plugins/nsx/plugin.py
@@ -778,3 +778,35 @@ class NsxTVDPlugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
         if hasattr(p, 'housekeeper'):
             p.housekeeper.run(context, name)
         return p.housekeeper.get(name)
+
+    def get_address_scopes(self, context, filters=None, fields=None,
+                           sorts=None, limit=None, marker=None,
+                           page_reverse=False):
+        # Read project plugin to filter relevant projects according to
+        # plugin
+        req_p = self._get_plugin_from_project(context, context.project_id)
+        address_scopes = super(NsxTVDPlugin, self).get_address_scopes(
+            context, filters=filters, fields=fields, sorts=sorts,
+            limit=limit, marker=marker, page_reverse=page_reverse)
+        for address_scope in address_scopes[:]:
+            p = self._get_plugin_from_project(context,
+                                              address_scope['tenant_id'])
+            if p != req_p:
+                address_scopes.remove(address_scope)
+        return address_scopes
+
+    def get_subnetpools(self, context, filters=None, fields=None,
+                        sorts=None, limit=None, marker=None,
+                        page_reverse=False):
+        # Read project plugin to filter relevant projects according to
+        # plugin
+        req_p = self._get_plugin_from_project(context, context.project_id)
+        pools = super(NsxTVDPlugin, self).get_subnetpools(
+            context, filters=filters, fields=fields, sorts=sorts,
+            limit=limit, marker=marker, page_reverse=page_reverse)
+        for pool in pools[:]:
+            p = self._get_plugin_from_project(context,
+                                              pool['tenant_id'])
+            if p != req_p:
+                pools.remove(pool)
+        return pools