diff --git a/neutronclient/osc/v2/networking_bgpvpn/resource_association.py b/neutronclient/osc/v2/networking_bgpvpn/resource_association.py
index f5a0804dc..925ee517a 100644
--- a/neutronclient/osc/v2/networking_bgpvpn/resource_association.py
+++ b/neutronclient/osc/v2/networking_bgpvpn/resource_association.py
@@ -24,6 +24,7 @@ from osc_lib.utils import columns as column_util
 
 from neutronclient._i18n import _
 from neutronclient.osc import utils as nc_osc_utils
+from neutronclient.osc.v2.networking_bgpvpn import constants
 
 LOG = logging.getLogger(__name__)
 
@@ -56,8 +57,6 @@ class CreateBgpvpnResAssoc(command.ShowOne):
 
     def take_action(self, parsed_args):
         client = self.app.client_manager.network
-        create_method = getattr(
-            client, 'create_bgpvpn_%s_association' % self._assoc_res_name)
         bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn)
         find_res_method = getattr(
             client, 'find_%s' % self._assoc_res_name)
@@ -76,7 +75,14 @@ class CreateBgpvpnResAssoc(command.ShowOne):
             body.update(
                 arg2body(bgpvpn['id'], parsed_args))
 
-        obj = create_method(bgpvpn['id'], **body)
+        if self._assoc_res_name == constants.NETWORK_ASSOC:
+            obj = client.create_bgpvpn_network_association(
+                bgpvpn['id'], **body)
+        elif self._assoc_res_name == constants.PORT_ASSOCS:
+            obj = client.create_bgpvpn_port_association(bgpvpn['id'], **body)
+        else:
+            obj = client.create_bgpvpn_router_association(
+                bgpvpn['id'], **body)
         transform = getattr(self, '_transform_resource', None)
         if callable(transform):
             transform(obj)
@@ -113,14 +119,19 @@ class SetBgpvpnResAssoc(command.Command):
 
     def take_action(self, parsed_args):
         client = self.app.client_manager.network
-        update_method = getattr(
-            client, 'update_bgpvpn_%s_association' % self._assoc_res_name)
         bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn)
         arg2body = getattr(self, '_args2body', None)
         if callable(arg2body):
             body = arg2body(bgpvpn['id'], parsed_args)
-            update_method(bgpvpn['id'], parsed_args.resource_association_id,
-                          **body)
+            if self._assoc_res_name == constants.NETWORK_ASSOC:
+                client.update_bgpvpn_network_association(
+                    bgpvpn['id'], parsed_args.resource_association_id, **body)
+            elif self._assoc_res_name == constants.PORT_ASSOCS:
+                client.update_bgpvpn_port_association(
+                    bgpvpn['id'], parsed_args.resource_association_id, **body)
+            else:
+                client.update_bgpvpn_router_association(
+                    bgpvpn['id'], parsed_args.resource_association_id, **body)
 
 
 class UnsetBgpvpnResAssoc(SetBgpvpnResAssoc):
@@ -150,13 +161,16 @@ class DeleteBgpvpnResAssoc(command.Command):
 
     def take_action(self, parsed_args):
         client = self.app.client_manager.network
-        delete_method = getattr(
-            client, 'delete_bgpvpn_%s_association' % self._assoc_res_name)
         bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn)
         fails = 0
         for id in parsed_args.resource_association_ids:
             try:
