Skip to content

Commit

Permalink
🧹 cleanup scanner logic (#1114)
Browse files Browse the repository at this point in the history
* 🧹 cleanup scanner logic

Signed-off-by: Ivan Milchev <[email protected]>

* use latest cnquery

Signed-off-by: Ivan Milchev <[email protected]>

* fix tests build

Signed-off-by: Ivan Milchev <[email protected]>

* shutdown coordinator for each benchmark

Signed-off-by: Ivan Milchev <[email protected]>

* use latest cnquery from main

Signed-off-by: Ivan Milchev <[email protected]>

---------

Signed-off-by: Ivan Milchev <[email protected]>
  • Loading branch information
imilchev authored Feb 19, 2024
1 parent 546e7be commit 5222e1e
Show file tree
Hide file tree
Showing 10 changed files with 33 additions and 48 deletions.
4 changes: 2 additions & 2 deletions cli/reporter/cli_reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import (
"go.mondoo.com/cnquery/v10"
"go.mondoo.com/cnquery/v10/cli/printer"
"go.mondoo.com/cnquery/v10/cli/theme/colors"
"go.mondoo.com/cnquery/v10/llx"
"go.mondoo.com/cnquery/v10/mqlc"
"go.mondoo.com/cnquery/v10/providers"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/upstream/mvd"
"go.mondoo.com/cnquery/v10/shared"
"go.mondoo.com/cnspec/v10/policy"
Expand Down Expand Up @@ -58,7 +58,7 @@ func getVulnReport[T any](results map[string]*T) (*T, error) {
// ^^
}

func defaultChecksum(code mqlCode, schema llx.Schema) (string, error) {
func defaultChecksum(code mqlCode, schema resources.ResourcesSchema) (string, error) {
res, ok := _defaultChecksums[code]
if ok {
return res.sum, res.err
Expand Down
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ require (
github.com/spf13/pflag v1.0.6-0.20201009195203-85dd5c8bc61c
github.com/spf13/viper v1.18.2
github.com/stretchr/testify v1.8.4
go.mondoo.com/cnquery/v10 v10.3.4
go.mondoo.com/cnquery/v10 v10.3.5-0.20240219105228-7d1f8a509be4
go.mondoo.com/mondoo-go v0.0.0-20240213081402-ca514f6fe731
go.mondoo.com/ranger-rpc v0.5.3
go.opentelemetry.io/otel v1.23.1
Expand Down Expand Up @@ -89,7 +89,7 @@ require (
github.com/ashanbrown/forbidigo v1.6.0 // indirect
github.com/ashanbrown/makezero v1.1.1 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
github.com/aws/aws-sdk-go v1.50.19 // indirect
github.com/aws/aws-sdk-go v1.50.20 // indirect
github.com/aws/aws-sdk-go-v2 v1.25.0 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.0 // indirect
Expand All @@ -98,9 +98,9 @@ require (
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.0 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10 // indirect
github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ec2 v1.148.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect v1.21.1 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.25.1 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.26.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.22.1 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.10 // indirect
Expand All @@ -109,7 +109,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.27.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sns v1.26.5 // indirect
github.com/aws/aws-sdk-go-v2/service/sqs v1.29.5 // indirect
github.com/aws/aws-sdk-go-v2/service/ssm v1.46.1 // indirect
github.com/aws/aws-sdk-go-v2/service/ssm v1.47.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.19.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.22.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.27.0 // indirect
Expand Down Expand Up @@ -192,7 +192,6 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.2.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect
Expand Down Expand Up @@ -373,6 +372,7 @@ require (
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.48.0 // indirect
go.opentelemetry.io/otel/metric v1.23.1 // indirect
go.opentelemetry.io/otel/trace v1.23.1 // indirect
go.uber.org/mock v0.4.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
Expand Down
22 changes: 12 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,8 @@ github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5Fc
github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/aws/aws-sdk-go v1.50.19 h1:YSIDKRSkh/TW0RPWoocdLqtC/T5W6IGBVhFs6P7Qcac=
github.com/aws/aws-sdk-go v1.50.19/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/aws/aws-sdk-go v1.50.20 h1:xfAnSDVf/azIWTVQXQODp89bubvCS85r70O3nuQ4dnE=
github.com/aws/aws-sdk-go v1.50.20/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
github.com/aws/aws-sdk-go-v2 v1.25.0 h1:sv7+1JVJxOu/dD/sz/csHX7jFqmP001TIY7aytBWDSQ=
github.com/aws/aws-sdk-go-v2 v1.25.0/go.mod h1:G104G1Aho5WqF+SR3mDIobTABQzpYV0WxMsKxlMggOA=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs=
Expand All @@ -190,12 +190,12 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10 h1:5oE2WzJE56/mVveuDZPJESKlg/00AaS2pY2QZcnxg4M=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.10/go.mod h1:FHbKWQtRBYUz4vO5WBWjzMD2by126ny5y/1EoaWoLfI=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0 h1:m9+QgPg/qzlxL0Oxb/dD12jzeWfuQGn9XqCWyDAipi8=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.147.0/go.mod h1:ntWksNNQcXImRQMdxab74tp+H94neF/TwQJ9Ndxb04k=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.148.0 h1:7imiXQvuqyUEu6wdcn6xRjR3zIJjDuAnS2e1S3ND+C0=
github.com/aws/aws-sdk-go-v2/service/ec2 v1.148.0/go.mod h1:ntWksNNQcXImRQMdxab74tp+H94neF/TwQJ9Ndxb04k=
github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect v1.21.1 h1:OLuzvvgHfHESi1Pi8FaT6nwtcWSm8QChOlJIhf0K8Ls=
github.com/aws/aws-sdk-go-v2/service/ec2instanceconnect v1.21.1/go.mod h1:DnBn3ocyCjtUa9Sg0ZDbUnFi+9d02qR4uzzn9EQHnfE=
github.com/aws/aws-sdk-go-v2/service/ecr v1.25.1 h1:hL63D+RiWAm4VqBfBEtFPFVED5DJ0JFwcm1EGtnLs8I=
github.com/aws/aws-sdk-go-v2/service/ecr v1.25.1/go.mod h1:cHCqPNl9Vjw+N5oa24YgncDRA31goF+lgahmkdxUA0o=
github.com/aws/aws-sdk-go-v2/service/ecr v1.26.0 h1:7gB8QlMFMSoVc1SDL61QJBeM9oweT26EyYPEBg4n/cQ=
github.com/aws/aws-sdk-go-v2/service/ecr v1.26.0/go.mod h1:cHCqPNl9Vjw+N5oa24YgncDRA31goF+lgahmkdxUA0o=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.22.1 h1:pskM00D6pbGB6u3CKqG6BRFBMOBI2t2cfh6sMUnTu5c=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.22.1/go.mod h1:Dkh2AQrzuP5osgFevpzT8fEgWEE38Q1yrrgxxclm958=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.0 h1:a33HuFlO0KsveiP90IUJh8Xr/cx9US2PqkSroaLc+o8=
Expand All @@ -214,8 +214,8 @@ github.com/aws/aws-sdk-go-v2/service/sns v1.26.5 h1:umyC9zH/A1w8AXrrG7iMxT4Rfgj8
github.com/aws/aws-sdk-go-v2/service/sns v1.26.5/go.mod h1:IrcbquqMupzndZ20BXxDxjM7XenTRhbwBOetk4+Z5oc=
github.com/aws/aws-sdk-go-v2/service/sqs v1.29.5 h1:cJb4I498c1mrOVrRqYTcnLD65AFqUuseHfzHdNZHL9U=
github.com/aws/aws-sdk-go-v2/service/sqs v1.29.5/go.mod h1:mCUv04gd/7g+/HNzDB4X6dzJuygji0ckvB3Lg/TdG5Y=
github.com/aws/aws-sdk-go-v2/service/ssm v1.46.1 h1:5eD9dLCSlVGNo6c0qNAbnA2qEjfLrB8X0twBvTxX+ec=
github.com/aws/aws-sdk-go-v2/service/ssm v1.46.1/go.mod h1:N98r+kK5y1r34XI36tVFQ/HXQ4yMOMqAjIJbO0LmYPg=
github.com/aws/aws-sdk-go-v2/service/ssm v1.47.0 h1:DRL3jVnkI2AamNpasygP9uSUWLXuEQxABPKsYbarjvQ=
github.com/aws/aws-sdk-go-v2/service/ssm v1.47.0/go.mod h1:N98r+kK5y1r34XI36tVFQ/HXQ4yMOMqAjIJbO0LmYPg=
github.com/aws/aws-sdk-go-v2/service/sso v1.19.0 h1:u6OkVDxtBPnxPkZ9/63ynEe+8kHbtS5IfaC4PzVxzWM=
github.com/aws/aws-sdk-go-v2/service/sso v1.19.0/go.mod h1:YqbU3RS/pkDVu+v+Nwxvn0i1WB0HkNWEePWbmODEbbs=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.22.0 h1:6DL0qu5+315wbsAEEmzK+P9leRwNbkp+lGjPC+CEvb8=
Expand Down Expand Up @@ -1193,8 +1193,8 @@ go-simpler.org/sloglint v0.4.0/go.mod h1:v6zJ++j/thFPhefs2wEXoCKwT10yo5nkBDYRCXy
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=
go.mondoo.com/cnquery/v10 v10.3.4 h1:VJGFdHh7ZxTKpE348ow/kXKj6BT9KMLbLN0gnBB3oWc=
go.mondoo.com/cnquery/v10 v10.3.4/go.mod h1:lJBIYW3nGozstqRIG3qtlX3TMhqCF7e9FzCTI7hGmlE=
go.mondoo.com/cnquery/v10 v10.3.5-0.20240219105228-7d1f8a509be4 h1:dvcK0efEN5wotCpi9qbQLQrywzETuziXRW6820gWxz0=
go.mondoo.com/cnquery/v10 v10.3.5-0.20240219105228-7d1f8a509be4/go.mod h1:uMqfIGuuKfgjKC2ihydVCqC69kT9Mmivb1lYKmpSYr8=
go.mondoo.com/mondoo-go v0.0.0-20240213081402-ca514f6fe731 h1:OclKwT0TJTnwKcNIMi8taxN46jtjq/lKqUDpTrfBMCU=
go.mondoo.com/mondoo-go v0.0.0-20240213081402-ca514f6fe731/go.mod h1:WsPuH91Uq/BbFOH9eU0PBdqEcc3CK5iueaZrldsEvQA=
go.mondoo.com/ranger-rpc v0.5.3 h1:914JOFTrxWFtBu1qrvuTyTyMibuT7g1GAX3HaUcbFqI=
Expand Down Expand Up @@ -1230,6 +1230,8 @@ go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
Expand Down
4 changes: 2 additions & 2 deletions internal/bundle/lint.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"strconv"

"github.com/Masterminds/semver"
"go.mondoo.com/cnquery/v10/llx"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/cnspec/v10/policy"
)

Expand Down Expand Up @@ -148,7 +148,7 @@ type Location struct {
}

// Lint validates a policy bundle for consistency
func Lint(schema llx.Schema, files ...string) (*Results, error) {
func Lint(schema resources.ResourcesSchema, files ...string) (*Results, error) {
aggregatedResults := &Results{
BundleLocations: []string{},
}
Expand Down
4 changes: 2 additions & 2 deletions internal/bundle/lint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.mondoo.com/cnquery/v10/llx"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/testutils"
"go.mondoo.com/cnspec/v10/internal/bundle"
)

var schema llx.Schema
var schema resources.ResourcesSchema

func init() {
runtime := testutils.Local()
Expand Down
3 changes: 2 additions & 1 deletion policy/bundle.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"go.mondoo.com/cnquery/v10/logger"
"go.mondoo.com/cnquery/v10/mqlc"
"go.mondoo.com/cnquery/v10/mrn"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/cnquery/v10/utils/multierr"
"sigs.k8s.io/yaml"
)
Expand Down Expand Up @@ -712,7 +713,7 @@ func topologicalSortQueriesDFS(queryMrn string, queriesMap map[string]*explorer.
}

// Compile a bundle. See CompileExt for a full description.
func (p *Bundle) Compile(ctx context.Context, schema llx.Schema, library Library) (*PolicyBundleMap, error) {
func (p *Bundle) Compile(ctx context.Context, schema resources.ResourcesSchema, library Library) (*PolicyBundleMap, error) {
return p.CompileExt(ctx, BundleCompileConf{
CompilerConfig: mqlc.NewConfig(schema, cnquery.DefaultFeatures),
Library: library,
Expand Down
3 changes: 2 additions & 1 deletion policy/executor/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"go.mondoo.com/cnquery/v10/llx"
"go.mondoo.com/cnquery/v10/logger"
"go.mondoo.com/cnquery/v10/mqlc"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/cnquery/v10/types"
"go.mondoo.com/cnspec/v10"
"go.mondoo.com/cnspec/v10/policy/executor/internal"
Expand Down Expand Up @@ -648,6 +649,6 @@ func (e *Executor) MissingQueries() []*MissingQuery {
}

// Schema is used for testing. Check carefully if you have other intentions
func (e *Executor) Schema() llx.Schema {
func (e *Executor) Schema() resources.ResourcesSchema {
return e.runtime.Schema()
}
3 changes: 3 additions & 0 deletions policy/scan/benchmark/benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/require"
"go.mondoo.com/cnquery/v10"
"go.mondoo.com/cnquery/v10/mqlc"
"go.mondoo.com/cnquery/v10/providers"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/inventory"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/testutils"
"go.mondoo.com/cnspec/v10/policy"
Expand All @@ -25,6 +26,7 @@ func init() {
}

func BenchmarkScan_SingleAsset(b *testing.B) {
defer providers.Coordinator.Shutdown()
ctx := context.Background()
runtime := testutils.Local()
conf := mqlc.NewConfig(runtime.Schema(), cnquery.DefaultFeatures)
Expand Down Expand Up @@ -73,6 +75,7 @@ func BenchmarkScan_SingleAsset(b *testing.B) {
}

func BenchmarkScan_MultipleAssets(b *testing.B) {
defer providers.Coordinator.Shutdown()
ctx := context.Background()
runtime := testutils.Local()
conf := mqlc.NewConfig(runtime.Schema(), cnquery.DefaultFeatures)
Expand Down
23 changes: 0 additions & 23 deletions policy/scan/local_scanner.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ type LocalScanner struct {
allowJobCredentials bool
disableProgressBar bool
reportType ReportType
scanMutex sync.Mutex
}

type ScannerOption func(*LocalScanner)
Expand Down Expand Up @@ -136,13 +135,6 @@ func (s *LocalScanner) Schedule(ctx context.Context, job *Job) (*Empty, error) {
}

func (s *LocalScanner) Run(ctx context.Context, job *Job) (*ScanResult, error) {
// We want to run 1 scan at a time because we kill all providers after a scan.
// If we do >1 scan in parallel it is possible that we kill the provider of the
// scan that is in progress, which will result in errors. We can address this later
// by attaching a provider to a scan and killing only the providers that are not
// not actively used.
s.scanMutex.Lock()
defer s.scanMutex.Unlock()
if job == nil {
return nil, status.Errorf(codes.InvalidArgument, "missing scan job")
}
Expand Down Expand Up @@ -273,9 +265,6 @@ func createReporter(ctx context.Context, job *Job, upstream *upstream.UpstreamCo
}

func (s *LocalScanner) distributeJob(job *Job, ctx context.Context, upstream *upstream.UpstreamConfig) (*ScanResult, error) {
// Always shut down the coordinator, to make sure providers are killed
defer providers.Coordinator.Shutdown()

reporter, err := createReporter(ctx, job, upstream)
if err != nil {
return nil, err
Expand Down Expand Up @@ -434,18 +423,6 @@ func (s *LocalScanner) distributeJob(job *Job, ctx context.Context, upstream *up
return reporter.Reports(), nil
}

func batch[T any](list []T, batchSize int) [][]T {
var res [][]T
for i := 0; i < len(list); i += batchSize {
end := i + batchSize
if end > len(list) {
end = len(list)
}
res = append(res, list[i:end])
}
return res
}

func (s *LocalScanner) upstreamServices(conf *upstream.UpstreamConfig) *policy.Services {
if conf == nil ||
conf.ApiEndpoint == "" ||
Expand Down
3 changes: 2 additions & 1 deletion policy/services.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"go.mondoo.com/cnquery/v10/explorer"
"go.mondoo.com/cnquery/v10/llx"
"go.mondoo.com/cnquery/v10/mqlc"
"go.mondoo.com/cnquery/v10/providers-sdk/v1/resources"
"go.mondoo.com/ranger-rpc"
)

Expand Down Expand Up @@ -81,7 +82,7 @@ func NewRemoteServices(addr string, auth []ranger.ClientPlugin, httpClient *http
}, nil
}

func (l *LocalServices) Schema() llx.Schema {
func (l *LocalServices) Schema() resources.ResourcesSchema {
return l.Runtime.Schema()
}

Expand Down

0 comments on commit 5222e1e

Please sign in to comment.