feat: do not redeploy global service if spec hasn't changed

This commit is contained in:
Pavel Sviderski
2025-02-14 17:49:46 +10:00
parent 5e2b2ac836
commit a53fa2c1d8
6 changed files with 107 additions and 34 deletions
+18 -4
View File
@@ -58,10 +58,24 @@ func (c *Container) ServicePorts() ([]PortSpec, error) {
return ports, nil
}
func (c *Container) ServiceSpec() ServiceSpec {
// TODO: migrate api.Container type to use ContainerJSON to make it possible to construct
// a ServiceSpec from a Container.
return ServiceSpec{}
// ServiceSpec constructs a service spec from the container's configuration.
func (c *Container) ServiceSpec() (ServiceSpec, error) {
ports, err := c.ServicePorts()
if err != nil {
return ServiceSpec{}, fmt.Errorf("get service ports: %w", err)
}
return ServiceSpec{
Container: ContainerSpec{
Command: c.Config.Cmd,
Image: c.Config.Image,
Init: c.HostConfig.Init,
Volumes: c.HostConfig.Binds,
},
Mode: c.ServiceMode(),
Name: c.ServiceName(),
Ports: ports,
}, nil
}
// Healthy determines if the container is running and healthy.