neutron-vpnaas/neutron_vpnaas/services/vpn/vyatta_vpn_service.py
Paul Michali f1a50db9d9 VPNaaS: Refactoring to use callback mechanism
This is part 2 of the refactoering that goes along with the changes
in Neutron from review 164466. For this to run, it depends on that
patch.

The change does several things. First, it uses the new callback
mechanism. Note: This mechanism doesn't currently support defining
cass methods as callbacks, so standalone methods are used.

Second, it attempts to remove the need (as much as possible) for
the device drivers to be accepting the VpnService object in __init__().
The idea is to totally remove the argument. However, the Vyatta driver,
as currently implemented, needs it. Hopefully a follow-up can remove
this arg, and instead, will just pass down a config object, so that
tests can override config settings. This also fixes naming of places
that had agent, which are really using vpn_service.

Third, the AdvancedService ABC is removed as a base class for the
VPNService class. Without the L3 agent being saved, and not using
the L3 agent config, the class is not needed.

After this commit, the final step will be to remove the event observer
callback mechanism and AdvancedService class from neutron (once FWaaS
is updated too).

Change-Id: If5040a827a6903cc7cb5e59cdb7fb95f61b13d47
Partial-Bug: #1433552
Depends-On: If134947957fd671aa99a0b2d2b37f7ec65e37766
2015-04-03 14:14:55 +00:00

44 lines
1.4 KiB
Python

# Copyright 2015 Brocade Communications System, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from neutron_vpnaas.services.vpn import vpn_service
class VyattaVPNService(vpn_service.VPNService):
"""Vyatta VPN Service handler."""
def __init__(self, l3_agent):
"""Creates a Vyatta VPN Service instance.
NOTE: Directly accessing l3_agent here is an interim solution
until we move to have a router object given down to device drivers
to access router related methods
"""
super(VyattaVPNService, self).__init__(l3_agent)
self.l3_agent = l3_agent
def get_router_client(self, router_id):
"""
Get Router RESTapi client
"""
return self.l3_agent.get_router_client(router_id)
def get_router(self, router_id):
"""
Get Router Object
"""
return self.l3_agent.get_router(router_id)