-                delete_method(bgpvpn['id'], id)
+                if self._assoc_res_name == constants.NETWORK_ASSOC:
+                    client.delete_bgpvpn_network_association(bgpvpn['id'], id)
+                elif self._assoc_res_name == constants.PORT_ASSOCS:
+                    client.delete_bgpvpn_port_association(bgpvpn['id'], id)
+                else:
+                    client.delete_bgpvpn_router_association(bgpvpn['id'], id)
                 LOG.warning(
                     "%(assoc_res_name)s association %(id)s deleted",
                     {'assoc_res_name': self._assoc_res_name.capitalize(),
@@ -203,14 +217,19 @@ class ListBgpvpnResAssoc(command.Lister):
 
     def take_action(self, parsed_args):
         client = self.app.client_manager.network
-        list_method = getattr(client,
-                              'bgpvpn_%s_associations' % self._assoc_res_name)
         bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn)
         params = {}
         if parsed_args.property:
             params.update(parsed_args.property)
-        objs = list_method(bgpvpn['id'],
-                           retrieve_all=True, **params)
+        if self._assoc_res_name == constants.NETWORK_ASSOC:
+            objs = client.bgpvpn_network_associations(
+                bgpvpn['id'], retrieve_all=True, **params)
+        elif self._assoc_res_name == constants.PORT_ASSOCS:
+            objs = client.bgpvpn_port_associations(
+                bgpvpn['id'], retrieve_all=True, **params)
+        else:
+            objs = client.bgpvpn_router_associations(
+                bgpvpn['id'], retrieve_all=True, **params)
         transform = getattr(self, '_transform_resource', None)
         transformed_objs = []
         if callable(transform):
@@ -245,11 +264,16 @@ class ShowBgpvpnResAssoc(command.ShowOne):
 
     def take_action(self, parsed_args):
         client = self.app.client_manager.network
-        show_method = getattr(
-            client, 'get_bgpvpn_%s_association' % self._assoc_res_name)
         bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn)
-        obj = show_method(bgpvpn['id'],
-                          parsed_args.resource_association_id)
+        if self._assoc_res_name == constants.NETWORK_ASSOC:
+            obj = client.get_bgpvpn_network_association(
+                bgpvpn['id'], parsed_args.resource_association_id)
+        elif self._assoc_res_name == constants.PORT_ASSOCS:
+            obj = client.get_bgpvpn_port_association(
+                bgpvpn['id'], parsed_args.resource_association_id)
+        else:
+            obj = client.get_bgpvpn_router_association(
+                bgpvpn['id'], parsed_args.resource_association_id)
         transform = getattr(self, '_transform_resource', None)
         if callable(transform):
             transform(obj)
diff --git a/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_resource_association.py b/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_resource_association.py
index 1bdca4db5..c5c478ab4 100644
--- a/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_resource_association.py
+++ b/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_resource_association.py
@@ -65,7 +65,7 @@ class TestCreateResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_one_resource()
         fake_res_assoc = fakes.create_one_resource_association(
             fake_res)
-        self.networkclient.create_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.create_bgpvpn_router_association = mock.Mock(
             return_value=fake_res_assoc)
         self.networkclient.find_bgpvpn_fake_resource_association = mock.Mock(
             side_effect=lambda name_or_id: {'id': name_or_id})
@@ -89,7 +89,7 @@ class TestCreateResAssoc(fakes.TestNeutronClientBgpvpn):
             'tenant_id': 'fake_project_id'
         }
 
-        self.networkclient.create_bgpvpn_fake_resource_association.\
+        self.networkclient.create_bgpvpn_router_association.\
             assert_called_once_with(
                 fake_bgpvpn['id'],
                 **fake_res_assoc_call)
@@ -107,7 +107,7 @@ class TestSetResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_one_resource()
         fake_res_assoc = fakes.create_one_resource_association(
             fake_res)
