refactor: rename function-runtime-oci package to container
Signed-off-by: Philippe Scorsolini <p.scorsolini@gmail.com>
This commit is contained in:
		
							parent
							
								
									dba139a3d3
								
							
						
					
					
						commit
						d6ffe9fbd1
					
				|  | @ -30,7 +30,7 @@ import ( | ||||||
| 	"github.com/crossplane/crossplane-runtime/pkg/errors" | 	"github.com/crossplane/crossplane-runtime/pkg/errors" | ||||||
| 
 | 
 | ||||||
| 	"github.com/crossplane/function-runtime-oci/cmd/function-runtime-oci/start" | 	"github.com/crossplane/function-runtime-oci/cmd/function-runtime-oci/start" | ||||||
| 	"github.com/crossplane/function-runtime-oci/internal/function-runtime-oci" | 	"github.com/crossplane/function-runtime-oci/internal/container" | ||||||
| 	"github.com/crossplane/function-runtime-oci/internal/proto/v1alpha1" | 	"github.com/crossplane/function-runtime-oci/internal/proto/v1alpha1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -65,7 +65,7 @@ func (c *Command) Run(args *start.Args) error { | ||||||
| 	// own UID and GID to root inside the user namespace.
 | 	// own UID and GID to root inside the user namespace.
 | ||||||
| 	rootUID := os.Getuid() | 	rootUID := os.Getuid() | ||||||
| 	rootGID := os.Getgid() | 	rootGID := os.Getgid() | ||||||
| 	setuid := function_runtime_oci.HasCapSetUID() && function_runtime_oci.HasCapSetGID() // We're using 'setuid' as shorthand for both here.
 | 	setuid := container.HasCapSetUID() && container.HasCapSetGID() // We're using 'setuid' as shorthand for both here.
 | ||||||
| 	if setuid { | 	if setuid { | ||||||
| 		rootUID = c.MapRootUID | 		rootUID = c.MapRootUID | ||||||
| 		rootGID = c.MapRootGID | 		rootGID = c.MapRootGID | ||||||
|  | @ -91,7 +91,7 @@ func (c *Command) Run(args *start.Args) error { | ||||||
| 		return errors.Wrap(err, errAuthCfg) | 		return errors.Wrap(err, errAuthCfg) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	f := function_runtime_oci.NewContainerRunner(function_runtime_oci.SetUID(setuid), function_runtime_oci.MapToRoot(rootUID, rootGID), function_runtime_oci.WithCacheDir(filepath.Clean(c.CacheDir)), function_runtime_oci.WithRegistry(args.Registry)) | 	f := container.NewRunner(container.SetUID(setuid), container.MapToRoot(rootUID, rootGID), container.WithCacheDir(filepath.Clean(c.CacheDir)), container.WithRegistry(args.Registry)) | ||||||
| 	rsp, err := f.RunFunction(context.Background(), &v1alpha1.RunFunctionRequest{ | 	rsp, err := f.RunFunction(context.Background(), &v1alpha1.RunFunctionRequest{ | ||||||
| 		Image: c.Image, | 		Image: c.Image, | ||||||
| 		Input: c.FunctionIO, | 		Input: c.FunctionIO, | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ import ( | ||||||
| 	"github.com/crossplane/crossplane-runtime/pkg/errors" | 	"github.com/crossplane/crossplane-runtime/pkg/errors" | ||||||
| 	"github.com/crossplane/crossplane-runtime/pkg/logging" | 	"github.com/crossplane/crossplane-runtime/pkg/logging" | ||||||
| 
 | 
 | ||||||
| 	"github.com/crossplane/function-runtime-oci/internal/function-runtime-oci" | 	"github.com/crossplane/function-runtime-oci/internal/container" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Error strings
 | // Error strings
 | ||||||
|  | @ -54,18 +54,18 @@ func (c *Command) Run(args *Args, log logging.Logger) error { | ||||||
| 	// own UID and GID to root inside the user namespace.
 | 	// own UID and GID to root inside the user namespace.
 | ||||||
| 	rootUID := os.Getuid() | 	rootUID := os.Getuid() | ||||||
| 	rootGID := os.Getgid() | 	rootGID := os.Getgid() | ||||||
| 	setuid := function_runtime_oci.HasCapSetUID() && function_runtime_oci.HasCapSetGID() // We're using 'setuid' as shorthand for both here.
 | 	setuid := container.HasCapSetUID() && container.HasCapSetGID() // We're using 'setuid' as shorthand for both here.
 | ||||||
| 	if setuid { | 	if setuid { | ||||||
| 		rootUID = c.MapRootUID | 		rootUID = c.MapRootUID | ||||||
| 		rootGID = c.MapRootGID | 		rootGID = c.MapRootGID | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// TODO(negz): Expose a healthz endpoint and otel metrics.
 | 	// TODO(negz): Expose a healthz endpoint and otel metrics.
 | ||||||
| 	f := function_runtime_oci.NewContainerRunner( | 	f := container.NewRunner( | ||||||
| 		function_runtime_oci.SetUID(setuid), | 		container.SetUID(setuid), | ||||||
| 		function_runtime_oci.MapToRoot(rootUID, rootGID), | 		container.MapToRoot(rootUID, rootGID), | ||||||
| 		function_runtime_oci.WithCacheDir(filepath.Clean(c.CacheDir)), | 		container.WithCacheDir(filepath.Clean(c.CacheDir)), | ||||||
| 		function_runtime_oci.WithLogger(log), | 		container.WithLogger(log), | ||||||
| 		function_runtime_oci.WithRegistry(args.Registry)) | 		container.WithRegistry(args.Registry)) | ||||||
| 	return errors.Wrap(f.ListenAndServe(c.Network, c.Address), errListenAndServe) | 	return errors.Wrap(f.ListenAndServe(c.Network, c.Address), errListenAndServe) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package function_runtime_oci | package container | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"io" | 	"io" | ||||||
|  | @ -36,9 +36,9 @@ const ( | ||||||
| 
 | 
 | ||||||
| const defaultCacheDir = "/function-runtime-oci" | const defaultCacheDir = "/function-runtime-oci" | ||||||
| 
 | 
 | ||||||
| // An ContainerRunner runs a Composition Function packaged as an OCI image by
 | // A Runner runs a Composition Function packaged as an OCI image by
 | ||||||
| // extracting it and running it as a 'rootless' container.
 | // extracting it and running it as a 'rootless' container.
 | ||||||
| type ContainerRunner struct { | type Runner struct { | ||||||
| 	v1alpha1.UnimplementedContainerizedFunctionRunnerServiceServer | 	v1alpha1.UnimplementedContainerizedFunctionRunnerServiceServer | ||||||
| 
 | 
 | ||||||
| 	log logging.Logger | 	log logging.Logger | ||||||
|  | @ -50,13 +50,13 @@ type ContainerRunner struct { | ||||||
| 	registry string | 	registry string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // A ContainerRunnerOption configures a new ContainerRunner.
 | // A RunnerOption configures a new Runner.
 | ||||||
| type ContainerRunnerOption func(*ContainerRunner) | type RunnerOption func(*Runner) | ||||||
| 
 | 
 | ||||||
| // MapToRoot configures what UID and GID should map to root (UID/GID 0) in the
 | // MapToRoot configures what UID and GID should map to root (UID/GID 0) in the
 | ||||||
| // user namespace in which the function will be run.
 | // user namespace in which the function will be run.
 | ||||||
| func MapToRoot(uid, gid int) ContainerRunnerOption { | func MapToRoot(uid, gid int) RunnerOption { | ||||||
| 	return func(r *ContainerRunner) { | 	return func(r *Runner) { | ||||||
| 		r.rootUID = uid | 		r.rootUID = uid | ||||||
| 		r.rootGID = gid | 		r.rootGID = gid | ||||||
| 	} | 	} | ||||||
|  | @ -65,40 +65,40 @@ func MapToRoot(uid, gid int) ContainerRunnerOption { | ||||||
| // SetUID indicates that the container runner should attempt operations that
 | // SetUID indicates that the container runner should attempt operations that
 | ||||||
| // require CAP_SETUID and CAP_SETGID, for example creating a user namespace that
 | // require CAP_SETUID and CAP_SETGID, for example creating a user namespace that
 | ||||||
| // maps arbitrary UIDs and GIDs to the parent namespace.
 | // maps arbitrary UIDs and GIDs to the parent namespace.
 | ||||||
| func SetUID(s bool) ContainerRunnerOption { | func SetUID(s bool) RunnerOption { | ||||||
| 	return func(r *ContainerRunner) { | 	return func(r *Runner) { | ||||||
| 		r.setuid = s | 		r.setuid = s | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // WithCacheDir specifies the directory used for caching function images and
 | // WithCacheDir specifies the directory used for caching function images and
 | ||||||
| // containers.
 | // containers.
 | ||||||
| func WithCacheDir(d string) ContainerRunnerOption { | func WithCacheDir(d string) RunnerOption { | ||||||
| 	return func(r *ContainerRunner) { | 	return func(r *Runner) { | ||||||
| 		r.cache = d | 		r.cache = d | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // WithRegistry specifies the default registry used to retrieve function images and
 | // WithRegistry specifies the default registry used to retrieve function images and
 | ||||||
| // containers.
 | // containers.
 | ||||||
| func WithRegistry(dr string) ContainerRunnerOption { | func WithRegistry(dr string) RunnerOption { | ||||||
| 	return func(r *ContainerRunner) { | 	return func(r *Runner) { | ||||||
| 		r.registry = dr | 		r.registry = dr | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // WithLogger configures which logger the container runner should use. Logging
 | // WithLogger configures which logger the container runner should use. Logging
 | ||||||
| // is disabled by default.
 | // is disabled by default.
 | ||||||
| func WithLogger(l logging.Logger) ContainerRunnerOption { | func WithLogger(l logging.Logger) RunnerOption { | ||||||
| 	return func(cr *ContainerRunner) { | 	return func(cr *Runner) { | ||||||
| 		cr.log = l | 		cr.log = l | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewContainerRunner returns a new Runner that runs functions as rootless
 | // NewRunner returns a new Runner that runs functions as rootless
 | ||||||
| // containers.
 | // containers.
 | ||||||
| func NewContainerRunner(o ...ContainerRunnerOption) *ContainerRunner { | func NewRunner(o ...RunnerOption) *Runner { | ||||||
| 	r := &ContainerRunner{cache: defaultCacheDir, log: logging.NewNopLogger()} | 	r := &Runner{cache: defaultCacheDir, log: logging.NewNopLogger()} | ||||||
| 	for _, fn := range o { | 	for _, fn := range o { | ||||||
| 		fn(r) | 		fn(r) | ||||||
| 	} | 	} | ||||||
|  | @ -107,7 +107,7 @@ func NewContainerRunner(o ...ContainerRunnerOption) *ContainerRunner { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // ListenAndServe gRPC connections at the supplied address.
 | // ListenAndServe gRPC connections at the supplied address.
 | ||||||
| func (r *ContainerRunner) ListenAndServe(network, address string) error { | func (r *Runner) ListenAndServe(network, address string) error { | ||||||
| 	r.log.Debug("Listening", "network", network, "address", address) | 	r.log.Debug("Listening", "network", network, "address", address) | ||||||
| 	lis, err := net.Listen(network, address) | 	lis, err := net.Listen(network, address) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | @ -16,7 +16,7 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package function_runtime_oci | package container | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
|  | @ -82,7 +82,7 @@ func HasCapSetGID() bool { | ||||||
| // RunFunction runs a function as a rootless OCI container. Functions that
 | // RunFunction runs a function as a rootless OCI container. Functions that
 | ||||||
| // return non-zero, or that cannot be executed in the first place (e.g. because
 | // return non-zero, or that cannot be executed in the first place (e.g. because
 | ||||||
| // they cannot be fetched from the registry) will return an error.
 | // they cannot be fetched from the registry) will return an error.
 | ||||||
| func (r *ContainerRunner) RunFunction(ctx context.Context, req *v1alpha1.RunFunctionRequest) (*v1alpha1.RunFunctionResponse, error) { | func (r *Runner) RunFunction(ctx context.Context, req *v1alpha1.RunFunctionRequest) (*v1alpha1.RunFunctionResponse, error) { | ||||||
| 	r.log.Debug("Running function", "image", req.Image) | 	r.log.Debug("Running function", "image", req.Image) | ||||||
| 
 | 
 | ||||||
| 	/* | 	/* | ||||||
|  | @ -16,7 +16,7 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package function_runtime_oci | package container | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"context" | 	"context" | ||||||
|  | @ -35,6 +35,6 @@ func HasCapSetUID() bool { return false } | ||||||
| func HasCapSetGID() bool { return false } | func HasCapSetGID() bool { return false } | ||||||
| 
 | 
 | ||||||
| // RunFunction returns an error on non-Linux.
 | // RunFunction returns an error on non-Linux.
 | ||||||
| func (r *ContainerRunner) RunFunction(_ context.Context, _ *v1alpha1.RunFunctionRequest) (*v1alpha1.RunFunctionResponse, error) { | func (r *Runner) RunFunction(_ context.Context, _ *v1alpha1.RunFunctionRequest) (*v1alpha1.RunFunctionResponse, error) { | ||||||
| 	return nil, errors.New(errLinuxOnly) | 	return nil, errors.New(errLinuxOnly) | ||||||
| } | } | ||||||
|  | @ -16,7 +16,7 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package function_runtime_oci | package container | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
|  | @ -16,7 +16,7 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| package function_runtime_oci | package container | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
|  | @ -14,6 +14,6 @@ See the License for the specific language governing permissions and | ||||||
| limitations under the License. | limitations under the License. | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| // Package function-runtime-oci is the reference implementation of Composition
 | // Package container is the reference implementation of Composition
 | ||||||
| // Functions.
 | // Functions.
 | ||||||
| package function_runtime_oci | package container | ||||||
		Loading…
	
		Reference in New Issue