56 lines
1.5 KiB
Go
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
|
|
}
|