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:
 | 
			
		||||
                info = part['plumbing_info']
 | 
			
		||||
                if not info:
 | 
			
		||||
                    return
 | 
			
		||||
                    continue
 | 
			
		||||
                part_context = part['context']
 | 
			
		||||
                # Management PT can be created immediately
 | 
			
		||||
                self._create_service_target(
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
import mock
 | 
			
		||||
from neutron.common import config  # noqa
 | 
			
		||||
from neutron import context as n_context
 | 
			
		||||
from neutron.plugins.common import constants as pconst
 | 
			
		||||
from oslo_config import cfg
 | 
			
		||||
 | 
			
		||||
from gbpservice.neutron.services.servicechain.plugins.ncp import model
 | 
			
		||||
@@ -87,6 +88,38 @@ class TrafficStitchingPlumberTestCase(base.NodeCompositionPluginTestCase):
 | 
			
		||||
            provider['id'])['policy_target_group']
 | 
			
		||||
        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):
 | 
			
		||||
        self.driver.get_plumbing_info.return_value = {
 | 
			
		||||
            'provider': [{}], 'consumer': [{}],
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user