-        self.networkclient.update_bgpvpn_fake_resource_assoc = mock.Mock(
+        self.networkclient.update_bgpvpn_router_association = mock.Mock(
             return_value={fakes.BgpvpnFakeAssoc._resource: fake_res_assoc})
         arglist = [
             fake_res_assoc['id'],
@@ -122,7 +122,7 @@ class TestSetResAssoc(fakes.TestNeutronClientBgpvpn):
 
         result = self.cmd.take_action(parsed_args)
 
-        self.networkclient.update_bgpvpn_fake_resource_assoc.\
+        self.networkclient.update_bgpvpn_router_association.\
             assert_not_called()
         self.assertIsNone(result)
 
@@ -139,7 +139,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_one_resource()
         fake_res_assoc = fakes.create_one_resource_association(
             fake_res)
-        self.networkclient.delete_bgpvpn_fake_resource_association = \
+        self.networkclient.delete_bgpvpn_router_association = \
             mock.Mock()
         arglist = [
             fake_res_assoc['id'],
@@ -154,7 +154,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
 
         result = self.cmd.take_action(parsed_args)
 
-        self.networkclient.delete_bgpvpn_fake_resource_association.\
+        self.networkclient.delete_bgpvpn_router_association.\
             assert_called_once_with(fake_bgpvpn['id'], fake_res_assoc['id'])
         self.assertIsNone(result)
 
@@ -167,7 +167,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res_assoc_ids = [
             fake_res_assoc['id'] for fake_res_assoc in fake_res_assocs
         ]
-        self.networkclient.delete_bgpvpn_fake_resource_association = \
+        self.networkclient.delete_bgpvpn_router_association = \
             mock.Mock()
         arglist = \
             fake_res_assoc_ids + [
@@ -182,7 +182,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
 
         result = self.cmd.take_action(parsed_args)
 
-        self.networkclient.delete_bgpvpn_fake_resource_association.\
+        self.networkclient.delete_bgpvpn_router_association.\
             assert_has_calls([
                 mock.call(
                     fake_bgpvpn['id'], id) for id in fake_res_assoc_ids])
@@ -201,7 +201,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
         def raise_unknonw_resource(resource_path, name_or_id):
             if str(count - 2) in name_or_id:
                 raise Exception()
-        self.networkclient.delete_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.delete_bgpvpn_router_association = mock.Mock(
             side_effect=raise_unknonw_resource)
         arglist = \
             fake_res_assoc_ids + [
@@ -217,7 +217,7 @@ class TestDeleteResAssoc(fakes.TestNeutronClientBgpvpn):
         self.assertRaises(exceptions.CommandError, self.cmd.take_action,
                           parsed_args)
 
-        self.networkclient.delete_bgpvpn_fake_resource_association.\
+        self.networkclient.delete_bgpvpn_router_association.\
             assert_has_calls([
                 mock.call(fake_bgpvpn['id'], id) for id in fake_res_assoc_ids]
             )
@@ -236,7 +236,7 @@ class TestListResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_resources(count=count)
         fake_res_assocs = fakes.create_resource_associations(
             fake_res)
-        self.networkclient.bgpvpn_fake_resource_associations = mock.Mock(
+        self.networkclient.bgpvpn_router_associations = mock.Mock(
             return_value=fake_res_assocs)
         arglist = [
             fake_bgpvpn['id'],
@@ -249,7 +249,7 @@ class TestListResAssoc(fakes.TestNeutronClientBgpvpn):
 
         headers, data = self.cmd.take_action(parsed_args)
 
-        self.networkclient.bgpvpn_fake_resource_associations.\
+        self.networkclient.bgpvpn_router_associations.\
             assert_called_once_with(fake_bgpvpn['id'], retrieve_all=True)
         self.assertEqual(headers, list(headers_short))
         self.assertEqual(
@@ -263,7 +263,7 @@ class TestListResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_resources(count=count)
         fake_res_assocs = fakes.create_resource_associations(
             fake_res)
-        self.networkclient.bgpvpn_fake_resource_associations = mock.Mock(
+        self.networkclient.bgpvpn_router_associations = mock.Mock(
             return_value=fake_res_assocs)
         arglist = [
             '--long',
@@ -278,7 +278,7 @@ class TestListResAssoc(fakes.TestNeutronClientBgpvpn):
 
         headers, data = self.cmd.take_action(parsed_args)
 
-        self.networkclient.bgpvpn_fake_resource_associations.\
+        self.networkclient.bgpvpn_router_associations.\
             assert_called_once_with(fake_bgpvpn['id'], retrieve_all=True)
         self.assertEqual(headers, list(headers_long))
         self.assertEqual(
@@ -299,7 +299,7 @@ class TestShowResAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res = fakes.create_one_resource()
         fake_res_assoc = fakes.create_one_resource_association(
             fake_res)
-        self.networkclient.get_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.get_bgpvpn_router_association = mock.Mock(
             return_value=fake_res_assoc)
         arglist = [
             fake_res_assoc['id'],
@@ -314,7 +314,7 @@ class TestShowResAssoc(fakes.TestNeutronClientBgpvpn):
 
         columns, data = self.cmd.take_action(parsed_args)
 
-        self.networkclient.get_bgpvpn_fake_resource_association.\
+        self.networkclient.get_bgpvpn_router_association.\
             assert_called_once_with(fake_bgpvpn['id'], fake_res_assoc['id'])
         self.assertEqual(sorted_columns, columns)
         self.assertEqual(data, _get_data(fake_res_assoc))
diff --git a/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_router_association.py b/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_router_association.py
index 5adf77ca3..71c174288 100644
--- a/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_router_association.py
+++ b/neutronclient/tests/unit/osc/v2/networking_bgpvpn/test_router_association.py
@@ -101,17 +101,17 @@ class TestCreateRouterAssoc(fakes.TestNeutronClientBgpvpn):
                 fake_res_assoc_call[key] = value
         fake_res_assoc_call.pop('bgpvpn')
 
-        self.networkclient.create_bgpvpn_fake_resource_association.\
+        self.networkclient.create_bgpvpn_router_association.\
             assert_called_once_with(
                 self.fake_bgpvpn['id'],
                 **fake_res_assoc_call)
         return cols, data
 
-    def test_create_router_associationx(self):
+    def test_create_router_association(self):
         fake_res_assoc = fakes.create_one_resource_association(
             self.fake_router)
 
-        self.networkclient.create_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.create_bgpvpn_router_association = mock.Mock(
             return_value={
                 fakes.BgpvpnFakeRouterAssoc._resource: fake_res_assoc,
                 'advertise_extra_routes': True})
@@ -129,7 +129,7 @@ class TestCreateRouterAssoc(fakes.TestNeutronClientBgpvpn):
             self.fake_router,
             {'advertise_extra_routes': True})
 
-        self.networkclient.create_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.create_bgpvpn_router_association = mock.Mock(
             return_value=fake_res_assoc)
 
         arglist = self._build_args('--advertise_extra_routes')
@@ -145,7 +145,7 @@ class TestCreateRouterAssoc(fakes.TestNeutronClientBgpvpn):
             self.fake_router,
             {'advertise_extra_routes': False})
 
-        self.networkclient.create_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.create_bgpvpn_router_association = mock.Mock(
             return_value=fake_res_assoc)
 
         arglist = self._build_args('--no-advertise_extra_routes')
@@ -209,7 +209,7 @@ class TestSetRouterAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res_assoc = fakes.create_one_resource_association(
             self.fake_router,
             {'advertise_extra_routes': True})
-        self.networkclient.update_bgpvpn_fake_resource_association = \
+        self.networkclient.update_bgpvpn_router_association = \
             mock.Mock()
 
         arglist = self._build_args(
@@ -223,7 +223,7 @@ class TestSetRouterAssoc(fakes.TestNeutronClientBgpvpn):
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
         result = self.cmd.take_action(parsed_args)
 
-        self.networkclient.update_bgpvpn_fake_resource_association.\
+        self.networkclient.update_bgpvpn_router_association.\
             assert_called_once_with(
                 self.fake_bgpvpn['id'],
                 fake_res_assoc['id'],
@@ -235,7 +235,7 @@ class TestSetRouterAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res_assoc = fakes.create_one_resource_association(
             self.fake_router,
             {'advertise_extra_routes': False})
-        self.networkclient.update_bgpvpn_fake_resource_association = \
+        self.networkclient.update_bgpvpn_router_association = \
             mock.Mock()
 
         arglist = self._build_args(
@@ -249,7 +249,7 @@ class TestSetRouterAssoc(fakes.TestNeutronClientBgpvpn):
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
         result = self.cmd.take_action(parsed_args)
 
-        self.networkclient.update_bgpvpn_fake_resource_association.\
+        self.networkclient.update_bgpvpn_router_association.\
             assert_called_once_with(
                 self.fake_bgpvpn['id'],
                 fake_res_assoc['id'],
@@ -271,7 +271,7 @@ class TestShowRouterAssoc(fakes.TestNeutronClientBgpvpn):
         fake_res_assoc = fakes.create_one_resource_association(
             fake_res,
             {'advertise_extra_routes': True})
-        self.networkclient.get_bgpvpn_fake_resource_association = mock.Mock(
+        self.networkclient.get_bgpvpn_router_association = mock.Mock(
             return_value=fake_res_assoc)
         arglist = [
             fake_res_assoc['id'],
@@ -286,7 +286,7 @@ class TestShowRouterAssoc(fakes.TestNeutronClientBgpvpn):
 
         cols, data = self.cmd.take_action(parsed_args)
 
-        self.networkclient.get_bgpvpn_fake_resource_association.\
+        self.networkclient.get_bgpvpn_router_association.\
             assert_called_once_with(fake_bgpvpn['id'], fake_res_assoc['id'])
         self.assertEqual(sorted_columns, cols)
         self.assertEqual(data, _get_data(fake_res_assoc))