Skip to content

Commit

Permalink
Move tracing policy types to a separate file
Browse files Browse the repository at this point in the history
Signed-off-by: Michi Mutsuzaki <michi@isovalent.com>
  • Loading branch information
michi-covalent committed Aug 28, 2023
1 parent 0c4394b commit 0de4662
Show file tree
Hide file tree
Showing 4 changed files with 244 additions and 236 deletions.
122 changes: 122 additions & 0 deletions pkg/k8s/apis/cilium.io/v1alpha1/tracing_policy_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of Tetragon

package v1alpha1

import (
"fmt"

slimv1 "github.com/cilium/cilium/pkg/k8s/slim/k8s/apis/meta/v1"
ciliumio "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
// Tracing Policy (TP)

// TPPluralName is the plural name of Cilium Tracing Policy
TPPluralName = "tracingpolicies"

// TPKindDefinition is the kind name of Cilium Tracing Policy
TPKindDefinition = "TracingPolicy"

// TPName is the full name of Cilium Egress NAT Policy
TPName = TPPluralName + "." + ciliumio.GroupName

// TPNamespacedPluralName is the plural name of Cilium Tracing Policy
TPNamespacedPluralName = "tracingpoliciesnamespaced"

// TPNamespacedName
TPNamespacedName = TPNamespacedPluralName + "." + ciliumio.GroupName

// TPKindDefinition is the kind name of Cilium Tracing Policy
TPNamespacedKindDefinition = "TracingPolicyNamespaced"
)

// +genclient
// +genclient:noStatus
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:singular="tracingpolicy",path="tracingpolicies",scope="Cluster",shortName={}
type TracingPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata"`
// Tracing policy specification.
Spec TracingPolicySpec `json:"spec"`
}

// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:singular="tracingpolicynamespaced",path="tracingpoliciesnamespaced",scope="Namespaced",shortName={}
type TracingPolicyNamespaced struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata"`
// Tracing policy specification.
Spec TracingPolicySpec `json:"spec"`
}

func (tp *TracingPolicyNamespaced) TpSpec() *TracingPolicySpec {
return &tp.Spec
}

func (tp *TracingPolicyNamespaced) TpInfo() string {
return fmt.Sprintf("%s (object:%d/%s) (type:%s/%s)", tp.ObjectMeta.Name, tp.ObjectMeta.Generation, tp.ObjectMeta.UID, tp.TypeMeta.Kind, tp.TypeMeta.APIVersion)
}

func (tp *TracingPolicyNamespaced) TpName() string {
return tp.ObjectMeta.Name
}

func (tp *TracingPolicyNamespaced) TpNamespace() string {
return tp.ObjectMeta.Namespace
}

type TracingPolicySpec struct {
// +kubebuilder:validation:Optional
// A list of kprobe specs.
KProbes []KProbeSpec `json:"kprobes,omitempty"`
// +kubebuilder:validation:Optional
// A list of tracepoint specs.
Tracepoints []TracepointSpec `json:"tracepoints,omitempty"`
// +kubebuilder:validation:Optional
// Enable loader events
Loader bool `json:"loader,omitempty"`
// +kubebuilder:validation:Optional
// A list of uprobe specs.
UProbes []UProbeSpec `json:"uprobes,omitempty"`

// +kubebuilder:validation:Optional
// PodSelector selects pods that this policy applies to
PodSelector *slimv1.LabelSelector `json:"podSelector,omitempty"`

// +kubebuilder:validation:Optional
// A list of list specs.
Lists []ListSpec `json:"lists,omitempty"`
}

func (tp *TracingPolicy) TpName() string {
return tp.ObjectMeta.Name
}

func (tp *TracingPolicy) TpSpec() *TracingPolicySpec {
return &tp.Spec
}

