reload_node
Reload or reimage a CloudLab node with its disk image by specifying the experiment ID and node identifier.
Instructions
Reload/reimage a node with its disk image
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| experiment_id | Yes | Experiment UUID (from list_experiments) | |
| node | Yes | Node client_id |
Implementation Reference
- src/index.ts:350-367 (handler)The handler function for the reload_node tool. It extracts experiment_id and node from arguments, makes a POST request to the CloudLab API endpoint /experiments/{experiment_id}/node/{node}/reload, and returns the result.case "reload_node": { const { experiment_id, node } = args as { experiment_id: string; node: string; }; const result = await cloudlabRequest( `/experiments/${experiment_id}/node/${node}/reload`, "POST" ); return { content: [ { type: "text", text: `Reload initiated for node ${node}: ${JSON.stringify(result, null, 2)}`, }, ], }; }
- src/index.ts:185-201 (schema)The tool registration entry including name, description, and input schema for reload_node, returned by the ListTools handler.{ name: "reload_node", description: "Reload/reimage a node with its disk image", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id", }, }, required: ["experiment_id", "node"], },
- src/index.ts:97-202 (registration)The ListToolsRequestHandler where reload_node is registered as an available tool.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "list_experiments", description: "List all your CloudLab experiments", inputSchema: { type: "object", properties: {}, required: [], }, }, { name: "create_experiment", description: "Create a new CloudLab experiment from a profile", inputSchema: { type: "object", properties: { project: { type: "string", description: "Project name (e.g., 'UCY-CS499-DC')", }, profile_name: { type: "string", description: "Profile name (e.g., 'small-lan')", }, profile_project: { type: "string", description: "Project that owns the profile (e.g., 'PortalProfiles')", }, name: { type: "string", description: "Optional experiment name (auto-generated if not provided)", }, bindings: { type: "object", description: "Optional profile parameter bindings (e.g., {nodeCount: '2', phystype: 'c220g1'})", }, }, required: ["project", "profile_name", "profile_project"], }, }, { name: "get_experiment", description: "Get detailed status of a specific experiment including node states", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, }, { name: "reboot_node", description: "Reboot a specific node in an experiment", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id (e.g., 'node0')", }, }, required: ["experiment_id", "node"], }, }, { name: "reboot_all_nodes", description: "Reboot all nodes in an experiment", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, }, { name: "reload_node", description: "Reload/reimage a node with its disk image", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id", }, }, required: ["experiment_id", "node"], }, },