MCPcopy
hub / github.com/lxc/incus / clusterNodeGet

Function clusterNodeGet

cmd/incusd/api_cluster.go:1569–1638  ·  view source on GitHub ↗

swagger:operation GET /1.0/cluster/members/{name} cluster cluster_member_get Get the cluster member Gets a specific cluster member. --- produces: - application/json parameters: - in: path name: name description: Cluster member name type: string required: true respo

(d *Daemon, r *http.Request)

Source from the content-addressed store, hash-verified

1567// "500":
1568// $ref: "#/responses/InternalServerError"
1569func clusterNodeGet(d *Daemon, r *http.Request) response.Response {
1570 s := d.State()
1571
1572 name, err := pathVar(r, "name")
1573 if err != nil {
1574 return response.SmartError(err)
1575 }
1576
1577 leaderAddress, err := s.Cluster.LeaderAddress()
1578 if err != nil {
1579 return response.InternalError(err)
1580 }
1581
1582 var raftNodes []db.RaftNode
1583 err = s.DB.Node.Transaction(r.Context(), func(ctx context.Context, tx *db.NodeTx) error {
1584 raftNodes, err = tx.GetRaftNodes(ctx)
1585 if err != nil {
1586 return fmt.Errorf("Failed loading RAFT nodes: %w", err)
1587 }
1588
1589 return nil
1590 })
1591 if err != nil {
1592 return response.SmartError(err)
1593 }
1594
1595 var memberInfo *api.ClusterMember
1596 err = s.DB.Cluster.Transaction(r.Context(), func(ctx context.Context, tx *db.ClusterTx) error {
1597 failureDomains, err := tx.GetFailureDomainsNames(ctx)
1598 if err != nil {
1599 return fmt.Errorf("Failed loading failure domains names: %w", err)
1600 }
1601
1602 memberFailureDomains, err := tx.GetNodesFailureDomains(ctx)
1603 if err != nil {
1604 return fmt.Errorf("Failed loading member failure domains: %w", err)
1605 }
1606
1607 member, err := tx.GetNodeByName(ctx, name)
1608 if err != nil {
1609 return err
1610 }
1611
1612 maxVersion, err := tx.GetNodeMaxVersion(ctx)
1613 if err != nil {
1614 return fmt.Errorf("Failed getting max member version: %w", err)
1615 }
1616
1617 args := db.NodeInfoArgs{
1618 LeaderAddress: leaderAddress,
1619 FailureDomains: failureDomains,
1620 MemberFailureDomains: memberFailureDomains,
1621 OfflineThreshold: s.GlobalConfig.OfflineThreshold(),
1622 MaxMemberVersion: maxVersion,
1623 RaftNodes: raftNodes,
1624 }
1625
1626 memberInfo, err = member.ToAPI(ctx, tx, args)

Callers

nothing calls this directly

Calls 15

SmartErrorFunction · 0.92
InternalErrorFunction · 0.92
SyncResponseETagFunction · 0.92
pathVarFunction · 0.85
ContextMethod · 0.80
GetRaftNodesMethod · 0.80
ErrorfMethod · 0.80
GetNodeByNameMethod · 0.80
GetNodeMaxVersionMethod · 0.80
OfflineThresholdMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…