add get by name func.

This commit is contained in:
m1k1o
2021-04-04 00:06:57 +02:00
parent eca7262c69
commit 780d66e658
3 changed files with 25 additions and 6 deletions
+14 -5
View File
@@ -74,11 +74,8 @@ func (manager *RoomManagerCtx) listContainers() ([]dockerTypes.Container, error)
return result, nil
}
func (manager *RoomManagerCtx) containerInfo(id string) (*dockerTypes.Container, error) {
args := filters.NewArgs(
filters.Arg("id", id),
filters.Arg("label", "m1k1o.neko_rooms.instance"),
)
func (manager *RoomManagerCtx) containerFilter(args filters.Args) (*dockerTypes.Container, error) {
args.Add("label", "m1k1o.neko_rooms.instance")
containers, err := manager.client.ContainerList(context.Background(), dockerTypes.ContainerListOptions{
All: true,
@@ -103,6 +100,18 @@ func (manager *RoomManagerCtx) containerInfo(id string) (*dockerTypes.Container,
return &container, nil
}
func (manager *RoomManagerCtx) containerById(id string) (*dockerTypes.Container, error) {
return manager.containerFilter(filters.NewArgs(
filters.Arg("id", id),
))
}
func (manager *RoomManagerCtx) containerByName(name string) (*dockerTypes.Container, error) {
return manager.containerFilter(filters.NewArgs(
filters.Arg("name", manager.config.InstanceName+"-"+name),
))
}
func (manager *RoomManagerCtx) inspectContainer(id string) (*dockerTypes.ContainerJSON, error) {
container, err := manager.client.ContainerInspect(context.Background(), id)
if err != nil {
+10 -1
View File
@@ -73,6 +73,15 @@ func (manager *RoomManagerCtx) List() ([]types.RoomEntry, error) {
return result, nil
}
func (manager *RoomManagerCtx) FindByName(name string) (*types.RoomEntry, error) {
container, err := manager.containerByName(name)
if err != nil {
return nil, err
}
return manager.containerToEntry(*container)
}
func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, error) {
if in, _ := utils.ArrayIn(settings.NekoImage, manager.config.NekoImages); !in {
return "", fmt.Errorf("invalid neko image")
@@ -220,7 +229,7 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
}
func (manager *RoomManagerCtx) GetEntry(id string) (*types.RoomEntry, error) {
container, err := manager.containerInfo(id)
container, err := manager.containerById(id)
if err != nil {
return nil, err
}
+1
View File
@@ -163,6 +163,7 @@ type RoomMember struct {
type RoomManager interface {
Config() RoomsConfig
List() ([]RoomEntry, error)
FindByName(name string) (*RoomEntry, error)
Create(settings RoomSettings) (string, error)
GetEntry(id string) (*RoomEntry, error)