import Editor from "@monaco-editor/react";
import RefreshIcon from "@mui/icons-material/Refresh";
import { Grid, IconButton, InputAdornment, Tooltip } from "@mui/material";
import { v4 as uuidv4 } from "uuid";
import { VMInfo } from "../../api/VMApi";
import { CheckboxInput } from "./CheckboxInput";
import { EditSection } from "./EditSection";
import { SelectInput } from "./SelectInput";
import { TextInput } from "./TextInput";
interface CloudInitProps {
vm: VMInfo;
onChange?: () => void;
editable: boolean;
}
export function CloudInitEditor(p: CloudInitProps): React.ReactElement {
return (
<>
{/* Attach cloud init disk */}
{
p.vm.cloud_init.attach_config = v;
p.onChange?.();
}}
/>
>
);
}
function CloudInitMetadata(p: CloudInitProps): React.ReactElement {
// Regenerate instance id
const reGenerateInstanceId = () => {
p.vm.cloud_init.instance_id = uuidv4();
p.onChange?.();
};
return (
{/* Instance ID */}
{
p.vm.cloud_init.instance_id = v;
p.onChange?.();
}}
endAdornment={
p.editable ? (
) : (
<>>
)
}
/>
{/* Instance hostname */}
{
p.vm.cloud_init.local_hostname = v;
p.onChange?.();
}}
/>
{/* Data source mode */}
{
p.vm.cloud_init.dsmode = v as any;
p.onChange?.();
}}
options={[
{ label: "None", value: undefined },
{ value: "Net" },
{ value: "Local" },
]}
/>
);
}
function CloudInitRawUserData(p: CloudInitProps): React.ReactElement {
return (
{
p.vm.cloud_init.user_data = v ?? "";
p.onChange?.();
}}
/>
);
}