Fix for service target creation in chain
Fixing issue in traffic stitching plumber where if plumbing info is not provided, it is not creating service targets for remaining nodes. Closes-Bug: 1598824 Change-Id: I3026790a380f24aa9e810f32eadb2eba8e3b9334 (cherry picked from commitab6862783a) (cherry picked from commitc982511bcd)
This commit is contained in:
committed by
Hemanth Ravi
parent
7e9beb4be0
commit
c13f3fb33b
@@ -73,7 +73,7 @@ class TrafficStitchingPlumber(plumber_base.NodePlumberBase):
|
|||||||
for part in deployment:
|
for part in deployment:
|
||||||
info = part['plumbing_info']
|
info = part['plumbing_info']
|
||||||
if not info:
|
if not info:
|
||||||
return
|
continue
|
||||||
part_context = part['context']
|
part_context = part['context']
|
||||||
# Management PT can be created immediately
|
# Management PT can be created immediately
|
||||||
self._create_service_target(
|
self._create_service_target(
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
import mock
|
import mock
|
||||||
from neutron.common import config # noqa
|
from neutron.common import config # noqa
|
||||||
from neutron import context as n_context
|
from neutron import context as n_context
|
||||||
|
from neutron.plugins.common import constants as pconst
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
from gbpservice.neutron.services.servicechain.plugins.ncp import model
|
from gbpservice.neutron.services.servicechain.plugins.ncp import model
|
||||||
@@ -87,6 +88,38 @@ class TrafficStitchingPlumberTestCase(base.NodeCompositionPluginTestCase):
|
|||||||
provider['id'])['policy_target_group']
|
provider['id'])['policy_target_group']
|
||||||
self.assertIsNone(provider['proxy_group_id'])
|
self.assertIsNone(provider['proxy_group_id'])
|
||||||
|
|
||||||
|
def get_plumbing_info_base(self, context):
|
||||||
|
service_type = context.current_profile['service_type']
|
||||||
|
plumbing_request = {'management': [], 'provider': [{}],
|
||||||
|
'consumer': [{}]}
|
||||||
|
|
||||||
|
if service_type in [pconst.FIREWALL]:
|
||||||
|
plumbing_request['plumbing_type'] = 'gateway'
|
||||||
|
else:
|
||||||
|
plumbing_request = {}
|
||||||
|
return plumbing_request
|
||||||
|
|
||||||
|
def test_get_service_targets_in_chain(self):
|
||||||
|
context = n_context.get_admin_context()
|
||||||
|
self.driver.get_plumbing_info = self.get_plumbing_info_base
|
||||||
|
lb_prof = self._create_service_profile(
|
||||||
|
service_type='LOADBALANCER',
|
||||||
|
vendor=self.SERVICE_PROFILE_VENDOR)['service_profile']
|
||||||
|
lb_node = self.create_servicechain_node(
|
||||||
|
service_profile_id=lb_prof['id'],
|
||||||
|
config=self.DEFAULT_LB_CONFIG)['servicechain_node']
|
||||||
|
fw_prof = self._create_service_profile(
|
||||||
|
service_type='FIREWALL',
|
||||||
|
vendor=self.SERVICE_PROFILE_VENDOR)['service_profile']
|
||||||
|
fw_node = self.create_servicechain_node(
|
||||||
|
service_profile_id=fw_prof['id'],
|
||||||
|
config='{}')['servicechain_node']
|
||||||
|
|
||||||
|
self._create_chain_with_nodes([fw_node['id'], lb_node['id']])
|
||||||
|
|
||||||
|
targets = model.get_service_targets(context.session)
|
||||||
|
self.assertEqual(2, len(targets))
|
||||||
|
|
||||||
def test_ptg_delete(self):
|
def test_ptg_delete(self):
|
||||||
self.driver.get_plumbing_info.return_value = {
|
self.driver.get_plumbing_info.return_value = {
|
||||||
'provider': [{}], 'consumer': [{}],
|
'provider': [{}], 'consumer': [{}],
|
||||||
|
|||||||
Reference in New Issue
Block a user