first
This commit is contained in:
79
DCIManager6/dci6-support/isPlatformOrLocation.go
Normal file
79
DCIManager6/dci6-support/isPlatformOrLocation.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
|
||||
"github.com/moby/moby/client"
|
||||
)
|
||||
|
||||
func isDciPlatform() (bool, []error) {
|
||||
var result bool
|
||||
var errors []error
|
||||
// наличие сервиса dci
|
||||
units, err := os.ReadDir("/run/systemd/units")
|
||||
dciService := false
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка доступа к директории systemd units: %s", err)
|
||||
errors = append(errors, err)
|
||||
err = nil
|
||||
dciService = false
|
||||
} else {
|
||||
for _, unit := range units {
|
||||
matched, _ := regexp.Match("dci.service", []byte(unit.Name()))
|
||||
if matched {
|
||||
dciService = true
|
||||
}
|
||||
}
|
||||
}
|
||||
// наличие config.json
|
||||
configJson := false
|
||||
files, err := os.ReadDir("/opt/ispsystem/dci/")
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при чтении директории opt ispsystem dci")
|
||||
errors = append(errors, err)
|
||||
err = nil
|
||||
configJson = false
|
||||
} else {
|
||||
for _, file := range files {
|
||||
matched, _ := regexp.Match("config.json", []byte(file.Name()))
|
||||
if matched {
|
||||
configJson = true
|
||||
}
|
||||
}
|
||||
}
|
||||
// запущенный контейнер dci_back
|
||||
dciBack := false
|
||||
apiClient, err := client.New(client.FromEnv)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при создании docker клиента %s", err)
|
||||
errors = append(errors, err)
|
||||
err = nil
|
||||
} else {
|
||||
defer apiClient.Close()
|
||||
containers, err := apiClient.ContainerList(context.Background(), client.ContainerListOptions{All: true})
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка получения списка контейнеров : %s", err)
|
||||
errors = append(errors, err)
|
||||
err = nil
|
||||
} else {
|
||||
for _, ctr := range containers.Items {
|
||||
if ctr.Names[0] == "/dci_back" {
|
||||
dciBack = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if dciService {
|
||||
result = true
|
||||
} else if configJson {
|
||||
result = true
|
||||
} else if dciBack {
|
||||
result = true
|
||||
} else {
|
||||
result = false
|
||||
}
|
||||
return result, errors
|
||||
}
|
||||
Reference in New Issue
Block a user