googlecloudlogcsm_impl

package
v0.55.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CSMClusterIdentifierTask = coretask.NewTask(
	googlecloudlogcsm_contract.CSMClusterIdentifierTaskID,
	[]taskid.UntypedTaskReference{googlecloudk8scommon_contract.NEGToBackendServiceInventoryTaskID.Ref()},
	func(ctx context.Context) ([]string, error) {
		inventory := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.NEGToBackendServiceInventoryTaskID.Ref())

		uniqueIds := make(map[string]struct{})

		for _, bsName := range inventory {
			if strings.HasPrefix(bsName, "gsmrsvd-") {

				parts := strings.Split(bsName, "-")
				if len(parts) >= 3 {
					uniqueIds[parts[1]] = struct{}{}
				}
			}
		}

		result := make([]string, 0, len(uniqueIds))
		for id := range uniqueIds {
			result = append(result, id)
		}
		return result, nil
	},
)

CSMClusterIdentifierTask extracts the unique cluster identifier(s) from BackendService names. CSM BackendService names follow the pattern: gsmrsvd-(cluster-identifier)-(neg-id).

CSMTrafficDirectorFieldSetReaderTask is a task that reads and parses field sets from CSM Traffic Director logs.

CSMTrafficDirectorLogGrouperTask is a task that groups CSM Traffic Director logs by their resource path.

CSMTrafficDirectorLogIngesterTask is a task that ingests CSM Traffic Director logs into the history builder.

View Source
var CSMTrafficDirectorLogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[*googlecloudcommon_contract.GCPOperationStateTracker](
	googlecloudlogcsm_contract.CSMTrafficDirectorLogToTimelineMapperTaskID,
	&csmTrafficDirectorLogToTimelineMapperSetting{},
	inspectioncore_contract.FeatureTaskLabel(
		"CSM Resource Audit Logs",
		"Gather audit logs related to TrafficDirector resources created by the TD based CSM. Map them into pseudo timelines with other Kubernetes logs.",
		enum.LogTypeCSMAccessLog,
		10100,
		false,
	),
)

LogToTimelineMapperTask is a task that maps CSM Traffic Director logs to resource timelines.

View Source
var InputCSMResponseFlagsTask = formtask.NewSetFormTaskBuilder(googlecloudlogcsm_contract.InputCSMResponseFlagsTaskID, priorityForCSMGroup+1000, "Envoy response flags").
	WithDefaultValueConstant([]string{"@any", "-OK"}, true).
	WithAllowAddAll(false).
	WithAllowRemoveAll(false).
	WithAllowCustomValue(true).
	WithDescription("Response flags used for filtering CSM access logs. Note '-' in response flags is corresponded to 'OK' in this form.").
	WithOptionsFunc(func(ctx context.Context, previousValues []string) ([]inspectionmetadata.SetParameterFormFieldOptionItem, error) {
		result := []inspectionmetadata.SetParameterFormFieldOptionItem{
			{ID: "@any", Description: "[Alias] Matches any response flag"},
		}
		ids := make([]string, 0, len(googlecloudlogcsm_contract.HumanReadableErrorMessage))
		for flag := range googlecloudlogcsm_contract.HumanReadableErrorMessage {
			ids = append(ids, string(flag))
		}
		sort.Strings(ids)
		for _, id := range ids {
			message := googlecloudlogcsm_contract.HumanReadableErrorMessage[googlecloudlogcsm_contract.ResponseFlag(id)]
			if id == "-" {
				id = "OK"
				message = "It's '-' in the response flag field because '-' means substracting operator in this form."
			}
			result = append(result, inspectionmetadata.SetParameterFormFieldOptionItem{ID: id, Description: message})
		}
		return result, nil
	}).
	WithValidator(func(ctx context.Context, value []string) (string, error) {
		strFilter := strings.Join(value, " ")
		result, err := gcpqueryutil.ParseSetFilter(strFilter, inputCSMAliasMap, true, true, true)
		if err != nil {
			return "", err
		}
		if result.ValidationError == "" {
			err = verifyResponseFlags(convertInputOnlyResponseFlagToActualFlag(result.Additives))
			if err != nil {
				return err.Error(), nil
			}
			err = verifyResponseFlags(convertInputOnlyResponseFlagToActualFlag(result.Subtractives))
			if err != nil {
				return err.Error(), nil
			}
		}
		return result.ValidationError, nil
	}).
	WithConverter(func(ctx context.Context, value []string) (*gcpqueryutil.SetFilterParseResult, error) {
		strFilter := strings.Join(value, " ")
		result, err := gcpqueryutil.ParseSetFilter(strFilter, inputCSMAliasMap, true, true, true)
		if err != nil {
			return nil, err
		}
		result.Additives = convertInputOnlyResponseFlagToActualFlag(result.Additives)
		result.Subtractives = convertInputOnlyResponseFlagToActualFlag(result.Subtractives)
		return result, nil
	}).
	Build()
