|  | @@ -15,7 +15,7 @@ import abc
 | 
	
		
			
				|  |  |  import contextlib
 | 
	
		
			
				|  |  |  import functools
 | 
	
		
			
				|  |  |  import logging
 | 
	
		
			
				|  |  | -from typing import Optional
 | 
	
		
			
				|  |  | +from typing import Optional, List
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  # Workaround: `grpc` must be imported before `google.protobuf.json_format`,
 | 
	
		
			
				|  |  |  # to prevent "Segmentation fault". Ref https://github.com/grpc/grpc/issues/24897
 | 
	
	
		
			
				|  | @@ -112,9 +112,11 @@ class GcpApiManager:
 | 
	
		
			
				|  |  |      def networksecurity(self, version):
 | 
	
		
			
				|  |  |          api_name = 'networksecurity'
 | 
	
		
			
				|  |  |          if version == 'v1alpha1':
 | 
	
		
			
				|  |  | -            return self._build_from_discovery_v2(api_name,
 | 
	
		
			
				|  |  | -                                                 version,
 | 
	
		
			
				|  |  | -                                                 api_key=self.private_api_key)
 | 
	
		
			
				|  |  | +            return self._build_from_discovery_v2(
 | 
	
		
			
				|  |  | +                api_name,
 | 
	
		
			
				|  |  | +                version,
 | 
	
		
			
				|  |  | +                api_key=self.private_api_key,
 | 
	
		
			
				|  |  | +                visibility_labels=['NETWORKSECURITY_ALPHA'])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          raise NotImplementedError(f'Network Security {version} not supported')
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -122,9 +124,11 @@ class GcpApiManager:
 | 
	
		
			
				|  |  |      def networkservices(self, version):
 | 
	
		
			
				|  |  |          api_name = 'networkservices'
 | 
	
		
			
				|  |  |          if version == 'v1alpha1':
 | 
	
		
			
				|  |  | -            return self._build_from_discovery_v2(api_name,
 | 
	
		
			
				|  |  | -                                                 version,
 | 
	
		
			
				|  |  | -                                                 api_key=self.private_api_key)
 | 
	
		
			
				|  |  | +            return self._build_from_discovery_v2(
 | 
	
		
			
				|  |  | +                api_name,
 | 
	
		
			
				|  |  | +                version,
 | 
	
		
			
				|  |  | +                api_key=self.private_api_key,
 | 
	
		
			
				|  |  | +                visibility_labels=['NETWORKSERVICES_ALPHA'])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          raise NotImplementedError(f'Network Services {version} not supported')
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -143,13 +147,28 @@ class GcpApiManager:
 | 
	
		
			
				|  |  |          self._exit_stack.enter_context(api)
 | 
	
		
			
				|  |  |          return api
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def _build_from_discovery_v2(self, api_name, version, *, api_key=None):
 | 
	
		
			
				|  |  | -        key_arg = f'&key={api_key}' if api_key else ''
 | 
	
		
			
				|  |  | +    def _build_from_discovery_v2(self,
 | 
	
		
			
				|  |  | +                                 api_name,
 | 
	
		
			
				|  |  | +                                 version,
 | 
	
		
			
				|  |  | +                                 *,
 | 
	
		
			
				|  |  | +                                 api_key: Optional[str] = None,
 | 
	
		
			
				|  |  | +                                 visibility_labels: Optional[List] = None):
 | 
	
		
			
				|  |  | +        params = {}
 | 
	
		
			
				|  |  | +        if api_key:
 | 
	
		
			
				|  |  | +            params['key'] = api_key
 | 
	
		
			
				|  |  | +        if visibility_labels:
 | 
	
		
			
				|  |  | +            # Dash-separated list of labels.
 | 
	
		
			
				|  |  | +            params['labels'] = '_'.join(visibility_labels)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        params_str = ''
 | 
	
		
			
				|  |  | +        if params:
 | 
	
		
			
				|  |  | +            params_str = '&' + ('&'.join(f'{k}={v}' for k, v in params.items()))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          api = discovery.build(
 | 
	
		
			
				|  |  |              api_name,
 | 
	
		
			
				|  |  |              version,
 | 
	
		
			
				|  |  |              cache_discovery=False,
 | 
	
		
			
				|  |  | -            discoveryServiceUrl=f'{self.v2_discovery_uri}{key_arg}')
 | 
	
		
			
				|  |  | +            discoveryServiceUrl=f'{self.v2_discovery_uri}{params_str}')
 | 
	
		
			
				|  |  |          self._exit_stack.enter_context(api)
 | 
	
		
			
				|  |  |          return api
 | 
	
		
			
				|  |  |  
 |