Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultK8sResourceMergeConfigTask = coretask.NewTask(googlecloudk8scommon_contract.K8sResourceMergeConfigTaskID, []taskid.UntypedTaskReference{}, func(ctx context.Context) (*k8s.K8sManifestMergeConfigRegistry, error) { return k8s.GenerateDefaultMergeConfig() })
DefaultK8sResourceMergeConfigTask return the default patch request merge config.
var HeaderSuggestedFileNameTask = inspectiontaskbase.NewInspectionTask(googlecloudk8scommon_contract.HeaderSuggestedFileNameTaskID, []taskid.UntypedTaskReference{ googlecloudcommon_contract.InputStartTimeTaskID.Ref(), googlecloudcommon_contract.InputEndTimeTaskID.Ref(), googlecloudk8scommon_contract.InputClusterNameTaskID.Ref(), }, func(ctx context.Context, taskMode inspectioncore_contract.InspectionTaskModeType) (struct{}, error) { metadataSet := khictx.MustGetValue(ctx, inspectioncore_contract.InspectionRunMetadata) header := typedmap.GetOrDefault(metadataSet, inspectionmetadata.HeaderMetadataKey, &inspectionmetadata.HeaderMetadata{}) clusterName := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.InputClusterNameTaskID.Ref()) endTime := coretask.GetTaskResult(ctx, googlecloudcommon_contract.InputEndTimeTaskID.Ref()) startTime := coretask.GetTaskResult(ctx, googlecloudcommon_contract.InputStartTimeTaskID.Ref()) header.SuggestedFileName = getSuggestedFileName(clusterName, startTime, endTime) return struct{}{}, nil }, coretask.NewRequiredTaskLabel(), inspectioncore_contract.InspectionTypeLabel(googlecloudinspectiontypegroup_contract.GCPK8sClusterInspectionTypes...))
HeaderSuggestedFileNameTask is a task to supply the suggested file name of the KHI file generated. This name is used in frontend to save the inspection data as a file.
var InputClusterNameTask = formtask.NewTextFormTaskBuilder(googlecloudk8scommon_contract.InputClusterNameTaskID, googlecloudcommon_contract.PriorityForResourceIdentifierGroup+4000, "Cluster name"). WithDependencies([]taskid.UntypedTaskReference{googlecloudk8scommon_contract.AutocompleteClusterNamesTaskID, googlecloudk8scommon_contract.ClusterNamePrefixTaskID}). WithDescription("The cluster name to gather logs."). WithDefaultValueFunc(func(ctx context.Context, previousValues []string) (string, error) { clusters := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.AutocompleteClusterNamesTaskID) if len(previousValues) > 0 && slices.Index(clusters.ClusterNames, previousValues[0]) > -1 { return previousValues[0], nil } if len(clusters.ClusterNames) == 0 { return "", nil } return clusters.ClusterNames[0], nil }). WithSuggestionsFunc(func(ctx context.Context, value string, previousValues []string) ([]string, error) { clusters := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.AutocompleteClusterNamesTaskID) return common.SortForAutocomplete(value, clusters.ClusterNames), nil }). WithHintFunc(func(ctx context.Context, value string, convertedValue any) (string, inspectionmetadata.ParameterHintType, error) { clusters := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.AutocompleteClusterNamesTaskID) prefix := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.ClusterNamePrefixTaskID) if clusters.Error != "" { return fmt.Sprintf("Failed to obtain the cluster list due to the error '%s'.\n The suggestion list won't popup", clusters.Error), inspectionmetadata.Warning, nil } convertedWithoutPrefix := strings.TrimPrefix(convertedValue.(string), prefix) for _, suggestedCluster := range clusters.ClusterNames { if suggestedCluster == convertedWithoutPrefix { return "", inspectionmetadata.Info, nil } } return fmt.Sprintf("Cluster `%s` was not found in the specified project at this time. It works for the clusters existed in the past but make sure the cluster name is right if you believe the cluster should be there.", value), inspectionmetadata.Warning, nil }). WithValidator(func(ctx context.Context, value string) (string, error) { if !clusterNameValidator.Match([]byte(value)) { return "Cluster name must match `^[0-9a-z:\\-]+$`", nil } return "", nil }). WithConverter(func(ctx context.Context, value string) (string, error) { prefix := coretask.GetTaskResult(ctx, googlecloudk8scommon_contract.ClusterNamePrefixTaskID) return prefix + strings.TrimSpace(value), nil }). Build()
InputClusterNameTask is a form task receving cluster name from the user. This task return the cluster name with the prefixes defined from the cluster type. For example, a cluster named foo-cluster is `foo-cluster` in GKE but `awsCluster/foo-cluster` in GKE on AWS. This input also supports autocomplete cluster names from some task having ID for googlecloudk8scommon_contract.AutocompleteClusterNamesTaskID.
var InputKindFilterTask = formtask.NewTextFormTaskBuilder(googlecloudk8scommon_contract.InputKindFilterTaskID, googlecloudcommon_contract.PriorityForK8sResourceFilterGroup+5000, "Kind"). WithDefaultValueConstant("@default", true). WithDescription("The kinds of resources to gather logs. `@default` is a alias of set of kinds that frequently queried. Specify `@any` to query every kinds of resources"). WithValidator(func(ctx context.Context, value string) (string, error) { if value == "" { return "kind filter can't be empty", nil } result, err := gcpqueryutil.ParseSetFilter(value, inputKindNameAliasMap, true, true, true) if err != nil { return "", err } return result.ValidationError, nil }). WithConverter(func(ctx context.Context, value string) (*gcpqueryutil.SetFilterParseResult, error) { result, err := gcpqueryutil.ParseSetFilter(value, inputKindNameAliasMap, true, true, true) if err != nil { return nil, err } return result, nil }). Build()
InputKindFilterTask is a form task for inputting the kind filter.
var InputNamespaceFilterTask = formtask.NewTextFormTaskBuilder(googlecloudk8scommon_contract.InputNamespaceFilterTaskID, googlecloudcommon_contract.PriorityForK8sResourceFilterGroup+4000, "Namespaces"). WithDefaultValueConstant("@all_cluster_scoped @all_namespaced", true). WithDescription("The namespace of resources to gather logs. Specify `@all_cluster_scoped` to gather logs for all non-namespaced resources. Specify `@all_namespaced` to gather logs for all namespaced resources."). WithValidator(func(ctx context.Context, value string) (string, error) { if value == "" { return "namespace filter can't be empty", nil } result, err := gcpqueryutil.ParseSetFilter(value, inputNamespacesAliasMap, false, false, true) if err != nil { return "", err } return result.ValidationError, nil }). WithConverter(func(ctx context.Context, value string) (*gcpqueryutil.SetFilterParseResult, error) { result, err := gcpqueryutil.ParseSetFilter(value, inputNamespacesAliasMap, false, false, true) if err != nil { return nil, err } return result, nil }). Build()
InputNamespaceFilterTask is a form task for inputting the namespace filter.
var InputNodeNameFilterTask = formtask.NewTextFormTaskBuilder(googlecloudk8scommon_contract.InputNodeNameFilterTaskID, googlecloudcommon_contract.PriorityForK8sResourceFilterGroup+3000, "Node names"). WithDefaultValueConstant("", true). WithDescription("A space-separated list of node name substrings used to collect node-related logs. If left blank, KHI gathers logs from all nodes in the cluster."). WithValidator(func(ctx context.Context, value string) (string, error) { nodeNameSubstrings := getNodeNameSubstringsFromRawInput(value) for _, name := range nodeNameSubstrings { if !nodeNameSubstringValidator.Match([]byte(name)) { return fmt.Sprintf("substring `%s` is not valid as a substring of node name", name), nil } } return "", nil }).WithConverter(func(ctx context.Context, value string) ([]string, error) { return getNodeNameSubstringsFromRawInput(value), nil }).Build()
InputNodeNameFilterTask is a task to collect list of substrings of node names. This input value is used in querying k8s_node or serialport logs.
Functions ¶
func Register ¶
func Register(registry coreinspection.InspectionTaskRegistry) error
Register registers all googlecloudk8scommon inspection tasks to the registry.
Types ¶
This section is empty.