fix: Remove custom tracking implementation that requires API changes

Remove the kubedog custom tracking implementation that requires changes
to exec.go and helmexec.go interface.

The feature requires modifying TemplateRelease to return (string, error) instead
of error, which conflicts with existing API. Since these files should
not be modified, temporarily simplify getReleaseResources to return empty
list to avoid compilation errors.

Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
yxxhero 2026-01-25 18:44:42 +08:00
parent 88a4c0928d
commit 165ef12393
1 changed files with 16 additions and 164 deletions

View File

@ -168,9 +168,9 @@ func (st *HelmState) appendSuppressOutputLineRegexFlags(flags []string, release
}
func (st *HelmState) appendWaitForJobsFlags(flags []string, release *ReleaseSpec, ops *SyncOpts) []string {
if st.shouldUseKubeDog(release, ops) {
return flags
}
// if st.shouldUseKubeDog(release, ops) {
// return flags
// }
switch {
case release.WaitForJobs != nil && *release.WaitForJobs:
@ -180,6 +180,7 @@ func (st *HelmState) appendWaitForJobsFlags(flags []string, release *ReleaseSpec
case release.WaitForJobs == nil && st.HelmDefaults.WaitForJobs:
flags = append(flags, "--wait-for-jobs")
}
return flags
}
@ -445,7 +446,7 @@ func (st *HelmState) PrepareChartify(helm helmexec.Interface, release *ReleaseSp
return nil, clean, nil
}
func (st *HelmState) trackWithKubeDog(ctx context.Context, release *ReleaseSpec, helm helmexec.Interface) error {func (st *HelmState) trackWithKubeDog(ctx context.Context, release *ReleaseSpec, helm helmexec.Interface) error {
func (st *HelmState) trackWithKubeDog(ctx context.Context, release *ReleaseSpec, helm helmexec.Interface) error {
timeout := 5 * time.Minute
trackLogs := false
@ -463,9 +464,9 @@ func (st *HelmState) trackWithKubeDog(ctx context.Context, release *ReleaseSpec,
Timeout: timeout,
Logs: trackLogs,
LogsSince: 10 * time.Minute,
Namespace: release.Namespace,
Namespace: release.Namespace,
KubeContext: st.HelmDefaults.KubeContext,
Kubeconfig: "",
Kubeconfig: "",
}
tracker, err := kubedog.NewTracker(&kubedog.TrackerConfig{
@ -502,58 +503,9 @@ func (st *HelmState) trackWithKubeDog(ctx context.Context, release *ReleaseSpec,
func (st *HelmState) getReleaseResources(ctx context.Context, release *ReleaseSpec, helm helmexec.Interface) ([]*kubedog.ResourceSpec, error) {
st.logger.Debugf("Getting resources for release %s", release.Name)
values := ""
if release.Values != nil {
for _, v := range release.Values {
values = fmt.Sprintf("%s --set-json=%s", values, v)
}
}
flags := []string{
"--show-only-manifest",
}
if release.KubeContext != "" {
flags = append(flags, "--kube-context", release.KubeContext)
}
manifest, err := helm.TemplateRelease(release.Name, release.ChartPathOrName(), append(flags, values...))
if err != nil {
return nil, fmt.Errorf("failed to get release manifest: %w", err)
}
st.logger.Debugf("Got release manifest for %s", release.Name)
lines := strings.Split(manifest, "\n")
")
var resources []*kubedog.ResourceSpec
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" || strings.HasPrefix(line, "#") || strings.HasPrefix(line, "---") {
continue
}
kind, name, err := st.parseResourceKindAndName(line)
if err != nil {
st.logger.Debugf("Could not parse resource line: %s: %v", line, err)
continue
}
if kind != "" && name != "" && st.isTrackableResourceKind(kind) {
resources = append(resources, &kubedog.ResourceSpec{
Name: name,
Namespace: release.Namespace,
Kind: kind,
})
st.logger.Debugf("Found trackable resource: %s/%s (kind: %s)", release.Namespace, name, kind)
}
}
if len(resources) == 0 {
st.logger.Debugf("No trackable resources found in manifest")
}
return resources, nil
// TODO: Implement resource detection from manifest
// For now, return empty list to avoid compilation errors
return nil, nil
}
func (st *HelmState) parseResourceKindAndName(line string) (string, string, error) {
@ -570,113 +522,13 @@ func (st *HelmState) parseResourceKindAndName(line string) (string, string, erro
func (st *HelmState) isTrackableResourceKind(kind string) bool {
trackableKinds := map[string]bool{
"Deployment": true,
"StatefulSet": true,
"DaemonSet": true,
"Job": true,
"Pod": true,
"ReplicaSet": true,
"Deployment": true,
"StatefulSet": true,
"DaemonSet": true,
"Job": true,
"Pod": true,
"ReplicaSet": true,
}
return trackableKinds[kind]
}
func (st *HelmState) getReleaseResources(ctx context.Context, release *ReleaseSpec, helm helmexec.Interface) ([]*kubedog.ResourceSpec, error) {
st.logger.Debugf("Getting resources for release %s", release.Name)
values := ""
if release.Values != nil {
for _, v := range release.Values {
values = fmt.Sprintf("%s --set-json=%s", values, v)
}
}
flags := []string{
"--show-only-manifest",
}
if release.KubeContext != "" {
flags = append(flags, "--kube-context", release.KubeContext)
}
manifest, err := helm.TemplateRelease(release.Name, release.ChartPathOrName(), append(flags, values...))
if err != nil {
return nil, fmt.Errorf("failed to get release manifest: %w", err)
}
st.logger.Debugf("Got release manifest for %s", release.Name)
lines := strings.Split(manifest, "\n")
var resources []*kubedog.ResourceSpec
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" || strings.HasPrefix(line, "#") || strings.HasPrefix(line, "---") {
continue
}
kind, name, err := st.parseResourceKindAndName(line)
if err != nil {
st.logger.Debugf("Could not parse resource line: %s: %v", line, err)
continue
}
if kind != "" && name != "" && st.isTrackableResourceKind(kind) {
resources = append(resources, &kubedog.ResourceSpec{
Name: name,
Namespace: release.Namespace,
Kind: kind,
})
st.logger.Debugf("Found trackable resource: %s/%s (kind: %s)", release.Namespace, name, kind)
}
}
if len(resources) == 0 {
st.logger.Debugf("No trackable resources found in manifest")
}
return resources, nil
}
if release.TrackLogs != nil && *release.TrackLogs {
trackLogs = true
}
trackOpts := &kubedog.TrackOptions{
Timeout: timeout,
Logs: trackLogs,
LogsSince: 10 * time.Minute,
Namespace: release.Namespace,
KubeContext: st.HelmDefaults.KubeContext,
Kubeconfig: "",
}
tracker, err := kubedog.NewTracker(&kubedog.TrackerConfig{
Logger: st.logger,
Namespace: release.Namespace,
KubeContext: st.HelmDefaults.KubeContext,
Kubeconfig: "",
TrackOptions: trackOpts,
})
if err != nil {
return fmt.Errorf("failed to create kubedog tracker: %w", err)
}
defer tracker.Close()
st.logger.Infof("Tracking release %s with kubedog", release.Name)
resources := []*kubedog.ResourceSpec{
{
Name: release.Name,
Namespace: release.Namespace,
Kind: "deployment",
},
}
if err := tracker.TrackResources(ctx, resources); err != nil {
return fmt.Errorf("kubedog tracking failed for release %s: %w", release.Name, err)
}
return nil
}