| 175 | object, err := n.factory.Plan().Node().Get(ctx, nodeId) |
| 176 | if err != nil { |
| 177 | if utilerrors.IsRecordNotFound(err) { |
| 178 | return nil, errors.ErrNodeNotFound |
| 179 | } |
| 180 | klog.Errorf("get node %d: %v", nodeId, err) |
| 181 | return nil, errors.ErrServerInternal |
| 182 | } |
| 183 | |
| 184 | // 非超级管理员只能查看自己的节点或被 scope 授权的节点 |
| 185 | if err = util.CheckResourceAccess(ctx, n.factory, object.UserId, types.ResourceTypeNode, nodeId); err != nil { |
| 186 | return nil, err |
| 187 | } |
| 188 | |
| 189 | return model2Node(object), nil |
| 190 | } |
| 191 | |
| 192 | // CheckConnectivity 节点 SSH 连通性检测:node_id>0 走库内认证(需 owner 校验),否则用用户传入的 host+凭据直接检测 |
| 193 | func (n *nodeController) CheckConnectivity(ctx context.Context, req *types.NodeConnectivityRequest) (*types.NodeConnectivityResult, error) { |
| 194 | var ( |
| 195 | webssh = &types.WebSSHRequest{} |