pulumi/pkg/resource/deploy/source_fixed.go
joeduffy 9599ea2e55 Get planning engine unit tests running again
We now build and run cleanly locally (for unit tests).  The
integration tests are still on the floor at the moment.
2017-09-04 11:35:21 -07:00

56 lines
1.3 KiB
Go

// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
package deploy
import (
"github.com/pulumi/pulumi-fabric/pkg/tokens"
)
// NewFixedSource returns a valid planning source that is comprised of a list of pre-computed resource objects.
func NewFixedSource(ctx tokens.PackageName, resources []SourceGoal) Source {
return &fixedSource{ctx: ctx, resources: resources}
}
// A fixedSource just returns from a fixed set of resource states.
type fixedSource struct {
ctx tokens.PackageName
resources []SourceGoal
}
func (src *fixedSource) Close() error {
return nil // nothing to do.
}
func (src *fixedSource) Pkg() tokens.PackageName {
return src.ctx
}
func (src *fixedSource) Info() interface{} {
return nil
}
func (src *fixedSource) Iterate() (SourceIterator, error) {
return &fixedSourceIterator{
src: src,
current: -1,
}, nil
}
// fixedSourceIterator always returns nil, nil in response to Next, indicating that it is done.
type fixedSourceIterator struct {
src *fixedSource
current int
}
func (iter *fixedSourceIterator) Close() error {
return nil // nothing to do.
}
func (iter *fixedSourceIterator) Next() (SourceGoal, error) {
iter.current++
if iter.current >= len(iter.src.resources) {
return nil, nil
}
return iter.src.resources[iter.current], nil
}