talos

Форк
0
63 строки · 1.4 Кб
1
// This Source Code Form is subject to the terms of the Mozilla Public
2
// License, v. 2.0. If a copy of the MPL was not distributed with this
3
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4

5
package qemu
6

7
import (
8
	"fmt"
9
	"os"
10
	"path/filepath"
11

12
	"github.com/hashicorp/go-multierror"
13

14
	"github.com/siderolabs/talos/pkg/provision"
15
	"github.com/siderolabs/talos/pkg/provision/providers/vm"
16
)
17

18
func (p *provisioner) createVirtualTPM2State(state *vm.State, nodeName string) (tpm2Config, error) {
19
	tpm2StateDir := state.GetRelativePath(fmt.Sprintf("%s-tpm2", nodeName))
20

21
	if err := os.MkdirAll(tpm2StateDir, 0o755); err != nil {
22
		return tpm2Config{}, err
23
	}
24

25
	return tpm2Config{
26
		NodeName: nodeName,
27
		StateDir: tpm2StateDir,
28
	}, nil
29
}
30

31
func (p *provisioner) destroyVirtualTPM2s(cluster provision.ClusterInfo) error {
32
	errCh := make(chan error)
33

34
	nodes := append([]provision.NodeInfo{}, cluster.Nodes...)
35

36
	for _, node := range nodes {
37
		if node.TPM2StateDir == "" {
38
			continue
39
		}
40

41
		tpm2PidPath := filepath.Join(node.TPM2StateDir, "swtpm.pid")
42

43
		go func() {
44
			errCh <- p.destroyVirtualTPM2(tpm2PidPath)
45
		}()
46
	}
47

48
	var multiErr *multierror.Error
49

50
	for _, node := range nodes {
51
		if node.TPM2StateDir == "" {
52
			continue
53
		}
54

55
		multiErr = multierror.Append(multiErr, <-errCh)
56
	}
57

58
	return multiErr.ErrorOrNil()
59
}
60

61
func (p *provisioner) destroyVirtualTPM2(pid string) error {
62
	return vm.StopProcessByPidfile(pid)
63
}
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.