Files
talos/internal/app/machined/internal/server/v1alpha1/v1alpha1_inspect.go
Alexey Palazhchenko 0dbaeb9e65 chore: update tools, use new generators
To stay current.

Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2021-03-16 11:17:15 -07:00

65 lines
1.8 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package runtime
import (
"context"
"fmt"
"github.com/golang/protobuf/ptypes/empty"
"github.com/talos-systems/os-runtime/pkg/controller"
inspectapi "github.com/talos-systems/talos/pkg/machinery/api/inspect"
)
// InspectServer implements InspectService API.
type InspectServer struct {
inspectapi.UnimplementedInspectServiceServer
server *Server
}
// ControllerRuntimeDependencies implements inspect.InspectService interface.
func (s *InspectServer) ControllerRuntimeDependencies(ctx context.Context, in *empty.Empty) (*inspectapi.ControllerRuntimeDependenciesResponse, error) {
graph, err := s.server.Controller.V1Alpha2().DependencyGraph()
if err != nil {
return nil, fmt.Errorf("error fetching dependency graph: %w", err)
}
edges := make([]*inspectapi.ControllerDependencyEdge, 0, len(graph.Edges))
for i := range graph.Edges {
var edgeType inspectapi.DependencyEdgeType
switch graph.Edges[i].EdgeType {
case controller.EdgeManages:
edgeType = inspectapi.DependencyEdgeType_MANAGES
case controller.EdgeDependsStrong:
edgeType = inspectapi.DependencyEdgeType_STRONG
case controller.EdgeDependsWeak:
edgeType = inspectapi.DependencyEdgeType_WEAK
}
edges = append(edges, &inspectapi.ControllerDependencyEdge{
ControllerName: graph.Edges[i].ControllerName,
EdgeType: edgeType,
ResourceNamespace: graph.Edges[i].ResourceNamespace,
ResourceType: graph.Edges[i].ResourceType,
ResourceId: graph.Edges[i].ResourceID,
})
}
return &inspectapi.ControllerRuntimeDependenciesResponse{
Messages: []*inspectapi.ControllerRuntimeDependency{
{
Edges: edges,
},
},
}, nil
}