def _CreateSubnetwork(self, messages, subnet_ref, network_ref, args): subnetwork = super(CreateBeta, self)._CreateSubnetwork( messages, subnet_ref, network_ref, args) if (args.enable_flow_logs is not None or args.logging_aggregation_interval is not None or args.logging_flow_sampling is not None or args.logging_metadata is not None): log_config = messages.SubnetworkLogConfig(enable=args.enable_flow_logs) if args.logging_aggregation_interval: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( messages).GetEnumForChoice(args.logging_aggregation_interval) if args.logging_flow_sampling is not None: log_config.flowSampling = args.logging_flow_sampling if args.logging_metadata: log_config.metadata = flags.GetLoggingMetadataArg( messages).GetEnumForChoice(args.logging_metadata) subnetwork.logConfig = log_config return subnetwork
def MakeSubnetworkUpdateRequest( client, subnet_ref, include_alpha_logging, enable_private_ip_google_access=None, add_secondary_ranges=None, remove_secondary_ranges=None, enable_flow_logs=None, aggregation_interval=None, flow_sampling=None, metadata=None, set_role_active=None, drain_timeout_seconds=None, enable_private_ipv6_access=None, private_ipv6_google_access_type=None, private_ipv6_google_access_service_accounts=None): """Make the appropriate update request for the args. Args: client: GCE API client subnet_ref: Reference to a subnetwork include_alpha_logging: Include alpha-specific logging args. enable_private_ip_google_access: Enable/disable access to Google Cloud APIs from this subnet for instances without a public ip address. add_secondary_ranges: List of secondary IP ranges to add to the subnetwork for use in IP aliasing. remove_secondary_ranges: List of secondary ranges to remove from the subnetwork. enable_flow_logs: Enable/disable flow logging for this subnet. aggregation_interval: The internal at which to aggregate flow logs. flow_sampling: The sampling rate for flow logging in this subnet. metadata: Whether metadata fields should be added reported flow logs. set_role_active: Updates the role of a BACKUP subnet to ACTIVE. drain_timeout_seconds: The maximum amount of time to drain connections from the active subnet to the backup subnet with set_role_active=True. enable_private_ipv6_access: Enable/disable private IPv6 access for the subnet. private_ipv6_google_access_type: The private IPv6 google access type for the VMs in this subnet. private_ipv6_google_access_service_accounts: The service accounts can be used to selectively turn on Private IPv6 Google Access only on the VMs primary service account matching the value. Returns: response, result of sending the update request for the subnetwork """ convert_to_enum = lambda x: x.replace('-', '_').upper() if enable_private_ip_google_access is not None: google_access = ( client.messages.SubnetworksSetPrivateIpGoogleAccessRequest()) google_access.privateIpGoogleAccess = enable_private_ip_google_access google_access_request = ( client.messages.ComputeSubnetworksSetPrivateIpGoogleAccessRequest( project=subnet_ref.project, region=subnet_ref.region, subnetwork=subnet_ref.Name(), subnetworksSetPrivateIpGoogleAccessRequest=google_access)) return client.MakeRequests([ (client.apitools_client.subnetworks, 'SetPrivateIpGoogleAccess', google_access_request) ]) elif add_secondary_ranges is not None: subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] for secondary_range in add_secondary_ranges: for range_name, ip_cidr_range in sorted( six.iteritems(secondary_range)): subnetwork.secondaryIpRanges.append( client.messages.SubnetworkSecondaryRange( rangeName=range_name, ipCidrRange=ip_cidr_range)) return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif remove_secondary_ranges is not None: subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] for name in remove_secondary_ranges[0]: if name not in [r.rangeName for r in subnetwork.secondaryIpRanges]: raise calliope_exceptions.UnknownArgumentException( 'remove-secondary-ranges', 'Subnetwork does not have a range {}, ' 'present ranges are {}.'.format( name, [r.rangeName for r in subnetwork.secondaryIpRanges])) subnetwork.secondaryIpRanges = [ r for r in subnetwork.secondaryIpRanges if r.rangeName not in remove_secondary_ranges[0] ] cleared_fields = [] if not subnetwork.secondaryIpRanges: cleared_fields.append('secondaryIpRanges') with client.apitools_client.IncludeFields(cleared_fields): return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif (enable_flow_logs is not None or aggregation_interval is not None or flow_sampling is not None or metadata is not None): subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint if include_alpha_logging: log_config = client.messages.SubnetworkLogConfig( enable=enable_flow_logs) if aggregation_interval is not None: log_config.aggregationInterval = ( flags.GetLoggingAggregationIntervalArgAlpha( client.messages).GetEnumForChoice(aggregation_interval) ) if flow_sampling is not None: log_config.flowSampling = flow_sampling if metadata is not None: log_config.metadata = flags.GetLoggingMetadataArgAlpha( client.messages).GetEnumForChoice(metadata) subnetwork.logConfig = log_config else: log_config = client.messages.SubnetworkLogConfig( enable=enable_flow_logs) if aggregation_interval is not None: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( client.messages).GetEnumForChoice(aggregation_interval) if flow_sampling is not None: log_config.flowSampling = flow_sampling if metadata is not None: log_config.metadata = flags.GetLoggingMetadataArg( client.messages).GetEnumForChoice(metadata) subnetwork.logConfig = log_config return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif (private_ipv6_google_access_type is not None or private_ipv6_google_access_service_accounts is not None): subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] cleared_fields = [] if private_ipv6_google_access_type is not None: subnetwork.privateIpv6GoogleAccess = ( client.messages.Subnetwork. PrivateIpv6GoogleAccessValueValuesEnum( ConvertPrivateIpv6GoogleAccess( convert_to_enum(private_ipv6_google_access_type)))) if private_ipv6_google_access_service_accounts is not None: subnetwork.privateIpv6GoogleAccessServiceAccounts = ( private_ipv6_google_access_service_accounts) if not private_ipv6_google_access_service_accounts: cleared_fields.append('privateIpv6GoogleAccessServiceAccounts') with client.apitools_client.IncludeFields(cleared_fields): return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif enable_private_ipv6_access is not None: subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.enablePrivateV6Access = enable_private_ipv6_access subnetwork.privateIpv6GoogleAccess = None return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif set_role_active is not None: subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.role = client.messages.Subnetwork.RoleValueValuesEnum.ACTIVE patch_request = client.messages.ComputeSubnetworksPatchRequest( project=subnet_ref.project, subnetwork=subnet_ref.subnetwork, region=subnet_ref.region, subnetworkResource=subnetwork, drainTimeoutSeconds=drain_timeout_seconds) return client.MakeRequests([(client.apitools_client.subnetworks, 'Patch', patch_request)]) return client.MakeRequests([])
def _CreateSubnetwork(messages, subnet_ref, network_ref, args, include_alpha_logging, include_beta_logging, include_l7_internal_load_balancing, include_private_ipv6_access): """Create the subnet resource.""" subnetwork = messages.Subnetwork( name=subnet_ref.Name(), description=args.description, network=network_ref.SelfLink(), ipCidrRange=args.range, privateIpGoogleAccess=args.enable_private_ip_google_access, enableFlowLogs=args.enable_flow_logs) if include_alpha_logging: if (args.enable_flow_logs is not None or args.aggregation_interval is not None or args.flow_sampling is not None or args.metadata is not None): log_config = messages.SubnetworkLogConfig( enable=args.enable_flow_logs) if args.aggregation_interval: log_config.aggregationInterval = ( flags.GetLoggingAggregationIntervalArgAlpha( messages).GetEnumForChoice(args.aggregation_interval)) if args.flow_sampling is not None: log_config.flowSampling = args.flow_sampling if args.metadata: log_config.metadata = flags.GetLoggingMetadataArgAlpha( messages).GetEnumForChoice(args.metadata) subnetwork.logConfig = log_config if getattr(args, 'role', None): subnetwork.role = messages.Subnetwork.RoleValueValuesEnum( args.role) elif include_beta_logging: if (args.enable_flow_logs is not None or args.logging_aggregation_interval is not None or args.logging_flow_sampling is not None or args.logging_metadata is not None): log_config = messages.SubnetworkLogConfig( enable=args.enable_flow_logs) if args.logging_aggregation_interval: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( messages).GetEnumForChoice( args.logging_aggregation_interval) if args.logging_flow_sampling is not None: log_config.flowSampling = args.logging_flow_sampling if args.logging_metadata: log_config.metadata = flags.GetLoggingMetadataArg( messages).GetEnumForChoice(args.logging_metadata) subnetwork.logConfig = log_config if include_l7_internal_load_balancing: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum. INTERNAL_HTTPS_LOAD_BALANCER): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if include_private_ipv6_access: if args.enable_private_ipv6_access is not None: subnetwork.enablePrivateV6Access = args.enable_private_ipv6_access if args.private_ipv6_google_access_type is not None: subnetwork.privateIpv6GoogleAccess = ( flags.GetPrivateIpv6GoogleAccessTypeFlagMapper( messages).GetEnumForChoice( args.private_ipv6_google_access_type)) return subnetwork
def _CreateSubnetwork(messages, subnet_ref, network_ref, args, include_alpha_logging, include_l7_internal_load_balancing, include_private_ipv6_access_alpha, include_private_ipv6_access_beta, include_aggregate_purpose): """Create the subnet resource.""" subnetwork = messages.Subnetwork( name=subnet_ref.Name(), description=args.description, network=network_ref.SelfLink(), ipCidrRange=args.range, privateIpGoogleAccess=args.enable_private_ip_google_access) if (args.enable_flow_logs is not None or args.logging_aggregation_interval is not None or args.logging_flow_sampling is not None or args.logging_metadata is not None or args.logging_filter_expr is not None or args.logging_metadata_fields is not None): log_config = messages.SubnetworkLogConfig(enable=args.enable_flow_logs) if args.logging_aggregation_interval: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( messages).GetEnumForChoice(args.logging_aggregation_interval) if args.logging_flow_sampling is not None: log_config.flowSampling = args.logging_flow_sampling if args.logging_metadata: log_config.metadata = flags.GetLoggingMetadataArg( messages).GetEnumForChoice(args.logging_metadata) if args.logging_filter_expr is not None: log_config.filterExpr = args.logging_filter_expr if args.logging_metadata_fields is not None: log_config.metadataFields = args.logging_metadata_fields subnetwork.logConfig = log_config if include_alpha_logging: if (args.enable_flow_logs is not None or args.aggregation_interval is not None or args.flow_sampling is not None or args.metadata is not None): log_config = (subnetwork.logConfig if subnetwork.logConfig is not None else messages.SubnetworkLogConfig( enable=args.enable_flow_logs)) if args.aggregation_interval: log_config.aggregationInterval = ( flags.GetLoggingAggregationIntervalArgDeprecated( messages).GetEnumForChoice(args.aggregation_interval)) if args.flow_sampling is not None: log_config.flowSampling = args.flow_sampling if args.metadata: log_config.metadata = flags.GetLoggingMetadataArgDeprecated( messages).GetEnumForChoice(args.metadata) if args.logging_filter_expr is not None: log_config.filterExpr = args.logging_filter_expr if args.logging_metadata_fields is not None: log_config.metadataFields = args.logging_metadata_fields subnetwork.logConfig = log_config if include_l7_internal_load_balancing: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum. INTERNAL_HTTPS_LOAD_BALANCER): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if getattr(args, 'role', None): subnetwork.role = messages.Subnetwork.RoleValueValuesEnum( args.role) # At present aggregate purpose is available only in alpha whereas # https_load_balancer is available in Beta. Given Aggregate Purpose Enum # is not available in Beta, the code duplication below is necessary. if include_aggregate_purpose: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum.AGGREGATE): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if include_private_ipv6_access_alpha: if args.enable_private_ipv6_access is not None: subnetwork.enablePrivateV6Access = args.enable_private_ipv6_access if args.private_ipv6_google_access_type is not None: subnetwork.privateIpv6GoogleAccess = ( flags.GetPrivateIpv6GoogleAccessTypeFlagMapperAlpha( messages).GetEnumForChoice( args.private_ipv6_google_access_type)) if args.private_ipv6_google_access_service_accounts is not None: subnetwork.privateIpv6GoogleAccessServiceAccounts = ( args.private_ipv6_google_access_service_accounts) elif include_private_ipv6_access_beta: if args.private_ipv6_google_access_type is not None: subnetwork.privateIpv6GoogleAccess = ( flags.GetPrivateIpv6GoogleAccessTypeFlagMapperBeta( messages).GetEnumForChoice( args.private_ipv6_google_access_type)) return subnetwork
def MakeSubnetworkUpdateRequest( client, subnet_ref, enable_private_ip_google_access=None, add_secondary_ranges=None, add_secondary_ranges_with_reserved_internal_range=None, remove_secondary_ranges=None, enable_flow_logs=None, aggregation_interval=None, flow_sampling=None, metadata=None, filter_expr=None, metadata_fields=None, set_new_purpose=None, set_role_active=None, drain_timeout_seconds=None, private_ipv6_google_access_type=None, stack_type=None, ipv6_access_type=None, ): """Make the appropriate update request for the args. Args: client: GCE API client subnet_ref: Reference to a subnetwork enable_private_ip_google_access: Enable/disable access to Google Cloud APIs from this subnet for instances without a public ip address. add_secondary_ranges: List of secondary IP ranges to add to the subnetwork for use in IP aliasing. add_secondary_ranges_with_reserved_internal_range: List of secondary IP ranges that are associated with InternalRange resources. remove_secondary_ranges: List of secondary ranges to remove from the subnetwork. enable_flow_logs: Enable/disable flow logging for this subnet. aggregation_interval: The internal at which to aggregate flow logs. flow_sampling: The sampling rate for flow logging in this subnet. metadata: Whether metadata fields should be added reported flow logs. filter_expr: custom CEL expression for filtering flow logs metadata_fields: custom metadata fields to be added to flow logs set_new_purpose: Update the purpose of the subnet. set_role_active: Updates the role of a BACKUP subnet to ACTIVE. drain_timeout_seconds: The maximum amount of time to drain connections from the active subnet to the backup subnet with set_role_active=True. private_ipv6_google_access_type: The private IPv6 google access type for the VMs in this subnet. stack_type: The stack type for this subnet. ipv6_access_type: The IPv6 access type for this subnet. Returns: response, result of sending the update request for the subnetwork """ convert_to_enum = lambda x: x.replace('-', '_').upper() if enable_private_ip_google_access is not None: google_access = ( client.messages.SubnetworksSetPrivateIpGoogleAccessRequest()) google_access.privateIpGoogleAccess = enable_private_ip_google_access google_access_request = ( client.messages.ComputeSubnetworksSetPrivateIpGoogleAccessRequest( project=subnet_ref.project, region=subnet_ref.region, subnetwork=subnet_ref.Name(), subnetworksSetPrivateIpGoogleAccessRequest=google_access)) return client.MakeRequests([ (client.apitools_client.subnetworks, 'SetPrivateIpGoogleAccess', google_access_request) ]) elif (add_secondary_ranges is not None or add_secondary_ranges_with_reserved_internal_range is not None): subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.secondaryIpRanges = original_subnetwork.secondaryIpRanges subnetwork.fingerprint = original_subnetwork.fingerprint subnetwork.secondaryIpRanges.extend( CreateSecondaryRanges( client, add_secondary_ranges, add_secondary_ranges_with_reserved_internal_range)) return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif remove_secondary_ranges is not None: subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.secondaryIpRanges = original_subnetwork.secondaryIpRanges subnetwork.fingerprint = original_subnetwork.fingerprint for name in remove_secondary_ranges[0]: if name not in [r.rangeName for r in subnetwork.secondaryIpRanges]: raise calliope_exceptions.UnknownArgumentException( 'remove-secondary-ranges', 'Subnetwork does not have a range {}, ' 'present ranges are {}.'.format( name, [r.rangeName for r in subnetwork.secondaryIpRanges])) subnetwork.secondaryIpRanges = [ r for r in original_subnetwork.secondaryIpRanges if r.rangeName not in remove_secondary_ranges[0] ] cleared_fields = [] if not subnetwork.secondaryIpRanges: cleared_fields.append('secondaryIpRanges') with client.apitools_client.IncludeFields(cleared_fields): return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif (enable_flow_logs is not None or aggregation_interval is not None or flow_sampling is not None or metadata is not None or filter_expr is not None or metadata_fields is not None): subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint log_config = client.messages.SubnetworkLogConfig( enable=enable_flow_logs) if aggregation_interval is not None: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( client.messages).GetEnumForChoice(aggregation_interval) if flow_sampling is not None: log_config.flowSampling = flow_sampling if metadata is not None: log_config.metadata = flags.GetLoggingMetadataArg( client.messages).GetEnumForChoice(metadata) if filter_expr is not None: log_config.filterExpr = filter_expr if metadata_fields is not None: log_config.metadataFields = metadata_fields subnetwork.logConfig = log_config return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif private_ipv6_google_access_type is not None: subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint subnetwork.privateIpv6GoogleAccess = ( client.messages.Subnetwork.PrivateIpv6GoogleAccessValueValuesEnum( ConvertPrivateIpv6GoogleAccess( convert_to_enum(private_ipv6_google_access_type)))) return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif set_new_purpose is not None: subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint subnetwork.purpose = client.messages.Subnetwork.PurposeValueValuesEnum( set_new_purpose) return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) elif set_role_active is not None: subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint subnetwork.role = client.messages.Subnetwork.RoleValueValuesEnum.ACTIVE patch_request = client.messages.ComputeSubnetworksPatchRequest( project=subnet_ref.project, subnetwork=subnet_ref.subnetwork, region=subnet_ref.region, subnetworkResource=subnetwork, drainTimeoutSeconds=drain_timeout_seconds) return client.MakeRequests([(client.apitools_client.subnetworks, 'Patch', patch_request)]) elif stack_type is not None: subnetwork = client.messages.Subnetwork() original_subnetwork = client.MakeRequests([ (client.apitools_client.subnetworks, 'Get', client.messages.ComputeSubnetworksGetRequest( **subnet_ref.AsDict())) ])[0] subnetwork.fingerprint = original_subnetwork.fingerprint subnetwork.stackType = ( client.messages.Subnetwork.StackTypeValueValuesEnum(stack_type)) if ipv6_access_type is not None: subnetwork.ipv6AccessType = ( client.messages.Subnetwork.Ipv6AccessTypeValueValuesEnum( ipv6_access_type)) return client.MakeRequests( [CreateSubnetworkPatchRequest(client, subnet_ref, subnetwork)]) return client.MakeRequests([])
def _CreateSubnetwork(messages, subnet_ref, network_ref, args, include_alpha_logging, include_l7_internal_load_balancing, include_global_managed_proxy, include_aggregate_purpose, include_private_service_connect, include_l2, include_reserved_internal_range): """Create the subnet resource.""" subnetwork = messages.Subnetwork( name=subnet_ref.Name(), description=args.description, network=network_ref.SelfLink(), privateIpGoogleAccess=args.enable_private_ip_google_access) if args.range: subnetwork.ipCidrRange = args.range if (args.enable_flow_logs is not None or args.logging_aggregation_interval is not None or args.logging_flow_sampling is not None or args.logging_metadata is not None or args.logging_filter_expr is not None or args.logging_metadata_fields is not None): log_config = messages.SubnetworkLogConfig(enable=args.enable_flow_logs) if args.logging_aggregation_interval: log_config.aggregationInterval = flags.GetLoggingAggregationIntervalArg( messages).GetEnumForChoice(args.logging_aggregation_interval) if args.logging_flow_sampling is not None: log_config.flowSampling = args.logging_flow_sampling if args.logging_metadata: log_config.metadata = flags.GetLoggingMetadataArg( messages).GetEnumForChoice(args.logging_metadata) if args.logging_filter_expr is not None: log_config.filterExpr = args.logging_filter_expr if args.logging_metadata_fields is not None: log_config.metadataFields = args.logging_metadata_fields subnetwork.logConfig = log_config if include_alpha_logging: if (args.enable_flow_logs is not None or args.aggregation_interval is not None or args.flow_sampling is not None or args.metadata is not None): log_config = ( subnetwork.logConfig if subnetwork.logConfig is not None else messages.SubnetworkLogConfig(enable=args.enable_flow_logs)) if args.aggregation_interval: log_config.aggregationInterval = ( flags.GetLoggingAggregationIntervalArgDeprecated( messages).GetEnumForChoice(args.aggregation_interval)) if args.flow_sampling is not None: log_config.flowSampling = args.flow_sampling if args.metadata: log_config.metadata = flags.GetLoggingMetadataArgDeprecated( messages).GetEnumForChoice(args.metadata) if args.logging_filter_expr is not None: log_config.filterExpr = args.logging_filter_expr if args.logging_metadata_fields is not None: log_config.metadataFields = args.logging_metadata_fields subnetwork.logConfig = log_config if include_l7_internal_load_balancing: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum .INTERNAL_HTTPS_LOAD_BALANCER or subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum.REGIONAL_MANAGED_PROXY or (include_global_managed_proxy and subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum.GLOBAL_MANAGED_PROXY)): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if getattr(args, 'role', None): subnetwork.role = messages.Subnetwork.RoleValueValuesEnum(args.role) # At present aggregate purpose is available only in alpha whereas # https_load_balancer is available in Beta. Given Aggregate Purpose Enum # is not available in Beta, the code duplication below is necessary. if include_aggregate_purpose: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum.AGGREGATE): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if include_private_service_connect: if args.purpose: subnetwork.purpose = messages.Subnetwork.PurposeValueValuesEnum( args.purpose) if (subnetwork.purpose == messages.Subnetwork.PurposeValueValuesEnum.PRIVATE_SERVICE_CONNECT): # Clear unsupported fields in the subnet resource subnetwork.privateIpGoogleAccess = None subnetwork.enableFlowLogs = None subnetwork.logConfig = None if args.private_ipv6_google_access_type is not None: subnetwork.privateIpv6GoogleAccess = ( flags.GetPrivateIpv6GoogleAccessTypeFlagMapper( messages).GetEnumForChoice(args.private_ipv6_google_access_type)) if args.stack_type: subnetwork.stackType = messages.Subnetwork.StackTypeValueValuesEnum( args.stack_type) if args.ipv6_access_type: subnetwork.ipv6AccessType = ( messages.Subnetwork.Ipv6AccessTypeValueValuesEnum( args.ipv6_access_type)) if include_l2 and args.enable_l2: subnetwork.enableL2 = True if args.vlan is not None: subnetwork.vlans.append(args.vlan) if include_reserved_internal_range: if args.reserved_internal_range: subnetwork.reservedInternalRange = args.reserved_internal_range return subnetwork