vaguerent/internal/server/singleprocess/service_core_environment.go
2022-04-25 12:23:57 -05:00

56 lines
1.5 KiB
Go

package singleprocess
import (
"context"
"strings"
"github.com/golang/protobuf/ptypes/empty"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
serverptypes "github.com/hashicorp/vagrant/internal/server/ptypes"
)
func (s *service) MachineNames(
ctx context.Context,
in *empty.Empty,
) (result *vagrant_plugin_sdk.Project_MachineNamesResponse, err error) {
machines, err := s.state.MachineList()
if err != nil {
return nil, err
}
machineNames := []string{}
for _, m := range machines {
sanatizedName := strings.Split(m.Name, "+")[1]
machineNames = append(machineNames, sanatizedName)
}
return &vagrant_plugin_sdk.Project_MachineNamesResponse{
Names: machineNames,
}, nil
}
func (s *service) ActiveMachines(
ctx context.Context,
in *vagrant_plugin_sdk.Project_ActiveMachinesRequest,
) (result *vagrant_plugin_sdk.Project_ActiveMachinesResponse, err error) {
machines := []*vagrant_plugin_sdk.Project_MachineAndProvider{}
p, err := s.state.ProjectGet(&vagrant_server.Ref_Project{
ResourceId: in.Env.ProjectId,
})
pp := serverptypes.Project{Project: p}
for _, m := range pp.Project.Machines {
machine, err := s.state.MachineGet(m)
if err != nil {
// Machine not found
}
machines = append(machines,
&vagrant_plugin_sdk.Project_MachineAndProvider{Name: machine.Name, Provider: machine.Provider})
}
return &vagrant_plugin_sdk.Project_ActiveMachinesResponse{
Machines: machines,
}, nil
}