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)
| 1567 | // "500": |
| 1568 | // $ref: "#/responses/InternalServerError" |
| 1569 | func 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) |
nothing calls this directly
no test coverage detected
searching dependent graphs…