Skip to content

Commit

Permalink
refactor: tidy up packages
Browse files Browse the repository at this point in the history
  • Loading branch information
nixpig committed Oct 2, 2024
1 parent 6eda7a6 commit ea01e77
Show file tree
Hide file tree
Showing 12 changed files with 53 additions and 98 deletions.
4 changes: 2 additions & 2 deletions internal/bundle.go → internal/bundle/bundle.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package internal
package bundle

import (
"encoding/json"
Expand All @@ -16,7 +16,7 @@ type Bundle struct {
Spec specs.Spec
}

func NewBundle(path string) (*Bundle, error) {
func New(path string) (*Bundle, error) {
absPath, err := filepath.Abs(path)
if err != nil {
return nil, fmt.Errorf("absolute path to bundle: %w", err)
Expand Down
7 changes: 4 additions & 3 deletions internal/commands/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import (
"strconv"
"syscall"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/bundle"
"github.com/nixpig/brownie/internal/container"
"github.com/nixpig/brownie/internal/ipc"
"github.com/nixpig/brownie/internal/terminal"
"github.com/opencontainers/runtime-spec/specs-go"
Expand All @@ -24,7 +25,7 @@ type CreateOpts struct {
}

func Create(opts *CreateOpts, log *zerolog.Logger) error {
bundle, err := internal.NewBundle(opts.Bundle)
bundle, err := bundle.New(opts.Bundle)
if err != nil {
return fmt.Errorf("create bundle: %w", err)
}
Expand All @@ -33,7 +34,7 @@ func Create(opts *CreateOpts, log *zerolog.Logger) error {
return errors.New("not a linux container")
}

container, err := internal.NewContainer(opts.ID, bundle)
container, err := container.New(opts.ID, bundle)
if err != nil {
return fmt.Errorf("create container: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions internal/commands/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"os"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/container"
"github.com/rs/zerolog"
)

Expand All @@ -15,7 +15,7 @@ type DeleteOpts struct {
}

func Delete(opts *DeleteOpts, log *zerolog.Logger) error {
container, err := internal.LoadContainer(opts.ID)
container, err := container.LoadContainer(opts.ID)
if err != nil {
return fmt.Errorf("load container: %w", err)
}
Expand Down
6 changes: 3 additions & 3 deletions internal/commands/fork.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import (
"strings"
"syscall"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/capabilities"
"github.com/nixpig/brownie/internal/cgroups"
"github.com/nixpig/brownie/internal/container"
"github.com/nixpig/brownie/internal/filesystem"
"github.com/nixpig/brownie/internal/terminal"
"github.com/opencontainers/runtime-spec/specs-go"
Expand All @@ -23,7 +23,7 @@ import (

func listen(
conn net.Conn,
container *internal.Container,
container *container.Container,
log *zerolog.Logger,
) error {
b := make([]byte, 128)
Expand Down Expand Up @@ -62,7 +62,7 @@ type ForkOpts struct {
}

func Fork(opts *ForkOpts, log *zerolog.Logger) error {
container, err := internal.LoadContainer(opts.ID)
container, err := container.LoadContainer(opts.ID)
if err != nil {
return fmt.Errorf("load existing container for fork: %w", err)
}
Expand Down
7 changes: 4 additions & 3 deletions internal/commands/kill.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import (
"fmt"
"syscall"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/container"
"github.com/nixpig/brownie/internal/signal"
"github.com/opencontainers/runtime-spec/specs-go"
"github.com/rs/zerolog"
)
Expand All @@ -16,7 +17,7 @@ type KillOpts struct {
}

func Kill(opts *KillOpts, log *zerolog.Logger) error {
container, err := internal.LoadContainer(opts.ID)
container, err := container.LoadContainer(opts.ID)
if err != nil {
return fmt.Errorf("load container: %w", err)
}
Expand All @@ -25,7 +26,7 @@ func Kill(opts *KillOpts, log *zerolog.Logger) error {
return errors.New("container is not created or running")
}

s, err := internal.ToSignal(opts.Signal)
s, err := signal.FromString(opts.Signal)
if err != nil {
return fmt.Errorf("convert to signal: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions internal/commands/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"net"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/container"
"github.com/opencontainers/runtime-spec/specs-go"
"github.com/rs/zerolog"
)
Expand All @@ -18,7 +18,7 @@ func Start(
opts *StartOpts,
log *zerolog.Logger,
) error {
container, err := internal.LoadContainer(opts.ID)
container, err := container.LoadContainer(opts.ID)
if err != nil {
return fmt.Errorf("load container: %w", err)
}
Expand Down
6 changes: 3 additions & 3 deletions internal/commands/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/json"
"fmt"

"github.com/nixpig/brownie/internal"
"github.com/nixpig/brownie/internal/container"
"github.com/opencontainers/runtime-spec/specs-go"
"github.com/rs/zerolog"
)
Expand All @@ -30,7 +30,7 @@ type StateCLI struct {
Annotations map[string]string `json:"annotations,omitempty"`
}

func stateToCliState(state *internal.ContainerState) StateCLI {
func stateToCliState(state *container.ContainerState) StateCLI {
return StateCLI{
Version: state.Version,
ID: state.ID,
Expand All @@ -42,7 +42,7 @@ func stateToCliState(state *internal.ContainerState) StateCLI {
}

func State(opts *StateOpts, log *zerolog.Logger) (string, error) {
container, err := internal.LoadContainer(opts.ID)
container, err := container.LoadContainer(opts.ID)
if err != nil {
return "", fmt.Errorf("load container: %w", err)
}
Expand Down
35 changes: 19 additions & 16 deletions internal/container.go → internal/container/container.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package internal
package container

import (
"encoding/json"
Expand All @@ -8,7 +8,10 @@ import (
"path/filepath"
"syscall"

"github.com/nixpig/brownie/internal/bundle"
"github.com/nixpig/brownie/internal/capabilities"
"github.com/nixpig/brownie/internal/lifecycle"
"github.com/nixpig/brownie/internal/namespace"
"github.com/nixpig/brownie/pkg"
"github.com/opencontainers/runtime-spec/specs-go"
cp "github.com/otiai10/copy"
Expand All @@ -34,7 +37,7 @@ type ContainerState struct {
specs.State
}

func NewContainerState(id string, bundle *Bundle) (*ContainerState, error) {
func NewState(id string, bundle *bundle.Bundle) (*ContainerState, error) {
path := filepath.Join(pkg.BrownieRootDir, "containers", id, "state.json")
f, err := os.Create(path)
if err != nil {
Expand All @@ -55,7 +58,7 @@ func NewContainerState(id string, bundle *Bundle) (*ContainerState, error) {
}, nil
}

func LoadContainerState(id string) (*ContainerState, error) {
func LoadState(id string) (*ContainerState, error) {
path := filepath.Join(pkg.BrownieRootDir, "containers", id, "state.json")
b, err := os.ReadFile(path)

Expand Down Expand Up @@ -89,7 +92,7 @@ func (c *ContainerState) Save() error {
return nil
}

func NewContainer(id string, bundle *Bundle) (*Container, error) {
func New(id string, bundle *bundle.Bundle) (*Container, error) {
path := filepath.Join(pkg.BrownieRootDir, "containers", id)
if stat, _ := os.Stat(path); stat != nil {
return nil, errors.New("container with specified ID already exists")
Expand All @@ -99,7 +102,7 @@ func NewContainer(id string, bundle *Bundle) (*Container, error) {
return nil, fmt.Errorf("make container directory: %w", err)
}

state, err := NewContainerState(id, bundle)
state, err := NewState(id, bundle)
if err != nil {
return nil, fmt.Errorf("create container state: %w", err)
}
Expand All @@ -126,7 +129,7 @@ func NewContainer(id string, bundle *Bundle) (*Container, error) {

var namespaceFlags uintptr
for _, ns := range spec.Linux.Namespaces {
ns := LinuxNamespace(ns)
ns := namespace.LinuxNamespace(ns)
flag, err := ns.ToFlag()
if err != nil {
return nil, fmt.Errorf("convert namespace to flag: %w", err)
Expand Down Expand Up @@ -206,7 +209,7 @@ func LoadContainer(id string) (*Container, error) {

rootfsPath := filepath.Join(path, spec.Root.Path)

state, err := LoadContainerState(id)
state, err := LoadState(id)
if err != nil {
return nil, fmt.Errorf("load state for container: %w", err)
}
Expand All @@ -223,26 +226,26 @@ func LoadContainer(id string) (*Container, error) {
}, nil
}

func (c *Container) ExecHooks(lifecycle string) error {
func (c *Container) ExecHooks(hook string) error {
if c.Spec.Hooks == nil {
return nil
}

var hooks []specs.Hook
switch lifecycle {
var specHooks []specs.Hook
switch hook {
case "createRuntime":
hooks = c.Spec.Hooks.CreateRuntime
specHooks = c.Spec.Hooks.CreateRuntime
case "createContainer":
hooks = c.Spec.Hooks.CreateContainer
specHooks = c.Spec.Hooks.CreateContainer
case "startContainer":
hooks = c.Spec.Hooks.StartContainer
specHooks = c.Spec.Hooks.StartContainer
case "poststart":
hooks = c.Spec.Hooks.Poststart
specHooks = c.Spec.Hooks.Poststart
case "poststop":
hooks = c.Spec.Hooks.Poststop
specHooks = c.Spec.Hooks.Poststop
}

return ExecHooks(hooks)
return lifecycle.ExecHooks(specHooks)
}

func (c *Container) CanBeStarted() bool {
Expand Down
2 changes: 1 addition & 1 deletion internal/exec_hooks.go → internal/lifecycle/hooks.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package internal
package lifecycle

import (
"context"
Expand Down
2 changes: 1 addition & 1 deletion internal/namespace.go → internal/namespace/namespace.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package internal
package namespace

import (
"errors"
Expand Down
20 changes: 12 additions & 8 deletions internal/signal.go → internal/signal/signal.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package internal
package signal

import (
"errors"
Expand All @@ -7,13 +7,8 @@ import (
"syscall"
)

func ToSignal(s string) (syscall.Signal, error) {
sig, err := strconv.Atoi(s)
if err != nil {
return -1, fmt.Errorf("signal string to int: %w", err)
}

switch sig {
func FromInt(s int) (syscall.Signal, error) {
switch s {
case 1:
return syscall.SIGHUP, nil
case 2:
Expand All @@ -34,3 +29,12 @@ func ToSignal(s string) (syscall.Signal, error) {

return -1, errors.New("unhandled signal")
}

func FromString(s string) (syscall.Signal, error) {
sig, err := strconv.Atoi(s)
if err != nil {
return -1, fmt.Errorf("signal string to int: %w", err)
}

return FromInt(sig)
}
54 changes: 0 additions & 54 deletions internal/state.go

This file was deleted.

0 comments on commit ea01e77

Please sign in to comment.