From 66d86d5e09845ab8cc04a440908f0ffdca6ff560 Mon Sep 17 00:00:00 2001 From: Manjinder Date: Tue, 12 May 2026 10:18:49 +0530 Subject: [PATCH 1/2] fix(deps): upgrades the sandbox lib Upgrade was caused due to a change triggered in sandbox lib by the original spec. The id attribute has changed its position in app and deployment manifest, hence updates the code as well. Closes https://github.com/margo/sandbox/issues/270 Signed-off-by: Manjinder --- api/go.mod | 2 +- api/go.sum | 4 +- .../apis/v1alpha1/managers/margo/appPkg.go | 32 ++++++++-------- .../managers/margo/appPkgStateMachine.go | 2 +- .../apis/v1alpha1/managers/margo/database.go | 10 ++--- .../v1alpha1/managers/margo/deployment.go | 14 +++---- .../managers/margo/deploymentBundle.go | 4 +- .../managers/margo/deploymentStateMachine.go | 2 +- .../apis/v1alpha1/managers/margo/device.go | 6 +-- .../v1alpha1/managers/margo/transformer.go | 38 +++++++++---------- cli/cmd/margo.go | 16 ++++---- cli/go.mod | 2 +- cli/go.sum | 4 +- 13 files changed, 68 insertions(+), 68 deletions(-) diff --git a/api/go.mod b/api/go.mod index a9310c25..8bcc265b 100644 --- a/api/go.mod +++ b/api/go.mod @@ -26,7 +26,7 @@ require ( github.com/ghodss/yaml v1.0.0 github.com/itchyny/gojq v0.12.16 github.com/kr/pretty v0.3.1 - github.com/margo/sandbox v0.0.1 + github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca github.com/princjef/mageutil v1.0.0 golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 gopkg.in/yaml.v2 v2.4.0 diff --git a/api/go.sum b/api/go.sum index b3f697ed..181987b6 100644 --- a/api/go.sum +++ b/api/go.sum @@ -276,8 +276,8 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/margo/sandbox v0.0.1 h1:t8LBdHPA5Xl6CYtOgjYZPqr+vBDONMHxs1S3Hxu8VH4= -github.com/margo/sandbox v0.0.1/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= +github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca h1:DDhYMlMUMJVos/cB5Aoql/MYgENbeDp3HDqrNh2cgaA= +github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= github.com/matryer/is v1.3.0 h1:9qiso3jaJrOe6qBRJRBt2Ldht05qDiFP9le0JOIhRSI= github.com/matryer/is v1.3.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= diff --git a/api/pkg/apis/v1alpha1/managers/margo/appPkg.go b/api/pkg/apis/v1alpha1/managers/margo/appPkg.go index 65f6b7c4..a08b6c23 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/appPkg.go +++ b/api/pkg/apis/v1alpha1/managers/margo/appPkg.go @@ -139,7 +139,7 @@ func (s *AppPkgManager) OnboardAppPkg( "operation", operation, "initialStatus", operationState) - appPkg.Package.Metadata.Id = &appPkgId + appPkg.Package.Id = &appPkgId appPkg.Package.RecentOperation = &margoNonStdAPI.ApplicationPackageRecentOperation{} appPkg.Package.RecentOperation.Op = operation appPkg.Package.RecentOperation.Status = operationState @@ -152,7 +152,7 @@ func (s *AppPkgManager) OnboardAppPkg( } appPkgLogger.Debug("Package object prepared with metadata", - "packageId", *appPkg.Package.Metadata.Id, + "packageId", *appPkg.Package.Id, "packageName", appPkg.Package.Metadata.Name, "operation", appPkg.Package.RecentOperation.Op, "status", appPkg.Package.RecentOperation.Status) @@ -166,14 +166,14 @@ func (s *AppPkgManager) OnboardAppPkg( } if err := s.Database.UpsertAppPackage(ctx, dbRow); err != nil { appPkgLogger.Error("Failed to store package in database", - "packageId", *appPkg.Package.Metadata.Id, + "packageId", *appPkg.Package.Id, "error", err) return nil, fmt.Errorf("failed to store app pkg in database: %w", err) } // Start async processing appPkgLogger.Info("Starting async processing for package", - "packageId", *appPkg.Package.Metadata.Id, + "packageId", *appPkg.Package.Id, "packageName", appPkg.Package.Metadata.Name) go func() { time.Sleep(time.Second * 8) @@ -188,7 +188,7 @@ func (s *AppPkgManager) OnboardAppPkg( onboardingDuration := time.Since(startTime) appPkgLogger.Info("Package onboarding initiated successfully", - "packageId", *appPkg.Package.Metadata.Id, + "packageId", *appPkg.Package.Id, "packageName", appPkg.Package.Metadata.Name, "onboardingDuration", onboardingDuration) @@ -204,7 +204,7 @@ func (s *AppPkgManager) processPackageAsync( catalogsManager *catalogs.CatalogsManager) { processStart := time.Now() - packageId := *appPkg.Package.Metadata.Id + packageId := *appPkg.Package.Id appPkgLogger.Info("Starting async package processing with state machine", "packageId", packageId, @@ -363,7 +363,7 @@ func (s *AppPkgManager) processOciRepositoryWithStateTracking( catalogsManager *catalogs.CatalogsManager) (*ApplicationPackage, error) { ociProcessStart := time.Now() - packageId := *pkg.Package.Metadata.Id + packageId := *pkg.Package.Id appPkgLogger.Info("Starting OCI repository processing with state tracking", "packageId", packageId, @@ -511,7 +511,7 @@ func (s *AppPkgManager) processOciRepositoryWithStateTracking( if err := s.validateApplicationDescription(appDesc); err != nil { appPkgLogger.Error("Application description validation failed", "packageId", packageId, - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "error", err) return nil, fmt.Errorf( "application description validation failed: %w", @@ -534,7 +534,7 @@ func (s *AppPkgManager) processOciRepositoryWithStateTracking( "packageId", packageId, "appId", - appDesc.Metadata.Id, + appDesc.Id, "appName", appDesc.Metadata.Name, "appVersion", @@ -546,7 +546,7 @@ func (s *AppPkgManager) processOciRepositoryWithStateTracking( // Phase 8: Convert to Symphony objects appPkgLogger.Info("Phase 8: Converting application to Symphony objects", "packageId", packageId, - "appId", appDesc.Metadata.Id) + "appId", appDesc.Id) dbRow := AppPackageDatabaseRow{ PackageRequest: pkg.Package, @@ -562,7 +562,7 @@ func (s *AppPkgManager) processOciRepositoryWithStateTracking( if err != nil { appPkgLogger.Error("Failed to convert to Symphony objects", "packageId", packageId, - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "error", err) return nil, fmt.Errorf("failed to convert to Symphony objects: %w", err) } @@ -663,7 +663,7 @@ func (s *AppPkgManager) parseApplicationDescription( } appPkgLogger.Info("Successfully parsed application description", - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "appName", appDesc.Metadata.Name, "appVersion", appDesc.Metadata.Version, "deploymentProfilesCount", len(appDesc.DeploymentProfiles)) @@ -755,11 +755,11 @@ func (s *AppPkgManager) validateApplicationDescription( appDesc *margoNonStdAPI.AppDescription, ) error { appPkgLogger.Debug("Validating application description", - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "appName", appDesc.Metadata.Name) // Validate required fields - if appDesc.Metadata.Id == "" { + if appDesc.Id == nil || *appDesc.Id == "" { return fmt.Errorf("application ID is required") } if appDesc.Metadata.Name == "" { @@ -811,7 +811,7 @@ func (s *AppPkgManager) validateApplicationDescription( } appPkgLogger.Debug("Application description validation passed", - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "deploymentProfilesCount", len(appDesc.DeploymentProfiles)) return nil @@ -1036,7 +1036,7 @@ func (s *AppPkgManager) ListAppPkgs( // ctx context.Context, // appPkg ApplicationPackage, // err error) error { -// rootResource := *appPkg.Package.Metadata.Id +// rootResource := *appPkg.Package.Id // catalogName := rootResource + "-v-" + appPkg.Description.Metadata.Version // // Create minimal Symphony objects even on error // catalog := &model.CatalogState{ diff --git a/api/pkg/apis/v1alpha1/managers/margo/appPkgStateMachine.go b/api/pkg/apis/v1alpha1/managers/margo/appPkgStateMachine.go index 6d5712f9..b515ee62 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/appPkgStateMachine.go +++ b/api/pkg/apis/v1alpha1/managers/margo/appPkgStateMachine.go @@ -144,7 +144,7 @@ func (sm *AppPkgStateMachine) updatePackageState( } sm.log.InfofCtx(ctx, "AppPkgStateMachine: Updated package '%s' to state '%s'", - *pkg.PackageRequest.Metadata.Id, newState) + *pkg.PackageRequest.Id, newState) return nil } diff --git a/api/pkg/apis/v1alpha1/managers/margo/database.go b/api/pkg/apis/v1alpha1/managers/margo/database.go index bf2474ba..a5561c8c 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/database.go +++ b/api/pkg/apis/v1alpha1/managers/margo/database.go @@ -171,7 +171,7 @@ func NewMargoDatabase(mgrCtx *contexts.ManagerContext, pubsubGroupName PublishGr } func (db *MargoDatabase) UpsertAppPackage(ctx context.Context, pkg AppPackageDatabaseRow) error { - packageId := *pkg.PackageRequest.Metadata.Id + packageId := *pkg.PackageRequest.Id _, err := db.StateProvider.Upsert(ctx, states.UpsertRequest{ Options: states.UpsertOption{}, Metadata: db.appPkgMetadata, @@ -286,7 +286,7 @@ func (db *MargoDatabase) AppPackageExists(ctx context.Context, packageId string) } func (db *MargoDatabase) UpsertDeployment(ctx context.Context, deployment DeploymentDatabaseRow, publishEvent bool) error { - deploymentId := *deployment.DeploymentRequest.Metadata.Id + deploymentId := *deployment.DeploymentRequest.Id _, err := db.StateProvider.Upsert(ctx, states.UpsertRequest{ Options: states.UpsertOption{}, Metadata: db.deploymentMetadata, @@ -523,16 +523,16 @@ func (db *MargoDatabase) GetDeploymentsByDevice(ctx context.Context, deviceId st if deployment.DeploymentRequest.Spec.DeviceRef != nil && deployment.DeploymentRequest.Spec.DeviceRef.Id != nil { db.MgrContext.Logger.InfofCtx(ctx, "GetDeploymentsByDevice: Found deployment %s assigned to device %s", - *deployment.DeploymentRequest.Metadata.Id, *deployment.DeploymentRequest.Spec.DeviceRef.Id) + *deployment.DeploymentRequest.Id, *deployment.DeploymentRequest.Spec.DeviceRef.Id) if *deployment.DeploymentRequest.Spec.DeviceRef.Id == deviceId { deviceDeployments = append(deviceDeployments, deployment) db.MgrContext.Logger.InfofCtx(ctx, "GetDeploymentsByDevice: MATCH - Adding deployment %s to device %s", - *deployment.DeploymentRequest.Metadata.Id, deviceId) + *deployment.DeploymentRequest.Id, deviceId) } } else { db.MgrContext.Logger.WarnfCtx(ctx, "GetDeploymentsByDevice: Deployment %s has no device reference", - *deployment.DeploymentRequest.Metadata.Id) + *deployment.DeploymentRequest.Id) } } diff --git a/api/pkg/apis/v1alpha1/managers/margo/deployment.go b/api/pkg/apis/v1alpha1/managers/margo/deployment.go index be697366..5fd10b1c 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/deployment.go +++ b/api/pkg/apis/v1alpha1/managers/margo/deployment.go @@ -131,9 +131,9 @@ func (s *DeploymentManager) deleteObjectFromCache(topic string, event v1alpha2.E var err error switch event.Body.(type) { case AppPackageDatabaseRow: - err = s.database.DeleteAppPackage(context.Background(), *event.Body.(AppPackageDatabaseRow).PackageRequest.Metadata.Id) + err = s.database.DeleteAppPackage(context.Background(), *event.Body.(AppPackageDatabaseRow).PackageRequest.Id) case DeploymentDatabaseRow: - err = s.database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Metadata.Id, false) + err = s.database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Id, false) case DeviceDatabaseRow: err = s.database.DeleteDevice(context.Background(), event.Body.(DeviceDatabaseRow).Capabilities.Properties.Id) default: @@ -167,7 +167,7 @@ func (s *DeploymentManager) CreateDeployment(ctx context.Context, req margoNonSt } // Store in database (single call) - if err := s.storeDeployment(ctx, *deployment, *deployment.Metadata.Id, appPkg.Description.Metadata.Id, appPkg.Description.Metadata.Version); err != nil { + if err := s.storeDeployment(ctx, *deployment, *deployment.Id, *appPkg.Description.Id, appPkg.Description.Metadata.Version); err != nil { return nil, fmt.Errorf("failed to store deployment: %w", err) } @@ -194,7 +194,7 @@ func (s *DeploymentManager) CreateDeployment(ctx context.Context, req margoNonSt deploymentLogger.WarnfCtx(ctx, "CreateDeployment: No device reference found in deployment request") } - deploymentLogger.InfofCtx(ctx, "CreateDeployment: Successfully created deployment '%s'", *deployment.Metadata.Id) + deploymentLogger.InfofCtx(ctx, "CreateDeployment: Successfully created deployment '%s'", *deployment.Id) return deployment, nil } @@ -209,11 +209,11 @@ func (s *DeploymentManager) buildInitialDeployment(req margoNonStdAPI.Applicatio ApiVersion: req.ApiVersion, Kind: "ApplicationDeploymentManifest", Metadata: margoNonStdAPI.Metadata{ - Id: &deploymentId, Name: req.Metadata.Name, Namespace: req.Metadata.Namespace, CreationTimestamp: &now, }, + Id: &deploymentId, Spec: req.Spec, Status: &margoNonStdAPI.ApplicationDeploymentStatus{ State: &state, @@ -348,7 +348,7 @@ func (s *DeploymentManager) buildDesiredState(deployment margoNonStdAPI.Applicat Metadata: sbi.AppDeploymentMetadata{ Name: deployment.Metadata.Name, Namespace: deployment.Metadata.Namespace, - Id: deployment.Metadata.Id, + Id: deployment.Id, Annotations: deployment.Metadata.Annotations, Labels: deployment.Metadata.Labels, }, @@ -360,7 +360,7 @@ func (s *DeploymentManager) buildDesiredState(deployment margoNonStdAPI.Applicat Status: sbi.DeploymentStatusManifest{ ApiVersion: "margo.org", Kind: "DeploymentStatus", - DeploymentId: *deployment.Metadata.Id, + DeploymentId: *deployment.Id, Status: struct { Error *struct { Code *string "json:\"code,omitempty\"" diff --git a/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go b/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go index c21d1154..99851737 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go +++ b/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go @@ -115,7 +115,7 @@ func (s *DeploymentBundleManager) upsertObjectInCache(topic string, event v1alph } } else { deploymentBundleLogger.WarnfCtx(context.Background(), "upsertObjectInCache: Deployment %s has no device reference", - *deployment.DeploymentRequest.Metadata.Id) + *deployment.DeploymentRequest.Id) } default: deploymentBundleLogger.ErrorfCtx(context.Background(), "upsertObjectInCache: Invalid event body: known object is missing or not of the correct type") @@ -138,7 +138,7 @@ func (s *DeploymentBundleManager) deleteObjectFromCache(topic string, event v1al var err error switch event.Body.(type) { case DeploymentDatabaseRow: - err = s.Database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Metadata.Id, false) + err = s.Database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Id, false) default: deploymentBundleLogger.ErrorfCtx(context.Background(), "deleteObjectFromCache: Invalid event body: known object is missing or not of the correct type") return fmt.Errorf("invalid event body: deployment is missing or not of the correct type") diff --git a/api/pkg/apis/v1alpha1/managers/margo/deploymentStateMachine.go b/api/pkg/apis/v1alpha1/managers/margo/deploymentStateMachine.go index 3a23009d..16b5652e 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/deploymentStateMachine.go +++ b/api/pkg/apis/v1alpha1/managers/margo/deploymentStateMachine.go @@ -224,7 +224,7 @@ func (sm *DeploymentStateMachine) updateDeploymentState( } sm.log.InfofCtx(ctx, "DeploymentStateMachine: Updated deployment '%s' to state '%s'", - *deployment.DeploymentRequest.Metadata.Id, newState) + *deployment.DeploymentRequest.Id, newState) return nil } diff --git a/api/pkg/apis/v1alpha1/managers/margo/device.go b/api/pkg/apis/v1alpha1/managers/margo/device.go index 7ef504af..d9f12aeb 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/device.go +++ b/api/pkg/apis/v1alpha1/managers/margo/device.go @@ -216,9 +216,9 @@ func (s *DeviceManager) deleteObjectFromCache(topic string, event v1alpha2.Event var err error switch event.Body.(type) { case AppPackageDatabaseRow: - err = s.Database.DeleteAppPackage(context.Background(), *event.Body.(AppPackageDatabaseRow).PackageRequest.Metadata.Id) + err = s.Database.DeleteAppPackage(context.Background(), *event.Body.(AppPackageDatabaseRow).PackageRequest.Id) case DeploymentDatabaseRow: - err = s.Database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Metadata.Id, false) + err = s.Database.DeleteDeployment(context.Background(), *event.Body.(DeploymentDatabaseRow).DeploymentRequest.Id, false) case DeviceDatabaseRow: err = s.Database.DeleteDevice(context.Background(), event.Body.(DeviceDatabaseRow).Capabilities.Properties.Id) case DeploymentBundleRow: @@ -443,9 +443,9 @@ func (dm *DeviceManager) ListDevices(ctx context.Context) (margoNonStdAPI.Device ApiVersion: "non.margo.org", Kind: "Device", Metadata: margoNonStdAPI.Metadata{ - Id: &row.DeviceClientId, CreationTimestamp: &row.CreatedAt, }, + Id: &row.DeviceClientId, Spec: margoNonStdAPI.DeviceSpec{ Capabilities: row.Capabilities, Signature: row.DevicePubCert, diff --git a/api/pkg/apis/v1alpha1/managers/margo/transformer.go b/api/pkg/apis/v1alpha1/managers/margo/transformer.go index 42187df6..42882286 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/transformer.go +++ b/api/pkg/apis/v1alpha1/managers/margo/transformer.go @@ -36,15 +36,15 @@ func (t *MargoTransformer) AppPackageToSymphonyObjects( resources map[string][]byte) (*model.CatalogState, *model.SolutionState, *model.SolutionContainerState, error) { transformerLogger.Info("Starting Symphony transformation", - "appId", dbRow.AppDescription.Metadata.Id, + "appId", dbRow.AppDescription.Id, "appName", dbRow.AppDescription.Metadata.Name, - "packageId", *dbRow.PackageRequest.Metadata.Id) + "packageId", *dbRow.PackageRequest.Id) // Validate required data if dbRow.AppDescription == nil { return nil, nil, nil, fmt.Errorf("app description is required for transformation") } - if dbRow.PackageRequest.Metadata.Id == nil { + if dbRow.PackageRequest.Id == nil { return nil, nil, nil, fmt.Errorf("package ID is required for transformation") } @@ -61,7 +61,7 @@ func (t *MargoTransformer) AppPackageToSymphonyObjects( catalog, err := t.convertToCatalog(appDesc, convCtx, resources) if err != nil { transformerLogger.Error("Failed to convert to catalog", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "error", err) return nil, nil, nil, fmt.Errorf("failed to convert to catalog: %w", err) } @@ -70,7 +70,7 @@ func (t *MargoTransformer) AppPackageToSymphonyObjects( solution, err := t.convertToSolution(appDesc, catalog.ObjectMeta.Name) if err != nil { transformerLogger.Error("Failed to convert to solution", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "catalogId", catalog.ObjectMeta.Name, "error", err) return nil, nil, nil, fmt.Errorf("failed to convert to solution: %w", err) @@ -80,14 +80,14 @@ func (t *MargoTransformer) AppPackageToSymphonyObjects( solutionContainer, err := t.convertToSolutionContainer(appDesc, solution.ObjectMeta.Name) if err != nil { transformerLogger.Error("Failed to convert to solution container", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "solutionId", solution.ObjectMeta.Name, "error", err) return nil, nil, nil, fmt.Errorf("failed to convert to solution container: %w", err) } transformerLogger.Info("Symphony transformation completed successfully", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "catalogId", catalog.ObjectMeta.Name, "solutionId", solution.ObjectMeta.Name, "containerId", solutionContainer.ObjectMeta.Name) @@ -102,11 +102,11 @@ func (t *MargoTransformer) convertToCatalog( resources map[string][]byte) (*model.CatalogState, error) { transformerLogger.Debug("Converting to Catalog object", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "appName", appDesc.Metadata.Name) // catalog name should be -v- as per symphony convention - catalogId := appDesc.Metadata.Id + "-v-" + appDesc.Metadata.Version + catalogId := *appDesc.Id + "-v-" + appDesc.Metadata.Version catalog := &model.CatalogState{ ObjectMeta: model.ObjectMeta{ @@ -115,7 +115,7 @@ func (t *MargoTransformer) convertToCatalog( }, Spec: &model.CatalogSpec{ CatalogType: "solution", - RootResource: appDesc.Metadata.Id, + RootResource: *appDesc.Id, Version: appDesc.Metadata.Version, Properties: map[string]interface{}{ "spec": map[string]interface{}{ @@ -136,7 +136,7 @@ func (t *MargoTransformer) convertToCatalog( transformerLogger.Debug("Catalog object created successfully", "catalogId", catalogId, - "appId", appDesc.Metadata.Id) + "appId", *appDesc.Id) return catalog, nil } @@ -147,10 +147,10 @@ func (t *MargoTransformer) convertToSolution( catalogId string) (*model.SolutionState, error) { transformerLogger.Debug("Converting to Solution object", - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "catalogId", catalogId) - solutionId := appDesc.Metadata.Id + "-v-" + appDesc.Metadata.Version + solutionId := *appDesc.Id + "-v-" + appDesc.Metadata.Version // Convert deployment profiles to components components, err := t.convertDeploymentProfilesToComponents(appDesc.DeploymentProfiles, appDesc.Configuration, appDesc.Parameters) @@ -165,12 +165,12 @@ func (t *MargoTransformer) convertToSolution( }, Spec: &model.SolutionSpec{ Version: appDesc.Metadata.Version, - RootResource: appDesc.Metadata.Id, + RootResource: *appDesc.Id, DisplayName: appDesc.Metadata.Name, Components: components, Metadata: map[string]string{ "description": *appDesc.Metadata.Description, - "applicationId": appDesc.Metadata.Id, + "applicationId": *appDesc.Id, "catalogRef": catalogId, "profileCount": fmt.Sprintf("%d", len(appDesc.DeploymentProfiles)), }, @@ -179,7 +179,7 @@ func (t *MargoTransformer) convertToSolution( transformerLogger.Debug("Solution object created successfully", "solutionId", solutionId, - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "componentCount", len(components)) return solution, nil @@ -191,10 +191,10 @@ func (t *MargoTransformer) convertToSolutionContainer( solutionId string) (*model.SolutionContainerState, error) { transformerLogger.Debug("Converting to SolutionContainer object", - "appId", appDesc.Metadata.Id, + "appId", appDesc.Id, "solutionId", solutionId) - containerId := appDesc.Metadata.Id + "-v-" + appDesc.Metadata.Version + containerId := *appDesc.Id + "-v-" + appDesc.Metadata.Version solutionContainer := &model.SolutionContainerState{ ObjectMeta: model.ObjectMeta{ @@ -208,7 +208,7 @@ func (t *MargoTransformer) convertToSolutionContainer( transformerLogger.Debug("SolutionContainer object created successfully", "containerId", containerId, - "appId", appDesc.Metadata.Id, + "appId", *appDesc.Id, "solutionId", solutionId) return solutionContainer, nil diff --git a/cli/cmd/margo.go b/cli/cmd/margo.go index e87010eb..3fe33360 100644 --- a/cli/cmd/margo.go +++ b/cli/cmd/margo.go @@ -374,7 +374,7 @@ func createDeployment(deployment *nbi.ApplicationDeploymentManifestRequest) erro return nil } - fmt.Println("deploymentId", *resp.Metadata.Id, "deploymentName", resp.Metadata.Name) + fmt.Println("deploymentId", *resp.Id, "deploymentName", resp.Metadata.Name) return nil } @@ -563,7 +563,7 @@ func displayDevicesTable(resp nbi.DeviceListResp) { // Add data rows for _, device := range resp.Items { - if device.ApiVersion == "" || device.Kind == "" || device.Metadata.Id == nil || *device.Metadata.Id == "" { + if device.ApiVersion == "" || device.Kind == "" || device.Id == nil || *device.Id == "" { continue } @@ -582,7 +582,7 @@ func displayDevicesTable(resp nbi.DeviceListResp) { cap, _ := json.Marshal(device.Spec.Capabilities) row := table.Row{ - truncateString(*device.Metadata.Id, 40), + truncateString(*device.Id, 40), truncateString(device.Spec.Signature, 28), truncateString(string(cap), 28), roles, @@ -633,7 +633,7 @@ func displayAppPackagesTable(resp nbi.ApplicationPackageListResp) { } // fmt.Println("-----------------------pkg------------------", pretty.Sprint(pkg)) row := table.Row{ - truncateString(*pkg.Metadata.Id, 40), + truncateString(*pkg.Id, 40), truncateString(pkg.Metadata.Name, 20), version, string(pkg.RecentOperation.Op), @@ -688,8 +688,8 @@ func displayDeploymentsTable(resp nbi.ApplicationDeploymentListResp) { } var deploymentId string - if dep.Metadata.Id != nil { - deploymentId = *dep.Metadata.Id + if dep.Id != nil { + deploymentId = *dep.Id } var state string if dep.Status != nil && dep.Status.State != nil { @@ -770,7 +770,7 @@ func printAppPkgDetails(appPkg *nbi.ApplicationPackageManifestResp) { return } - fmt.Printf(" ID: %s\n", *appPkg.Metadata.Id) + fmt.Printf(" ID: %s\n", *appPkg.Id) fmt.Printf(" Name: %s\n", appPkg.Metadata.Name) fmt.Printf(" API Version: %s\n", appPkg.ApiVersion) fmt.Printf(" Kind: %s\n", appPkg.Kind) @@ -803,7 +803,7 @@ func printDeploymentDetails(deployment *nbi.ApplicationDeploymentManifestResp) { return } - fmt.Printf(" ID: %s\n", *deployment.Metadata.Id) + fmt.Printf(" ID: %s\n", *deployment.Id) fmt.Printf(" Name: %s\n", deployment.Metadata.Name) fmt.Printf(" API Version: %s\n", deployment.ApiVersion) fmt.Printf(" Kind: %s\n", deployment.Kind) diff --git a/cli/go.mod b/cli/go.mod index b0fc0ab6..5fbdb70e 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -53,7 +53,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 github.com/eclipse-symphony/symphony/api v0.0.0-00010101000000-000000000000 github.com/ghodss/yaml v1.0.0 - github.com/margo/sandbox v0.0.1 + github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca github.com/princjef/mageutil v1.0.0 ) diff --git a/cli/go.sum b/cli/go.sum index 6e894b02..0ce50964 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -60,8 +60,8 @@ github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNB github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/sfv v1.0.0 h1:+/VOs7lhUWAwNIklow4kPYlit0fPBC6HsF+GHKXrhGM= github.com/lestrrat-go/sfv v1.0.0/go.mod h1:wawOORrbzB4Vh0QT7WtbWEbMuTbjS8OPxum1wZAYCiQ= -github.com/margo/sandbox v0.0.1 h1:t8LBdHPA5Xl6CYtOgjYZPqr+vBDONMHxs1S3Hxu8VH4= -github.com/margo/sandbox v0.0.1/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= +github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca h1:DDhYMlMUMJVos/cB5Aoql/MYgENbeDp3HDqrNh2cgaA= +github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= github.com/matryer/is v1.3.0 h1:9qiso3jaJrOe6qBRJRBt2Ldht05qDiFP9le0JOIhRSI= github.com/matryer/is v1.3.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= From d3d120f0fb6a4fcdc7a14b6a4ee3395148338035 Mon Sep 17 00:00:00 2001 From: Manjinder Date: Wed, 13 May 2026 16:59:34 +0530 Subject: [PATCH 2/2] chore(deps): upgrades sandbox lib Signed-off-by: Manjinder --- api/go.mod | 2 +- api/go.sum | 4 ++-- .../apis/v1alpha1/managers/margo/deployment.go | 2 +- .../managers/margo/deploymentBundle.go | 18 +++++++++--------- cli/go.mod | 2 +- cli/go.sum | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/api/go.mod b/api/go.mod index 8bcc265b..12d7ddbb 100644 --- a/api/go.mod +++ b/api/go.mod @@ -26,7 +26,7 @@ require ( github.com/ghodss/yaml v1.0.0 github.com/itchyny/gojq v0.12.16 github.com/kr/pretty v0.3.1 - github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca + github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2 github.com/princjef/mageutil v1.0.0 golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 gopkg.in/yaml.v2 v2.4.0 diff --git a/api/go.sum b/api/go.sum index 181987b6..6426c377 100644 --- a/api/go.sum +++ b/api/go.sum @@ -276,8 +276,8 @@ github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca h1:DDhYMlMUMJVos/cB5Aoql/MYgENbeDp3HDqrNh2cgaA= -github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= +github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2 h1:oYOLNx7A/nWdsNeqvSJdVC21L3X5qpHvJadVlZ8IB1U= +github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= github.com/matryer/is v1.3.0 h1:9qiso3jaJrOe6qBRJRBt2Ldht05qDiFP9le0JOIhRSI= github.com/matryer/is v1.3.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= diff --git a/api/pkg/apis/v1alpha1/managers/margo/deployment.go b/api/pkg/apis/v1alpha1/managers/margo/deployment.go index 5fd10b1c..f4f2f787 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/deployment.go +++ b/api/pkg/apis/v1alpha1/managers/margo/deployment.go @@ -348,10 +348,10 @@ func (s *DeploymentManager) buildDesiredState(deployment margoNonStdAPI.Applicat Metadata: sbi.AppDeploymentMetadata{ Name: deployment.Metadata.Name, Namespace: deployment.Metadata.Namespace, - Id: deployment.Id, Annotations: deployment.Metadata.Annotations, Labels: deployment.Metadata.Labels, }, + Id: deployment.Id, Spec: sbi.AppDeploymentSpec{ DeploymentProfile: s.tranformer.ConvertDeploymentProfile(deployment.Spec.DeploymentProfile), Parameters: &sbi.AppDeploymentParams{}, diff --git a/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go b/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go index 99851737..4387fd42 100644 --- a/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go +++ b/api/pkg/apis/v1alpha1/managers/margo/deploymentBundle.go @@ -188,7 +188,7 @@ func (s *DeploymentBundleManager) rebuildTheBundleForDevice(ctx context.Context, activeDeployments = append(activeDeployments, row) } else { deploymentBundleLogger.InfofCtx(ctx, "rebuildTheBundleForDevice: Excluding deployment %s in state '%s' from bundle", - *row.DesiredState.Metadata.Id, state) + *row.DesiredState.Id, state) } } @@ -208,7 +208,7 @@ func (s *DeploymentBundleManager) rebuildTheBundleForDevice(ctx context.Context, if len(activeDeployments) > 0 { // Sort deployments by ID for deterministic ordering sort.Slice(activeDeployments, func(i, j int) bool { - return *activeDeployments[i].DesiredState.Metadata.Id < *activeDeployments[j].DesiredState.Metadata.Id + return *activeDeployments[i].DesiredState.Id < *activeDeployments[j].DesiredState.Id }) deploymentBundleLogger.InfofCtx(ctx, "rebuildTheBundleForDevice: Sorted %d active deployments for deterministic bundle creation", len(activeDeployments)) @@ -218,14 +218,14 @@ func (s *DeploymentBundleManager) rebuildTheBundleForDevice(ctx context.Context, for _, row := range activeDeployments { deploymentBundleLogger.InfofCtx(ctx, "rebuildTheBundleForDevice: Adding deployment %s (state: %s) to bundle", - *row.DesiredState.Metadata.Id, row.DesiredState.Status.Status.State) + *row.DesiredState.Id, row.DesiredState.Status.Status.State) // Use JSON-to-YAML conversion to preserve component data // First marshal to JSON (which handles union types correctly via MarshalJSON()) jsonData, err := json.Marshal(row.DesiredState.AppDeploymentManifest) if err != nil { deploymentBundleLogger.ErrorfCtx(ctx, "rebuildTheBundleForDevice: Failed to marshal deployment to JSON %s: %v", - *row.DesiredState.Metadata.Id, err) + *row.DesiredState.Id, err) return fmt.Errorf("failed to marshal deployment to JSON: %w", err) } @@ -233,18 +233,18 @@ func (s *DeploymentBundleManager) rebuildTheBundleForDevice(ctx context.Context, var yamlInterface interface{} if err := json.Unmarshal(jsonData, &yamlInterface); err != nil { deploymentBundleLogger.ErrorfCtx(ctx, "rebuildTheBundleForDevice: Failed to unmarshal JSON %s: %v", - *row.DesiredState.Metadata.Id, err) + *row.DesiredState.Id, err) return fmt.Errorf("failed to unmarshal JSON: %w", err) } data, err := yaml.Marshal(yamlInterface) if err != nil { deploymentBundleLogger.ErrorfCtx(ctx, "rebuildTheBundleForDevice: Failed to marshal to YAML %s: %v", - *row.DesiredState.Metadata.Id, err) + *row.DesiredState.Id, err) return fmt.Errorf("failed to marshal to YAML: %w", err) } - filename := fmt.Sprintf("%s.yaml", *row.DesiredState.Metadata.Id) + filename := fmt.Sprintf("%s.yaml", *row.DesiredState.Id) _, _, err = archiver.AppendContent(data, filename) if err != nil { deploymentBundleLogger.ErrorfCtx(ctx, "rebuildTheBundleForDevice: Failed to add deployment content: %v", err) @@ -259,10 +259,10 @@ func (s *DeploymentBundleManager) rebuildTheBundleForDevice(ctx context.Context, } newBundleManifest.Deployments = append(newBundleManifest.Deployments, margoStdAPI.DeploymentManifestRef{ - DeploymentId: *row.DesiredState.Metadata.Id, + DeploymentId: *row.DesiredState.Id, Digest: yamlDigest, SizeBytes: pointers.Ptr(float32(len(data))), - Url: fmt.Sprintf("/api/v1/clients/%s/deployments/%s/%s", deviceClientId, *row.DesiredState.Metadata.Id, yamlDigest), + Url: fmt.Sprintf("/api/v1/clients/%s/deployments/%s/%s", deviceClientId, *row.DesiredState.Id, yamlDigest), }) } diff --git a/cli/go.mod b/cli/go.mod index 5fbdb70e..113fdf7c 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -53,7 +53,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 github.com/eclipse-symphony/symphony/api v0.0.0-00010101000000-000000000000 github.com/ghodss/yaml v1.0.0 - github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca + github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2 github.com/princjef/mageutil v1.0.0 ) diff --git a/cli/go.sum b/cli/go.sum index 0ce50964..feb4f3dd 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -60,8 +60,8 @@ github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNB github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/sfv v1.0.0 h1:+/VOs7lhUWAwNIklow4kPYlit0fPBC6HsF+GHKXrhGM= github.com/lestrrat-go/sfv v1.0.0/go.mod h1:wawOORrbzB4Vh0QT7WtbWEbMuTbjS8OPxum1wZAYCiQ= -github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca h1:DDhYMlMUMJVos/cB5Aoql/MYgENbeDp3HDqrNh2cgaA= -github.com/margo/sandbox v0.0.2-0.20260512043745-dc64976cb4ca/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= +github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2 h1:oYOLNx7A/nWdsNeqvSJdVC21L3X5qpHvJadVlZ8IB1U= +github.com/margo/sandbox v0.0.2-0.20260513113620-95acc0d802d2/go.mod h1:GaaOzZOMEiYV1KykeabKsBoBey7MIFbzDJLruqd0RYk= github.com/matryer/is v1.3.0 h1:9qiso3jaJrOe6qBRJRBt2Ldht05qDiFP9le0JOIhRSI= github.com/matryer/is v1.3.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=