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/.
12
"github.com/hashicorp/go-multierror"
14
"github.com/siderolabs/talos/pkg/provision"
15
"github.com/siderolabs/talos/pkg/provision/providers/vm"
18
func (p *provisioner) createVirtualTPM2State(state *vm.State, nodeName string) (tpm2Config, error) {
19
tpm2StateDir := state.GetRelativePath(fmt.Sprintf("%s-tpm2", nodeName))
21
if err := os.MkdirAll(tpm2StateDir, 0o755); err != nil {
22
return tpm2Config{}, err
27
StateDir: tpm2StateDir,
31
func (p *provisioner) destroyVirtualTPM2s(cluster provision.ClusterInfo) error {
32
errCh := make(chan error)
34
nodes := append([]provision.NodeInfo{}, cluster.Nodes...)
36
for _, node := range nodes {
37
if node.TPM2StateDir == "" {
41
tpm2PidPath := filepath.Join(node.TPM2StateDir, "swtpm.pid")
44
errCh <- p.destroyVirtualTPM2(tpm2PidPath)
48
var multiErr *multierror.Error
50
for _, node := range nodes {
51
if node.TPM2StateDir == "" {
55
multiErr = multierror.Append(multiErr, <-errCh)
58
return multiErr.ErrorOrNil()
61
func (p *provisioner) destroyVirtualTPM2(pid string) error {
62
return vm.StopProcessByPidfile(pid)