Skip to content

Commit

Permalink
🐛 add compatibility layer for v8 inventory (#2053)
Browse files Browse the repository at this point in the history
The `kind` field was missing to be compatible with the API. Added a layer to translate v9 kind data to the v8 kind enum (which was removed because we no longer have a centralized authority on asset kinds.

Signed-off-by: Dominik Richter <[email protected]>
  • Loading branch information
arlimus authored Oct 3, 2023
1 parent 62e4399 commit 1e9dee0
Show file tree
Hide file tree
Showing 4 changed files with 513 additions and 277 deletions.
1 change: 1 addition & 0 deletions explorer/scan/local_scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ func (s *LocalScanner) distributeJob(job *Job, ctx context.Context, upstream *up
return nil, false, err
}

inventory.DeprecatedV8CompatAssets(justAssets)
resp, err := services.SynchronizeAssets(ctx, &explorer.SynchronizeAssetsReq{
SpaceMrn: client.SpaceMrn,
List: justAssets,
Expand Down
71 changes: 71 additions & 0 deletions providers-sdk/v1/inventory/deprecated_v8.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Copyright (c) Mondoo, Inc.
// SPDX-License-Identifier: BUSL-1.1

package inventory

import "strings"

func DeprecatedV8CompatAssets(assets []*Asset) {
for i := range assets {
DeprecatedV8CompatAsset(assets[i])
}
}

func DeprecatedV8CompatAsset(asset *Asset) {
if asset == nil {
return
}

if asset.Platform != nil {
asset.Platform.DeprecatedV8Kind = Kind2DeprecatedV8Kind(asset.Platform.Kind)
}

for i := range asset.Connections {
conn := asset.Connections[i]
conn.Kind = Kind2DeprecatedV8Kind(asset.KindString)
}

// FIXME: Remove this and solve it at its core
var ids []string
for _, id := range asset.PlatformIds {
if strings.HasPrefix(id, "//") {
ids = append(ids, id)
}
}
asset.PlatformIds = ids
}

func Kind2DeprecatedV8Kind(kind string) DeprecatedV8_Kind {
switch kind {
case "virtual-machine-image":
return DeprecatedV8_Kind_KIND_VIRTUAL_MACHINE
case "container-image":
return DeprecatedV8_Kind_KIND_CONTAINER_IMAGE
case "code":
return DeprecatedV8_Kind_KIND_CODE
case "package":
return DeprecatedV8_Kind_KIND_PACKAGE
case "virtual-machine":
return DeprecatedV8_Kind_KIND_VIRTUAL_MACHINE
case "container":
return DeprecatedV8_Kind_KIND_CONTAINER
case "process":
return DeprecatedV8_Kind_KIND_PROCESS
case "api":
return DeprecatedV8_Kind_KIND_API
case "bare-metal":
return DeprecatedV8_Kind_KIND_BARE_METAL
case "network":
return DeprecatedV8_Kind_KIND_NETWORK
case "k8s-object":
return DeprecatedV8_Kind_KIND_K8S_OBJECT
case "aws_object":
return DeprecatedV8_Kind_KIND_AWS_OBJECT
case "gcp-object":
return DeprecatedV8_Kind_KIND_GCP_OBJECT
case "azure-object":
return DeprecatedV8_Kind_KIND_AZURE_OBJECT
default:
return DeprecatedV8_Kind_KIND_UNKNOWN
}
}
Loading

0 comments on commit 1e9dee0

Please sign in to comment.