add compose-like progress for running service

This commit is contained in:
Pavel Sviderski
2024-12-06 15:44:23 +10:00
parent f85b5dd01d
commit 73d41c75b3
6 changed files with 428 additions and 87 deletions
+24
View File
@@ -3,6 +3,7 @@ package api
import (
"encoding/json"
"fmt"
"github.com/distribution/reference"
"uncloud/internal/machine/api/pb"
)
@@ -18,6 +19,20 @@ type ServiceSpec struct {
Name string
}
func (s *ServiceSpec) Validate() error {
if err := s.Container.Validate(); err != nil {
return err
}
switch s.Mode {
case "", ServiceModeGlobal, ServiceModeReplicated:
default:
return fmt.Errorf("invalid mode: %q", s.Mode)
}
return nil
}
type ContainerSpec struct {
Command []string
Image string
@@ -25,6 +40,15 @@ type ContainerSpec struct {
Init *bool
}
func (s *ContainerSpec) Validate() error {
_, err := reference.ParseDockerRef(s.Image)
if err != nil {
return fmt.Errorf("invalid image: %w", err)
}
return nil
}
type Service struct {
ID string
Name string