def Modify(self, client, resources, args, existing): """Modify Backend Service.""" replacement, cleared_fields = super(UpdateAlpha, self).Modify( client, resources, args, existing) if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) if args.no_custom_request_headers is not None: replacement.customRequestHeaders = [] if args.custom_request_header is not None: replacement.customRequestHeaders = args.custom_request_header backend_services_utils.ApplyCdnPolicyArgs( client, args, replacement, is_update=True, apply_signed_url_cache_max_age=True) backend_services_utils.ApplyFailoverPolicyArgs(client.messages, args, replacement) backend_services_utils.ApplyLogConfigArgs(client.messages, args, replacement) if not replacement.customRequestHeaders: cleared_fields.append('customRequestHeaders') return replacement, cleared_fields
def _CreateGlobalRequests(self, holder, args, backend_services_ref): """Returns a global backend service create request.""" if args.load_balancing_scheme == 'INTERNAL': raise exceptions.ToolException( 'Must specify --region for internal load balancer.') if (self._support_failover and (args.IsSpecified('connection_drain_on_failover') or args.IsSpecified('drop_traffic_if_unhealthy') or args.IsSpecified('failover_ratio'))): raise exceptions.InvalidArgumentException( '--global', 'cannot specify failover policies for global backend services.' ) backend_service = self._CreateBackendService(holder, args, backend_services_ref) client = holder.client if args.connection_draining_timeout is not None: backend_service.connectionDraining = ( client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout)) if args.enable_cdn: backend_service.enableCDN = args.enable_cdn backend_services_utils.ApplyCdnPolicyArgs( client, args, backend_service, is_update=False, apply_signed_url_cache_max_age=True) if args.session_affinity is not None: backend_service.sessionAffinity = ( client.messages.BackendService.SessionAffinityValueValuesEnum( args.session_affinity)) if args.affinity_cookie_ttl is not None: backend_service.affinityCookieTtlSec = args.affinity_cookie_ttl if args.custom_request_header is not None: backend_service.customRequestHeaders = args.custom_request_header self._ApplyIapArgs(client.messages, args.iap, backend_service) if args.load_balancing_scheme != 'EXTERNAL': backend_service.loadBalancingScheme = ( client.messages.BackendService. LoadBalancingSchemeValueValuesEnum(args.load_balancing_scheme)) backend_services_utils.ApplyLogConfigArgs( client.messages, args, backend_service, support_logging=self._support_logging) request = client.messages.ComputeBackendServicesInsertRequest( backendService=backend_service, project=backend_services_ref.project) return [(client.apitools_client.backendServices, 'Insert', request)]
def CreateGlobalRequests(self, holder, args, backend_services_ref): if args.load_balancing_scheme == 'INTERNAL': raise exceptions.ToolException( 'Must specify --region for internal load balancer.') backend_service = self._CreateBackendService(holder, args, backend_services_ref) client = holder.client if args.connection_draining_timeout is not None: backend_service.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) if args.session_affinity is not None: backend_service.sessionAffinity = ( client.messages.BackendService.SessionAffinityValueValuesEnum( args.session_affinity)) if args.session_affinity is not None: backend_service.affinityCookieTtlSec = args.affinity_cookie_ttl if args.IsSpecified('custom_request_header'): backend_service.customRequestHeaders = args.custom_request_header backend_services_utils.ApplyCdnPolicyArgs( client, args, backend_service, is_update=False, apply_signed_url_cache_max_age=True) if args.load_balancing_scheme != 'EXTERNAL': backend_service.loadBalancingScheme = ( client.messages.BackendService. LoadBalancingSchemeValueValuesEnum(args.load_balancing_scheme)) self._ApplyIapArgs(client.messages, args.iap, backend_service) backend_services_utils.ApplyLogConfigArgs(client.messages, args, backend_service) request = client.messages.ComputeBackendServicesInsertRequest( backendService=backend_service, project=backend_services_ref.project) return [(client.apitools_client.backendServices, 'Insert', request)]
def Modify(self, client, resources, args, existing): """Modify Backend Service.""" replacement, cleared_fields = super(UpdateBeta, self).Modify( client, resources, args, existing) if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) backend_services_utils.ApplyCdnPolicyArgs( client, args, replacement, is_update=True, apply_signed_url_cache_max_age=True) backend_services_utils.ApplyFailoverPolicyArgs(client.messages, args, replacement) backend_services_utils.ApplyLogConfigArgs(client.messages, args, replacement) return replacement, cleared_fields
def Modify(self, client, resources, args, existing): """Modify Backend Service.""" replacement = encoding.CopyProtoMessage(existing) if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) if args.no_custom_request_headers is not None: replacement.customRequestHeaders = [] if args.custom_request_header is not None: replacement.customRequestHeaders = args.custom_request_header if args.IsSpecified('description'): replacement.description = args.description health_checks = flags.GetHealthCheckUris(args, self, resources) if health_checks or args.IsSpecified('no_health_checks'): replacement.healthChecks = health_checks if args.timeout: replacement.timeoutSec = args.timeout if args.port_name: replacement.portName = args.port_name if args.protocol: replacement.protocol = ( client.messages.BackendService.ProtocolValueValuesEnum(args.protocol)) if args.enable_cdn is not None: replacement.enableCDN = args.enable_cdn if args.session_affinity is not None: replacement.sessionAffinity = ( client.messages.BackendService.SessionAffinityValueValuesEnum( args.session_affinity)) if args.affinity_cookie_ttl is not None: replacement.affinityCookieTtlSec = args.affinity_cookie_ttl if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) backend_services_utils.ApplyCdnPolicyArgs( client, args, replacement, is_update=True, apply_signed_url_cache_max_age=True) self._ApplyIapArgs(client, args.iap, existing, replacement) cleared_fields = [] if not replacement.customRequestHeaders: cleared_fields.append('customRequestHeaders') backend_services_utils.ApplyFailoverPolicyArgs( client.messages, args, replacement, support_failover=self._support_failover) backend_services_utils.ApplyLogConfigArgs( client.messages, args, replacement, support_logging=self._support_logging) return replacement, cleared_fields
def _CreateGlobalRequests(self, holder, args, backend_services_ref): """Returns a global backend service create request.""" if args.load_balancing_scheme == 'INTERNAL': raise exceptions.RequiredArgumentException( '--region', 'Must specify --region for internal load balancer.') if (self._support_failover and (args.IsSpecified('connection_drain_on_failover') or args.IsSpecified('drop_traffic_if_unhealthy') or args.IsSpecified('failover_ratio'))): raise exceptions.InvalidArgumentException( '--global', 'cannot specify failover policies for global backend services.') backend_service = self._CreateBackendService(holder, args, backend_services_ref) client = holder.client if args.connection_draining_timeout is not None: backend_service.connectionDraining = ( client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout)) if args.enable_cdn is not None: backend_service.enableCDN = args.enable_cdn backend_services_utils.ApplyCdnPolicyArgs( client, args, backend_service, is_update=False, apply_signed_url_cache_max_age=True) if (self._support_advanced_load_balancing and args.service_lb_policy is not None): backend_service.serviceLbPolicy = reference_utils.BuildServiceLbPolicyUrl( project_name=backend_services_ref.project, location='global', policy_name=args.service_lb_policy) if args.service_bindings is not None: backend_service.serviceBindings = [ reference_utils.BuildServiceBindingUrl(backend_services_ref.project, 'global', binding_name) for binding_name in args.service_bindings ] if self._support_dynamic_compression and args.compression_mode is not None: backend_service.compressionMode = ( client.messages.BackendService.CompressionModeValueValuesEnum( args.compression_mode)) if self._support_subsetting: backend_services_utils.ApplySubsettingArgs( client, args, backend_service, self._support_subsetting_subset_size) if args.session_affinity is not None: backend_service.sessionAffinity = ( client.messages.BackendService.SessionAffinityValueValuesEnum( args.session_affinity)) if args.affinity_cookie_ttl is not None: backend_service.affinityCookieTtlSec = args.affinity_cookie_ttl if args.custom_request_header is not None: backend_service.customRequestHeaders = args.custom_request_header if args.custom_response_header is not None: backend_service.customResponseHeaders = args.custom_response_header if (backend_service.cdnPolicy is not None and backend_service.cdnPolicy.cacheMode and args.enable_cdn is not False): # pylint: disable=g-bool-id-comparison backend_service.enableCDN = True if self._support_weighted_lb and args.locality_lb_policy is not None: backend_service.localityLbPolicy = ( client.messages.BackendService.LocalityLbPolicyValueValuesEnum( args.locality_lb_policy)) self._ApplyIapArgs(client.messages, args.iap, backend_service) if args.load_balancing_scheme != 'EXTERNAL': backend_service.loadBalancingScheme = ( client.messages.BackendService.LoadBalancingSchemeValueValuesEnum( args.load_balancing_scheme)) backend_services_utils.ApplyLogConfigArgs( client.messages, args, backend_service, support_logging=self._support_logging, support_tcp_ssl_logging=self._support_tcp_ssl_logging) request = client.messages.ComputeBackendServicesInsertRequest( backendService=backend_service, project=backend_services_ref.project) return [(client.apitools_client.backendServices, 'Insert', request)]
def Modify(self, client, resources, args, existing, backend_service_ref): """Modify Backend Service.""" replacement = encoding.CopyProtoMessage(existing) cleared_fields = [] if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) if args.no_custom_request_headers is not None: replacement.customRequestHeaders = [] if args.custom_request_header is not None: replacement.customRequestHeaders = args.custom_request_header if not replacement.customRequestHeaders: cleared_fields.append('customRequestHeaders') if args.custom_response_header is not None: replacement.customResponseHeaders = args.custom_response_header if args.no_custom_response_headers: replacement.customResponseHeaders = [] if not replacement.customResponseHeaders: cleared_fields.append('customResponseHeaders') if args.IsSpecified('description'): replacement.description = args.description health_checks = flags.GetHealthCheckUris(args, self, resources) if health_checks: replacement.healthChecks = health_checks if args.IsSpecified('no_health_checks'): replacement.healthChecks = [] cleared_fields.append('healthChecks') if args.timeout: replacement.timeoutSec = args.timeout if args.port_name: replacement.portName = args.port_name if args.protocol: replacement.protocol = ( client.messages.BackendService.ProtocolValueValuesEnum( args.protocol)) if args.enable_cdn is not None: replacement.enableCDN = args.enable_cdn elif not replacement.enableCDN and args.cache_mode: # TODO (b/209812994): Replace implicit config change with # warning that CDN is disabled and a prompt to enable it with # --enable-cdn log.warning( 'Setting a cache mode also enabled Cloud CDN, which was previously ' + 'disabled. If this was not intended, disable Cloud ' + 'CDN with `--no-enable-cdn`.') replacement.enableCDN = True if args.session_affinity is not None: replacement.sessionAffinity = ( client.messages.BackendService.SessionAffinityValueValuesEnum( args.session_affinity)) if args.affinity_cookie_ttl is not None: replacement.affinityCookieTtlSec = args.affinity_cookie_ttl if args.connection_draining_timeout is not None: replacement.connectionDraining = client.messages.ConnectionDraining( drainingTimeoutSec=args.connection_draining_timeout) if self._support_subsetting: backend_services_utils.ApplySubsettingArgs( client, args, replacement, self._support_subsetting_subset_size) if self._support_weighted_lb and args.locality_lb_policy is not None: replacement.localityLbPolicy = ( client.messages.BackendService.LocalityLbPolicyValueValuesEnum( args.locality_lb_policy)) backend_services_utils.ApplyCdnPolicyArgs( client, args, replacement, is_update=True, apply_signed_url_cache_max_age=True, cleared_fields=cleared_fields) backend_services_utils.ApplyConnectionTrackingPolicyArgs( client, args, replacement, support_strong_session_affinity=self. _support_strong_session_affinity) if self._support_dynamic_compression and args.compression_mode is not None: replacement.compressionMode = ( client.messages.BackendService.CompressionModeValueValuesEnum( args.compression_mode)) self._ApplyIapArgs(client, args.iap, existing, replacement) backend_services_utils.ApplyFailoverPolicyArgs( client.messages, args, replacement, support_failover=self._support_failover) backend_services_utils.ApplyLogConfigArgs( client.messages, args, replacement, support_logging=self._support_logging, support_tcp_ssl_logging=self._support_tcp_ssl_logging) if self._support_advanced_load_balancing: if args.service_lb_policy is not None: location = (backend_service_ref.region if backend_service_ref.Collection() == 'compute.regionBackendServices' else 'global') replacement.serviceLbPolicy = reference_utils.BuildServiceLbPolicyUrl( project_name=backend_service_ref.project, location=location, policy_name=args.service_lb_policy) if args.no_service_lb_policy is not None: replacement.serviceLbPolicy = None cleared_fields.append('serviceLbPolicy') if args.service_bindings is not None: replacement.serviceBindings = [ reference_utils.BuildServiceBindingUrl( backend_service_ref.project, 'global', binding_name) for binding_name in args.service_bindings ] if args.no_service_bindings is not None: replacement.serviceBindings = [] cleared_fields.append('serviceBindings') return replacement, cleared_fields