move common api types to api package

This commit is contained in:
Pavel Sviderski
2024-12-05 15:17:36 +10:00
parent 88ce2d5181
commit 3ac166e6cb
7 changed files with 80 additions and 83 deletions
+46 -3
View File
@@ -1,5 +1,11 @@
package api
import (
"encoding/json"
"fmt"
"uncloud/internal/machine/api/pb"
)
const (
ServiceModeReplicated = "replicated"
ServiceModeGlobal = "global"
@@ -19,7 +25,44 @@ type ContainerSpec struct {
Init *bool
}
type MachineContainerID struct {
MachineID string
ContainerID string
type Service struct {
ID string
Name string
Mode string
Containers []MachineContainer
}
type MachineContainer struct {
MachineID string
Container Container
}
func ServiceFromProto(s *pb.Service) (Service, error) {
var err error
containers := make([]MachineContainer, len(s.Containers))
for i, sc := range s.Containers {
containers[i], err = machineContainerFromProto(sc)
if err != nil {
return Service{}, err
}
}
return Service{
ID: s.Id,
Name: s.Name,
Mode: s.Mode,
Containers: containers,
}, nil
}
func machineContainerFromProto(sc *pb.Service_Container) (MachineContainer, error) {
var c Container
if err := json.Unmarshal(sc.Container, &c); err != nil {
return MachineContainer{}, fmt.Errorf("unmarshal container: %w", err)
}
return MachineContainer{
MachineID: sc.MachineId,
Container: c,
}, nil
}