Skip to content

Commit 38a0086

Browse files
authored
Implement DetermineStrategy with SDK (#5671)
* Implement DetermineStrategy with SDK Signed-off-by: Yoshiki Fujikane <[email protected]> * Fix for lint Signed-off-by: Yoshiki Fujikane <[email protected]> * Add todo comment Signed-off-by: Yoshiki Fujikane <[email protected]> --------- Signed-off-by: Yoshiki Fujikane <[email protected]>
1 parent 55d27d1 commit 38a0086

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

pkg/app/pipedv1/plugin/kubernetes/deployment/determine.go

+16
Original file line numberDiff line numberDiff line change
@@ -249,3 +249,19 @@ func determineStrategy(olds, news []provider.Manifest, workloadRefs []config.K8s
249249

250250
return model.SyncStrategy_QUICK_SYNC, "Quick sync by applying all manifests"
251251
}
252+
253+
// determineStrategySDK decides the sync strategy and summary message based on the given manifests.
254+
// TODO: rewrite this function to determineStrategy after the current determineStrategy is removed.
255+
func determineStrategySDK(olds, news []provider.Manifest, workloadRefs []config.K8sResourceReference, logger *zap.Logger) (strategy sdk.SyncStrategy, summary string) {
256+
mStrategy, summary := determineStrategy(olds, news, workloadRefs, logger)
257+
258+
var s sdk.SyncStrategy
259+
switch mStrategy {
260+
case model.SyncStrategy_QUICK_SYNC:
261+
s = sdk.SyncStrategyQuickSync
262+
case model.SyncStrategy_PIPELINE:
263+
s = sdk.SyncStrategyQuickSync
264+
}
265+
266+
return s, summary
267+
}

pkg/app/pipedv1/plugin/kubernetes/deployment/plugin.go

+30-3
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,36 @@ func (p *Plugin) DetermineVersions(ctx context.Context, _ *sdk.ConfigNone, _ *sd
361361
}, nil
362362
}
363363

364-
// FIXME
365-
func (p *Plugin) DetermineStrategy(context.Context, *sdk.ConfigNone, *sdk.Client, *sdk.DetermineStrategyInput) (*sdk.DetermineStrategyResponse, error) {
366-
return &sdk.DetermineStrategyResponse{}, nil
364+
func (p *Plugin) DetermineStrategy(ctx context.Context, _ *sdk.ConfigNone, _ *sdk.Client, input *sdk.DetermineStrategyInput) (*sdk.DetermineStrategyResponse, error) {
365+
logger := input.Logger
366+
loader := provider.NewLoader(toolregistry.NewRegistry(input.Client.ToolRegistry()))
367+
368+
cfg, err := config.DecodeYAML[*kubeconfig.KubernetesApplicationSpec](input.Request.TargetDeploymentSource.ApplicationConfig)
369+
if err != nil {
370+
logger.Error("Failed while decoding application config", zap.Error(err))
371+
return nil, err
372+
}
373+
374+
runnings, err := p.loadManifests(ctx, &input.Request.Deployment, cfg.Spec, &input.Request.RunningDeploymentSource, loader)
375+
376+
if err != nil {
377+
logger.Error("Failed while loading running manifests", zap.Error(err))
378+
return nil, err
379+
}
380+
381+
targets, err := p.loadManifests(ctx, &input.Request.Deployment, cfg.Spec, &input.Request.TargetDeploymentSource, loader)
382+
383+
if err != nil {
384+
logger.Error("Failed while loading target manifests", zap.Error(err))
385+
return nil, err
386+
}
387+
388+
strategy, summary := determineStrategySDK(runnings, targets, cfg.Spec.Workloads, logger)
389+
390+
return &sdk.DetermineStrategyResponse{
391+
Strategy: strategy,
392+
Summary: summary,
393+
}, nil
367394
}
368395

369396
func (p *Plugin) BuildQuickSyncStages(ctx context.Context, _ *sdk.ConfigNone, input *sdk.BuildQuickSyncStagesInput) (*sdk.BuildQuickSyncStagesResponse, error) {

pkg/app/pipedv1/plugin/kubernetes/provider/manifest_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ import (
2020
"time"
2121

2222
"github.com/google/go-cmp/cmp"
23-
"github.com/pipe-cd/pipecd/pkg/plugin/sdk"
2423
"github.com/stretchr/testify/assert"
2524
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2625
"k8s.io/apimachinery/pkg/runtime/schema"
26+
27+
"github.com/pipe-cd/pipecd/pkg/plugin/sdk"
2728
)
2829

2930
func TestManifest_AddStringMapValues(t *testing.T) {

0 commit comments

Comments
 (0)