View Source
var InputFleetProjectIDTask = formtask.NewTextFormTaskBuilder(googlecloudlogcsm_contract.InputFleetProjectIDTaskID, priorityForCSMGroup+500, "Fleet project ID").
	WithDependencies([]taskid.UntypedTaskReference{
		googlecloudlogcsm_contract.ClusterIdentityTaskID.Ref(),
	}).
	WithDescription("The project ID where the Fleet is hosted and CSM control plane logs are stored. Default is the cluster's project ID.").
	WithDefaultValueFunc(func(ctx context.Context, previousValues []string) (string, error) {
		if len(previousValues) > 0 {
			return previousValues[0], nil
		}
		cluster := coretask.GetTaskResult(ctx, googlecloudlogcsm_contract.ClusterIdentityTaskID.Ref())
		return cluster.ProjectID, nil
	}).
	Build()
View Source
var LogGrouperTask = inspectiontaskbase.NewLogGrouperTask(googlecloudlogcsm_contract.LogGrouperTaskID, googlecloudlogcsm_contract.FieldSetReaderTaskID.Ref(),
	func(ctx context.Context, l *log.Log) string {
		istioAccessLogFieldSet := log.MustGetFieldSet(l, &googlecloudlogcsm_contract.IstioAccessLogFieldSet{})
		return fmt.Sprintf("%s-%s", istioAccessLogFieldSet.ReporterPodNamespace, istioAccessLogFieldSet.ReporterPodName)
	},
)
View Source
var LogToTimelineMapperTask = inspectiontaskbase.NewLogToTimelineMapperTask[struct{}](googlecloudlogcsm_contract.LogToTimelineMapperTaskID, &csmAccessLogLogToTimelineMapperSetting{}, inspectioncore_contract.FeatureTaskLabel(
	"CSM Access Log",
	"Gather CSM access logs from Cloud Logging and associate them in client or server Pods on timelines",
	enum.LogTypeCSMAccessLog,
	10000,
	false,
))

Functions

func Register

func Register(registry coreinspection.InspectionTaskRegistry) error
graph TD
 subgraph "CSM Access Log"
   direction LR
   InputCSMResponseFlagsTask(Input CSM Response Flags)
   ListLogEntriesTask(List Log Entries)
   FieldSetReaderTask(Field Set Reader)
   LogIngesterTask(Log Serializer)
   LogGrouperTask(Log Grouper)
   LogToTimelineMapperTask(TimelineMapper)

   ListLogEntriesTask --> FieldSetReaderTask
   ListLogEntriesTask --> LogIngesterTask
   FieldSetReaderTask --> LogGrouperTask
   LogGrouperTask --> LogToTimelineMapperTask
   LogIngesterTask --> LogToTimelineMapperTask
   InputCSMResponseFlagsTask --> ListLogEntriesTask
 end

Register registers all googlecloudlogcsm inspection tasks to the registry.

Types

type CSMAccessLogListLogEntryTaskSetting

type CSMAccessLogListLogEntryTaskSetting struct{}

func (*CSMAccessLogListLogEntryTaskSetting) DefaultResourceNames

func (c *CSMAccessLogListLogEntryTaskSetting) DefaultResourceNames(ctx context.Context) ([]string, error)

DefaultResourceNames implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMAccessLogListLogEntryTaskSetting) Dependencies

Dependencies implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMAccessLogListLogEntryTaskSetting) Description

Description implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMAccessLogListLogEntryTaskSetting) LogFilters

LogFilters implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMAccessLogListLogEntryTaskSetting) TaskID

TaskID implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMAccessLogListLogEntryTaskSetting) TimePartitionCount

func (c *CSMAccessLogListLogEntryTaskSetting) TimePartitionCount(ctx context.Context) (int, error)

TimePartitionCount implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

type CSMTrafficDirectorListLogEntryTaskSetting added in v0.54.0

type CSMTrafficDirectorListLogEntryTaskSetting struct{}

func (*CSMTrafficDirectorListLogEntryTaskSetting) DefaultResourceNames added in v0.54.0

func (s *CSMTrafficDirectorListLogEntryTaskSetting) DefaultResourceNames(ctx context.Context) ([]string, error)

DefaultResourceNames implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMTrafficDirectorListLogEntryTaskSetting) Dependencies added in v0.54.0

Dependencies implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMTrafficDirectorListLogEntryTaskSetting) Description added in v0.54.0

Description implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMTrafficDirectorListLogEntryTaskSetting) LogFilters added in v0.54.0

LogFilters implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMTrafficDirectorListLogEntryTaskSetting) TaskID added in v0.54.0

TaskID implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

func (*CSMTrafficDirectorListLogEntryTaskSetting) TimePartitionCount added in v0.54.0

func (s *CSMTrafficDirectorListLogEntryTaskSetting) TimePartitionCount(ctx context.Context) (int, error)

TimePartitionCount implements googlecloudcommon_contract.ListLogEntriesTaskSetting.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL