From 5c1a3dd6949aaf3b59c8b346a0ae1d97f30b874c Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Sat, 23 Nov 2024 15:35:26 +1000 Subject: [PATCH] move generic docker types to top level docker package --- internal/cli/client/service.go | 16 ++++++++-------- .../docker/container => docker}/container.go | 2 +- .../container => docker}/container_test.go | 2 +- internal/docker/service.go | 6 ++++++ internal/machine/docker/manager.go | 8 ++++---- internal/machine/store/container.go | 8 ++++---- 6 files changed, 24 insertions(+), 18 deletions(-) rename internal/{machine/docker/container => docker}/container.go (98%) rename internal/{machine/docker/container => docker}/container_test.go (99%) create mode 100644 internal/docker/service.go diff --git a/internal/cli/client/service.go b/internal/cli/client/service.go index 4fa5d0a9..daabd870 100644 --- a/internal/cli/client/service.go +++ b/internal/cli/client/service.go @@ -5,15 +5,15 @@ import ( "errors" "fmt" "github.com/distribution/reference" - dockercontainer "github.com/docker/docker/api/types/container" + "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" "google.golang.org/grpc/metadata" "google.golang.org/protobuf/types/known/emptypb" "slices" "strings" + "uncloud/internal/docker" "uncloud/internal/machine/api/pb" - "uncloud/internal/machine/docker" - "uncloud/internal/machine/docker/container" + machinedocker "uncloud/internal/machine/docker" "uncloud/internal/secret" ) @@ -100,16 +100,16 @@ func (c *Client) RunService(ctx context.Context, opts *ServiceOptions) (RunServi } containerName := fmt.Sprintf("%s-%s", serviceName, suffix) - config := &dockercontainer.Config{ + config := &container.Config{ Image: opts.Image, Labels: map[string]string{ - container.LabelServiceID: serviceID, - container.LabelServiceName: serviceName, + docker.LabelServiceID: serviceID, + docker.LabelServiceName: serviceName, }, } netConfig := &network.NetworkingConfig{ EndpointsConfig: map[string]*network.EndpointSettings{ - docker.NetworkName: {}, + machinedocker.NetworkName: {}, }, } // TODO: pull image if it doesn't exist on the machine. @@ -117,7 +117,7 @@ func (c *Client) RunService(ctx context.Context, opts *ServiceOptions) (RunServi if err != nil { return resp, fmt.Errorf("create container: %w", err) } - if err = c.StartContainer(ctx, createResp.ID, dockercontainer.StartOptions{}); err != nil { + if err = c.StartContainer(ctx, createResp.ID, container.StartOptions{}); err != nil { return resp, fmt.Errorf("start container: %w", err) } diff --git a/internal/machine/docker/container/container.go b/internal/docker/container.go similarity index 98% rename from internal/machine/docker/container/container.go rename to internal/docker/container.go index 8414b313..ddb57aaa 100644 --- a/internal/machine/docker/container/container.go +++ b/internal/docker/container.go @@ -1,4 +1,4 @@ -package container +package docker import ( "github.com/docker/docker/api/types" diff --git a/internal/machine/docker/container/container_test.go b/internal/docker/container_test.go similarity index 99% rename from internal/machine/docker/container/container_test.go rename to internal/docker/container_test.go index 609fcc0f..19007ac5 100644 --- a/internal/machine/docker/container/container_test.go +++ b/internal/docker/container_test.go @@ -1,4 +1,4 @@ -package container +package docker import ( "github.com/docker/docker/api/types" diff --git a/internal/docker/service.go b/internal/docker/service.go new file mode 100644 index 00000000..9d65e886 --- /dev/null +++ b/internal/docker/service.go @@ -0,0 +1,6 @@ +package docker + +const ( + DeployModeReplicated = "replicated" + DeployModeGlobal = "global" +) diff --git a/internal/machine/docker/manager.go b/internal/machine/docker/manager.go index 9da26372..a0c0cb05 100644 --- a/internal/machine/docker/manager.go +++ b/internal/machine/docker/manager.go @@ -10,7 +10,7 @@ import ( "github.com/docker/docker/client" "log/slog" "time" - "uncloud/internal/machine/docker/container" + "uncloud/internal/docker" "uncloud/internal/machine/store" ) @@ -152,8 +152,8 @@ func (m *Manager) syncContainersToStore(ctx context.Context) error { // List only Uncloud service containers identified by their labels. containers, err := m.client.ContainerList(ctx, dockercontainer.ListOptions{ Filters: filters.NewArgs( - filters.Arg("label", container.LabelServiceID), - filters.Arg("label", container.LabelServiceName), + filters.Arg("label", docker.LabelServiceID), + filters.Arg("label", docker.LabelServiceName), ), }) if err != nil { @@ -185,7 +185,7 @@ func (m *Manager) syncContainersToStore(ctx context.Context) error { // Create or update the current Docker containers in the store. for _, dc := range containers { - c := &container.Container{Container: dc} + c := &docker.Container{Container: dc} if err = m.store.CreateOrUpdateContainer(ctx, c, m.machineID); err != nil { storeErr = errors.Join(storeErr, fmt.Errorf("create or update container %q: %w", c.ID, err)) } diff --git a/internal/machine/store/container.go b/internal/machine/store/container.go index 4c2b6370..90ea79b1 100644 --- a/internal/machine/store/container.go +++ b/internal/machine/store/container.go @@ -7,7 +7,7 @@ import ( "log/slog" "strings" "time" - "uncloud/internal/machine/docker/container" + "uncloud/internal/docker" ) const ( @@ -21,7 +21,7 @@ const ( ) type ContainerRecord struct { - Container *container.Container + Container *docker.Container MachineID string SyncStatus string UpdatedAt time.Time @@ -38,7 +38,7 @@ type DeleteOptions struct { // CreateOrUpdateContainer creates a new container record or updates an existing one in the store database. // The container is associated with the given machine ID that indicates which machine the container is running on. -func (s *Store) CreateOrUpdateContainer(ctx context.Context, c *container.Container, machineID string) error { +func (s *Store) CreateOrUpdateContainer(ctx context.Context, c *docker.Container, machineID string) error { cJSON, err := json.Marshal(c) if err != nil { return fmt.Errorf("marshal container: %w", err) @@ -93,7 +93,7 @@ func (s *Store) ListContainers(ctx context.Context, opts ListOptions) ([]*Contai return nil, fmt.Errorf("scan container record: %w", err) } - var c container.Container + var c docker.Container if err = json.Unmarshal([]byte(cJSON), &c); err != nil { return nil, fmt.Errorf("unmarshal container: %w", err) }