Skip to content

Commit 81601b1

Browse files
authored
Merge pull request #898 from meshery/copilot/sub-pr-897
Fix IncrementSkipped() and LatestVersionOnly implementation in registry generation
2 parents 9e22b81 + 310fbe6 commit 81601b1

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

registry/error.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var (
1616
ErrGeneratesComponentCode = "meshkit-11309"
1717
ErrUpdateRelationshipFileCode = "meshkit-11310"
1818
ErrModelTimeoutCode = "meshkit-11311"
19+
ErrModelSkippedCode = "meshkit-11312"
1920
)
2021

2122
func ErrAppendToSheet(err error, id string) error {
@@ -64,3 +65,11 @@ func ErrModelTimeout(modelName string, timeout time.Duration) error {
6465
[]string{"The model source may be unresponsive", "Network connectivity issues", "Large number of components to generate for this model"},
6566
[]string{"Try increasing the per-model timeout using --timeout flag", "Check network connectivity", "Review the source URL for the model"})
6667
}
68+
69+
func ErrModelSkipped(modelName, reason string) error {
70+
return errors.New(ErrModelSkippedCode, errors.Alert,
71+
[]string{fmt.Sprintf("model %s was skipped: %s", modelName, reason)},
72+
[]string{fmt.Sprintf("Model '%s' was skipped during generation: %s", modelName, reason)},
73+
[]string{"Model already exists and LatestVersionOnly is enabled"},
74+
[]string{"This is expected behavior when LatestVersionOnly option is used"})
75+
}

registry/model.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/meshery/meshkit/encoding"
17+
"github.com/meshery/meshkit/errors"
1718
"github.com/meshery/meshkit/files"
1819
"github.com/meshery/meshkit/generators"
1920
"github.com/meshery/meshkit/generators/models"
@@ -975,6 +976,12 @@ func InvokeGenerationFromSheetWithOptions(wg *sync.WaitGroup, path string, model
975976
}
976977
if alreadyExist {
977978
totalAvailableModels--
979+
// If LatestVersionOnly is enabled and model already exists, skip it
980+
if opts.LatestVersionOnly {
981+
log.Info("Model already exists, skipping due to LatestVersionOnly option: ", model.Model)
982+
done <- ErrModelSkipped(model.Model, "model already exists and LatestVersionOnly is enabled")
983+
return
984+
}
978985
}
979986

980987
for _, comp := range comps {
@@ -1036,9 +1043,15 @@ func InvokeGenerationFromSheetWithOptions(wg *sync.WaitGroup, path string, model
10361043
case genErr := <-done:
10371044
elapsed := time.Since(modelStartTime)
10381045
if genErr != nil {
1039-
progressTracker.IncrementFailure()
1040-
LogError.Error(fmt.Errorf("model %s generation failed after %v: %w", model.Model, elapsed.Round(time.Millisecond), genErr))
1041-
Log.Debug(fmt.Sprintf("Model %s: FAILED after %v - %v", model.Model, elapsed.Round(time.Millisecond), genErr))
1046+
// Check if this is a skip error
1047+
if meshkitErr, ok := genErr.(*errors.Error); ok && meshkitErr.Code == ErrModelSkippedCode {
1048+
progressTracker.IncrementSkipped()
1049+
Log.Debug(fmt.Sprintf("Model %s: SKIPPED in %v - %v", model.Model, elapsed.Round(time.Millisecond), genErr))
1050+
} else {
1051+
progressTracker.IncrementFailure()
1052+
LogError.Error(fmt.Errorf("model %s generation failed after %v: %w", model.Model, elapsed.Round(time.Millisecond), genErr))
1053+
Log.Debug(fmt.Sprintf("Model %s: FAILED after %v - %v", model.Model, elapsed.Round(time.Millisecond), genErr))
1054+
}
10421055
} else {
10431056
progressTracker.IncrementSuccess()
10441057
Log.Debug(fmt.Sprintf("Model %s: SUCCESS in %v", model.Model, elapsed.Round(time.Millisecond)))

0 commit comments

Comments
 (0)