func (tp *TracingPolicy) TpInfo() string {
return fmt.Sprintf("%s (object:%d/%s) (type:%s/%s)", tp.ObjectMeta.Name, tp.ObjectMeta.Generation, tp.ObjectMeta.UID, tp.TypeMeta.Kind, tp.TypeMeta.APIVersion)
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TracingPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []TracingPolicy `json:"items"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TracingPolicyNamespacedList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []TracingPolicyNamespaced `json:"items"`
}
118 changes: 0 additions & 118 deletions pkg/k8s/apis/cilium.io/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,110 +3,6 @@

package v1alpha1

import (
"fmt"

slimv1 "github.com/cilium/cilium/pkg/k8s/slim/k8s/apis/meta/v1"
ciliumio "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
// Tracing Policy (TP)

// TPPluralName is the plural name of Cilium Tracing Policy
TPPluralName = "tracingpolicies"

// TPKindDefinition is the kind name of Cilium Tracing Policy
TPKindDefinition = "TracingPolicy"

// TPName is the full name of Cilium Egress NAT Policy
TPName = TPPluralName + "." + ciliumio.GroupName

// TPNamespacedPluralName is the plural name of Cilium Tracing Policy
TPNamespacedPluralName = "tracingpoliciesnamespaced"

// TPNamespacedName
TPNamespacedName = TPNamespacedPluralName + "." + ciliumio.GroupName

// TPKindDefinition is the kind name of Cilium Tracing Policy
TPNamespacedKindDefinition = "TracingPolicyNamespaced"
)

// +genclient
// +genclient:noStatus
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:singular="tracingpolicy",path="tracingpolicies",scope="Cluster",shortName={}
type TracingPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata"`
// Tracing policy specification.
Spec TracingPolicySpec `json:"spec"`
}

// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:singular="tracingpolicynamespaced",path="tracingpoliciesnamespaced",scope="Namespaced",shortName={}
type TracingPolicyNamespaced struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata"`
// Tracing policy specification.
Spec TracingPolicySpec `json:"spec"`
}

func (tp *TracingPolicyNamespaced) TpSpec() *TracingPolicySpec {
return &tp.Spec
}

func (tp *TracingPolicyNamespaced) TpInfo() string {
return fmt.Sprintf("%s (object:%d/%s) (type:%s/%s)", tp.ObjectMeta.Name, tp.ObjectMeta.Generation, tp.ObjectMeta.UID, tp.TypeMeta.Kind, tp.TypeMeta.APIVersion)
}

func (tp *TracingPolicyNamespaced) TpName() string {
return tp.ObjectMeta.Name
}

func (tp *TracingPolicyNamespaced) TpNamespace() string {
return tp.ObjectMeta.Namespace
}

type TracingPolicySpec struct {
// +kubebuilder:validation:Optional
// A list of kprobe specs.
KProbes []KProbeSpec `json:"kprobes,omitempty"`
// +kubebuilder:validation:Optional
// A list of tracepoint specs.
Tracepoints []TracepointSpec `json:"tracepoints,omitempty"`
// +kubebuilder:validation:Optional
// Enable loader events
Loader bool `json:"loader,omitempty"`
// +kubebuilder:validation:Optional
// A list of uprobe specs.
UProbes []UProbeSpec `json:"uprobes,omitempty"`

// +kubebuilder:validation:Optional
// PodSelector selects pods that this policy applies to
PodSelector *slimv1.LabelSelector `json:"podSelector,omitempty"`

// +kubebuilder:validation:Optional
// A list of list specs.
Lists []ListSpec `json:"lists,omitempty"`
}

func (tp *TracingPolicy) TpName() string {
return tp.ObjectMeta.Name
}

func (tp *TracingPolicy) TpSpec() *TracingPolicySpec {
return &tp.Spec
}

func (tp *TracingPolicy) TpInfo() string {
return fmt.Sprintf("%s (object:%d/%s) (type:%s/%s)", tp.ObjectMeta.Name, tp.ObjectMeta.Generation, tp.ObjectMeta.UID, tp.TypeMeta.Kind, tp.TypeMeta.APIVersion)
}

type KProbeSpec struct {
// Name of the function to apply the kprobe spec to.
Call string `json:"call"`
Expand Down Expand Up @@ -312,20 +208,6 @@ type TracepointSpec struct {
Selectors []KProbeSelector `json:"selectors"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TracingPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []TracingPolicy `json:"items"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
type TracingPolicyNamespacedList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []TracingPolicyNamespaced `json:"items"`
}

type UProbeSpec struct {
// Name of the traced binary
Path string `json:"path"`
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0de4662

Please sign in to comment.