X-Git-Url: https://git.proxmox.com/?p=pve-docs.git;a=blobdiff_plain;f=api-viewer%2Fapidata.js;h=a8f41de3f084219727581ae7a59ab6f176756890;hp=af2d5a76f336d3f6a21fd36079089b471d1a9770;hb=4772952b604a1fd9bca16e70fbe6a1d3b2d7feca;hpb=27a7acb285bc8968f6a4e4864e137cb62158611a diff --git a/api-viewer/apidata.js b/api-viewer/apidata.js index af2d5a7..a8f41de 100644 --- a/api-viewer/apidata.js +++ b/api-viewer/apidata.js @@ -6,6 +6,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Mark replication job for removal.", "method" : "DELETE", "name" : "delete", @@ -49,6 +50,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read replication job configuration.", "method" : "GET", "name" : "read", @@ -72,6 +74,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update replication job configuration.", "method" : "PUT", "name" : "update", @@ -130,12 +133,19 @@ var pveapi = [ }, "schedule" : { "default" : "*/15", - "description" : "Storage replication schedule. The format is a subset of `systemd` calender events.", + "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.", "format" : "pve-calendar-event", "maxLength" : 128, "optional" : 1, "type" : "string", "typetext" : "" + }, + "source" : { + "description" : "Source of the replication.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" } }, "type" : "object" @@ -162,6 +172,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List replication jobs.", "method" : "GET", "name" : "index", @@ -187,6 +198,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new replication job", "method" : "POST", "name" : "create", @@ -230,13 +242,20 @@ var pveapi = [ }, "schedule" : { "default" : "*/15", - "description" : "Storage replication schedule. The format is a subset of `systemd` calender events.", + "description" : "Storage replication schedule. The format is a subset of `systemd` calendar events.", "format" : "pve-calendar-event", "maxLength" : 128, "optional" : 1, "type" : "string", "typetext" : "" }, + "source" : { + "description" : "Source of the replication.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "target" : { "description" : "Target node.", "format" : "pve-node", @@ -280,6 +299,382 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, + "description" : "Remove Metric server.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read metric server configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new external metric server config", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "disable" : { + "description" : "Flag to disable the plugin.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "The ID of the entry.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "mtu" : { + "default" : 1500, + "description" : "MTU for metrics transmission over UDP", + "maximum" : 65536, + "minimum" : 512, + "optional" : 1, + "type" : "integer", + "typetext" : " (512 - 65536)" + }, + "path" : { + "description" : "root graphite path (ex: proxmox.mycluster.mykey)", + "format" : "graphite-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "port" : { + "description" : "server network port", + "type" : "integer", + "typetext" : "" + }, + "proto" : { + "description" : "Protocol to send graphite data. TCP or UDP (default)", + "enum" : [ + "udp", + "tcp" + ], + "optional" : 1, + "type" : "string" + }, + "server" : { + "description" : "server dns name or IP address", + "format" : "address", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "default" : 1, + "description" : "graphite TCP socket timeout (default=1)", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "type" : { + "description" : "Plugin type.", + "enum" : [ + "graphite", + "influxdb" + ], + "format" : "pve-configid", + "type" : "string" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update metric server configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "disable" : { + "description" : "Flag to disable the plugin.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "The ID of the entry.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "mtu" : { + "default" : 1500, + "description" : "MTU for metrics transmission over UDP", + "maximum" : 65536, + "minimum" : 512, + "optional" : 1, + "type" : "integer", + "typetext" : " (512 - 65536)" + }, + "path" : { + "description" : "root graphite path (ex: proxmox.mycluster.mykey)", + "format" : "graphite-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "port" : { + "description" : "server network port", + "type" : "integer", + "typetext" : "" + }, + "proto" : { + "description" : "Protocol to send graphite data. TCP or UDP (default)", + "enum" : [ + "udp", + "tcp" + ], + "optional" : 1, + "type" : "string" + }, + "server" : { + "description" : "server dns name or IP address", + "format" : "address", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "default" : 1, + "description" : "graphite TCP socket timeout (default=1)", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/metrics/server/{id}", + "text" : "{id}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List configured metric servers.", + "method" : "GET", + "name" : "server_index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "disable" : { + "description" : "Flag to disable the plugin.", + "type" : "boolean" + }, + "id" : { + "description" : "The ID of the entry.", + "type" : "string" + }, + "port" : { + "description" : "Server network port", + "type" : "integer" + }, + "server" : { + "description" : "Server dns name or IP address", + "type" : "string" + }, + "type" : { + "description" : "Plugin type.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{id}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/cluster/metrics/server", + "text" : "server" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Metrics index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/cluster/metrics", + "text" : "metrics" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Return the version of the cluster join API available on this node.", + "method" : "GET", + "name" : "join_api_version", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "description" : "Cluster Join API version, currently 1", + "minimum" : 0, + "type" : "integer" + } + } + }, + "leaf" : 1, + "path" : "/cluster/config/apiversion", + "text" : "apiversion" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, "description" : "Removes a node from the cluster configuration.", "method" : "DELETE", "name" : "delnode", @@ -300,18 +695,55 @@ var pveapi = [ } }, "POST" : { - "description" : "Adds a node to the cluster configuration.", + "allowtoken" : 1, + "description" : "Adds a node to the cluster configuration. This call is for internal use.", "method" : "POST", "name" : "addnode", "parameters" : { "additionalProperties" : 0, "properties" : { + "apiversion" : { + "description" : "The JOIN_API_VERSION of the new node.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, "force" : { "description" : "Do not throw error if node already exists.", "optional" : 1, "type" : "boolean", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, + "new_node_ip" : { + "description" : "IP Address of node to add. Used as fallback if no links are given.", + "format" : "ip", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -325,21 +757,6 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, - "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node", "minimum" : 0, @@ -357,6 +774,12 @@ var pveapi = [ }, "corosync_conf" : { "type" : "string" + }, + "warnings" : { + "items" : { + "type" : "string" + }, + "type" : "array" } }, "type" : "object" @@ -370,6 +793,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Corosync node list.", "method" : "GET", "name" : "nodes", @@ -411,6 +835,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get information needed to join this cluster over the connected node.", "method" : "GET", "name" : "join_info", @@ -427,6 +852,15 @@ var pveapi = [ } } }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, "returns" : { "additionalProperties" : 0, "properties" : { @@ -462,9 +896,24 @@ var pveapi = [ "type" : "integer" }, "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, "optional" : 1, "type" : "string" } @@ -486,7 +935,8 @@ var pveapi = [ } }, "POST" : { - "description" : "Joins this node into an existing cluster.", + "allowtoken" : 1, + "description" : "Joins this node into an existing cluster. If no links are given, default to IP resolved by node's hostname on single link (fallback fails for clusters with multiple links).", "method" : "POST", "name" : "join", "parameters" : { @@ -508,6 +958,29 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, "nodeid" : { "description" : "Node id for this node.", "minimum" : 1, @@ -521,21 +994,6 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "ring0_addr" : { - "default" : "IP resolved by node's hostname", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node", "minimum" : 0, @@ -558,6 +1016,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get corosync totem protocol settings.", "method" : "GET", "name" : "totem", @@ -574,7 +1033,6 @@ var pveapi = [ ] }, "returns" : { - "properties" : {}, "type" : "object" } } @@ -582,10 +1040,39 @@ var pveapi = [ "leaf" : 1, "path" : "/cluster/config/totem", "text" : "totem" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get QDevice status", + "method" : "GET", + "name" : "status", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/cluster/config/qdevice", + "text" : "qdevice" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -616,26 +1103,13 @@ var pveapi = [ } }, "POST" : { - "description" : "Generate new cluster configuration.", + "allowtoken" : 1, + "description" : "Generate new cluster configuration. If no links given, default to local IP address as link0.", "method" : "POST", "name" : "create", "parameters" : { "additionalProperties" : 0, "properties" : { - "bindnet0_addr" : { - "description" : "This specifies the network address the corosync ring 0 executive should bind to and defaults to the local IP address of the node.", - "format" : "ip", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "bindnet1_addr" : { - "description" : "This specifies the network address the corosync ring 1 executive should bind to and is optional.", - "format" : "ip", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "clustername" : { "description" : "The name of the cluster.", "format" : "pve-node", @@ -643,6 +1117,29 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "link[n]" : { + "description" : "Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)", + "format" : { + "address" : { + "default_key" : 1, + "description" : "Hostname (or IP) of this corosync link address.", + "format" : "address", + "format_description" : "IP", + "type" : "string" + }, + "priority" : { + "default" : 0, + "description" : "The priority for the link when knet is used in 'passive' mode (default). Lower value means higher priority. Only valid for cluster create, ignored on node add.", + "maximum" : 255, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[address=] [,priority=]" + }, "nodeid" : { "description" : "Node id for this node.", "minimum" : 1, @@ -650,21 +1147,6 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, - "ring0_addr" : { - "default" : "Hostname of the node", - "description" : "Hostname (or IP) of the corosync ring0 address of this node.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ring1_addr" : { - "description" : "Hostname (or IP) of the corosync ring1 address of this node. Requires a valid configured ring 1 (bindnet1_addr) in the cluster.", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "votes" : { "description" : "Number of votes for this node.", "minimum" : 1, @@ -693,6 +1175,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -738,6 +1221,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -772,14 +1256,81 @@ var pveapi = [ "proxyto" : null, "returns" : { "properties" : { + "action" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "dest" : { + "optional" : 1, + "type" : "string" + }, + "dport" : { + "optional" : 1, + "type" : "string" + }, + "enable" : { + "optional" : 1, + "type" : "integer" + }, + "icmp-type" : { + "optional" : 1, + "type" : "string" + }, + "iface" : { + "optional" : 1, + "type" : "string" + }, + "ipversion" : { + "optional" : 1, + "type" : "integer" + }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "optional" : 1, + "type" : "string" + }, "pos" : { "type" : "integer" + }, + "proto" : { + "optional" : 1, + "type" : "string" + }, + "source" : { + "optional" : 1, + "type" : "string" + }, + "sport" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "type" : "string" } }, "type" : "object" } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -842,6 +1393,13 @@ var pveapi = [ "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", "type" : "string" }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "iface" : { "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", "format" : "pve-iface", @@ -851,6 +1409,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -928,6 +1502,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete security group.", "method" : "DELETE", "name" : "delete_security_group", @@ -958,6 +1533,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -1002,6 +1578,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -1057,6 +1634,13 @@ var pveapi = [ "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", "type" : "string" }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "iface" : { "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", "format" : "pve-iface", @@ -1066,8 +1650,24 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "macro" : { - "description" : "Use predefined standard macro.", + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "description" : "Use predefined standard macro.", "maxLength" : 128, "optional" : 1, "type" : "string", @@ -1136,6 +1736,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List security groups.", "method" : "GET", "name" : "list_security_groups", @@ -1178,6 +1779,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new security group.", "method" : "POST", "name" : "create_security_group", @@ -1237,6 +1839,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete rule.", "method" : "DELETE", "name" : "delete_rule", @@ -1275,6 +1878,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get single rule data.", "method" : "GET", "name" : "get_rule", @@ -1302,14 +1906,81 @@ var pveapi = [ "proxyto" : null, "returns" : { "properties" : { + "action" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "dest" : { + "optional" : 1, + "type" : "string" + }, + "dport" : { + "optional" : 1, + "type" : "string" + }, + "enable" : { + "optional" : 1, + "type" : "integer" + }, + "icmp-type" : { + "optional" : 1, + "type" : "string" + }, + "iface" : { + "optional" : 1, + "type" : "string" + }, + "ipversion" : { + "optional" : 1, + "type" : "integer" + }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "optional" : 1, + "type" : "string" + }, "pos" : { "type" : "integer" + }, + "proto" : { + "optional" : 1, + "type" : "string" + }, + "source" : { + "optional" : 1, + "type" : "string" + }, + "sport" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "type" : "string" } }, "type" : "object" } }, "PUT" : { + "allowtoken" : 1, "description" : "Modify rule data.", "method" : "PUT", "name" : "update_rule", @@ -1365,6 +2036,13 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "iface" : { "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", "format" : "pve-iface", @@ -1374,6 +2052,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -1451,6 +2145,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List rules.", "method" : "GET", "name" : "get_rules", @@ -1486,6 +2181,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new rule.", "method" : "POST", "name" : "create_rule", @@ -1534,6 +2230,13 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "iface" : { "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", "format" : "pve-iface", @@ -1543,6 +2246,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, "macro" : { "description" : "Use predefined standard macro.", "maxLength" : 128, @@ -1617,6 +2336,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network from IPSet.", "method" : "DELETE", "name" : "remove_ip", @@ -1660,6 +2380,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read IP or Network settings from IPSet.", "method" : "GET", "name" : "read_ip", @@ -1696,6 +2417,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network settings", "method" : "PUT", "name" : "update_ip", @@ -1756,6 +2478,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete IPSet", "method" : "DELETE", "name" : "delete_ipset", @@ -1786,6 +2509,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "List IPSet content", "method" : "GET", "name" : "get_ipset", @@ -1843,6 +2567,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add IP or Network to IPSet.", "method" : "POST", "name" : "create_ip", @@ -1896,6 +2621,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List IPSets", "method" : "GET", "name" : "ipset_index", @@ -1944,6 +2670,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new IPSet", "method" : "POST", "name" : "create_ipset", @@ -2003,6 +2730,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Remove IP or Network alias.", "method" : "DELETE", "name" : "remove_alias", @@ -2040,6 +2768,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read alias.", "method" : "GET", "name" : "read_alias", @@ -2069,6 +2798,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update IP or Network alias.", "method" : "PUT", "name" : "update_alias", @@ -2132,6 +2862,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List aliases", "method" : "GET", "name" : "get_aliases", @@ -2179,6 +2910,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create IP or Network Alias.", "method" : "POST", "name" : "create_alias", @@ -2227,6 +2959,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Firewall options.", "method" : "GET", "name" : "get_options", @@ -2244,12 +2977,46 @@ var pveapi = [ }, "returns" : { "properties" : { + "ebtables" : { + "default" : 1, + "description" : "Enable ebtables rules cluster wide.", + "optional" : 1, + "type" : "boolean" + }, "enable" : { "description" : "Enable or disable the firewall cluster wide.", "minimum" : 0, "optional" : 1, "type" : "integer" }, + "log_ratelimit" : { + "description" : "Log ratelimiting settings", + "format" : { + "burst" : { + "default" : 5, + "description" : "Initial burst of packages which will always get logged before the rate is applied", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "enable" : { + "default" : "1", + "default_key" : 1, + "description" : "Enable or disable log rate limiting", + "type" : "boolean" + }, + "rate" : { + "default" : "1/second", + "description" : "Frequency with which the burst bucket gets refilled", + "format_description" : "rate", + "optional" : 1, + "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, "policy_in" : { "description" : "Input policy.", "enum" : [ @@ -2275,6 +3042,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set Firewall options.", "method" : "PUT", "name" : "set_options", @@ -2295,6 +3063,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "ebtables" : { + "default" : 1, + "description" : "Enable ebtables rules cluster wide.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "enable" : { "description" : "Enable or disable the firewall cluster wide.", "minimum" : 0, @@ -2302,6 +3077,35 @@ var pveapi = [ "type" : "integer", "typetext" : " (0 - N)" }, + "log_ratelimit" : { + "description" : "Log ratelimiting settings", + "format" : { + "burst" : { + "default" : 5, + "description" : "Initial burst of packages which will always get logged before the rate is applied", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "enable" : { + "default" : "1", + "default_key" : 1, + "description" : "Enable or disable log rate limiting", + "type" : "boolean" + }, + "rate" : { + "default" : "1/second", + "description" : "Frequency with which the burst bucket gets refilled", + "format_description" : "rate", + "optional" : 1, + "pattern" : "[1-9][0-9]*\\/(second|minute|hour|day)", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[enable=]<1|0> [,burst=] [,rate=]" + }, "policy_in" : { "description" : "Input policy.", "enum" : [ @@ -2346,6 +3150,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "List available macros", "method" : "GET", "name" : "get_macros", @@ -2380,6 +3185,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", "method" : "GET", "name" : "refs", @@ -2440,6 +3246,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -2471,8 +3278,103 @@ var pveapi = [ { "children" : [ { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Returns included guests and the backup status of their disks. Optimized to be used in ExtJS tree views.", + "method" : "GET", + "name" : "get_volume_backup_included", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "The job ID.", + "maxLength" : 50, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "Root node of the tree object. Children represent guests, grandchildren represent volumes of that guest.", + "properties" : { + "children" : { + "items" : { + "properties" : { + "children" : { + "description" : "The volumes of the guest with the information if they will be included in backups.", + "items" : { + "properties" : { + "id" : { + "description" : "Configuration key of the volume.", + "type" : "string" + }, + "included" : { + "description" : "Whether the volume is included in the backup or not.", + "type" : "boolean" + }, + "name" : { + "description" : "Name of the volume.", + "type" : "string" + }, + "reason" : { + "description" : "The reason why the volume is included (or excluded).", + "type" : "string" + } + }, + "type" : "object" + }, + "optional" : 1, + "type" : "array" + }, + "id" : { + "description" : "VMID of the guest.", + "type" : "integer" + }, + "name" : { + "description" : "Name of the guest", + "optional" : 1, + "type" : "string" + }, + "type" : { + "description" : "Type of the guest, VM, CT or unknown for removed but not purged guests.", + "enum" : [ + "qemu", + "lxc", + "unknown" + ], + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/cluster/backup/{id}/included_volumes", + "text" : "included_volumes" + } + ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete vzdump backup job definition.", "method" : "DELETE", "name" : "delete_job", @@ -2502,6 +3404,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read vzdump backup job definition.", "method" : "GET", "name" : "read_job", @@ -2530,6 +3433,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update vzdump backup job definition.", "method" : "PUT", "name" : "update_job", @@ -2558,7 +3462,8 @@ var pveapi = [ "0", "1", "gzip", - "lzo" + "lzo", + "zstd" ], "optional" : 1, "type" : "string" @@ -2677,6 +3582,19 @@ var pveapi = [ "type" : "integer", "typetext" : "" }, + "pool" : { + "description" : "Backup all known guest systems included in the specified pool.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "prune-backups" : { + "description" : "Use these retention options instead of those from the storage configuration.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, "quiet" : { "default" : 0, "description" : "Be quiet.", @@ -2720,7 +3638,7 @@ var pveapi = [ }, "stop" : { "default" : 0, - "description" : "Stop runnig backup jobs on this host.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -2752,6 +3670,13 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" } } }, @@ -2762,7 +3687,8 @@ var pveapi = [ [ "Sys.Modify" ] - ] + ], + "description" : "The 'tmpdir', 'dumpdir' and 'script' parameters are additionally restricted to the 'root@pam' user." }, "protected" : 1, "returns" : { @@ -2770,13 +3696,14 @@ var pveapi = [ } } }, - "leaf" : 1, + "leaf" : 0, "path" : "/cluster/backup/{id}", "text" : "{id}" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List vzdump backup schedule.", "method" : "GET", "name" : "index", @@ -2796,6 +3723,8 @@ var pveapi = [ "items" : { "properties" : { "id" : { + "description" : "The job ID.", + "maxLength" : 50, "type" : "string" } }, @@ -2811,6 +3740,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new vzdump backup job.", "method" : "POST", "name" : "create_job", @@ -2839,7 +3769,8 @@ var pveapi = [ "0", "1", "gzip", - "lzo" + "lzo", + "zstd" ], "optional" : 1, "type" : "string" @@ -2946,6 +3877,19 @@ var pveapi = [ "type" : "integer", "typetext" : "" }, + "pool" : { + "description" : "Backup all known guest systems included in the specified pool.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "prune-backups" : { + "description" : "Use these retention options instead of those from the storage configuration.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, "quiet" : { "default" : 0, "description" : "Be quiet.", @@ -2989,7 +3933,7 @@ var pveapi = [ }, "stop" : { "default" : 0, - "description" : "Stop runnig backup jobs on this host.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -3021,6 +3965,13 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" } } }, @@ -3044,6 +3995,81 @@ var pveapi = [ "path" : "/cluster/backup", "text" : "backup" }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Shows all guests which are not covered by any backup job.", + "method" : "GET", + "name" : "get_guests_not_in_backup", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "Contains the guest objects.", + "items" : { + "properties" : { + "name" : { + "description" : "Name of the guest", + "optional" : 1, + "type" : "string" + }, + "type" : { + "description" : "Type of the guest.", + "enum" : [ + "qemu", + "lxc" + ], + "type" : "string" + }, + "vmid" : { + "description" : "VMID of the guest.", + "type" : "integer" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/backupinfo/not_backed_up", + "text" : "not_backed_up" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Stub, waits for future use.", + "method" : "GET", + "name" : "get_backupinfo", + "parameters" : { + "additionalProperties" : 0 + }, + "protected" : 1, + "returns" : { + "description" : "Shows stub message", + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/backupinfo", + "text" : "backupinfo" + }, { "children" : [ { @@ -3053,6 +4079,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Request resource migration (online) to another node.", "method" : "POST", "name" : "migrate", @@ -3060,7 +4087,7 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "node" : { - "description" : "The cluster node name.", + "description" : "Target node.", "format" : "pve-node", "type" : "string", "typetext" : "" @@ -3095,6 +4122,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Request resource relocatzion to another node. This stops the service on the old node, and restarts it on the target node.", "method" : "POST", "name" : "relocate", @@ -3102,7 +4130,7 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "node" : { - "description" : "The cluster node name.", + "description" : "Target node.", "format" : "pve-node", "type" : "string", "typetext" : "" @@ -3137,6 +4165,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete resource configuration.", "method" : "DELETE", "name" : "delete", @@ -3166,6 +4195,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read resource configuration.", "method" : "GET", "name" : "read", @@ -3189,9 +4219,61 @@ var pveapi = [ ] ] }, - "returns" : {} + "returns" : { + "properties" : { + "comment" : { + "description" : "Description.", + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Can be used to prevent concurrent modifications.", + "type" : "string" + }, + "group" : { + "description" : "The HA group identifier.", + "format" : "pve-configid", + "optional" : 1, + "type" : "string" + }, + "max_relocate" : { + "description" : "Maximal number of service relocate tries when a service failes to start.", + "optional" : 1, + "type" : "integer" + }, + "max_restart" : { + "description" : "Maximal number of tries to restart the service on a node after its start failed.", + "optional" : 1, + "type" : "integer" + }, + "sid" : { + "description" : "HA resource ID. This consists of a resource type followed by a resource specific name, separated with colon (example: vm:100 / ct:100). For virtual machines and containers, you can simply use the VM or CT id as a shortcut (example: 100).", + "format" : "pve-ha-resource-or-vm-id", + "type" : "string", + "typetext" : ":" + }, + "state" : { + "description" : "Requested resource state.", + "enum" : [ + "started", + "stopped", + "enabled", + "disabled", + "ignored" + ], + "optional" : 1, + "type" : "string" + }, + "type" : { + "description" : "The type of the resources.", + "type" : "string" + } + }, + "type" : "object" + } }, "PUT" : { + "allowtoken" : 1, "description" : "Update resource configuration.", "method" : "PUT", "name" : "update", @@ -3288,6 +4370,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List HA resources.", "method" : "GET", "name" : "index", @@ -3333,6 +4416,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new HA resource.", "method" : "POST", "name" : "create", @@ -3425,6 +4509,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete ha group configuration.", "method" : "DELETE", "name" : "delete", @@ -3454,6 +4539,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read ha group configuration.", "method" : "GET", "name" : "read", @@ -3480,6 +4566,7 @@ var pveapi = [ "returns" : {} }, "PUT" : { + "allowtoken" : 1, "description" : "Update ha group configuration.", "method" : "PUT", "name" : "update", @@ -3562,6 +4649,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get HA groups.", "method" : "GET", "name" : "index", @@ -3596,6 +4684,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new HA group.", "method" : "POST", "name" : "create", @@ -3673,6 +4762,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get HA manger status.", "method" : "GET", "name" : "status", @@ -3700,6 +4790,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get full HA manger status, including LRM status.", "method" : "GET", "name" : "manager_status", @@ -3727,6 +4818,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -3758,6 +4850,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -3797,1285 +4890,3721 @@ var pveapi = [ "text" : "ha" }, { - "info" : { - "GET" : { - "description" : "Read cluster log", - "method" : "GET", - "name" : "log", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "max" : { - "description" : "Maximum number of entries.", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/cluster/log", - "text" : "log" - }, - { - "info" : { - "GET" : { - "description" : "Resources index (cluster wide).", - "method" : "GET", - "name" : "resources", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "type" : { - "enum" : [ - "vm", - "storage", - "node" - ], - "optional" : 1, - "type" : "string" - } - } - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/cluster/resources", - "text" : "resources" - }, - { - "info" : { - "GET" : { - "description" : "List recent tasks (cluster wide).", - "method" : "GET", - "name" : "tasks", - "parameters" : { - "additionalProperties" : 0 - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : { - "upid" : { - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/cluster/tasks", - "text" : "tasks" - }, - { - "info" : { - "GET" : { - "description" : "Get datacenter options.", - "method" : "GET", - "name" : "get_options", - "parameters" : { - "additionalProperties" : 0 - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Audit" - ] - ] - }, - "returns" : { - "properties" : {}, - "type" : "object" - } - }, - "PUT" : { - "description" : "Set datacenter options.", - "method" : "PUT", - "name" : "set_options", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "bwlimit" : { - "description" : "Set bandwidth/io limits various operations.", - "format" : { - "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", - "format_description" : "LIMIT", - "minimum" : "0", - "optional" : 1, - "type" : "number" + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete ACME plugin configuration.", + "method" : "DELETE", + "name" : "delete_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } }, - "default" : { - "description" : "default bandwidth limit in MiB/s", - "format_description" : "LIMIT", - "minimum" : "0", - "optional" : 1, - "type" : "number" + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] }, - "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", - "format_description" : "LIMIT", - "minimum" : "0", - "optional" : 1, - "type" : "number" + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get ACME plugin configuration.", + "method" : "GET", + "name" : "get_plugin_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + } + } }, - "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", - "format_description" : "LIMIT", - "minimum" : "0", - "optional" : 1, - "type" : "number" + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] }, - "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", - "format_description" : "LIMIT", - "minimum" : "0", - "optional" : 1, - "type" : "number" + "protected" : 1, + "returns" : { + "type" : "object" } }, - "optional" : 1, - "type" : "string", - "typetext" : "[clone=] [,default=] [,migration=] [,move=] [,restore=]" - }, - "console" : { - "description" : "Select the default Console viewer. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer comtatible application (SPICE), or an HTML5 based viewer (noVNC).", - "enum" : [ - "applet", - "vv", - "html5" - ], - "optional" : 1, - "type" : "string" - }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "email_from" : { - "description" : "Specify email address to send notification from (default is root@$hostname)", - "format" : "email-opt", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "fencing" : { - "default" : "watchdog", - "description" : "Set the fencing mode of the HA cluster. Hardware mode needs a valid configuration of fence devices in /etc/pve/ha/fence.cfg. With both all two modes are used.\n\nWARNING: 'hardware' and 'both' are EXPERIMENTAL & WIP", - "enum" : [ - "watchdog", - "hardware", - "both" - ], - "optional" : 1, - "type" : "string" + "PUT" : { + "allowtoken" : 1, + "description" : "Update ACME plugin configuration.", + "method" : "PUT", + "name" : "update_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "api" : { + "description" : "API plugin name", + "enum" : [ + "acmedns", + "acmeproxy", + "active24", + "ad", + "ali", + "autodns", + "aws", + "azure", + "cf", + "clouddns", + "cloudns", + "cn", + "conoha", + "constellix", + "cx", + "cyon", + "da", + "ddnss", + "desec", + "df", + "dgon", + "dnsimple", + "do", + "doapi", + "domeneshop", + "dp", + "dpi", + "dreamhost", + "duckdns", + "durabledns", + "dyn", + "dynu", + "dynv6", + "easydns", + "euserv", + "exoscale", + "freedns", + "gandi_livedns", + "gcloud", + "gd", + "gdnsdk", + "he", + "hexonet", + "hostingde", + "infoblox", + "internetbs", + "inwx", + "ispconfig", + "jd", + "kas", + "kinghost", + "knot", + "leaseweb", + "lexicon", + "linode", + "linode_v4", + "loopia", + "lua", + "maradns", + "me", + "miab", + "misaka", + "myapi", + "mydevil", + "mydnsjp", + "namecheap", + "namecom", + "namesilo", + "nederhost", + "neodigit", + "netcup", + "nic", + "nsd", + "nsone", + "nsupdate", + "nw", + "one", + "online", + "openprovider", + "opnsense", + "ovh", + "pdns", + "pleskxml", + "pointhq", + "rackspace", + "rcode0", + "regru", + "schlundtech", + "selectel", + "servercow", + "tele3", + "ultra", + "unoeuro", + "variomedia", + "vscale", + "vultr", + "yandex", + "zilore", + "zone", + "zonomi" + ], + "optional" : 1, + "type" : "string" + }, + "data" : { + "description" : "DNS plugin data. (base64 encoded)", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "disable" : { + "description" : "Flag to disable the config.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "ACME Plugin ID name", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "validation-delay" : { + "default" : 30, + "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.", + "maximum" : 172800, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 172800)" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } }, - "http_proxy" : { - "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')", - "optional" : 1, - "pattern" : "http://.*", - "type" : "string" + "leaf" : 1, + "path" : "/cluster/acme/plugins/{id}", + "text" : "{id}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "ACME plugin index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list ACME plugins of a specific type", + "enum" : [ + "dns", + "standalone" + ], + "optional" : 1, + "type" : "string" + } + } }, - "keyboard" : { - "description" : "Default keybord layout for vnc server.", - "enum" : [ - "de", - "de-ch", - "da", - "en-gb", - "en-us", - "es", - "fi", - "fr", - "fr-be", - "fr-ca", - "fr-ch", - "hu", - "is", - "it", - "ja", - "lt", - "mk", - "nl", - "no", - "pl", - "pt", - "pt-br", - "sv", - "sl", - "tr" - ], - "optional" : 1, - "type" : "string" + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] }, - "language" : { - "description" : "Default GUI language.", - "enum" : [ - "en", - "de" + "protected" : 1, + "returns" : { + "items" : { + "properties" : { + "plugin" : { + "description" : "Unique identifier for ACME plugin instance.", + "format" : "pve-configid", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{plugin}", + "rel" : "child" + } ], - "optional" : 1, - "type" : "string" - }, - "mac_prefix" : { - "description" : "Prefix for autogenerated MAC addresses.", - "optional" : 1, - "pattern" : "(?^i:[a-f0-9]{2}(?::[a-f0-9]{2}){0,2}:?)", - "type" : "string" - }, - "max_workers" : { - "description" : "Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "migration" : { - "description" : "For cluster wide migration settings.", - "format" : { - "network" : { - "description" : "CIDR of the (sub) network that is used for migration.", - "format" : "CIDR", - "format_description" : "CIDR", + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Add ACME plugin configuration.", + "method" : "POST", + "name" : "add_plugin", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "api" : { + "description" : "API plugin name", + "enum" : [ + "acmedns", + "acmeproxy", + "active24", + "ad", + "ali", + "autodns", + "aws", + "azure", + "cf", + "clouddns", + "cloudns", + "cn", + "conoha", + "constellix", + "cx", + "cyon", + "da", + "ddnss", + "desec", + "df", + "dgon", + "dnsimple", + "do", + "doapi", + "domeneshop", + "dp", + "dpi", + "dreamhost", + "duckdns", + "durabledns", + "dyn", + "dynu", + "dynv6", + "easydns", + "euserv", + "exoscale", + "freedns", + "gandi_livedns", + "gcloud", + "gd", + "gdnsdk", + "he", + "hexonet", + "hostingde", + "infoblox", + "internetbs", + "inwx", + "ispconfig", + "jd", + "kas", + "kinghost", + "knot", + "leaseweb", + "lexicon", + "linode", + "linode_v4", + "loopia", + "lua", + "maradns", + "me", + "miab", + "misaka", + "myapi", + "mydevil", + "mydnsjp", + "namecheap", + "namecom", + "namesilo", + "nederhost", + "neodigit", + "netcup", + "nic", + "nsd", + "nsone", + "nsupdate", + "nw", + "one", + "online", + "openprovider", + "opnsense", + "ovh", + "pdns", + "pleskxml", + "pointhq", + "rackspace", + "rcode0", + "regru", + "schlundtech", + "selectel", + "servercow", + "tele3", + "ultra", + "unoeuro", + "variomedia", + "vscale", + "vultr", + "yandex", + "zilore", + "zone", + "zonomi" + ], "optional" : 1, "type" : "string" }, + "data" : { + "description" : "DNS plugin data. (base64 encoded)", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "disable" : { + "description" : "Flag to disable the config.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "id" : { + "description" : "ACME Plugin ID name", + "format" : "pve-configid", + "type" : "string", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "type" : { - "default" : "secure", - "default_key" : 1, - "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.", + "description" : "ACME challenge type.", "enum" : [ - "secure", - "insecure" + "dns", + "standalone" ], "type" : "string" + }, + "validation-delay" : { + "default" : 30, + "description" : "Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records.", + "maximum" : 172800, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 172800)" } }, - "optional" : 1, - "type" : "string", - "typetext" : "[type=] [,network=]" + "type" : "object" }, - "migration_unsecure" : { - "description" : "Migration is secure using SSH tunnel by default. For secure private networks you can disable it to speed up migration. Deprecated, use the 'migration' property instead!", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } }, - "protected" : 1, - "returns" : { - "type" : "null" - } + "leaf" : 0, + "path" : "/cluster/acme/plugins", + "text" : "plugins" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Deactivate existing ACME account at CA.", + "method" : "DELETE", + "name" : "deactivate_account", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "default" : "default", + "description" : "ACME account config file name.", + "format" : "pve-configid", + "format_description" : "name", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + } + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Return existing ACME account information.", + "method" : "GET", + "name" : "get_account", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "default" : "default", + "description" : "ACME account config file name.", + "format" : "pve-configid", + "format_description" : "name", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + } + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "account" : { + "optional" : 1, + "renderer" : "yaml", + "type" : "object" + }, + "directory" : { + "description" : "URL of ACME CA directory endpoint.", + "optional" : 1, + "pattern" : "^https?://.*", + "type" : "string" + }, + "location" : { + "optional" : 1, + "type" : "string" + }, + "tos" : { + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update existing ACME account information with CA. Note: not specifying any new account information triggers a refresh.", + "method" : "PUT", + "name" : "update_account", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "contact" : { + "description" : "Contact email addresses.", + "format" : "email-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "default" : "default", + "description" : "ACME account config file name.", + "format" : "pve-configid", + "format_description" : "name", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + } + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/cluster/acme/account/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "ACMEAccount index.", + "method" : "GET", + "name" : "account_index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "protected" : 1, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Register a new ACME account with CA.", + "method" : "POST", + "name" : "register_account", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "contact" : { + "description" : "Contact email addresses.", + "format" : "email-list", + "type" : "string", + "typetext" : "" + }, + "directory" : { + "default" : "https://acme-v02.api.letsencrypt.org/directory", + "description" : "URL of ACME CA directory endpoint.", + "optional" : 1, + "pattern" : "^https?://.*", + "type" : "string" + }, + "name" : { + "default" : "default", + "description" : "ACME account config file name.", + "format" : "pve-configid", + "format_description" : "name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tos_url" : { + "description" : "URL of CA TermsOfService - setting this indicates agreement.", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + } + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/acme/account", + "text" : "account" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Retrieve ACME TermsOfService URL from CA.", + "method" : "GET", + "name" : "get_tos", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "directory" : { + "default" : "https://acme-v02.api.letsencrypt.org/directory", + "description" : "URL of ACME CA directory endpoint.", + "optional" : 1, + "pattern" : "^https?://.*", + "type" : "string" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "description" : "ACME TermsOfService URL.", + "optional" : 1, + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/cluster/acme/tos", + "text" : "tos" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get named known ACME directory endpoints.", + "method" : "GET", + "name" : "get_directories", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "type" : "string" + }, + "url" : { + "description" : "URL of ACME CA directory endpoint.", + "pattern" : "^https?://.*", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/acme/directories", + "text" : "directories" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get schema of ACME challenge types.", + "method" : "GET", + "name" : "challengeschema", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "type" : "string" + }, + "name" : { + "description" : "Human readable name, falls back to id", + "type" : "string" + }, + "schema" : { + "type" : "object" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/acme/challenge-schema", + "text" : "challenge-schema" } - }, - "leaf" : 1, - "path" : "/cluster/options", - "text" : "options" - }, - { + ], "info" : { "GET" : { - "description" : "Get cluster status informations.", + "allowtoken" : 1, + "description" : "ACMEAccount index.", "method" : "GET", - "name" : "get_status", + "name" : "index", "parameters" : { "additionalProperties" : 0 }, "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Audit" - ] - ] + "user" : "all" }, - "protected" : 1, "returns" : { "items" : { - "properties" : { - "type" : { - "type" : "string" - } - }, + "properties" : {}, "type" : "object" }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], "type" : "array" } } }, - "leaf" : 1, - "path" : "/cluster/status", - "text" : "status" + "leaf" : 0, + "path" : "/cluster/acme", + "text" : "acme" }, { - "info" : { - "GET" : { - "description" : "Get next free VMID. If you pass an VMID it will raise an error if the ID is already used.", - "method" : "GET", - "name" : "nextid", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get ceph metadata.", + "method" : "GET", + "name" : "metadata", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "scope" : { + "default" : "all", + "enum" : [ + "all", + "versions" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" } } }, - "permissions" : { - "user" : "all" + "leaf" : 1, + "path" : "/cluster/ceph/metadata", + "text" : "metadata" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get ceph status.", + "method" : "GET", + "name" : "status", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + } }, - "returns" : { - "description" : "The next free VMID.", - "type" : "integer" - } - } - }, - "leaf" : 1, - "path" : "/cluster/nextid", - "text" : "nextid" - } - ], - "info" : { - "GET" : { - "description" : "Cluster index.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0 - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" + "leaf" : 1, + "path" : "/cluster/ceph/status", + "text" : "status" }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/cluster", - "text" : "cluster" - }, - { - "children" : [ - { - "children" : [ { "children" : [ { - "children" : [ - { - "children" : [ - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Delete rule.", - "method" : "DELETE", - "name" : "delete_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Get single rule data.", - "method" : "GET", - "name" : "get_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : null, - "returns" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, - "type" : "object" - } - }, - "PUT" : { - "description" : "Modify rule data.", - "method" : "PUT", - "name" : "update_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "moveto" : { - "description" : "Move rule to new position . Other arguments are ignored.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 1, - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}", - "text" : "{pos}" - } - ], - "info" : { - "GET" : { - "description" : "List rules.", - "method" : "GET", - "name" : "get_rules", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : null, - "returns" : { - "items" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{pos}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create new rule.", - "method" : "POST", - "name" : "create_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 0, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 0, - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" - } - } + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get the status of a specific ceph flag.", + "method" : "GET", + "name" : "get_flag", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "flag" : { + "description" : "The name of the flag name to get.", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "boolean" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set or clear (unset) a specific ceph flag", + "method" : "PUT", + "name" : "update_flag", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "flag" : { + "description" : "The ceph flag to update", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules", - "text" : "rules" - }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Remove IP or Network alias.", - "method" : "DELETE", - "name" : "remove_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Read alias.", - "method" : "GET", - "name" : "read_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "type" : "object" - } - }, - "PUT" : { - "description" : "Update IP or Network alias.", - "method" : "PUT", - "name" : "update_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDR", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "rename" : { - "description" : "Rename an existing alias.", - "maxLength" : 64, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}", - "text" : "{name}" - } + "value" : { + "description" : "The new value of the flag", + "type" : "boolean", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/ceph/flags/{flag}", + "text" : "{flag}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "get the status of all ceph flags", + "method" : "GET", + "name" : "get_all_flags", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "items" : { + "additionalProperties" : 1, + "properties" : { + "name" : { + "description" : "Flag name.", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" ], - "info" : { - "GET" : { - "description" : "List aliases", - "method" : "GET", - "name" : "get_aliases", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "items" : { - "properties" : { - "cidr" : { - "type" : "string" - }, - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "name" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create IP or Network Alias.", - "method" : "POST", - "name" : "create_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDR", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set/Unset multiple ceph flags at once.", + "method" : "PUT", + "name" : "set_flags", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "nobackfill" : { + "description" : "Backfilling of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nodeep-scrub" : { + "description" : "Deep Scrubbing is disabled.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nodown" : { + "description" : "OSD failure reports are being ignored, such that the monitors will not mark OSDs down.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noin" : { + "description" : "OSDs that were previously marked out will not be marked back in when they start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noout" : { + "description" : "OSDs will not automatically be marked out after the configured interval.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "norebalance" : { + "description" : "Rebalancing of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "norecover" : { + "description" : "Recovery of PGs is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noscrub" : { + "description" : "Scrubbing is disabled.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "notieragent" : { + "description" : "Cache tiering activity is suspended.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "noup" : { + "description" : "OSDs are not allowed to start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "pause" : { + "description" : "Pauses read and writes.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/ceph/flags", + "text" : "flags" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Cluster ceph index.", + "method" : "GET", + "name" : "cephindex", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/cluster/ceph", + "text" : "ceph" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn vnet object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn vnet configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets/{vnet}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn vnet object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "alias" : { + "description" : "alias name of the vnet", + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases", - "text" : "aliases" + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv4" : { + "description" : "Anycast router ipv4 address.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv6" : { + "description" : "Anycast router ipv6 address.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mac" : { + "description" : "Anycast router mac address", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan or vxlan id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "vlanaware" : { + "description" : "Allow vm VLANs to pass through this vnet.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "zone id", + "optional" : 1, + "type" : "string", + "typetext" : "" + } }, - { - "children" : [ - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Remove IP or Network from IPSet.", - "method" : "DELETE", - "name" : "remove_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Read IP or Network settings from IPSet.", - "method" : "GET", - "name" : "read_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "object" - } - }, - "PUT" : { - "description" : "Update IP or Network settings", - "method" : "PUT", + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/vnets/{vnet}", + "text" : "{vnet}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN vnets index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/vnets/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{vnet}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn vnet object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "alias" : { + "description" : "alias name of the vnet", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv4" : { + "description" : "Anycast router ipv4 address.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ipv6" : { + "description" : "Anycast router ipv6 address.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mac" : { + "description" : "Anycast router mac address", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "vlan or vxlan id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "type" : { + "description" : "Type", + "enum" : [ + "vnet" + ], + "optional" : 1, + "type" : "string" + }, + "vlanaware" : { + "description" : "Allow vm VLANs to pass through this vnet.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vnet" : { + "description" : "The SDN vnet object identifier.", + "format" : "pve-sdn-vnet-id", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "zone id", + "optional" : 0, + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/vnets", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/vnets", + "text" : "vnets" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn zone object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn zone configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn zone object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bridge" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "controller" : { + "description" : "Frr router name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dp-id" : { + "description" : "Faucet dataplane id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "mtu" : { + "description" : "MTU", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "Service-VLAN Tag", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vlan-protocol" : { + "default" : "802.1q", + "enum" : [ + "802.1q", + "802.1ad" + ], + "optional" : 1, + "type" : "string" + }, + "vrf-vxlan" : { + "description" : "l3vni.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/zones/{zone}", + "text" : "{zone}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN zones index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list sdn zones of specific type", + "enum" : [ + "evpn", + "faucet", + "qinq", + "simple", + "vlan", + "vxlan" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/zones/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "type" : { + "type" : "string" + }, + "zone" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{zone}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn zone object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bridge" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "controller" : { + "description" : "Frr router name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dp-id" : { + "description" : "Faucet dataplane id", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "mtu" : { + "description" : "MTU", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tag" : { + "description" : "Service-VLAN Tag", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "type" : { + "description" : "Plugin type.", + "enum" : [ + "evpn", + "faucet", + "qinq", + "simple", + "vlan", + "vxlan" + ], + "format" : "pve-configid", + "type" : "string" + }, + "vlan-protocol" : { + "default" : "802.1q", + "enum" : [ + "802.1q", + "802.1ad" + ], + "optional" : 1, + "type" : "string" + }, + "vrf-vxlan" : { + "description" : "l3vni.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/zones", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/zones", + "text" : "zones" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete sdn controller object configuration.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read sdn controller configuration.", + "method" : "GET", + "name" : "read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers/{controller}", + [ + "SDN.Allocate" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update sdn controller object configuration.", + "method" : "PUT", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "asn" : { + "description" : "autonomous system number", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "maxLength" : 4096, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-external-peers" : { + "description" : "upstream bgp peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/sdn/controllers/{controller}", + "text" : "{controller}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "SDN controllers index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "description" : "Only list sdn controllers of specific type", + "enum" : [ + "evpn", + "faucet" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit' or 'SDN.Allocate' permissions on '/sdn/controllers/'", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "controller" : { + "type" : "string" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{controller}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a new sdn controller object.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "asn" : { + "description" : "autonomous system number", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "controller" : { + "description" : "The SDN controller object identifier.", + "format" : "pve-sdn-controller-id", + "type" : "string", + "typetext" : "" + }, + "gateway-external-peers" : { + "description" : "upstream bgp peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway-nodes" : { + "description" : "List of cluster node names.", + "format" : "pve-node-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "peers" : { + "description" : "peers address list.", + "format" : "ip-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Plugin type.", + "enum" : [ + "evpn", + "faucet" + ], + "format" : "pve-configid", + "type" : "string" + } + }, + "type" : "object" + }, + "permissions" : { + "check" : [ + "perm", + "/sdn/controllers", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn/controllers", + "text" : "controllers" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "SDN.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "id" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{id}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Apply sdn controller changes && reload.", + "method" : "PUT", + "name" : "reload", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/sdn", + [ + "SDN.Allocate" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/cluster/sdn", + "text" : "sdn" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read cluster log", + "method" : "GET", + "name" : "log", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "max" : { + "description" : "Maximum number of entries.", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/log", + "text" : "log" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Resources index (cluster wide).", + "method" : "GET", + "name" : "resources", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "type" : { + "enum" : [ + "vm", + "storage", + "node", + "sdn" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "content" : { + "description" : "Allowed storage content types (when type == storage).", + "format" : "pve-storage-content-list", + "optional" : 1, + "type" : "string" + }, + "cpu" : { + "description" : "CPU utilization (when type in node,qemu,lxc).", + "optional" : 1, + "renderer" : "fraction_as_percentage", + "type" : "number" + }, + "disk" : { + "description" : "Used disk space in bytes (when type in storage), used root image spave for VMs (type in qemu,lxc).", + "optional" : 1, + "renderer" : "bytes", + "type" : "string" + }, + "hastate" : { + "description" : "HA service status (for HA managed VMs).", + "optional" : 1, + "type" : "string" + }, + "id" : { + "type" : "string" + }, + "level" : { + "description" : "Support level (when type == node).", + "optional" : 1, + "type" : "string" + }, + "maxcpu" : { + "description" : "Number of available CPUs (when type in node,qemu,lxc).", + "optional" : 1, + "type" : "number" + }, + "maxdisk" : { + "description" : "Storage size in bytes (when type in storage), root image size for VMs (type in qemu,lxc).", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxmem" : { + "description" : "Number of available memory in bytes (when type in node,qemu,lxc).", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "mem" : { + "description" : "Used memory in bytes (when type in node,qemu,lxc).", + "optional" : 1, + "renderer" : "bytes", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name (when type in node,storage,qemu,lxc).", + "format" : "pve-node", + "optional" : 1, + "type" : "string" + }, + "pool" : { + "description" : "The pool name (when type in pool,qemu,lxc).", + "optional" : 1, + "type" : "string" + }, + "status" : { + "description" : "Resource type dependent status.", + "optional" : 1, + "type" : "string" + }, + "storage" : { + "description" : "The storage identifier (when type == storage).", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string" + }, + "type" : { + "description" : "Resource type.", + "enum" : [ + "node", + "storage", + "pool", + "qemu", + "lxc", + "openvz", + "sdn" + ], + "type" : "string" + }, + "uptime" : { + "description" : "Node uptime in seconds (when type in node,qemu,lxc).", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/resources", + "text" : "resources" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List recent tasks (cluster wide).", + "method" : "GET", + "name" : "tasks", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "upid" : { + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/tasks", + "text" : "tasks" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get datacenter options.", + "method" : "GET", + "name" : "get_options", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set datacenter options.", + "method" : "PUT", + "name" : "set_options", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bwlimit" : { + "description" : "Set bandwidth/io limits various operations.", + "format" : { + "clone" : { + "description" : "bandwidth limit in KiB/s for cloning disks", + "format_description" : "LIMIT", + "minimum" : "0", + "optional" : 1, + "type" : "number" + }, + "default" : { + "description" : "default bandwidth limit in KiB/s", + "format_description" : "LIMIT", + "minimum" : "0", + "optional" : 1, + "type" : "number" + }, + "migration" : { + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", + "format_description" : "LIMIT", + "minimum" : "0", + "optional" : 1, + "type" : "number" + }, + "move" : { + "description" : "bandwidth limit in KiB/s for moving disks", + "format_description" : "LIMIT", + "minimum" : "0", + "optional" : 1, + "type" : "number" + }, + "restore" : { + "description" : "bandwidth limit in KiB/s for restoring guests from backups", + "format_description" : "LIMIT", + "minimum" : "0", + "optional" : 1, + "type" : "number" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[clone=] [,default=] [,migration=] [,move=] [,restore=]" + }, + "console" : { + "description" : "Select the default Console viewer. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer comtatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.", + "enum" : [ + "applet", + "vv", + "html5", + "xtermjs" + ], + "optional" : 1, + "type" : "string" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "email_from" : { + "description" : "Specify email address to send notification from (default is root@$hostname)", + "format" : "email-opt", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "fencing" : { + "default" : "watchdog", + "description" : "Set the fencing mode of the HA cluster. Hardware mode needs a valid configuration of fence devices in /etc/pve/ha/fence.cfg. With both all two modes are used.\n\nWARNING: 'hardware' and 'both' are EXPERIMENTAL & WIP", + "enum" : [ + "watchdog", + "hardware", + "both" + ], + "optional" : 1, + "type" : "string" + }, + "ha" : { + "description" : "Cluster wide HA settings.", + "format" : { + "shutdown_policy" : { + "default" : "conditional", + "description" : "The policy for HA services on node shutdown. 'freeze' disables auto-recovery, 'failover' ensures recovery, 'conditional' recovers on poweroff and freezes on reboot. 'migrate' will migrate running services to other nodes, if possible. With 'freeze' or 'failover', HA Services will always get stopped first on shutdown.", + "enum" : [ + "freeze", + "failover", + "conditional", + "migrate" + ], + "type" : "string", + "verbose_description" : "Describes the policy for handling HA services on poweroff or reboot of a node. Freeze will always freeze services which are still located on the node on shutdown, those services won't be recovered by the HA manager. Failover will not mark the services as frozen and thus the services will get recovered to other nodes, if the shutdown node does not come up again quickly (< 1min). 'conditional' chooses automatically depending on the type of shutdown, i.e., on a reboot the service will be frozen but on a poweroff the service will stay as is, and thus get recovered after about 2 minutes. Migrate will try to move all running services to another node when a reboot or shutdown was triggered. The poweroff process will only continue once no running services are located on the node anymore. If the node comes up again, the service will be moved back to the previously powered-off node, at least if no other migration, reloaction or recovery took place." + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "shutdown_policy=" + }, + "http_proxy" : { + "description" : "Specify external http proxy which is used for downloads (example: 'http://username:password@host:port/')", + "optional" : 1, + "pattern" : "http://.*", + "type" : "string" + }, + "keyboard" : { + "description" : "Default keybord layout for vnc server.", + "enum" : [ + "de", + "de-ch", + "da", + "en-gb", + "en-us", + "es", + "fi", + "fr", + "fr-be", + "fr-ca", + "fr-ch", + "hu", + "is", + "it", + "ja", + "lt", + "mk", + "nl", + "no", + "pl", + "pt", + "pt-br", + "sv", + "sl", + "tr" + ], + "optional" : 1, + "type" : "string" + }, + "language" : { + "description" : "Default GUI language.", + "enum" : [ + "ca", + "da", + "de", + "en", + "es", + "eu", + "fa", + "fr", + "he", + "it", + "ja", + "nb", + "nn", + "pl", + "pt_BR", + "ru", + "sl", + "sv", + "tr", + "zh_CN", + "zh_TW" + ], + "optional" : 1, + "type" : "string" + }, + "mac_prefix" : { + "description" : "Prefix for autogenerated MAC addresses.", + "format" : "mac-prefix", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "max_workers" : { + "description" : "Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "migration" : { + "description" : "For cluster wide migration settings.", + "format" : { + "network" : { + "description" : "CIDR of the (sub) network that is used for migration.", + "format" : "CIDR", + "format_description" : "CIDR", + "optional" : 1, + "type" : "string" + }, + "type" : { + "default" : "secure", + "default_key" : 1, + "description" : "Migration traffic is encrypted using an SSH tunnel by default. On secure, completely private networks this can be disabled to increase performance.", + "enum" : [ + "secure", + "insecure" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[type=] [,network=]" + }, + "migration_unsecure" : { + "description" : "Migration is secure using SSH tunnel by default. For secure private networks you can disable it to speed up migration. Deprecated, use the 'migration' property instead!", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "u2f" : { + "description" : "u2f", + "format" : { + "appid" : { + "description" : "U2F AppId URL override. Defaults to the origin.", + "format_description" : "APPID", + "optional" : 1, + "type" : "string" + }, + "origin" : { + "description" : "U2F Origin override. Mostly useful for single nodes with a single URL.", + "format_description" : "URL", + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[appid=] [,origin=]" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/cluster/options", + "text" : "options" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get cluster status information.", + "method" : "GET", + "name" : "get_status", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "items" : { + "properties" : { + "id" : { + "type" : "string" + }, + "ip" : { + "description" : "[node] IP of the resolved nodename.", + "optional" : 1, + "type" : "string" + }, + "level" : { + "description" : "[node] Proxmox VE Subscription level, indicates if eligible for enterprise support as well as access to the stable Proxmox VE Enterprise Repository.", + "optional" : 1, + "type" : "string" + }, + "local" : { + "description" : "[node] Indicates if this is the responding node.", + "optional" : 1, + "type" : "boolean" + }, + "name" : { + "type" : "string" + }, + "nodeid" : { + "description" : "[node] ID of the node from the corosync configuration.", + "optional" : 1, + "type" : "integer" + }, + "nodes" : { + "description" : "[cluster] Nodes count, including offline nodes.", + "optional" : 1, + "type" : "integer" + }, + "online" : { + "description" : "[node] Indicates if the node is online or offline.", + "optional" : 1, + "type" : "boolean" + }, + "quorate" : { + "description" : "[cluster] Indicates if there is a majority of nodes online to make decisions", + "optional" : 1, + "type" : "boolean" + }, + "type" : { + "description" : "Indicates the type, either cluster or node. The type defines the object properties e.g. quorate available for type cluster.", + "enum" : [ + "cluster", + "node" + ], + "type" : "string" + }, + "version" : { + "description" : "[cluster] Current version of the corosync configuration file.", + "optional" : 1, + "type" : "integer" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/cluster/status", + "text" : "status" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get next free VMID. If you pass an VMID it will raise an error if the ID is already used.", + "method" : "GET", + "name" : "nextid", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "description" : "The next free VMID.", + "type" : "integer" + } + } + }, + "leaf" : 1, + "path" : "/cluster/nextid", + "text" : "nextid" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Cluster index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0 + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/cluster", + "text" : "cluster" + }, + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete rule.", + "method" : "DELETE", + "name" : "delete_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get single rule data.", + "method" : "GET", + "name" : "get_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : null, + "returns" : { + "properties" : { + "action" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "dest" : { + "optional" : 1, + "type" : "string" + }, + "dport" : { + "optional" : 1, + "type" : "string" + }, + "enable" : { + "optional" : 1, + "type" : "integer" + }, + "icmp-type" : { + "optional" : 1, + "type" : "string" + }, + "iface" : { + "optional" : 1, + "type" : "string" + }, + "ipversion" : { + "optional" : 1, + "type" : "integer" + }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "optional" : 1, + "type" : "string" + }, + "pos" : { + "type" : "integer" + }, + "proto" : { + "optional" : 1, + "type" : "string" + }, + "source" : { + "optional" : 1, + "type" : "string" + }, + "sport" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Modify rule data.", + "method" : "PUT", + "name" : "update_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "comment" : { + "description" : "Descriptive comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "moveto" : { + "description" : "Move rule to new position . Other arguments are ignored.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Rule type.", + "enum" : [ + "in", + "out", + "group" + ], + "optional" : 1, + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules/{pos}", + "text" : "{pos}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List rules.", + "method" : "GET", + "name" : "get_rules", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : null, + "returns" : { + "items" : { + "properties" : { + "pos" : { + "type" : "integer" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{pos}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create new rule.", + "method" : "POST", + "name" : "create_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, + "optional" : 0, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "comment" : { + "description" : "Descriptive comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Rule type.", + "enum" : [ + "in", + "out", + "group" + ], + "optional" : 0, + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/rules", + "text" : "rules" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove IP or Network alias.", + "method" : "DELETE", + "name" : "remove_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read alias.", + "method" : "GET", + "name" : "read_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update IP or Network alias.", + "method" : "PUT", + "name" : "update_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDR", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "rename" : { + "description" : "Rename an existing alias.", + "maxLength" : 64, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List aliases", + "method" : "GET", + "name" : "get_aliases", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "cidr" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create IP or Network Alias.", + "method" : "POST", + "name" : "create_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDR", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/aliases", + "text" : "aliases" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove IP or Network from IPSet.", + "method" : "DELETE", + "name" : "remove_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read IP or Network settings from IPSet.", + "method" : "GET", + "name" : "read_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update IP or Network settings", + "method" : "PUT", "name" : "update_ip", "parameters" : { "additionalProperties" : 0, @@ -5140,1980 +8669,4512 @@ var pveapi = [ } } }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}", - "text" : "{cidr}" - } - ], - "info" : { - "DELETE" : { - "description" : "Delete IPSet", - "method" : "DELETE", - "name" : "delete_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}/{cidr}", + "text" : "{cidr}" + } + ], + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete IPSet", + "method" : "DELETE", + "name" : "delete_ipset", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "List IPSet content", + "method" : "GET", + "name" : "get_ipset", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "cidr" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "nomatch" : { + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{cidr}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Add IP or Network to IPSet.", + "method" : "POST", + "name" : "create_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "nomatch" : { + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List IPSets", + "method" : "GET", + "name" : "ipset_index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create new IPSet", + "method" : "POST", + "name" : "create_ipset", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "rename" : { + "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.", + "maxLength" : 64, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset", + "text" : "ipset" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get VM firewall options.", + "method" : "GET", + "name" : "get_options", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "properties" : { + "dhcp" : { + "default" : 0, + "description" : "Enable DHCP.", + "optional" : 1, + "type" : "boolean" + }, + "enable" : { + "default" : 0, + "description" : "Enable/disable firewall rules.", + "optional" : 1, + "type" : "boolean" + }, + "ipfilter" : { + "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "optional" : 1, + "type" : "boolean" + }, + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macfilter" : { + "default" : 0, + "description" : "Enable/disable MAC address filter.", + "optional" : 1, + "type" : "boolean" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean" + }, + "policy_in" : { + "description" : "Input policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "policy_out" : { + "description" : "Output policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "radv" : { + "description" : "Allow sending Router Advertisement.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set Firewall options.", + "method" : "PUT", + "name" : "set_options", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dhcp" : { + "default" : 0, + "description" : "Enable DHCP.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "default" : 0, + "description" : "Enable/disable firewall rules.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ipfilter" : { + "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macfilter" : { + "default" : 0, + "description" : "Enable/disable MAC address filter.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "policy_in" : { + "description" : "Input policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "policy_out" : { + "description" : "Output policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "radv" : { + "description" : "Allow sending Router Advertisement.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/options", + "text" : "options" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read firewall log", + "method" : "GET", + "name" : "log", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "limit" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "start" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Console" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/log", + "text" : "log" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", + "method" : "GET", + "name" : "refs", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Only list references of specified type.", + "enum" : [ + "alias", + "ipset" + ], + "optional" : 1, + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "type" : { + "enum" : [ + "alias", + "ipset" + ], + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/firewall/refs", + "text" : "refs" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/firewall", + "text" : "firewall" + }, + { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute fsfreeze-freeze.", + "method" : "POST", + "name" : "fsfreeze-freeze", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-freeze", + "text" : "fsfreeze-freeze" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute fsfreeze-status.", + "method" : "POST", + "name" : "fsfreeze-status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-status", + "text" : "fsfreeze-status" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute fsfreeze-thaw.", + "method" : "POST", + "name" : "fsfreeze-thaw", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-thaw", + "text" : "fsfreeze-thaw" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute fstrim.", + "method" : "POST", + "name" : "fstrim", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/fstrim", + "text" : "fstrim" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-fsinfo.", + "method" : "GET", + "name" : "get-fsinfo", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-fsinfo", + "text" : "get-fsinfo" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-host-name.", + "method" : "GET", + "name" : "get-host-name", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-host-name", + "text" : "get-host-name" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-memory-block-info.", + "method" : "GET", + "name" : "get-memory-block-info", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-block-info", + "text" : "get-memory-block-info" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-memory-blocks.", + "method" : "GET", + "name" : "get-memory-blocks", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-blocks", + "text" : "get-memory-blocks" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-osinfo.", + "method" : "GET", + "name" : "get-osinfo", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-osinfo", + "text" : "get-osinfo" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-time.", + "method" : "GET", + "name" : "get-time", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-time", + "text" : "get-time" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-timezone.", + "method" : "GET", + "name" : "get-timezone", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-timezone", + "text" : "get-timezone" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-users.", + "method" : "GET", + "name" : "get-users", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-users", + "text" : "get-users" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute get-vcpus.", + "method" : "GET", + "name" : "get-vcpus", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/get-vcpus", + "text" : "get-vcpus" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute info.", + "method" : "GET", + "name" : "info", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/info", + "text" : "info" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Execute network-get-interfaces.", + "method" : "GET", + "name" : "network-get-interfaces", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/network-get-interfaces", + "text" : "network-get-interfaces" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute ping.", + "method" : "POST", + "name" : "ping", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/ping", + "text" : "ping" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute shutdown.", + "method" : "POST", + "name" : "shutdown", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/shutdown", + "text" : "shutdown" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute suspend-disk.", + "method" : "POST", + "name" : "suspend-disk", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-disk", + "text" : "suspend-disk" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute suspend-hybrid.", + "method" : "POST", + "name" : "suspend-hybrid", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-hybrid", + "text" : "suspend-hybrid" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Execute suspend-ram.", + "method" : "POST", + "name" : "suspend-ram", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-ram", + "text" : "suspend-ram" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Sets the password for the given user to the given password", + "method" : "POST", + "name" : "set-user-password", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "crypted" : { + "default" : 0, + "description" : "set to 1 if the password has already been passed through crypt()", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "password" : { + "description" : "The new password.", + "maxLength" : 1024, + "minLength" : 5, + "type" : "string", + "typetext" : "" + }, + "username" : { + "description" : "The user to set the password for.", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/set-user-password", + "text" : "set-user-password" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Executes the given command in the vm via the guest-agent and returns an object with the pid.", + "method" : "POST", + "name" : "exec", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "command" : { + "description" : "The command as a list of program + arguments", + "format" : "string-alist", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "input-data" : { + "description" : "Data to pass as 'input-data' to the guest. Usually treated as STDIN to 'command'.", + "maxLength" : 65536, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "pid" : { + "description" : "The PID of the process started by the guest-agent.", + "type" : "integer" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/exec", + "text" : "exec" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Gets the status of the given pid started by the guest-agent", + "method" : "GET", + "name" : "exec-status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pid" : { + "description" : "The PID to query", + "type" : "integer", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "err-data" : { + "description" : "stderr of the process", + "optional" : 1, + "type" : "string" + }, + "err-truncated" : { + "description" : "true if stderr was not fully captured", + "optional" : 1, + "type" : "boolean" + }, + "exitcode" : { + "description" : "process exit code if it was normally terminated.", + "optional" : 1, + "type" : "integer" + }, + "exited" : { + "description" : "Tells if the given command has exited yet.", + "type" : "boolean" + }, + "out-data" : { + "description" : "stdout of the process", + "optional" : 1, + "type" : "string" + }, + "out-truncated" : { + "description" : "true if stdout was not fully captured", + "optional" : 1, + "type" : "boolean" + }, + "signal" : { + "description" : "signal number or exception code if the process was abnormally terminated.", + "optional" : 1, + "type" : "integer" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/exec-status", + "text" : "exec-status" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Reads the given file via guest agent. Is limited to 16777216 bytes.", + "method" : "GET", + "name" : "file-read", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "file" : { + "description" : "The path to the file", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a `content` property.", + "properties" : { + "content" : { + "description" : "The content of the file, maximum 16777216", + "type" : "string" + }, + "truncated" : { + "description" : "If set to 1, the output is truncated and not complete", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/file-read", + "text" : "file-read" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Writes the given file via guest agent.", + "method" : "POST", + "name" : "file-write", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "content" : { + "description" : "The content to write into the file.", + "maxLength" : 61440, + "type" : "string", + "typetext" : "" + }, + "file" : { + "description" : "The path to the file.", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/agent/file-write", + "text" : "file-write" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Qemu Agent command index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 1, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "description" : "Returns the list of Qemu Agent commands", + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Execute Qemu Guest Agent commands.", + "method" : "POST", + "name" : "agent", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "command" : { + "description" : "The QGA command.", + "enum" : [ + "fsfreeze-freeze", + "fsfreeze-status", + "fsfreeze-thaw", + "fstrim", + "get-fsinfo", + "get-host-name", + "get-memory-block-info", + "get-memory-blocks", + "get-osinfo", + "get-time", + "get-timezone", + "get-users", + "get-vcpus", + "info", + "network-get-interfaces", + "ping", + "shutdown", + "suspend-disk", + "suspend-hybrid", + "suspend-ram" + ], + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Monitor" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "Returns an object with a single `result` property.", + "type" : "object" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/agent", + "text" : "agent" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read VM RRD statistics (returns PNG)", + "method" : "GET", + "name" : "rrd", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, + "ds" : { + "description" : "The list of datasources you want to display.", + "format" : "pve-configid-list", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", + "enum" : [ + "hour", + "day", + "week", + "month", + "year" + ], + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "properties" : { + "filename" : { + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/rrd", + "text" : "rrd" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read VM RRD statistics", + "method" : "GET", + "name" : "rrddata", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", + "enum" : [ + "hour", + "day", + "week", + "month", + "year" + ], + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/rrddata", + "text" : "rrddata" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get the virtual machine configuration with pending configuration changes applied. Set the 'current' parameter to get the current configuration instead.", + "method" : "GET", + "name" : "vm_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "current" : { + "default" : 0, + "description" : "Get current values (instead of pending values).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapshot" : { + "description" : "Fetch config values from given snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "description" : "The VM configuration.", + "properties" : { + "acpi" : { + "default" : 1, + "description" : "Enable/disable ACPI.", + "optional" : 1, + "type" : "boolean" + }, + "agent" : { + "description" : "Enable/disable Qemu GuestAgent and its properties.", + "format" : { + "enabled" : { + "default" : 0, + "default_key" : 1, + "description" : "Enable/disable Qemu GuestAgent.", + "type" : "boolean" + }, + "fstrim_cloned_disks" : { + "default" : 0, + "description" : "Run fstrim after cloning/moving a disk.", + "optional" : 1, + "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "arch" : { + "description" : "Virtual processor architecture. Defaults to the host.", + "enum" : [ + "x86_64", + "aarch64" + ], + "optional" : 1, + "type" : "string" + }, + "args" : { + "description" : "Arbitrary arguments passed to kvm.", + "optional" : 1, + "type" : "string", + "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" + }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "autostart" : { + "default" : 0, + "description" : "Automatic restart after crash (currently ignored).", + "optional" : 1, + "type" : "boolean" + }, + "balloon" : { + "description" : "Amount of target RAM for the VM in MB. Using zero disables the ballon driver.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "bios" : { + "default" : "seabios", + "description" : "Select BIOS implementation.", + "enum" : [ + "seabios", + "ovmf" + ], + "optional" : 1, + "type" : "string" + }, + "boot" : { + "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.", + "format" : "pve-qm-boot", + "optional" : 1, + "type" : "string" + }, + "bootdisk" : { + "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.", + "format" : "pve-qm-bootdisk", + "optional" : 1, + "pattern" : "(ide|sata|scsi|virtio)\\d+", + "type" : "string" + }, + "cdrom" : { + "description" : "This is an alias for option -ide2", + "format" : "pve-qm-ide", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string" + }, + "cipassword" : { + "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", + "optional" : 1, + "type" : "string" + }, + "citype" : { + "description" : "Specifies the cloud-init configuration format. The default depends on the configured operating system type (`ostype`. We use the `nocloud` format for Linux, and `configdrive2` for windows.", + "enum" : [ + "configdrive2", + "nocloud" + ], + "optional" : 1, + "type" : "string" + }, + "ciuser" : { + "description" : "cloud-init: User name to change ssh keys and password for instead of the image's configured default user.", + "optional" : 1, + "type" : "string" + }, + "cores" : { + "default" : 1, + "description" : "The number of cores per socket.", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cpu" : { + "description" : "Emulated CPU type.", + "format" : "pve-vm-cpu-conf", + "optional" : 1, + "type" : "string" + }, + "cpulimit" : { + "default" : 0, + "description" : "Limit of CPU usage.", + "maximum" : 128, + "minimum" : 0, + "optional" : 1, + "type" : "number", + "verbose_description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has total of '2' CPU time. Value '0' indicates no CPU limit." + }, + "cpuunits" : { + "default" : 1024, + "description" : "CPU weight for a VM.", + "maximum" : 262144, + "minimum" : 2, + "optional" : 1, + "type" : "integer", + "verbose_description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs." + }, + "description" : { + "description" : "Description for the VM. Only used on the configuration web interface. This is saved as comment inside the configuration file.", + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.", + "type" : "string" + }, + "efidisk0" : { + "description" : "Configure a Disk for storing EFI vars", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, + "optional" : 1, + "type" : "string" + }, + "freeze" : { + "description" : "Freeze CPU at startup (use 'c' monitor command to start execution).", + "optional" : 1, + "type" : "boolean" + }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string" + }, + "hostpci[n]" : { + "description" : "Map host PCI devices into guest.", + "format" : "pve-qm-hostpci", + "optional" : 1, + "type" : "string", + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + }, + "hotplug" : { + "default" : "network,disk,usb", + "description" : "Selectively enable hotplug features. This is a comma separated list of hotplug features: 'network', 'disk', 'cpu', 'memory' and 'usb'. Use '0' to disable hotplug completely. Value '1' is an alias for the default 'network,disk,usb'.", + "format" : "pve-hotplug-features", + "optional" : 1, + "type" : "string" + }, + "hugepages" : { + "description" : "Enable/disable hugepages memory.", + "enum" : [ + "any", + "2", + "1024" + ], + "optional" : 1, + "type" : "string" + }, + "ide[n]" : { + "description" : "Use volume as IDE hard disk or CD-ROM (n is 0 to 3).", + "format" : { + "aio" : { + "description" : "AIO type to use.", + "enum" : [ + "native", + "threads" + ], + "optional" : 1, + "type" : "string" + }, + "backup" : { + "description" : "Whether the drive should be included when making backups.", + "optional" : 1, + "type" : "boolean" + }, + "bps" : { + "description" : "Maximum r/w speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "bps_rd" : { + "description" : "Maximum read speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_rd_length" : { + "alias" : "bps_rd_max_length" + }, + "bps_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "bps_wr" : { + "description" : "Maximum write speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_wr_length" : { + "alias" : "bps_wr_max_length" + }, + "bps_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cache" : { + "description" : "The drive's cache mode", + "enum" : [ + "none", + "writethrough", + "writeback", + "unsafe", + "directsync" + ], + "optional" : 1, + "type" : "string" + }, + "cyls" : { + "description" : "Force the drive's physical geometry to have a specific cylinder count.", + "optional" : 1, + "type" : "integer" + }, + "detect_zeroes" : { + "description" : "Controls whether to detect and try to optimize writes of zeroes.", + "optional" : 1, + "type" : "boolean" + }, + "discard" : { + "description" : "Controls whether to pass discard/trim requests to the underlying storage.", + "enum" : [ + "ignore", + "on" + ], + "optional" : 1, + "type" : "string" + }, + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "heads" : { + "description" : "Force the drive's physical geometry to have a specific head count.", + "optional" : 1, + "type" : "integer" + }, + "iops" : { + "description" : "Maximum r/w I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max" : { + "description" : "Maximum unthrottled r/w I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_rd" : { + "description" : "Maximum read I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_length" : { + "alias" : "iops_rd_max_length" + }, + "iops_rd_max" : { + "description" : "Maximum unthrottled read I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_wr" : { + "description" : "Maximum write I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_length" : { + "alias" : "iops_wr_max_length" + }, + "iops_wr_max" : { + "description" : "Maximum unthrottled write I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "mbps" : { + "description" : "Maximum r/w speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_max" : { + "description" : "Maximum unthrottled r/w pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_rd" : { + "description" : "Maximum read speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_rd_max" : { + "description" : "Maximum unthrottled read pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr" : { + "description" : "Maximum write speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr_max" : { + "description" : "Maximum unthrottled write pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "media" : { + "default" : "disk", + "description" : "The drive's media type.", + "enum" : [ + "cdrom", + "disk" + ], + "optional" : 1, + "type" : "string" + }, + "model" : { + "description" : "The drive's reported model name, url-encoded, up to 40 bytes long.", + "format" : "urlencoded", + "format_description" : "model", + "maxLength" : 120, + "optional" : 1, + "type" : "string" + }, + "replicate" : { + "default" : 1, + "description" : "Whether the drive should considered for replication jobs.", + "optional" : 1, + "type" : "boolean" + }, + "rerror" : { + "description" : "Read error action.", + "enum" : [ + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + }, + "secs" : { + "description" : "Force the drive's physical geometry to have a specific sector count.", + "optional" : 1, + "type" : "integer" + }, + "serial" : { + "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", + "format" : "urlencoded", + "format_description" : "serial", + "maxLength" : 60, + "optional" : 1, + "type" : "string" + }, + "shared" : { + "default" : 0, + "description" : "Mark this locally-managed volume as available on all nodes", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "snapshot" : { + "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", + "optional" : 1, + "type" : "boolean" + }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, + "trans" : { + "description" : "Force disk geometry bios translation mode.", + "enum" : [ + "none", + "lba", + "auto" + ], + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + }, + "werror" : { + "description" : "Write error action.", + "enum" : [ + "enospc", + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "ipconfig[n]" : { + "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n", + "format" : "pve-qm-ipconfig", + "optional" : 1, + "type" : "string" + }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string" + }, + "keephugepages" : { + "default" : 0, + "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.", + "optional" : 1, + "type" : "boolean" + }, + "keyboard" : { + "default" : null, + "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", + "enum" : [ + "de", + "de-ch", + "da", + "en-gb", + "en-us", + "es", + "fi", + "fr", + "fr-be", + "fr-ca", + "fr-ch", + "hu", + "is", + "it", + "ja", + "lt", + "mk", + "nl", + "no", + "pl", + "pt", + "pt-br", + "sv", + "sl", + "tr" + ], + "optional" : 1, + "type" : "string" + }, + "kvm" : { + "default" : 1, + "description" : "Enable/disable KVM hardware virtualization.", + "optional" : 1, + "type" : "boolean" + }, + "localtime" : { + "description" : "Set the real time clock to local time. This is enabled by default if ostype indicates a Microsoft OS.", + "optional" : 1, + "type" : "boolean" + }, + "lock" : { + "description" : "Lock/unlock the VM.", + "enum" : [ + "backup", + "clone", + "create", + "migrate", + "rollback", + "snapshot", + "snapshot-delete", + "suspending", + "suspended" + ], + "optional" : 1, + "type" : "string" + }, + "machine" : { + "description" : "Specifies the Qemu machine type.", + "maxLength" : 40, + "optional" : 1, + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", + "type" : "string" + }, + "memory" : { + "default" : 512, + "description" : "Amount of RAM for the VM in MB. This is the maximum available memory when you use the balloon device.", + "minimum" : 16, + "optional" : 1, + "type" : "integer" + }, + "migrate_downtime" : { + "default" : 0.1, + "description" : "Set maximum tolerated downtime (in seconds) for migrations.", + "minimum" : 0, + "optional" : 1, + "type" : "number" + }, + "migrate_speed" : { + "default" : 0, + "description" : "Set maximum speed (in MB/s) for migrations. Value 0 is no limit.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "name" : { + "description" : "Set a name for the VM. Only used on the configuration web interface.", + "format" : "dns-name", + "optional" : 1, + "type" : "string" + }, + "nameserver" : { + "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", + "format" : "address-list", + "optional" : 1, + "type" : "string" + }, + "net[n]" : { + "description" : "Specify network devices.", + "format" : { + "bridge" : { + "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", + "format_description" : "bridge", + "optional" : 1, + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "e1000" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "e1000-82540em" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "e1000-82544gc" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "e1000-82545em" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "firewall" : { + "description" : "Whether this interface should be protected by the firewall.", + "optional" : 1, + "type" : "boolean" + }, + "i82551" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "i82557b" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "i82559er" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "link_down" : { + "description" : "Whether this interface should be disconnected (like pulling the plug).", + "optional" : 1, + "type" : "boolean" + }, + "macaddr" : { + "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", + "format_description" : "XX:XX:XX:XX:XX:XX", + "optional" : 1, + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." + }, + "model" : { + "default_key" : 1, + "description" : "Network Card Model. The 'virtio' model provides the best performance with very low CPU overhead. If your guest does not support this driver, it is usually best to use 'e1000'.", + "enum" : [ + "rtl8139", + "ne2k_pci", + "e1000", + "pcnet", + "virtio", + "ne2k_isa", + "i82551", + "i82557b", + "i82559er", + "vmxnet3", + "e1000-82540em", + "e1000-82544gc", + "e1000-82545em" + ], + "type" : "string" + }, + "mtu" : { + "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU", + "maximum" : 65520, + "minimum" : 1, + "optional" : 1, + "type" : "integer" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] + "ne2k_isa" : { + "alias" : "macaddr", + "keyAlias" : "model" }, - "protected" : 1, - "returns" : { - "type" : "null" + "ne2k_pci" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "pcnet" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "queues" : { + "description" : "Number of packet queues to be used on the device.", + "maximum" : 16, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "rate" : { + "description" : "Rate limit in mbps (megabytes per second) as floating point number.", + "minimum" : 0, + "optional" : 1, + "type" : "number" + }, + "rtl8139" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "tag" : { + "description" : "VLAN tag to apply to packets on this interface.", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "trunks" : { + "description" : "VLAN trunks to pass through this interface.", + "format_description" : "vlanid[;vlanid...]", + "optional" : 1, + "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)", + "type" : "string" + }, + "virtio" : { + "alias" : "macaddr", + "keyAlias" : "model" + }, + "vmxnet3" : { + "alias" : "macaddr", + "keyAlias" : "model" } }, - "GET" : { - "description" : "List IPSet content", - "method" : "GET", - "name" : "get_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "optional" : 1, + "type" : "string" + }, + "numa" : { + "default" : 0, + "description" : "Enable/disable NUMA.", + "optional" : 1, + "type" : "boolean" + }, + "numa[n]" : { + "description" : "NUMA topology.", + "format" : { + "cpus" : { + "description" : "CPUs accessing this NUMA node.", + "format_description" : "id[-id];...", + "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)", + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "hostnodes" : { + "description" : "Host NUMA nodes to use.", + "format_description" : "id[-id];...", + "optional" : 1, + "pattern" : "(?^:\\d+(?:-\\d+)?(?:;\\d+(?:-\\d+)?)*)", + "type" : "string" }, - "returns" : { - "items" : { - "properties" : { - "cidr" : { - "type" : "string" - }, - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "nomatch" : { - "optional" : 1, - "type" : "boolean" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{cidr}", - "rel" : "child" - } + "memory" : { + "description" : "Amount of memory this NUMA node provides.", + "optional" : 1, + "type" : "number" + }, + "policy" : { + "description" : "NUMA allocation policy.", + "enum" : [ + "preferred", + "bind", + "interleave" ], - "type" : "array" + "optional" : 1, + "type" : "string" } }, - "POST" : { - "description" : "Add IP or Network to IPSet.", - "method" : "POST", - "name" : "create_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "nomatch" : { - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "optional" : 1, + "type" : "string" + }, + "onboot" : { + "default" : 0, + "description" : "Specifies whether a VM will be started during system bootup.", + "optional" : 1, + "type" : "boolean" + }, + "ostype" : { + "description" : "Specify guest operating system.", + "enum" : [ + "other", + "wxp", + "w2k", + "w2k3", + "w2k8", + "wvista", + "win7", + "win8", + "win10", + "l24", + "l26", + "solaris" + ], + "optional" : 1, + "type" : "string", + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + }, + "parallel[n]" : { + "description" : "Map host parallel devices (n is 0 to 2).", + "optional" : 1, + "pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+", + "type" : "string", + "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + }, + "protection" : { + "default" : 0, + "description" : "Sets the protection flag of the VM. This will disable the remove VM and remove disk operations.", + "optional" : 1, + "type" : "boolean" + }, + "reboot" : { + "default" : 1, + "description" : "Allow reboot. If set to '0' the VM exit on reboot.", + "optional" : 1, + "type" : "boolean" + }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" }, - "protected" : 1, - "returns" : { - "type" : "null" + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" } - } + }, + "optional" : 1, + "type" : "string" }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset/{name}", - "text" : "{name}" - } - ], - "info" : { - "GET" : { - "description" : "List IPSets", - "method" : "GET", - "name" : "ipset_index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "sata[n]" : { + "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", + "format" : { + "aio" : { + "description" : "AIO type to use.", + "enum" : [ + "native", + "threads" + ], + "optional" : 1, + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", + "backup" : { + "description" : "Whether the drive should be included when making backups.", + "optional" : 1, + "type" : "boolean" + }, + "bps" : { + "description" : "Maximum r/w speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "items" : { - "properties" : { - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - } + "optional" : 1, + "type" : "integer" }, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create new IPSet", - "method" : "POST", - "name" : "create_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "comment" : { + "bps_rd" : { + "description" : "Maximum read speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_rd_length" : { + "alias" : "bps_rd_max_length" + }, + "bps_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "bps_wr" : { + "description" : "Maximum write speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_wr_length" : { + "alias" : "bps_wr_max_length" + }, + "bps_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cache" : { + "description" : "The drive's cache mode", + "enum" : [ + "none", + "writethrough", + "writeback", + "unsafe", + "directsync" + ], + "optional" : 1, + "type" : "string" + }, + "cyls" : { + "description" : "Force the drive's physical geometry to have a specific cylinder count.", + "optional" : 1, + "type" : "integer" + }, + "detect_zeroes" : { + "description" : "Controls whether to detect and try to optimize writes of zeroes.", + "optional" : 1, + "type" : "boolean" + }, + "discard" : { + "description" : "Controls whether to pass discard/trim requests to the underlying storage.", + "enum" : [ + "ignore", + "on" + ], + "optional" : 1, + "type" : "string" + }, + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "heads" : { + "description" : "Force the drive's physical geometry to have a specific head count.", + "optional" : 1, + "type" : "integer" + }, + "iops" : { + "description" : "Maximum r/w I/O in operations per second.", + "format_description" : "iops", "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "integer" }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, + "iops_max" : { + "description" : "Maximum unthrottled r/w I/O pool in operations per second.", + "format_description" : "iops", "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "integer" }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" + "iops_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "iops_rd" : { + "description" : "Maximum read I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" }, - "rename" : { - "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.", - "maxLength" : 64, - "minLength" : 2, + "iops_rd_length" : { + "alias" : "iops_rd_max_length" + }, + "iops_rd_max" : { + "description" : "Maximum unthrottled read I/O pool in operations per second.", + "format_description" : "iops", "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" + "type" : "integer" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", + "iops_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/ipset", - "text" : "ipset" - }, - { - "info" : { - "GET" : { - "description" : "Get VM firewall options.", - "method" : "GET", - "name" : "get_options", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "optional" : 1, + "type" : "integer" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", + "iops_wr" : { + "description" : "Maximum write I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_length" : { + "alias" : "iops_wr_max_length" + }, + "iops_wr_max" : { + "description" : "Maximum unthrottled write I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : "node", - "returns" : { - "properties" : { - "dhcp" : { - "description" : "Enable DHCP.", "optional" : 1, - "type" : "boolean" + "type" : "integer" }, - "enable" : { - "description" : "Enable/disable firewall rules.", + "mbps" : { + "description" : "Maximum r/w speed in megabytes per second.", + "format_description" : "mbps", "optional" : 1, - "type" : "boolean" + "type" : "number" }, - "ipfilter" : { - "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "mbps_max" : { + "description" : "Maximum unthrottled r/w pool in megabytes per second.", + "format_description" : "mbps", "optional" : 1, - "type" : "boolean" + "type" : "number" }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", + "mbps_rd" : { + "description" : "Maximum read speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_rd_max" : { + "description" : "Maximum unthrottled read pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr" : { + "description" : "Maximum write speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr_max" : { + "description" : "Maximum unthrottled write pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "media" : { + "default" : "disk", + "description" : "The drive's media type.", "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" + "cdrom", + "disk" ], "optional" : 1, "type" : "string" }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", + "replicate" : { + "default" : 1, + "description" : "Whether the drive should considered for replication jobs.", + "optional" : 1, + "type" : "boolean" + }, + "rerror" : { + "description" : "Read error action.", "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" + "ignore", + "report", + "stop" ], "optional" : 1, "type" : "string" }, - "macfilter" : { - "description" : "Enable/disable MAC address filter.", + "secs" : { + "description" : "Force the drive's physical geometry to have a specific sector count.", + "optional" : 1, + "type" : "integer" + }, + "serial" : { + "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", + "format" : "urlencoded", + "format_description" : "serial", + "maxLength" : 60, + "optional" : 1, + "type" : "string" + }, + "shared" : { + "default" : 0, + "description" : "Mark this locally-managed volume as available on all nodes", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "snapshot" : { + "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", "optional" : 1, "type" : "boolean" }, - "ndp" : { - "description" : "Enable NDP.", + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", "optional" : 1, "type" : "boolean" }, - "policy_in" : { - "description" : "Input policy.", + "trans" : { + "description" : "Force disk geometry bios translation mode.", "enum" : [ - "ACCEPT", - "REJECT", - "DROP" + "none", + "lba", + "auto" ], "optional" : 1, "type" : "string" }, - "policy_out" : { - "description" : "Output policy.", + "volume" : { + "alias" : "file" + }, + "werror" : { + "description" : "Write error action.", "enum" : [ - "ACCEPT", - "REJECT", - "DROP" + "enospc", + "ignore", + "report", + "stop" ], "optional" : 1, "type" : "string" }, - "radv" : { - "description" : "Allow sending Router Advertisement.", + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", "optional" : 1, - "type" : "boolean" + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, - "type" : "object" - } - }, - "PUT" : { - "description" : "Set Firewall options.", - "method" : "PUT", - "name" : "set_options", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", + "optional" : 1, + "type" : "string" + }, + "scsi[n]" : { + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", + "format" : { + "aio" : { + "description" : "AIO type to use.", + "enum" : [ + "native", + "threads" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" }, - "dhcp" : { - "description" : "Enable DHCP.", + "backup" : { + "description" : "Whether the drive should be included when making backups.", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "boolean" }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, + "bps" : { + "description" : "Maximum r/w speed in bytes per second.", + "format_description" : "bps", "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "integer" }, - "enable" : { - "description" : "Enable/disable firewall rules.", + "bps_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "integer" }, - "ipfilter" : { - "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "bps_rd" : { + "description" : "Maximum read speed in bytes per second.", + "format_description" : "bps", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "integer" }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], + "bps_rd_length" : { + "alias" : "bps_rd_max_length" + }, + "bps_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, "optional" : 1, - "type" : "string" + "type" : "integer" }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", + "bps_wr" : { + "description" : "Maximum write speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_wr_length" : { + "alias" : "bps_wr_max_length" + }, + "bps_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cache" : { + "description" : "The drive's cache mode", "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" + "none", + "writethrough", + "writeback", + "unsafe", + "directsync" ], "optional" : 1, "type" : "string" }, - "macfilter" : { - "description" : "Enable/disable MAC address filter.", + "cyls" : { + "description" : "Force the drive's physical geometry to have a specific cylinder count.", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "integer" }, - "ndp" : { - "description" : "Enable NDP.", + "detect_zeroes" : { + "description" : "Controls whether to detect and try to optimize writes of zeroes.", "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "type" : "boolean" }, - "policy_in" : { - "description" : "Input policy.", + "discard" : { + "description" : "Controls whether to pass discard/trim requests to the underlying storage.", "enum" : [ - "ACCEPT", - "REJECT", - "DROP" + "ignore", + "on" ], "optional" : 1, "type" : "string" }, - "policy_out" : { - "description" : "Output policy.", + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", "enum" : [ - "ACCEPT", - "REJECT", - "DROP" + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" ], "optional" : 1, "type" : "string" }, - "radv" : { - "description" : "Allow sending Router Advertisement.", + "heads" : { + "description" : "Force the drive's physical geometry to have a specific head count.", + "optional" : 1, + "type" : "integer" + }, + "iops" : { + "description" : "Maximum r/w I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max" : { + "description" : "Maximum unthrottled r/w I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_rd" : { + "description" : "Maximum read I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_length" : { + "alias" : "iops_rd_max_length" + }, + "iops_rd_max" : { + "description" : "Maximum unthrottled read I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_wr" : { + "description" : "Maximum write I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_length" : { + "alias" : "iops_wr_max_length" + }, + "iops_wr_max" : { + "description" : "Maximum unthrottled write I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iothread" : { + "description" : "Whether to use iothreads for this drive", + "optional" : 1, + "type" : "boolean" + }, + "mbps" : { + "description" : "Maximum r/w speed in megabytes per second.", + "format_description" : "mbps", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "number" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/options", - "text" : "options" - }, - { - "info" : { - "GET" : { - "description" : "Read firewall log", - "method" : "GET", - "name" : "log", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "limit" : { - "minimum" : 0, + "mbps_max" : { + "description" : "Maximum unthrottled r/w pool in megabytes per second.", + "format_description" : "mbps", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "number" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "mbps_rd" : { + "description" : "Maximum read speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" }, - "start" : { - "minimum" : 0, + "mbps_rd_max" : { + "description" : "Maximum unthrottled read pool in megabytes per second.", + "format_description" : "mbps", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "number" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Console" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : { - "n" : { - "description" : "Line number", - "type" : "integer" - }, - "t" : { - "description" : "Line text", - "type" : "string" - } + "mbps_wr" : { + "description" : "Maximum write speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" }, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/log", - "text" : "log" - }, - { - "info" : { - "GET" : { - "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", - "method" : "GET", - "name" : "refs", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "mbps_wr_max" : { + "description" : "Maximum unthrottled write pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" }, - "type" : { - "description" : "Only list references of specified type.", + "media" : { + "default" : "disk", + "description" : "The drive's media type.", "enum" : [ - "alias", - "ipset" + "cdrom", + "disk" ], "optional" : 1, "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "items" : { - "properties" : { - "comment" : { - "optional" : 1, - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "type" : { - "enum" : [ - "alias", - "ipset" - ], - "type" : "string" - } + "queues" : { + "description" : "Number of queues.", + "minimum" : 2, + "optional" : 1, + "type" : "integer" }, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/firewall/refs", - "text" : "refs" - } - ], - "info" : { - "GET" : { - "description" : "Directory index.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/firewall", - "text" : "firewall" - }, - { - "children" : [ - { - "info" : { - "POST" : { - "description" : "Execute fsfreeze-freeze.", - "method" : "POST", - "name" : "fsfreeze-freeze", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "replicate" : { + "default" : 1, + "description" : "Whether the drive should considered for replication jobs.", + "optional" : 1, + "type" : "boolean" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-freeze", - "text" : "fsfreeze-freeze" - }, - { - "info" : { - "POST" : { - "description" : "Execute fsfreeze-status.", - "method" : "POST", - "name" : "fsfreeze-status", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "rerror" : { + "description" : "Read error action.", + "enum" : [ + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-status", - "text" : "fsfreeze-status" - }, - { - "info" : { - "POST" : { - "description" : "Execute fsfreeze-thaw.", - "method" : "POST", - "name" : "fsfreeze-thaw", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "scsiblock" : { + "default" : 0, + "description" : "whether to use scsi-block for full passthrough of host block device\n\nWARNING: can lead to I/O errors in combination with low memory or high memory fragmentation on host", + "optional" : 1, + "type" : "boolean" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/fsfreeze-thaw", - "text" : "fsfreeze-thaw" - }, - { - "info" : { - "POST" : { - "description" : "Execute fstrim.", - "method" : "POST", - "name" : "fstrim", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "secs" : { + "description" : "Force the drive's physical geometry to have a specific sector count.", + "optional" : 1, + "type" : "integer" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/fstrim", - "text" : "fstrim" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-fsinfo.", - "method" : "GET", - "name" : "get-fsinfo", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "serial" : { + "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", + "format" : "urlencoded", + "format_description" : "serial", + "maxLength" : 60, + "optional" : 1, + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-fsinfo", - "text" : "get-fsinfo" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-host-name.", - "method" : "GET", - "name" : "get-host-name", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "shared" : { + "default" : 0, + "description" : "Mark this locally-managed volume as available on all nodes", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-host-name", - "text" : "get-host-name" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-memory-block-info.", - "method" : "GET", - "name" : "get-memory-block-info", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-block-info", - "text" : "get-memory-block-info" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-memory-blocks.", - "method" : "GET", - "name" : "get-memory-blocks", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "snapshot" : { + "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", + "optional" : 1, + "type" : "boolean" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-memory-blocks", - "text" : "get-memory-blocks" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-osinfo.", - "method" : "GET", - "name" : "get-osinfo", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "trans" : { + "description" : "Force disk geometry bios translation mode.", + "enum" : [ + "none", + "lba", + "auto" + ], + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + }, + "werror" : { + "description" : "Write error action.", + "enum" : [ + "enospc", + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } - } + }, + "optional" : 1, + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "scsihw" : { + "default" : "lsi", + "description" : "SCSI controller model", + "enum" : [ + "lsi", + "lsi53c810", + "virtio-scsi-pci", + "virtio-scsi-single", + "megasas", + "pvscsi" + ], + "optional" : 1, + "type" : "string" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-osinfo", - "text" : "get-osinfo" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-time.", - "method" : "GET", - "name" : "get-time", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "searchdomain" : { + "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", + "optional" : 1, + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "serial[n]" : { + "description" : "Create a serial device inside the VM (n is 0 to 3)", + "optional" : 1, + "pattern" : "(/dev/.+|socket)", + "type" : "string", + "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-time", - "text" : "get-time" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-timezone.", - "method" : "GET", - "name" : "get-timezone", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "shares" : { + "default" : 1000, + "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.", + "maximum" : 50000, + "minimum" : 0, + "optional" : 1, + "type" : "integer" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "smbios1" : { + "description" : "Specify SMBIOS type 1 fields.", + "format" : "pve-qm-smbios1", + "maxLength" : 512, + "optional" : 1, + "type" : "string" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-timezone", - "text" : "get-timezone" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-users.", - "method" : "GET", - "name" : "get-users", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "smp" : { + "default" : 1, + "description" : "The number of CPUs. Please use option -sockets instead.", + "minimum" : 1, + "optional" : 1, + "type" : "integer" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "sockets" : { + "default" : 1, + "description" : "The number of CPU sockets.", + "minimum" : 1, + "optional" : 1, + "type" : "integer" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-users", - "text" : "get-users" - }, - { - "info" : { - "GET" : { - "description" : "Execute get-vcpus.", - "method" : "GET", - "name" : "get-vcpus", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" } - } + }, + "optional" : 1, + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "sshkeys" : { + "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", + "format" : "urlencoded", + "optional" : 1, + "type" : "string" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/get-vcpus", - "text" : "get-vcpus" - }, - { - "info" : { - "GET" : { - "description" : "Execute info.", - "method" : "GET", - "name" : "info", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "startdate" : { + "default" : "now", + "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.", + "optional" : 1, + "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)", + "type" : "string", + "typetext" : "(now | YYYY-MM-DD | YYYY-MM-DDTHH:MM:SS)" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "startup" : { + "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", + "format" : "pve-startup-order", + "optional" : 1, + "type" : "string", + "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/info", - "text" : "info" - }, - { - "info" : { - "GET" : { - "description" : "Execute network-get-interfaces.", - "method" : "GET", - "name" : "network-get-interfaces", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "tablet" : { + "default" : 1, + "description" : "Enable/disable the USB tablet device.", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (`qm set --vga qxl`)." }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/network-get-interfaces", - "text" : "network-get-interfaces" - }, - { - "info" : { - "POST" : { - "description" : "Execute ping.", - "method" : "POST", - "name" : "ping", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "tdf" : { + "default" : 0, + "description" : "Enable/disable time drift fix.", + "optional" : 1, + "type" : "boolean" + }, + "template" : { + "default" : 0, + "description" : "Enable/disable Template.", + "optional" : 1, + "type" : "boolean" + }, + "unused[n]" : { + "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "volume" : { + "alias" : "file" } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + }, + "optional" : 1, + "type" : "string" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/ping", - "text" : "ping" - }, - { - "info" : { - "POST" : { - "description" : "Execute shutdown.", - "method" : "POST", - "name" : "shutdown", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "usb[n]" : { + "description" : "Configure an USB device (n is 0 to 4).", + "format" : { + "host" : { + "default_key" : 1, + "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", + "format" : "pve-qm-usb-device", + "format_description" : "HOSTUSBDEVICE|spice", + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "usb3" : { + "default" : 0, + "description" : "Specifies whether if given host option is a USB3 device or port.", + "optional" : 1, + "type" : "boolean" } - } + }, + "optional" : 1, + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + "vcpus" : { + "default" : 0, + "description" : "Number of hotplugged vcpus.", + "minimum" : 1, + "optional" : 1, + "type" : "integer" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/shutdown", - "text" : "shutdown" - }, - { - "info" : { - "POST" : { - "description" : "Execute suspend-disk.", - "method" : "POST", - "name" : "suspend-disk", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "vga" : { + "description" : "Configure the VGA hardware.", + "format" : { + "memory" : { + "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.", + "maximum" : 512, + "minimum" : 4, + "optional" : 1, + "type" : "integer" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "type" : { + "default" : "std", + "default_key" : 1, + "description" : "Select the VGA type.", + "enum" : [ + "cirrus", + "qxl", + "qxl2", + "qxl3", + "qxl4", + "none", + "serial0", + "serial1", + "serial2", + "serial3", + "std", + "virtio", + "vmware" + ], + "optional" : 1, + "type" : "string" } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] + }, + "optional" : 1, + "type" : "string", + "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal." }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-disk", - "text" : "suspend-disk" - }, - { - "info" : { - "POST" : { - "description" : "Execute suspend-hybrid.", - "method" : "POST", - "name" : "suspend-hybrid", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "virtio[n]" : { + "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).", + "format" : { + "aio" : { + "description" : "AIO type to use.", + "enum" : [ + "native", + "threads" + ], + "optional" : 1, + "type" : "string" + }, + "backup" : { + "description" : "Whether the drive should be included when making backups.", + "optional" : 1, + "type" : "boolean" + }, + "bps" : { + "description" : "Maximum r/w speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "bps_rd" : { + "description" : "Maximum read speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_rd_length" : { + "alias" : "bps_rd_max_length" + }, + "bps_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "bps_wr" : { + "description" : "Maximum write speed in bytes per second.", + "format_description" : "bps", + "optional" : 1, + "type" : "integer" + }, + "bps_wr_length" : { + "alias" : "bps_wr_max_length" + }, + "bps_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cache" : { + "description" : "The drive's cache mode", + "enum" : [ + "none", + "writethrough", + "writeback", + "unsafe", + "directsync" + ], + "optional" : 1, + "type" : "string" + }, + "cyls" : { + "description" : "Force the drive's physical geometry to have a specific cylinder count.", + "optional" : 1, + "type" : "integer" + }, + "detect_zeroes" : { + "description" : "Controls whether to detect and try to optimize writes of zeroes.", + "optional" : 1, + "type" : "boolean" + }, + "discard" : { + "description" : "Controls whether to pass discard/trim requests to the underlying storage.", + "enum" : [ + "ignore", + "on" + ], + "optional" : 1, + "type" : "string" + }, + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "heads" : { + "description" : "Force the drive's physical geometry to have a specific head count.", + "optional" : 1, + "type" : "integer" + }, + "iops" : { + "description" : "Maximum r/w I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max" : { + "description" : "Maximum unthrottled r/w I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_max_length" : { + "description" : "Maximum length of I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_rd" : { + "description" : "Maximum read I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_length" : { + "alias" : "iops_rd_max_length" + }, + "iops_rd_max" : { + "description" : "Maximum unthrottled read I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_rd_max_length" : { + "description" : "Maximum length of read I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iops_wr" : { + "description" : "Maximum write I/O in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_length" : { + "alias" : "iops_wr_max_length" + }, + "iops_wr_max" : { + "description" : "Maximum unthrottled write I/O pool in operations per second.", + "format_description" : "iops", + "optional" : 1, + "type" : "integer" + }, + "iops_wr_max_length" : { + "description" : "Maximum length of write I/O bursts in seconds.", + "format_description" : "seconds", + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "iothread" : { + "description" : "Whether to use iothreads for this drive", + "optional" : 1, + "type" : "boolean" + }, + "mbps" : { + "description" : "Maximum r/w speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_max" : { + "description" : "Maximum unthrottled r/w pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_rd" : { + "description" : "Maximum read speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_rd_max" : { + "description" : "Maximum unthrottled read pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr" : { + "description" : "Maximum write speed in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "mbps_wr_max" : { + "description" : "Maximum unthrottled write pool in megabytes per second.", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "media" : { + "default" : "disk", + "description" : "The drive's media type.", + "enum" : [ + "cdrom", + "disk" + ], + "optional" : 1, + "type" : "string" + }, + "replicate" : { + "default" : 1, + "description" : "Whether the drive should considered for replication jobs.", + "optional" : 1, + "type" : "boolean" + }, + "rerror" : { + "description" : "Read error action.", + "enum" : [ + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + }, + "secs" : { + "description" : "Force the drive's physical geometry to have a specific sector count.", + "optional" : 1, + "type" : "integer" + }, + "serial" : { + "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", + "format" : "urlencoded", + "format_description" : "serial", + "maxLength" : 60, + "optional" : 1, + "type" : "string" + }, + "shared" : { + "default" : 0, + "description" : "Mark this locally-managed volume as available on all nodes", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "snapshot" : { + "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", + "optional" : 1, + "type" : "boolean" + }, + "trans" : { + "description" : "Force disk geometry bios translation mode.", + "enum" : [ + "none", + "lba", + "auto" + ], + "optional" : 1, + "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-hybrid", - "text" : "suspend-hybrid" - }, - { - "info" : { - "POST" : { - "description" : "Execute suspend-ram.", - "method" : "POST", - "name" : "suspend-ram", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "volume" : { + "alias" : "file" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "werror" : { + "description" : "Write error action.", + "enum" : [ + "enospc", + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/agent/suspend-ram", - "text" : "suspend-ram" - } - ], - "info" : { - "GET" : { - "description" : "Qemu Agent command index.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 1, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "user" : "all" - }, - "proxyto" : "node", - "returns" : { - "description" : "Returns the list of Qemu Agent commands", - "items" : { - "properties" : {}, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Execute Qemu Guest Agent commands.", - "method" : "POST", - "name" : "agent", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "command" : { - "description" : "The QGA command.", - "enum" : [ - "fsfreeze-freeze", - "fsfreeze-status", - "fsfreeze-thaw", - "fstrim", - "get-fsinfo", - "get-host-name", - "get-memory-block-info", - "get-memory-blocks", - "get-osinfo", - "get-time", - "get-timezone", - "get-users", - "get-vcpus", - "info", - "network-get-interfaces", - "ping", - "shutdown", - "suspend-disk", - "suspend-hybrid", - "suspend-ram" - ], - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Monitor" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "Returns an object with a single `result` property.", - "type" : "object" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu/{vmid}/agent", - "text" : "agent" - }, - { - "info" : { - "GET" : { - "description" : "Read VM RRD statistics (returns PNG)", - "method" : "GET", - "name" : "rrd", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], + }, "optional" : 1, "type" : "string" }, - "ds" : { - "description" : "The list of datasources you want to display.", - "format" : "pve-configid-list", - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", - "enum" : [ - "hour", - "day", - "week", - "month", - "year" - ], - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "protected" : 1, - "returns" : { - "properties" : { - "filename" : { - "type" : "string" - } - }, - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/rrd", - "text" : "rrd" - }, - { - "info" : { - "GET" : { - "description" : "Read VM RRD statistics", - "method" : "GET", - "name" : "rrddata", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], + "vmgenid" : { + "default" : "1 (autogenerated)", + "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.", + "format_description" : "UUID", "optional" : 1, - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", + "pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])", "type" : "string", - "typetext" : "" + "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file." }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", - "enum" : [ - "hour", - "day", - "week", - "month", - "year" - ], + "vmstatestorage" : { + "description" : "Default storage for VM state volumes/files.", + "format" : "pve-storage-id", + "optional" : 1, "type" : "string" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "protected" : 1, - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/qemu/{vmid}/rrddata", - "text" : "rrddata" - }, - { - "info" : { - "GET" : { - "description" : "Get current virtual machine configuration. This does not include pending configuration changes (see 'pending' API).", - "method" : "GET", - "name" : "vm_config", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "current" : { - "default" : 0, - "description" : "Get current values (instead of pending values).", + "watchdog" : { + "description" : "Create a virtual hardware watchdog device.", + "format" : "pve-qm-watchdog", "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : "node", - "returns" : { - "properties" : { - "digest" : { - "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.", - "type" : "string" + "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)" } }, "type" : "object" } }, "POST" : { + "allowtoken" : 1, "description" : "Set virtual machine options (asynchrounous API).", "method" : "POST", "name" : "update_vm_async", @@ -7128,11 +13189,43 @@ var pveapi = [ "typetext" : "" }, "agent" : { - "default" : 0, - "description" : "Enable/disable Qemu GuestAgent.", + "description" : "Enable/disable Qemu GuestAgent and its properties.", + "format" : { + "enabled" : { + "default" : 0, + "default_key" : 1, + "description" : "Enable/disable Qemu GuestAgent.", + "type" : "boolean" + }, + "fstrim_cloned_disks" : { + "default" : 0, + "description" : "Run fstrim after cloning/moving a disk.", + "optional" : 1, + "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string", + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" + }, + "arch" : { + "description" : "Virtual processor architecture. Defaults to the host.", + "enum" : [ + "x86_64", + "aarch64" + ], + "optional" : 1, + "type" : "string" }, "args" : { "description" : "Arbitrary arguments passed to kvm.", @@ -7141,6 +13234,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -7174,14 +13293,14 @@ var pveapi = [ "type" : "string" }, "boot" : { - "default" : "cdn", - "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).", + "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.", + "format" : "pve-qm-boot", "optional" : 1, - "pattern" : "[acdn]{1,4}", - "type" : "string" + "type" : "string", + "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=]" }, "bootdisk" : { - "description" : "Enable booting from specified disk.", + "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.", "format" : "pve-qm-bootdisk", "optional" : 1, "pattern" : "(ide|sata|scsi|virtio)\\d+", @@ -7194,6 +13313,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -7225,75 +13351,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl))(;(?^:[+-](pcid|spec-ctrl)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "[[cputype=]] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=] [,phys-bits=<8-64|host>] [,reported-model=]" }, "cpulimit" : { "default" : 0, @@ -7335,6 +13396,45 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "efidisk0" : { + "description" : "Configure a Disk for storing EFI vars", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[file=] [,format=] [,size=]" + }, "force" : { "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.", "optional" : 1, @@ -7348,13 +13448,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", - "typetext" : "[host=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "typetext" : "[host=] [,legacy-igd=<1|0>] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -7658,6 +13765,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -7681,22 +13793,56 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { - "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", + "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n", "format" : "pve-qm-ipconfig", "optional" : 1, "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, + "keephugepages" : { + "default" : 0, + "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "keyboard" : { "default" : null, - "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.conf' configuration file.It should not be necessary to set it.", + "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", "enum" : [ "de", "de-ch", @@ -7743,19 +13889,24 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" }, "machine" : { - "description" : "Specific the Qemu machine type.", + "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -7790,7 +13941,7 @@ var pveapi = [ "typetext" : "" }, "nameserver" : { - "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "format" : "address-list", "optional" : 1, "type" : "string", @@ -7803,6 +13954,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -7845,10 +13997,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -7870,6 +14023,13 @@ var pveapi = [ ], "type" : "string" }, + "mtu" : { + "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU", + "maximum" : 65520, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, "ne2k_isa" : { "alias" : "macaddr", "keyAlias" : "model" @@ -7924,7 +14084,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" + "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,mtu=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" }, "node" : { "description" : "The cluster node name.", @@ -8000,14 +14160,14 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", "optional" : 1, "pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+", "type" : "string", - "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "protection" : { "default" : 0, @@ -8030,6 +14190,36 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -8306,6 +14496,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -8329,14 +14524,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -8628,6 +14830,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -8651,11 +14858,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -8672,7 +14886,7 @@ var pveapi = [ "type" : "string" }, "searchdomain" : { - "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "optional" : 1, "type" : "string", "typetext" : "" @@ -8682,11 +14896,11 @@ var pveapi = [ "optional" : 1, "pattern" : "(/dev/.+|socket)", "type" : "string", - "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "shares" : { "default" : 1000, - "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning", + "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.", "maximum" : 50000, "minimum" : 0, "optional" : 1, @@ -8702,10 +14916,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -8723,6 +14937,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -8732,7 +14971,7 @@ var pveapi = [ }, "startdate" : { "default" : "now", - "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.", + "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.", "optional" : 1, "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)", "type" : "string", @@ -8751,7 +14990,14 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "", - "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." + "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (`qm set --vga qxl`)." + }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "tdf" : { "default" : 0, @@ -8769,24 +15015,35 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", "format" : { "host" : { "default_key" : 1, - "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", + "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", "format" : "pve-qm-usb-device", "format_description" : "HOSTUSBDEVICE|spice", "type" : "string" }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -8804,23 +15061,42 @@ var pveapi = [ "typetext" : " (1 - N)" }, "vga" : { - "description" : "Select the VGA type.", - "enum" : [ - "std", - "cirrus", - "vmware", - "qxl", - "serial0", - "serial1", - "serial2", - "serial3", - "qxl2", - "qxl3", - "qxl4" - ], + "description" : "Configure the VGA hardware.", + "format" : { + "memory" : { + "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.", + "maximum" : 512, + "minimum" : 4, + "optional" : 1, + "type" : "integer" + }, + "type" : { + "default" : "std", + "default_key" : 1, + "description" : "Select the VGA type.", + "enum" : [ + "cirrus", + "qxl", + "qxl2", + "qxl3", + "qxl4", + "none", + "serial0", + "serial1", + "serial2", + "serial3", + "std", + "virtio", + "vmware" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, "type" : "string", - "verbose_description" : "Select the VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use the options 'std' or 'vmware'. Default is 'std' for win8/win7/w2k8, and 'cirrus' for other OS types. The 'qxl' option enables the SPICE display sever. For win* OS you can select how many independent displays you want, Linux guests can add displays them self. You can also run without any graphic card, using a serial device as terminal." + "typetext" : "[[type=]] [,memory=]", + "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal." }, "virtio[n]" : { "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).", @@ -9132,6 +15408,15 @@ var pveapi = [ "type" : "string", "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" }, + "vmgenid" : { + "default" : "1 (autogenerated)", + "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.", + "format_description" : "UUID", + "optional" : 1, + "pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])", + "type" : "string", + "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file." + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -9167,7 +15452,8 @@ var pveapi = [ "VM.Config.Memory", "VM.Config.Network", "VM.Config.HWType", - "VM.Config.Options" + "VM.Config.Options", + "VM.Config.Cloudinit" ], "any", 1 @@ -9181,6 +15467,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set virtual machine options (synchrounous API) - You should consider using the POST method instead for any actions involving hotplug or storage allocation.", "method" : "PUT", "name" : "update_vm", @@ -9195,11 +15482,43 @@ var pveapi = [ "typetext" : "" }, "agent" : { - "default" : 0, - "description" : "Enable/disable Qemu GuestAgent.", + "description" : "Enable/disable Qemu GuestAgent and its properties.", + "format" : { + "enabled" : { + "default" : 0, + "default_key" : 1, + "description" : "Enable/disable Qemu GuestAgent.", + "type" : "boolean" + }, + "fstrim_cloned_disks" : { + "default" : 0, + "description" : "Run fstrim after cloning/moving a disk.", + "optional" : 1, + "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string", + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" + }, + "arch" : { + "description" : "Virtual processor architecture. Defaults to the host.", + "enum" : [ + "x86_64", + "aarch64" + ], + "optional" : 1, + "type" : "string" }, "args" : { "description" : "Arbitrary arguments passed to kvm.", @@ -9208,6 +15527,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -9233,14 +15578,14 @@ var pveapi = [ "type" : "string" }, "boot" : { - "default" : "cdn", - "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).", + "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.", + "format" : "pve-qm-boot", "optional" : 1, - "pattern" : "[acdn]{1,4}", - "type" : "string" + "type" : "string", + "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=]" }, "bootdisk" : { - "description" : "Enable booting from specified disk.", + "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.", "format" : "pve-qm-bootdisk", "optional" : 1, "pattern" : "(ide|sata|scsi|virtio)\\d+", @@ -9253,6 +15598,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -9284,75 +15636,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl))(;(?^:[+-](pcid|spec-ctrl)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "[[cputype=]] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=] [,phys-bits=<8-64|host>] [,reported-model=]" }, "cpulimit" : { "default" : 0, @@ -9394,6 +15681,45 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "efidisk0" : { + "description" : "Configure a Disk for storing EFI vars", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[file=] [,format=] [,size=]" + }, "force" : { "description" : "Force physical removal. Without this, we simple remove the disk from the config file and create an additional configuration entry called 'unused[n]', which contains the volume ID. Unlink of unused[n] always cause physical removal.", "optional" : 1, @@ -9407,13 +15733,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", - "typetext" : "[host=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "typetext" : "[host=] [,legacy-igd=<1|0>] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -9717,6 +16050,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -9740,22 +16078,56 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { - "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", + "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n", "format" : "pve-qm-ipconfig", "optional" : 1, "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, + "keephugepages" : { + "default" : 0, + "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "keyboard" : { "default" : null, - "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.conf' configuration file.It should not be necessary to set it.", + "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", "enum" : [ "de", "de-ch", @@ -9802,19 +16174,24 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" }, "machine" : { - "description" : "Specific the Qemu machine type.", + "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -9849,7 +16226,7 @@ var pveapi = [ "typetext" : "" }, "nameserver" : { - "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "format" : "address-list", "optional" : 1, "type" : "string", @@ -9862,6 +16239,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -9904,10 +16282,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -9929,6 +16308,13 @@ var pveapi = [ ], "type" : "string" }, + "mtu" : { + "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU", + "maximum" : 65520, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, "ne2k_isa" : { "alias" : "macaddr", "keyAlias" : "model" @@ -9983,7 +16369,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" + "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,mtu=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" }, "node" : { "description" : "The cluster node name.", @@ -10059,14 +16445,14 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", "optional" : 1, "pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+", "type" : "string", - "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "protection" : { "default" : 0, @@ -10089,6 +16475,36 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -10365,6 +16781,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -10388,14 +16809,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -10687,6 +17115,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -10710,11 +17143,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -10731,7 +17171,7 @@ var pveapi = [ "type" : "string" }, "searchdomain" : { - "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "optional" : 1, "type" : "string", "typetext" : "" @@ -10741,11 +17181,11 @@ var pveapi = [ "optional" : 1, "pattern" : "(/dev/.+|socket)", "type" : "string", - "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "shares" : { "default" : 1000, - "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning", + "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.", "maximum" : 50000, "minimum" : 0, "optional" : 1, @@ -10761,10 +17201,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -10782,6 +17222,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -10791,7 +17256,7 @@ var pveapi = [ }, "startdate" : { "default" : "now", - "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.", + "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.", "optional" : 1, "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)", "type" : "string", @@ -10810,7 +17275,14 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "", - "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." + "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (`qm set --vga qxl`)." + }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "tdf" : { "default" : 0, @@ -10828,24 +17300,35 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", "format" : { "host" : { "default_key" : 1, - "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", + "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", "format" : "pve-qm-usb-device", "format_description" : "HOSTUSBDEVICE|spice", "type" : "string" }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -10863,23 +17346,42 @@ var pveapi = [ "typetext" : " (1 - N)" }, "vga" : { - "description" : "Select the VGA type.", - "enum" : [ - "std", - "cirrus", - "vmware", - "qxl", - "serial0", - "serial1", - "serial2", - "serial3", - "qxl2", - "qxl3", - "qxl4" - ], + "description" : "Configure the VGA hardware.", + "format" : { + "memory" : { + "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.", + "maximum" : 512, + "minimum" : 4, + "optional" : 1, + "type" : "integer" + }, + "type" : { + "default" : "std", + "default_key" : 1, + "description" : "Select the VGA type.", + "enum" : [ + "cirrus", + "qxl", + "qxl2", + "qxl3", + "qxl4", + "none", + "serial0", + "serial1", + "serial2", + "serial3", + "std", + "virtio", + "vmware" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, "type" : "string", - "verbose_description" : "Select the VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use the options 'std' or 'vmware'. Default is 'std' for win8/win7/w2k8, and 'cirrus' for other OS types. The 'qxl' option enables the SPICE display sever. For win* OS you can select how many independent displays you want, Linux guests can add displays them self. You can also run without any graphic card, using a serial device as terminal." + "typetext" : "[[type=]] [,memory=]", + "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal." }, "virtio[n]" : { "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).", @@ -11191,6 +17693,15 @@ var pveapi = [ "type" : "string", "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" }, + "vmgenid" : { + "default" : "1 (autogenerated)", + "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.", + "format_description" : "UUID", + "optional" : 1, + "pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])", + "type" : "string", + "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file." + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -11226,7 +17737,8 @@ var pveapi = [ "VM.Config.Memory", "VM.Config.Network", "VM.Config.HWType", - "VM.Config.Options" + "VM.Config.Options", + "VM.Config.Cloudinit" ], "any", 1 @@ -11246,7 +17758,8 @@ var pveapi = [ { "info" : { "GET" : { - "description" : "Get virtual machine configuration, including pending changes.", + "allowtoken" : 1, + "description" : "Get the virtual machine configuration with both current and pending values.", "method" : "GET", "name" : "vm_pending", "parameters" : { @@ -11315,6 +17828,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Unlink/delete disk images.", "method" : "PUT", "name" : "unlink", @@ -11371,12 +17885,20 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP VNC proxy connections.", "method" : "POST", "name" : "vncproxy", "parameters" : { "additionalProperties" : 0, "properties" : { + "generate-password" : { + "default" : 0, + "description" : "Generates a random password to be used as ticket instead of the API ticket.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -11414,6 +17936,11 @@ var pveapi = [ "cert" : { "type" : "string" }, + "password" : { + "description" : "Returned if requested with 'generate-password' param. Consists of printable ASCII characters ('!' .. '~').", + "optional" : 1, + "type" : "string" + }, "port" : { "type" : "integer" }, @@ -11437,6 +17964,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a TCP proxy connections.", "method" : "POST", "name" : "termproxy", @@ -11505,6 +18033,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Opens a weksocket for VNC traffic.", "method" : "GET", "name" : "vncwebsocket", @@ -11566,6 +18095,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Returns a SPICE configuration to connect to the VM.", "method" : "POST", "name" : "spiceproxy", @@ -11579,7 +18109,7 @@ var pveapi = [ "typetext" : "" }, "proxy" : { - "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As resonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", + "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", "format" : "address", "optional" : 1, "type" : "string", @@ -11637,6 +18167,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get virtual machine status.", "method" : "GET", "name" : "vm_status", @@ -11670,6 +18201,84 @@ var pveapi = [ "protected" : 1, "proxyto" : "node", "returns" : { + "properties" : { + "agent" : { + "description" : "Qemu GuestAgent enabled in config.", + "optional" : 1, + "type" : "boolean" + }, + "cpus" : { + "description" : "Maximum usable CPUs.", + "optional" : 1, + "type" : "number" + }, + "ha" : { + "description" : "HA manager service status.", + "type" : "object" + }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, + "maxdisk" : { + "description" : "Root disk size in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxmem" : { + "description" : "Maximum memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "name" : { + "description" : "VM name.", + "optional" : 1, + "type" : "string" + }, + "pid" : { + "description" : "PID of running qemu process.", + "optional" : 1, + "type" : "integer" + }, + "qmpstatus" : { + "description" : "Qemu QMP agent status.", + "optional" : 1, + "type" : "string" + }, + "spice" : { + "description" : "Qemu VGA configuration supports spice.", + "optional" : 1, + "type" : "boolean" + }, + "status" : { + "description" : "Qemu process status.", + "enum" : [ + "stopped", + "running" + ], + "type" : "string" + }, + "tags" : { + "description" : "The current configured tags, if any", + "optional" : 1, + "type" : "string" + }, + "uptime" : { + "description" : "Uptime.", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer" + } + }, "type" : "object" } } @@ -11681,17 +18290,24 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Start virtual machine.", "method" : "POST", "name" : "vm_start", "parameters" : { "additionalProperties" : 0, "properties" : { + "force-cpu" : { + "description" : "Override QEMU's -cpu argument with the given string.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "machine" : { - "description" : "Specific the Qemu machine type.", + "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "migratedfrom" : { @@ -11737,11 +18353,20 @@ var pveapi = [ "typetext" : "" }, "targetstorage" : { - "description" : "Target storage for the migration. (Can be '1' to use the same storage id as on the source node.)", + "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.", + "format" : "storagepair-list", "optional" : 1, "type" : "string", "typetext" : "" }, + "timeout" : { + "default" : "max(30, vm memory in GiB)", + "description" : "Wait maximal timeout seconds.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -11774,6 +18399,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop virtual machine. The qemu process will exit immediately. Thisis akin to pulling the power plug of a running computer and may damage the VM data", "method" : "POST", "name" : "vm_stop", @@ -11845,6 +18471,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Reset virtual machine.", "method" : "POST", "name" : "vm_reset", @@ -11895,6 +18522,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Shutdown virtual machine. This is similar to pressing the power button on a physical machine.This will send an ACPI event for the guest OS, which should then proceed to a clean shutdown.", "method" : "POST", "name" : "vm_shutdown", @@ -11966,6 +18594,59 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, + "description" : "Reboot the VM by shutting it down, and starting it again. Applies pending changes.", + "method" : "POST", + "name" : "vm_reboot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "description" : "Wait maximal timeout seconds for the shutdown.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/status/reboot", + "text" : "reboot" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, "description" : "Suspend virtual machine.", "method" : "POST", "name" : "vm_suspend", @@ -11984,6 +18665,21 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "statestorage" : { + "description" : "The storage for the VM state", + "format" : "pve-storage-id", + "optional" : 1, + "requires" : "todisk", + "type" : "string", + "typetext" : "" + }, + "todisk" : { + "default" : 0, + "description" : "If set, suspends the VM to disk. Will be resumed on next VM start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -12000,7 +18696,8 @@ var pveapi = [ [ "VM.PowerMgmt" ] - ] + ], + "description" : "You need 'VM.PowerMgmt' on /vms/{vmid}, and if you have set 'todisk', you need also 'VM.Config.Disk' on /vms/{vmid} and 'Datastore.AllocateSpace' on the storage for the vmstate." }, "protected" : 1, "proxyto" : "node", @@ -12016,6 +18713,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Resume virtual machine.", "method" : "POST", "name" : "vm_resume", @@ -12071,6 +18769,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmcmdidx", @@ -12122,6 +18821,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Send key event to virtual machine.", "method" : "PUT", "name" : "vm_sendkey", @@ -12177,6 +18877,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Check if feature for virtual machine is available.", "method" : "GET", "name" : "vm_feature", @@ -12249,12 +18950,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a copy of virtual machine/template.", "method" : "POST", "name" : "clone_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "description" : { "description" : "Description for the new VM.", "optional" : 1, @@ -12381,12 +19091,21 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Move volume to different storage.", "method" : "POST", "name" : "move_vm_disk", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "move limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "delete" : { "default" : 0, "description" : "Delete the original disk after successful copy. By default the original disk is kept as unused disk.", @@ -12422,6 +19141,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -12513,13 +19249,90 @@ var pveapi = [ }, { "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get preconditions for migration.", + "method" : "GET", + "name" : "migrate_vm_precondition", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "target" : { + "description" : "Target node.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Migrate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "allowed_nodes" : { + "description" : "List nodes allowed for offline migration, only passed if VM is offline", + "optional" : 1, + "type" : "array" + }, + "local_disks" : { + "description" : "List local disks including CD-Rom, unsused and not referenced disks", + "type" : "array" + }, + "local_resources" : { + "description" : "List local resources e.g. pci, usb", + "type" : "array" + }, + "not_allowed_nodes" : { + "description" : "List not allowed nodes with additional informations, only passed if VM is offline", + "optional" : 1, + "type" : "object" + }, + "running" : { + "type" : "boolean" + } + }, + "type" : "object" + } + }, "POST" : { + "allowtoken" : 1, "description" : "Migrate virtual machine. Creates a new migration task.", "method" : "POST", "name" : "migrate_vm", "parameters" : { "additionalProperties" : 0, "properties" : { + "bwlimit" : { + "default" : "migrate limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "force" : { "description" : "Allow to migrate VMs which use local devices. Only root may use this option.", "optional" : 1, @@ -12549,7 +19362,7 @@ var pveapi = [ "typetext" : "" }, "online" : { - "description" : "Use online/live migration.", + "description" : "Use online/live migration if VM is running. Ignored if VM is stopped.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -12561,8 +19374,8 @@ var pveapi = [ "typetext" : "" }, "targetstorage" : { - "description" : "Default target storage.", - "format" : "pve-storage-id", + "description" : "Mapping from source to target storages. Providing only a single storage ID maps all source storages to that storage. Providing the special value '1' will map each source storage to itself.", + "format" : "storagepair-list", "optional" : 1, "type" : "string", "typetext" : "" @@ -12606,6 +19419,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute Qemu monitor commands.", "method" : "POST", "name" : "monitor", @@ -12656,6 +19470,7 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 1, "description" : "Extend volume size.", "method" : "PUT", "name" : "resize_vm", @@ -12690,6 +19505,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -12769,6 +19601,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get snapshot configuration", "method" : "GET", "name" : "get_snapshot_config", @@ -12803,7 +19636,8 @@ var pveapi = [ "/vms/{vmid}", [ "VM.Snapshot", - "VM.Snapshot.Rollback" + "VM.Snapshot.Rollback", + "VM.Audit" ], "any", 1 @@ -12815,6 +19649,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update snapshot metadata.", "method" : "PUT", "name" : "update_snapshot_config", @@ -12872,6 +19707,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Rollback VM state to specified snapshot.", "method" : "POST", "name" : "rollback", @@ -12927,6 +19763,7 @@ var pveapi = [ ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete a VM snapshot.", "method" : "DELETE", "name" : "delsnapshot", @@ -12978,6 +19815,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "", "method" : "GET", "name" : "snapshot_cmd_idx", @@ -13031,6 +19869,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "List all snapshots.", "method" : "GET", "name" : "snapshot_list", @@ -13065,7 +19904,32 @@ var pveapi = [ "proxyto" : "node", "returns" : { "items" : { - "properties" : {}, + "properties" : { + "description" : { + "description" : "Snapshot description.", + "type" : "string" + }, + "name" : { + "description" : "Snapshot identifier. Value 'current' identifies the current VM.", + "type" : "string" + }, + "parent" : { + "description" : "Parent snapshot identifier.", + "optional" : 1, + "type" : "string" + }, + "snaptime" : { + "description" : "Snapshot creation time", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + }, + "vmstate" : { + "description" : "Snapshot includes RAM.", + "optional" : 1, + "type" : "boolean" + } + }, "type" : "object" }, "links" : [ @@ -13078,6 +19942,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Snapshot a VM.", "method" : "POST", "name" : "snapshot", @@ -13142,6 +20007,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Create a Template.", "method" : "POST", "name" : "template", @@ -13169,6 +20035,23 @@ var pveapi = [ "scsi11", "scsi12", "scsi13", + "scsi14", + "scsi15", + "scsi16", + "scsi17", + "scsi18", + "scsi19", + "scsi20", + "scsi21", + "scsi22", + "scsi23", + "scsi24", + "scsi25", + "scsi26", + "scsi27", + "scsi28", + "scsi29", + "scsi30", "virtio0", "virtio1", "virtio2", @@ -13231,10 +20114,71 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/qemu/{vmid}/template", "text" : "template" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get automatically generated cloudinit config.", + "method" : "GET", + "name" : "cloudinit_generated_config_dump", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Config type.", + "enum" : [ + "user", + "network", + "meta" + ], + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/qemu/{vmid}/cloudinit/dump", + "text" : "dump" + } + ], + "leaf" : 0, + "path" : "/nodes/{node}/qemu/{vmid}/cloudinit", + "text" : "cloudinit" } ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Destroy the vm (also delete all used/owned volumes).", "method" : "DELETE", "name" : "destroy_vm", @@ -13247,6 +20191,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "purge" : { + "description" : "Remove vmid from backup cron jobs.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "skiplock" : { "description" : "Ignore locks - only root is allowed to use this option.", "optional" : 1, @@ -13278,6 +20228,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Directory index", "method" : "GET", "name" : "vmdiridx", @@ -13329,6 +20280,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Virtual machine index (per node).", "method" : "GET", "name" : "vmlist", @@ -13357,7 +20309,70 @@ var pveapi = [ "proxyto" : "node", "returns" : { "items" : { - "properties" : {}, + "properties" : { + "cpus" : { + "description" : "Maximum usable CPUs.", + "optional" : 1, + "type" : "number" + }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, + "maxdisk" : { + "description" : "Root disk size in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxmem" : { + "description" : "Maximum memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "name" : { + "description" : "VM name.", + "optional" : 1, + "type" : "string" + }, + "pid" : { + "description" : "PID of running qemu process.", + "optional" : 1, + "type" : "integer" + }, + "qmpstatus" : { + "description" : "Qemu QMP agent status.", + "optional" : 1, + "type" : "string" + }, + "status" : { + "description" : "Qemu process status.", + "enum" : [ + "stopped", + "running" + ], + "type" : "string" + }, + "tags" : { + "description" : "The current configured tags, if any", + "optional" : 1, + "type" : "string" + }, + "uptime" : { + "description" : "Uptime.", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer" + } + }, "type" : "object" }, "links" : [ @@ -13370,6 +20385,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create or restore a virtual machine.", "method" : "POST", "name" : "create_vm", @@ -13384,14 +20400,46 @@ var pveapi = [ "typetext" : "" }, "agent" : { - "default" : 0, - "description" : "Enable/disable Qemu GuestAgent.", + "description" : "Enable/disable Qemu GuestAgent and its properties.", + "format" : { + "enabled" : { + "default" : 0, + "default_key" : 1, + "description" : "Enable/disable Qemu GuestAgent.", + "type" : "boolean" + }, + "fstrim_cloned_disks" : { + "default" : 0, + "description" : "Run fstrim after cloning/moving a disk.", + "optional" : 1, + "type" : "boolean" + }, + "type" : { + "default" : "virtio", + "description" : "Select the agent type", + "enum" : [ + "virtio", + "isa" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string", + "typetext" : "[enabled=]<1|0> [,fstrim_cloned_disks=<1|0>] [,type=]" + }, + "arch" : { + "description" : "Virtual processor architecture. Defaults to the host.", + "enum" : [ + "x86_64", + "aarch64" + ], + "optional" : 1, + "type" : "string" }, "archive" : { - "description" : "The backup file.", + "description" : "The backup archive. Either the file system path to a .tar or .vma file (use '-' to pipe data from stdin) or a proxmox storage backup volume identifier.", "maxLength" : 255, "optional" : 1, "type" : "string", @@ -13404,6 +20452,32 @@ var pveapi = [ "typetext" : "", "verbose_description" : "Arbitrary arguments passed to kvm, for example:\n\nargs: -no-reboot -no-hpet\n\nNOTE: this option is for experts only.\n" }, + "audio0" : { + "description" : "Configure a audio device, useful in combination with QXL/Spice.", + "format" : { + "device" : { + "description" : "Configure an audio device.", + "enum" : [ + "ich9-intel-hda", + "intel-hda", + "AC97" + ], + "type" : "string" + }, + "driver" : { + "default" : "spice", + "description" : "Driver backend for the audio device.", + "enum" : [ + "spice" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "device= [,driver=]" + }, "autostart" : { "default" : 0, "description" : "Automatic restart after crash (currently ignored).", @@ -13429,21 +20503,22 @@ var pveapi = [ "type" : "string" }, "boot" : { - "default" : "cdn", - "description" : "Boot on floppy (a), hard disk (c), CD-ROM (d), or network (n).", + "description" : "Specify guest boot order. Use with 'order=', usage with no key or 'legacy=' is deprecated.", + "format" : "pve-qm-boot", "optional" : 1, - "pattern" : "[acdn]{1,4}", - "type" : "string" + "type" : "string", + "typetext" : "[[legacy=]<[acdn]{1,4}>] [,order=]" }, "bootdisk" : { - "description" : "Enable booting from specified disk.", + "description" : "Enable booting from specified disk. Deprecated: Use 'boot: order=foo;bar' instead.", "format" : "pve-qm-bootdisk", "optional" : 1, "pattern" : "(ide|sata|scsi|virtio)\\d+", "type" : "string" }, "bwlimit" : { - "description" : "Override i/o bandwidth limit (in KiB/s).", + "default" : "restore limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", "minimum" : "0", "optional" : 1, "type" : "integer", @@ -13456,6 +20531,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "cicustom" : { + "description" : "cloud-init: Specify custom files to replace the automatically generated ones at start.", + "format" : "pve-qm-cicustom", + "optional" : 1, + "type" : "string", + "typetext" : "[meta=] [,network=] [,user=]" + }, "cipassword" : { "description" : "cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.", "optional" : 1, @@ -13487,75 +20569,10 @@ var pveapi = [ }, "cpu" : { "description" : "Emulated CPU type.", - "format" : { - "cputype" : { - "default" : "kvm64", - "default_key" : 1, - "description" : "Emulated CPU type.", - "enum" : [ - "486", - "athlon", - "Broadwell", - "Broadwell-IBRS", - "Broadwell-noTSX", - "Broadwell-noTSX-IBRS", - "Conroe", - "core2duo", - "coreduo", - "EPYC", - "EPYC-IBPB", - "Haswell", - "Haswell-IBRS", - "Haswell-noTSX", - "Haswell-noTSX-IBRS", - "host", - "IvyBridge", - "IvyBridge-IBRS", - "kvm32", - "kvm64", - "max", - "Nehalem", - "Nehalem-IBRS", - "Opteron_G1", - "Opteron_G2", - "Opteron_G3", - "Opteron_G4", - "Opteron_G5", - "Penryn", - "pentium", - "pentium2", - "pentium3", - "phenom", - "qemu32", - "qemu64", - "SandyBridge", - "SandyBridge-IBRS", - "Skylake-Client", - "Skylake-Client-IBRS", - "Skylake-Server", - "Skylake-Server-IBRS", - "Westmere", - "Westmere-IBRS" - ], - "type" : "string" - }, - "flags" : { - "description" : "List of additional CPU flags separated by ';'. Use '+FLAG' to enable, '-FLAG' to disable a flag. Currently supported flags: 'pcid', 'spec-ctrl'.", - "format_description" : "+FLAG[;-FLAG...]", - "optional" : 1, - "pattern" : "(?^:(?^:[+-](pcid|spec-ctrl))(;(?^:[+-](pcid|spec-ctrl)))*)", - "type" : "string" - }, - "hidden" : { - "default" : 0, - "description" : "Do not identify as a KVM virtual machine.", - "optional" : 1, - "type" : "boolean" - } - }, + "format" : "pve-vm-cpu-conf", "optional" : 1, "type" : "string", - "typetext" : "[cputype=] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>]" + "typetext" : "[[cputype=]] [,flags=<+FLAG[;-FLAG...]>] [,hidden=<1|0>] [,hv-vendor-id=] [,phys-bits=<8-64|host>] [,reported-model=]" }, "cpulimit" : { "default" : 0, @@ -13583,6 +20600,45 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "efidisk0" : { + "description" : "Configure a Disk for storing EFI vars", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id-or-qm-path", + "format_description" : "volume", + "type" : "string" + }, + "format" : { + "description" : "The drive's backing file's data format.", + "enum" : [ + "raw", + "cow", + "qcow", + "qed", + "qcow2", + "vmdk", + "cloop" + ], + "optional" : 1, + "type" : "string" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[file=] [,format=] [,size=]" + }, "force" : { "description" : "Allow to overwrite existing VM.", "optional" : 1, @@ -13596,13 +20652,20 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "hookscript" : { + "description" : "Script that will be executed during various steps in the vms lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "hostpci[n]" : { "description" : "Map host PCI devices into guest.", "format" : "pve-qm-hostpci", "optional" : 1, "type" : "string", - "typetext" : "[host=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", - "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer \npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "typetext" : "[host=] [,legacy-igd=<1|0>] [,mdev=] [,pcie=<1|0>] [,rombar=<1|0>] [,romfile=] [,x-vga=<1|0>]", + "verbose_description" : "Map host PCI devices into guest.\n\nNOTE: This option allows direct access to host hardware. So it is no longer\npossible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "hotplug" : { "default" : "network,disk,usb", @@ -13906,6 +20969,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -13929,22 +20997,56 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,model=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "ipconfig[n]" : { - "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit gateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using dhcp on IPv4.\n", + "description" : "cloud-init: Specify IP addresses and gateways for the corresponding interface.\n\nIP addresses use CIDR notation, gateways are optional but need an IP of the same type specified.\n\nThe special string 'dhcp' can be used for IP addresses to use DHCP, in which case no explicit\ngateway should be provided.\nFor IPv6 the special string 'auto' can be used to use stateless autoconfiguration.\n\nIf cloud-init is enabled and neither an IPv4 nor an IPv6 address is specified, it defaults to using\ndhcp on IPv4.\n", "format" : "pve-qm-ipconfig", "optional" : 1, "type" : "string", "typetext" : "[gw=] [,gw6=] [,ip=] [,ip6=]" }, + "ivshmem" : { + "description" : "Inter-VM shared memory. Useful for direct communication between VMs, or to the host.", + "format" : { + "name" : { + "description" : "The name of the file. Will be prefixed with 'pve-shm-'. Default is the VMID. Will be deleted when the VM is stopped.", + "format_description" : "string", + "optional" : 1, + "pattern" : "[a-zA-Z0-9\\-]+", + "type" : "string" + }, + "size" : { + "description" : "The size of the file in MB.", + "minimum" : 1, + "type" : "integer" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "size= [,name=]" + }, + "keephugepages" : { + "default" : 0, + "description" : "Use together with hugepages. If enabled, hugepages will not not be deleted after VM shutdown and can be used for subsequent starts.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "keyboard" : { "default" : null, - "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.conf' configuration file.It should not be necessary to set it.", + "description" : "Keybord layout for vnc server. Default is read from the '/etc/pve/datacenter.cfg' configuration file.It should not be necessary to set it.", "enum" : [ "de", "de-ch", @@ -13991,19 +21093,24 @@ var pveapi = [ "lock" : { "description" : "Lock/unlock the VM.", "enum" : [ - "migrate", "backup", + "clone", + "create", + "migrate", + "rollback", "snapshot", - "rollback" + "snapshot-delete", + "suspending", + "suspended" ], "optional" : 1, "type" : "string" }, "machine" : { - "description" : "Specific the Qemu machine type.", + "description" : "Specifies the Qemu machine type.", "maxLength" : 40, "optional" : 1, - "pattern" : "(pc|pc(-i440fx)?-\\d+\\.\\d+(\\.pxe)?|q35|pc-q35-\\d+\\.\\d+(\\.pxe)?)", + "pattern" : "(pc|pc(-i440fx)?-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|q35|pc-q35-\\d+(\\.\\d+)+(\\+pve\\d+)?(\\.pxe)?|virt(?:-\\d+(\\.\\d+)+)?(\\+pve\\d+)?)", "type" : "string" }, "memory" : { @@ -14038,7 +21145,7 @@ var pveapi = [ "typetext" : "" }, "nameserver" : { - "description" : "cloud-init: Sets DNS server IP address for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS server IP address for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "format" : "address-list", "optional" : 1, "type" : "string", @@ -14051,6 +21158,7 @@ var pveapi = [ "description" : "Bridge to attach the network device to. The Proxmox VE standard bridge\nis called 'vmbr0'.\n\nIf you do not specify a bridge, we create a kvm user (NATed) network\ndevice, which provides DHCP and DNS services. The following addresses\nare used:\n\n 10.0.2.2 Gateway\n 10.0.2.3 DNS Server\n 10.0.2.4 SMB Server\n\nThe DHCP server assign addresses to the guest starting from 10.0.2.15.\n", "format_description" : "bridge", "optional" : 1, + "pattern" : "[-_.\\w\\d]+", "type" : "string" }, "e1000" : { @@ -14093,10 +21201,11 @@ var pveapi = [ }, "macaddr" : { "description" : "MAC address. That address must be unique withing your network. This is automatically generated if not specified.", + "format" : "mac-addr", "format_description" : "XX:XX:XX:XX:XX:XX", "optional" : 1, - "pattern" : "(?^i:[0-9a-f]{2}(?::[0-9a-f]{2}){5})", - "type" : "string" + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." }, "model" : { "default_key" : 1, @@ -14118,6 +21227,13 @@ var pveapi = [ ], "type" : "string" }, + "mtu" : { + "description" : "Force MTU, for VirtIO only. Set to '1' to use the bridge MTU", + "maximum" : 65520, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, "ne2k_isa" : { "alias" : "macaddr", "keyAlias" : "model" @@ -14172,7 +21288,7 @@ var pveapi = [ }, "optional" : 1, "type" : "string", - "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" + "typetext" : "[model=] [,bridge=] [,firewall=<1|0>] [,link_down=<1|0>] [,macaddr=] [,mtu=] [,queues=] [,rate=] [,tag=] [,trunks=] [,=]" }, "node" : { "description" : "The cluster node name.", @@ -14248,14 +21364,14 @@ var pveapi = [ ], "optional" : 1, "type" : "string", - "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6/3.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" + "verbose_description" : "Specify guest operating system. This is used to enable special\noptimization/features for specific operating systems:\n\n[horizontal]\nother;; unspecified OS\nwxp;; Microsoft Windows XP\nw2k;; Microsoft Windows 2000\nw2k3;; Microsoft Windows 2003\nw2k8;; Microsoft Windows 2008\nwvista;; Microsoft Windows Vista\nwin7;; Microsoft Windows 7\nwin8;; Microsoft Windows 8/2012/2012r2\nwin10;; Microsoft Windows 10/2016\nl24;; Linux 2.4 Kernel\nl26;; Linux 2.6 - 5.X Kernel\nsolaris;; Solaris/OpenSolaris/OpenIndiania kernel\n" }, "parallel[n]" : { "description" : "Map host parallel devices (n is 0 to 2).", "optional" : 1, "pattern" : "/dev/parport\\d+|/dev/usb/lp\\d+", "type" : "string", - "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Map host parallel devices (n is 0 to 2).\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "pool" : { "description" : "Add the VM to the specified pool.", @@ -14278,6 +21394,36 @@ var pveapi = [ "type" : "boolean", "typetext" : "" }, + "rng0" : { + "description" : "Configure a VirtIO-based Random Number Generator.", + "format" : { + "max_bytes" : { + "default" : 1024, + "description" : "Maximum bytes of entropy injected into the guest every 'period' milliseconds. Prefer a lower value when using /dev/random as source. Use 0 to disable limiting (potentially dangerous!).", + "optional" : 1, + "type" : "integer" + }, + "period" : { + "default" : 1000, + "description" : "Every 'period' milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another 'max_bytes' of entropy.", + "optional" : 1, + "type" : "integer" + }, + "source" : { + "default_key" : 1, + "description" : "The file on the host to gather entropy from. In most cases /dev/urandom should be preferred over /dev/random to avoid entropy-starvation issues on the host. Using urandom does *not* decrease security in any meaningful way, as it's still seeded from real entropy, and the bytes provided will most likely be mixed with real entropy on the guest as well. /dev/hwrng can be used to pass through a hardware RNG from the host.", + "enum" : [ + "/dev/urandom", + "/dev/random", + "/dev/hwrng" + ], + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[source=] [,max_bytes=] [,period=]" + }, "sata[n]" : { "description" : "Use volume as SATA hard disk or CD-ROM (n is 0 to 5).", "format" : { @@ -14554,6 +21700,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -14577,14 +21728,21 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsi[n]" : { - "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 13).", + "description" : "Use volume as SCSI hard disk or CD-ROM (n is 0 to 30).", "format" : { "aio" : { "description" : "AIO type to use.", @@ -14876,6 +22034,11 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, + "ssd" : { + "description" : "Whether to expose this drive as an SSD, rather than a rotational hard disk.", + "optional" : 1, + "type" : "boolean" + }, "trans" : { "description" : "Force disk geometry bios translation mode.", "enum" : [ @@ -14899,11 +22062,18 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "wwn" : { + "description" : "The drive's worldwide name, encoded as 16 bytes hex string, prefixed by '0x'.", + "format_description" : "wwn", + "optional" : 1, + "pattern" : "(?^:^(0x)[0-9a-fA-F]{16})", + "type" : "string" } }, "optional" : 1, "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,queues=] [,replicate=<1|0>] [,rerror=] [,scsiblock=<1|0>] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,ssd=<1|0>] [,trans=] [,werror=] [,wwn=]" }, "scsihw" : { "default" : "lsi", @@ -14920,7 +22090,7 @@ var pveapi = [ "type" : "string" }, "searchdomain" : { - "description" : "cloud-init: Sets DNS search domains for a container. Create will automatically use the setting from the host if neither searchdomain nor nameserver are set.", + "description" : "cloud-init: Sets DNS search domains for a container. Create will'\n\t .' automatically use the setting from the host if neither searchdomain nor nameserver'\n\t .' are set.", "optional" : 1, "type" : "string", "typetext" : "" @@ -14930,11 +22100,11 @@ var pveapi = [ "optional" : 1, "pattern" : "(/dev/.+|socket)", "type" : "string", - "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines - use with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" + "verbose_description" : "Create a serial device inside the VM (n is 0 to 3), and pass through a\nhost serial device (i.e. /dev/ttyS0), or create a unix socket on the\nhost side (use 'qm terminal' to open a terminal connection).\n\nNOTE: If you pass through a host serial device, it is no longer possible to migrate such machines -\nuse with special care.\n\nCAUTION: Experimental! User reported problems with this option.\n" }, "shares" : { "default" : 1000, - "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning", + "description" : "Amount of memory shares for auto-ballooning. The larger the number is, the more memory this VM gets. Number is relative to weights of all other running VMs. Using zero disables auto-ballooning. Auto-ballooning is done by pvestatd.", "maximum" : 50000, "minimum" : 0, "optional" : 1, @@ -14944,10 +22114,10 @@ var pveapi = [ "smbios1" : { "description" : "Specify SMBIOS type 1 fields.", "format" : "pve-qm-smbios1", - "maxLength" : 256, + "maxLength" : 512, "optional" : 1, "type" : "string", - "typetext" : "[family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" + "typetext" : "[base64=<1|0>] [,family=] [,manufacturer=] [,product=] [,serial=] [,sku=] [,uuid=] [,version=]" }, "smp" : { "default" : 1, @@ -14965,6 +22135,31 @@ var pveapi = [ "type" : "integer", "typetext" : " (1 - N)" }, + "spice_enhancements" : { + "description" : "Configure additional enhancements for SPICE.", + "format" : { + "foldersharing" : { + "default" : "0", + "description" : "Enable folder sharing via SPICE. Needs Spice-WebDAV daemon installed in the VM.", + "optional" : 1, + "type" : "boolean" + }, + "videostreaming" : { + "default" : "off", + "description" : "Enable video streaming. Uses compression for detected video streams.", + "enum" : [ + "off", + "all", + "filter" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[foldersharing=<1|0>] [,videostreaming=]" + }, "sshkeys" : { "description" : "cloud-init: Setup public SSH keys (one key per line, OpenSSH format).", "format" : "urlencoded", @@ -14972,9 +22167,16 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "start" : { + "default" : 0, + "description" : "Start VM after it was created successfully.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "startdate" : { "default" : "now", - "description" : "Set the initial date of the real time clock. Valid format for date are: 'now' or '2006-06-17T16:01:21' or '2006-06-17'.", + "description" : "Set the initial date of the real time clock. Valid format for date are:'now' or '2006-06-17T16:01:21' or '2006-06-17'.", "optional" : 1, "pattern" : "(now|\\d{4}-\\d{1,2}-\\d{1,2}(T\\d{1,2}:\\d{1,2}:\\d{1,2})?)", "type" : "string", @@ -15000,7 +22202,14 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "", - "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (-vga=qxl)." + "verbose_description" : "Enable/disable the USB tablet device. This device is usually needed to allow absolute mouse positioning with VNC. Else the mouse runs out of sync with normal VNC clients. If you're running lots of console-only guests on one host, you may consider disabling this to save some context switches. This is turned off by default if you use spice (`qm set --vga qxl`)." + }, + "tags" : { + "description" : "Tags of the VM. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "tdf" : { "default" : 0, @@ -15025,24 +22234,35 @@ var pveapi = [ }, "unused[n]" : { "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "format" : { + "file" : { + "default_key" : 1, + "description" : "The drive's backing volume.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + }, + "volume" : { + "alias" : "file" + } + }, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "[file=]" }, "usb[n]" : { "description" : "Configure an USB device (n is 0 to 4).", "format" : { "host" : { "default_key" : 1, - "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such machines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", + "description" : "The Host USB device or port or the value 'spice'. HOSTUSBDEVICE syntax is:\n\n 'bus-port(.port)*' (decimal numbers) or\n 'vendor_id:product_id' (hexadeciaml numbers) or\n 'spice'\n\nYou can use the 'lsusb -t' command to list existing usb devices.\n\nNOTE: This option allows direct access to host hardware. So it is no longer possible to migrate such\nmachines - use with special care.\n\nThe value 'spice' can be used to add a usb redirection devices for spice.\n", "format" : "pve-qm-usb-device", "format_description" : "HOSTUSBDEVICE|spice", "type" : "string" }, "usb3" : { "default" : 0, - "description" : "Specifies whether if given host option is a USB3 device or port (this does currently not work reliably with spice redirection and is then ignored).", + "description" : "Specifies whether if given host option is a USB3 device or port.", "optional" : 1, "type" : "boolean" } @@ -15060,23 +22280,42 @@ var pveapi = [ "typetext" : " (1 - N)" }, "vga" : { - "description" : "Select the VGA type.", - "enum" : [ - "std", - "cirrus", - "vmware", - "qxl", - "serial0", - "serial1", - "serial2", - "serial3", - "qxl2", - "qxl3", - "qxl4" - ], + "description" : "Configure the VGA hardware.", + "format" : { + "memory" : { + "description" : "Sets the VGA memory (in MiB). Has no effect with serial display.", + "maximum" : 512, + "minimum" : 4, + "optional" : 1, + "type" : "integer" + }, + "type" : { + "default" : "std", + "default_key" : 1, + "description" : "Select the VGA type.", + "enum" : [ + "cirrus", + "qxl", + "qxl2", + "qxl3", + "qxl4", + "none", + "serial0", + "serial1", + "serial2", + "serial3", + "std", + "virtio", + "vmware" + ], + "optional" : 1, + "type" : "string" + } + }, "optional" : 1, "type" : "string", - "verbose_description" : "Select the VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use the options 'std' or 'vmware'. Default is 'std' for win8/win7/w2k8, and 'cirrus' for other OS types. The 'qxl' option enables the SPICE display sever. For win* OS you can select how many independent displays you want, Linux guests can add displays them self. You can also run without any graphic card, using a serial device as terminal." + "typetext" : "[[type=]] [,memory=]", + "verbose_description" : "Configure the VGA Hardware. If you want to use high resolution modes (>= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is 'std' for all OS types besides some Windows versions (XP and older) which use 'cirrus'. The 'qxl' option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays them self.\nYou can also run without any graphic card, using a serial device as terminal." }, "virtio[n]" : { "description" : "Use volume as VIRTIO hard disk (n is 0 to 15).", @@ -15317,126 +22556,1706 @@ var pveapi = [ "optional" : 1, "type" : "boolean" }, - "rerror" : { - "description" : "Read error action.", - "enum" : [ - "ignore", - "report", - "stop" + "rerror" : { + "description" : "Read error action.", + "enum" : [ + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + }, + "secs" : { + "description" : "Force the drive's physical geometry to have a specific sector count.", + "optional" : 1, + "type" : "integer" + }, + "serial" : { + "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", + "format" : "urlencoded", + "format_description" : "serial", + "maxLength" : 60, + "optional" : 1, + "type" : "string" + }, + "shared" : { + "default" : 0, + "description" : "Mark this locally-managed volume as available on all nodes", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Disk size. This is purely informational and has no effect.", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "snapshot" : { + "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", + "optional" : 1, + "type" : "boolean" + }, + "trans" : { + "description" : "Force disk geometry bios translation mode.", + "enum" : [ + "none", + "lba", + "auto" + ], + "optional" : 1, + "type" : "string" + }, + "volume" : { + "alias" : "file" + }, + "werror" : { + "description" : "Write error action.", + "enum" : [ + "enospc", + "ignore", + "report", + "stop" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" + }, + "vmgenid" : { + "default" : "1 (autogenerated)", + "description" : "Set VM Generation ID. Use '1' to autogenerate on create or update, pass '0' to disable explicitly.", + "format_description" : "UUID", + "optional" : 1, + "pattern" : "(?:[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}|[01])", + "type" : "string", + "verbose_description" : "The VM generation ID (vmgenid) device exposes a 128-bit integer value identifier to the guest OS. This allows to notify the guest operating system when the virtual machine is executed with a different configuration (e.g. snapshot execution or creation from a template). The guest operating system notices the change, and is then able to react as appropriate by marking its copies of distributed databases as dirty, re-initializing its random number generator, etc.\nNote that auto-creation only works when done through API/CLI create or update methods, but not when manually editing the config file." + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "vmstatestorage" : { + "description" : "Default storage for VM state volumes/files.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "watchdog" : { + "description" : "Create a virtual hardware watchdog device.", + "format" : "pve-qm-watchdog", + "optional" : 1, + "type" : "string", + "typetext" : "[[model=]] [,action=]", + "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)" + } + } + }, + "permissions" : { + "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/qemu", + "text" : "qemu" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List all custom and default CPU models.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "Only returns custom models when the current user has Sys.Audit on /nodes.", + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "custom" : { + "description" : "True if this is a custom CPU model.", + "type" : "boolean" + }, + "name" : { + "description" : "Name of the CPU model. Identifies it for subsequent API calls. Prefixed with 'custom-' for custom models.", + "type" : "string" + }, + "vendor" : { + "description" : "CPU vendor visible to the guest when this model is selected. Vendor of 'reported-model' in case of custom models.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/cpu", + "text" : "cpu" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get container configuration.", + "method" : "GET", + "name" : "vm_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "current" : { + "default" : 0, + "description" : "Get current values (instead of pending values).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapshot" : { + "description" : "Fetch config values from given snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "properties" : { + "arch" : { + "default" : "amd64", + "description" : "OS architecture type.", + "enum" : [ + "amd64", + "i386", + "arm64", + "armhf" + ], + "optional" : 1, + "type" : "string" + }, + "cmode" : { + "default" : "tty", + "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).", + "enum" : [ + "shell", + "console", + "tty" + ], + "optional" : 1, + "type" : "string" + }, + "console" : { + "default" : 1, + "description" : "Attach a console device (/dev/console) to the container.", + "optional" : 1, + "type" : "boolean" + }, + "cores" : { + "description" : "The number of cores assigned to the container. A container can use all available cores by default.", + "maximum" : 8192, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "cpulimit" : { + "default" : 0, + "description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.", + "maximum" : 8192, + "minimum" : 0, + "optional" : 1, + "type" : "number" + }, + "cpuunits" : { + "default" : 1024, + "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.", + "maximum" : 500000, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "debug" : { + "default" : 0, + "description" : "Try to be more verbose. For now this only enables debug log-level on start.", + "optional" : 1, + "type" : "boolean" + }, + "description" : { + "description" : "Container description. Only used on the configuration web interface.", + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.", + "type" : "string" + }, + "features" : { + "description" : "Allow containers access to advanced features.", + "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, + "fuse" : { + "default" : 0, + "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", + "optional" : 1, + "type" : "boolean" + }, + "keyctl" : { + "default" : 0, + "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.", + "optional" : 1, + "type" : "boolean" + }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, + "mount" : { + "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", + "format_description" : "fstype;fstype;...", + "optional" : 1, + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", + "type" : "string" + }, + "nesting" : { + "default" : 0, + "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.", + "optional" : 1, + "type" : "boolean" + } + }, + "optional" : 1, + "type" : "string" + }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string" + }, + "hostname" : { + "description" : "Set a host name for the container.", + "format" : "dns-name", + "maxLength" : 255, + "optional" : 1, + "type" : "string" + }, + "lock" : { + "description" : "Lock/unlock the VM.", + "enum" : [ + "backup", + "create", + "destroyed", + "disk", + "fstrim", + "migrate", + "mounted", + "rollback", + "snapshot", + "snapshot-delete" + ], + "optional" : 1, + "type" : "string" + }, + "lxc" : { + "description" : "Array of lxc low-level configurations ([[key1, value1], [key2, value2] ...]).", + "items" : { + "items" : { + "type" : "string" + }, + "type" : "array" + }, + "optional" : 1, + "type" : "array" + }, + "memory" : { + "default" : 512, + "description" : "Amount of RAM for the VM in MB.", + "minimum" : 16, + "optional" : 1, + "type" : "integer" + }, + "mp[n]" : { + "description" : "Use volume as container mount point.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "backup" : { + "description" : "Whether to include the mount point in backups.", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "mp" : { + "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", + "format" : "pve-lxc-mp-string", + "format_description" : "Path", + "type" : "string", + "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons." + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "nameserver" : { + "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "address-list", + "optional" : 1, + "type" : "string" + }, + "net[n]" : { + "description" : "Specifies network interfaces for the container.", + "format" : { + "bridge" : { + "description" : "Bridge to attach the network device to.", + "format_description" : "bridge", + "optional" : 1, + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "firewall" : { + "description" : "Controls whether this interface's firewall rules should be used.", + "optional" : 1, + "type" : "boolean" + }, + "gw" : { + "description" : "Default gateway for IPv4 traffic.", + "format" : "ipv4", + "format_description" : "GatewayIPv4", + "optional" : 1, + "type" : "string" + }, + "gw6" : { + "description" : "Default gateway for IPv6 traffic.", + "format" : "ipv6", + "format_description" : "GatewayIPv6", + "optional" : 1, + "type" : "string" + }, + "hwaddr" : { + "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", + "format_description" : "XX:XX:XX:XX:XX:XX", + "optional" : 1, + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." + }, + "ip" : { + "description" : "IPv4 address in CIDR format.", + "format" : "pve-ipv4-config", + "format_description" : "(IPv4/CIDR|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "ip6" : { + "description" : "IPv6 address in CIDR format.", + "format" : "pve-ipv6-config", + "format_description" : "(IPv6/CIDR|auto|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "mtu" : { + "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)", + "minimum" : 64, + "optional" : 1, + "type" : "integer" + }, + "name" : { + "description" : "Name of the network device as seen from inside the container. (lxc.network.name)", + "format_description" : "string", + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "rate" : { + "description" : "Apply rate limiting to the interface", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "tag" : { + "description" : "VLAN tag for this interface.", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "trunks" : { + "description" : "VLAN ids to pass through the interface", + "format_description" : "vlanid[;vlanid...]", + "optional" : 1, + "pattern" : "(?^:\\d+(?:;\\d+)*)", + "type" : "string" + }, + "type" : { + "description" : "Network interface type.", + "enum" : [ + "veth" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "onboot" : { + "default" : 0, + "description" : "Specifies whether a VM will be started during system bootup.", + "optional" : 1, + "type" : "boolean" + }, + "ostype" : { + "description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", + "enum" : [ + "debian", + "ubuntu", + "centos", + "fedora", + "opensuse", + "archlinux", + "alpine", + "gentoo", + "unmanaged" + ], + "optional" : 1, + "type" : "string" + }, + "protection" : { + "default" : 0, + "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.", + "optional" : 1, + "type" : "boolean" + }, + "rootfs" : { + "description" : "Use volume as container root.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + }, + "searchdomain" : { + "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "dns-name-list", + "optional" : 1, + "type" : "string" + }, + "startup" : { + "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", + "format" : "pve-startup-order", + "optional" : 1, + "type" : "string", + "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " + }, + "swap" : { + "default" : 512, + "description" : "Amount of SWAP for the VM in MB.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string" + }, + "template" : { + "default" : 0, + "description" : "Enable/disable Template.", + "optional" : 1, + "type" : "boolean" + }, + "timezone" : { + "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab", + "format" : "pve-ct-timezone", + "optional" : 1, + "type" : "string" + }, + "tty" : { + "default" : 2, + "description" : "Specify the number of tty available to the container", + "maximum" : 6, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "unprivileged" : { + "default" : 0, + "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", + "optional" : 1, + "type" : "boolean" + }, + "unused[n]" : { + "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set container options.", + "method" : "PUT", + "name" : "update_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "arch" : { + "default" : "amd64", + "description" : "OS architecture type.", + "enum" : [ + "amd64", + "i386", + "arm64", + "armhf" + ], + "optional" : 1, + "type" : "string" + }, + "cmode" : { + "default" : "tty", + "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).", + "enum" : [ + "shell", + "console", + "tty" + ], + "optional" : 1, + "type" : "string" + }, + "console" : { + "default" : 1, + "description" : "Attach a console device (/dev/console) to the container.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "cores" : { + "description" : "The number of cores assigned to the container. A container can use all available cores by default.", + "maximum" : 8192, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 8192)" + }, + "cpulimit" : { + "default" : 0, + "description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.", + "maximum" : 8192, + "minimum" : 0, + "optional" : 1, + "type" : "number", + "typetext" : " (0 - 8192)" + }, + "cpuunits" : { + "default" : 1024, + "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.", + "maximum" : 500000, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 500000)" + }, + "debug" : { + "default" : 0, + "description" : "Try to be more verbose. For now this only enables debug log-level on start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "description" : { + "description" : "Container description. Only used on the configuration web interface.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "features" : { + "description" : "Allow containers access to advanced features.", + "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, + "fuse" : { + "default" : 0, + "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", + "optional" : 1, + "type" : "boolean" + }, + "keyctl" : { + "default" : 0, + "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.", + "optional" : 1, + "type" : "boolean" + }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, + "mount" : { + "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", + "format_description" : "fstype;fstype;...", + "optional" : 1, + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", + "type" : "string" + }, + "nesting" : { + "default" : 0, + "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.", + "optional" : 1, + "type" : "boolean" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=] [,nesting=<1|0>]" + }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "hostname" : { + "description" : "Set a host name for the container.", + "format" : "dns-name", + "maxLength" : 255, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "lock" : { + "description" : "Lock/unlock the VM.", + "enum" : [ + "backup", + "create", + "destroyed", + "disk", + "fstrim", + "migrate", + "mounted", + "rollback", + "snapshot", + "snapshot-delete" + ], + "optional" : 1, + "type" : "string" + }, + "memory" : { + "default" : 512, + "description" : "Amount of RAM for the VM in MB.", + "minimum" : 16, + "optional" : 1, + "type" : "integer", + "typetext" : " (16 - N)" + }, + "mp[n]" : { + "description" : "Use volume as container mount point.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "backup" : { + "description" : "Whether to include the mount point in backups.", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "mp" : { + "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", + "format" : "pve-lxc-mp-string", + "format_description" : "Path", + "type" : "string", + "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons." + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + }, + "nameserver" : { + "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "address-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "net[n]" : { + "description" : "Specifies network interfaces for the container.", + "format" : { + "bridge" : { + "description" : "Bridge to attach the network device to.", + "format_description" : "bridge", + "optional" : 1, + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "firewall" : { + "description" : "Controls whether this interface's firewall rules should be used.", + "optional" : 1, + "type" : "boolean" + }, + "gw" : { + "description" : "Default gateway for IPv4 traffic.", + "format" : "ipv4", + "format_description" : "GatewayIPv4", + "optional" : 1, + "type" : "string" + }, + "gw6" : { + "description" : "Default gateway for IPv6 traffic.", + "format" : "ipv6", + "format_description" : "GatewayIPv6", + "optional" : 1, + "type" : "string" + }, + "hwaddr" : { + "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", + "format_description" : "XX:XX:XX:XX:XX:XX", + "optional" : 1, + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." + }, + "ip" : { + "description" : "IPv4 address in CIDR format.", + "format" : "pve-ipv4-config", + "format_description" : "(IPv4/CIDR|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "ip6" : { + "description" : "IPv6 address in CIDR format.", + "format" : "pve-ipv6-config", + "format_description" : "(IPv6/CIDR|auto|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "mtu" : { + "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)", + "minimum" : 64, + "optional" : 1, + "type" : "integer" + }, + "name" : { + "description" : "Name of the network device as seen from inside the container. (lxc.network.name)", + "format_description" : "string", + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "rate" : { + "description" : "Apply rate limiting to the interface", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "tag" : { + "description" : "VLAN tag for this interface.", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "trunks" : { + "description" : "VLAN ids to pass through the interface", + "format_description" : "vlanid[;vlanid...]", + "optional" : 1, + "pattern" : "(?^:\\d+(?:;\\d+)*)", + "type" : "string" + }, + "type" : { + "description" : "Network interface type.", + "enum" : [ + "veth" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "name= [,bridge=] [,firewall=<1|0>] [,gw=] [,gw6=] [,hwaddr=] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=] [,rate=] [,tag=] [,trunks=] [,type=]" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "onboot" : { + "default" : 0, + "description" : "Specifies whether a VM will be started during system bootup.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ostype" : { + "description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", + "enum" : [ + "debian", + "ubuntu", + "centos", + "fedora", + "opensuse", + "archlinux", + "alpine", + "gentoo", + "unmanaged" + ], + "optional" : 1, + "type" : "string" + }, + "protection" : { + "default" : 0, + "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "revert" : { + "description" : "Revert a pending change.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "rootfs" : { + "description" : "Use volume as container root.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[volume=] [,acl=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + }, + "searchdomain" : { + "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "dns-name-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "startup" : { + "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", + "format" : "pve-startup-order", + "optional" : 1, + "type" : "string", + "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " + }, + "swap" : { + "default" : 512, + "description" : "Amount of SWAP for the VM in MB.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "template" : { + "default" : 0, + "description" : "Enable/disable Template.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "timezone" : { + "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab", + "format" : "pve-ct-timezone", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tty" : { + "default" : 2, + "description" : "Specify the number of tty available to the container", + "maximum" : 6, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 6)" + }, + "unprivileged" : { + "default" : 0, + "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "unused[n]" : { + "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[volume=]" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Disk", + "VM.Config.CPU", + "VM.Config.Memory", + "VM.Config.Network", + "VM.Config.Options" + ], + "any", + 1 ], - "optional" : 1, - "type" : "string" - }, - "secs" : { - "description" : "Force the drive's physical geometry to have a specific sector count.", - "optional" : 1, - "type" : "integer" + "description" : "non-volume mount points in rootfs and mp[n] are restricted to root@pam" }, - "serial" : { - "description" : "The drive's reported serial number, url-encoded, up to 20 bytes long.", - "format" : "urlencoded", - "format_description" : "serial", - "maxLength" : 60, - "optional" : 1, - "type" : "string" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/config", + "text" : "config" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get virtual machine status.", + "method" : "GET", + "name" : "vm_status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "cpus" : { + "description" : "Maximum usable CPUs.", + "optional" : 1, + "type" : "number" + }, + "ha" : { + "description" : "HA manager service status.", + "type" : "object" + }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, + "maxdisk" : { + "description" : "Root disk size in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxmem" : { + "description" : "Maximum memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxswap" : { + "description" : "Maximum SWAP memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "name" : { + "description" : "Container name.", + "optional" : 1, + "type" : "string" + }, + "status" : { + "description" : "LXC Container status.", + "enum" : [ + "stopped", + "running" + ], + "type" : "string" + }, + "tags" : { + "description" : "The current configured tags, if any.", + "optional" : 1, + "type" : "string" + }, + "uptime" : { + "description" : "Uptime.", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer" + } + }, + "type" : "object" + } + } }, - "shared" : { - "default" : 0, - "description" : "Mark this locally-managed volume as available on all nodes", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Mark this locally-managed volume as available on all nodes.\n\nWARNING: This option does not share the volume automatically, it assumes it is shared already!" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/current", + "text" : "current" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Start the container.", + "method" : "POST", + "name" : "vm_start", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "debug" : { + "default" : 0, + "description" : "If set, enables very verbose debug log-level on start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "skiplock" : { + "description" : "Ignore locks - only root is allowed to use this option.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } }, - "size" : { - "description" : "Disk size. This is purely informational and has no effect.", - "format" : "disk-size", - "format_description" : "DiskSize", - "optional" : 1, - "type" : "string" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/start", + "text" : "start" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Stop the container. This will abruptly stop all processes running in the container.", + "method" : "POST", + "name" : "vm_stop", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "skiplock" : { + "description" : "Ignore locks - only root is allowed to use this option.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } }, - "snapshot" : { - "description" : "Controls qemu's snapshot mode feature. If activated, changes made to the disk are temporary and will be discarded when the VM is shutdown.", - "optional" : 1, - "type" : "boolean" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/stop", + "text" : "stop" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Shutdown the container. This will trigger a clean shutdown of the container, see lxc-stop(1) for details.", + "method" : "POST", + "name" : "vm_shutdown", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "forceStop" : { + "default" : 0, + "description" : "Make sure the Container stops.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "default" : 60, + "description" : "Wait maximal timeout seconds.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } }, - "trans" : { - "description" : "Force disk geometry bios translation mode.", - "enum" : [ - "none", - "lba", - "auto" - ], - "optional" : 1, - "type" : "string" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/shutdown", + "text" : "shutdown" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Suspend the container.", + "method" : "POST", + "name" : "vm_suspend", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } }, - "volume" : { - "alias" : "file" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/suspend", + "text" : "suspend" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Resume the container.", + "method" : "POST", + "name" : "vm_resume", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } }, - "werror" : { - "description" : "Write error action.", - "enum" : [ - "enospc", - "ignore", - "report", - "stop" - ], - "optional" : 1, - "type" : "string" - } + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/resume", + "text" : "resume" }, - "optional" : 1, - "type" : "string", - "typetext" : "[file=] [,aio=] [,backup=<1|0>] [,bps=] [,bps_max_length=] [,bps_rd=] [,bps_rd_max_length=] [,bps_wr=] [,bps_wr_max_length=] [,cache=] [,cyls=] [,detect_zeroes=<1|0>] [,discard=] [,format=] [,heads=] [,iops=] [,iops_max=] [,iops_max_length=] [,iops_rd=] [,iops_rd_max=] [,iops_rd_max_length=] [,iops_wr=] [,iops_wr_max=] [,iops_wr_max_length=] [,iothread=<1|0>] [,mbps=] [,mbps_max=] [,mbps_rd=] [,mbps_rd_max=] [,mbps_wr=] [,mbps_wr_max=] [,media=] [,replicate=<1|0>] [,rerror=] [,secs=] [,serial=] [,shared=<1|0>] [,size=] [,snapshot=<1|0>] [,trans=] [,werror=]" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "vmstatestorage" : { - "description" : "Default storage for VM state volumes/files.", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "watchdog" : { - "description" : "Create a virtual hardware watchdog device.", - "format" : "pve-qm-watchdog", - "optional" : 1, - "type" : "string", - "typetext" : "[[model=]] [,action=]", - "verbose_description" : "Create a virtual hardware watchdog device. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified)" - } - } - }, - "permissions" : { - "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore (option 'archive'), it is enough if the user has 'VM.Backup' permission and the VM already exists. If you create disks you need 'Datastore.AllocateSpace' on any used storage.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/qemu", - "text" : "qemu" - }, - { - "children" : [ - { - "children" : [ - { + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Reboot the container by shutting it down, and starting it again. Applies pending changes.", + "method" : "POST", + "name" : "vm_reboot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeout" : { + "description" : "Wait maximal timeout seconds for the shutdown.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.PowerMgmt" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/status/reboot", + "text" : "reboot" + } + ], "info" : { "GET" : { - "description" : "Get container configuration.", + "allowtoken" : 1, + "description" : "Directory index", "method" : "GET", - "name" : "vm_config", + "name" : "vmcmdidx", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -15456,480 +24275,1175 @@ var pveapi = [ } }, "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "user" : "all" }, "proxyto" : "node", "returns" : { - "properties" : { - "digest" : { - "description" : "SHA1 digest of configuration file. This can be used to prevent concurrent modifications.", - "type" : "string" - } + "items" : { + "properties" : { + "subdir" : { + "type" : "string" + } + }, + "type" : "object" }, - "type" : "object" + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" + } + ], + "type" : "array" } - }, - "PUT" : { - "description" : "Set container options.", - "method" : "PUT", - "name" : "update_vm", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "arch" : { - "default" : "amd64", - "description" : "OS architecture type.", - "enum" : [ - "amd64", - "i386" - ], - "optional" : 1, - "type" : "string" + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/status", + "text" : "status" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Rollback LXC state to specified snapshot.", + "method" : "POST", + "name" : "rollback", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Snapshot", + "VM.Snapshot.Rollback" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "the task ID.", + "type" : "string" + } + } }, - "cmode" : { - "default" : "tty", - "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).", - "enum" : [ - "shell", - "console", - "tty" - ], - "optional" : 1, - "type" : "string" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/rollback", + "text" : "rollback" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get snapshot configuration", + "method" : "GET", + "name" : "get_snapshot_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Snapshot", + "VM.Snapshot.Rollback", + "VM.Audit" + ], + "any", + 1 + ] + }, + "proxyto" : "node", + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update snapshot metadata.", + "method" : "PUT", + "name" : "update_snapshot_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "description" : { + "description" : "A textual description or comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Snapshot" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } }, - "console" : { - "default" : 1, - "description" : "Attach a console device (/dev/console) to the container.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/config", + "text" : "config" + } + ], + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete a LXC snapshot.", + "method" : "DELETE", + "name" : "delsnapshot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "force" : { + "description" : "For removal from config file, even if removing disk snapshots fails.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "cores" : { - "description" : "The number of cores assigned to the container. A container can use all available cores by default.", - "maximum" : 128, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 128)" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Snapshot" + ] + ] }, - "cpulimit" : { - "default" : 0, - "description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.", - "maximum" : 128, - "minimum" : 0, - "optional" : 1, - "type" : "number", - "typetext" : " (0 - 128)" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "the task ID.", + "type" : "string" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "", + "method" : "GET", + "name" : "snapshot_cmd_idx", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "cpuunits" : { - "default" : 1024, - "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.", - "maximum" : 500000, - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - 500000)" + "permissions" : { + "user" : "all" }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{cmd}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}", + "text" : "{snapname}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List all snapshots.", + "method" : "GET", + "name" : "list", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", "typetext" : "" }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "description" : { + "description" : "Snapshot description.", + "type" : "string" + }, + "name" : { + "description" : "Snapshot identifier. Value 'current' identifies the current VM.", + "type" : "string" + }, + "parent" : { + "description" : "Parent snapshot identifier.", + "optional" : 1, + "type" : "string" + }, + "snaptime" : { + "description" : "Snapshot creation time", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Snapshot a container.", + "method" : "POST", + "name" : "snapshot", + "parameters" : { + "additionalProperties" : 0, + "properties" : { "description" : { - "description" : "Container description. Only used on the configuration web interface.", + "description" : "A textual description or comment.", "optional" : 1, "type" : "string", "typetext" : "" }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", "typetext" : "" }, - "hostname" : { - "description" : "Set a host name for the container.", - "format" : "dns-name", - "maxLength" : 255, - "optional" : 1, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, "type" : "string", "typetext" : "" }, - "lock" : { - "description" : "Lock/unlock the VM.", - "enum" : [ - "migrate", - "backup", - "snapshot", - "rollback" - ], - "optional" : 1, - "type" : "string" - }, - "memory" : { - "default" : 512, - "description" : "Amount of RAM for the VM in MB.", - "minimum" : 16, - "optional" : 1, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, "type" : "integer", - "typetext" : " (16 - N)" - }, - "mp[n]" : { - "description" : "Use volume as container mount point.", - "format" : { - "acl" : { - "description" : "Explicitly enable or disable ACL support.", - "optional" : 1, - "type" : "boolean" + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Snapshot" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "the task ID.", + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/snapshot", + "text" : "snapshot" + }, + { + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete rule.", + "method" : "DELETE", + "name" : "delete_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "backup" : { - "description" : "Whether to include the mount point in backups.", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] }, - "mp" : { - "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", - "format" : "pve-lxc-mp-string", - "format_description" : "Path", + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get single rule data.", + "method" : "GET", + "name" : "get_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : null, + "returns" : { + "properties" : { + "action" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "dest" : { + "optional" : 1, + "type" : "string" + }, + "dport" : { + "optional" : 1, + "type" : "string" + }, + "enable" : { + "optional" : 1, + "type" : "integer" + }, + "icmp-type" : { + "optional" : 1, + "type" : "string" + }, + "iface" : { + "optional" : 1, + "type" : "string" + }, + "ipversion" : { + "optional" : 1, + "type" : "integer" + }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "optional" : 1, + "type" : "string" + }, + "pos" : { + "type" : "integer" + }, + "proto" : { + "optional" : 1, + "type" : "string" + }, + "source" : { + "optional" : 1, + "type" : "string" + }, + "sport" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Modify rule data.", + "method" : "PUT", + "name" : "update_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "comment" : { + "description" : "Descriptive comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "moveto" : { + "description" : "Move rule to new position . Other arguments are ignored.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Rule type.", + "enum" : [ + "in", + "out", + "group" + ], + "optional" : 1, + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}", + "text" : "{pos}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List rules.", + "method" : "GET", + "name" : "get_rules", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", - "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons." + "typetext" : "" }, - "quota" : { - "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", - "optional" : 1, - "type" : "boolean" + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : null, + "returns" : { + "items" : { + "properties" : { + "pos" : { + "type" : "integer" + } }, - "replicate" : { - "default" : 1, - "description" : "Will include this volume to a storage replica job.", - "optional" : 1, - "type" : "boolean" + "type" : "object" + }, + "links" : [ + { + "href" : "{pos}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create new rule.", + "method" : "POST", + "name" : "create_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, + "optional" : 0, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" }, - "ro" : { - "description" : "Read-only mount point", + "comment" : { + "description" : "Descriptive comment.", "optional" : 1, - "type" : "boolean" + "type" : "string", + "typetext" : "" }, - "shared" : { - "default" : 0, - "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", "optional" : 1, - "type" : "boolean", - "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + "type" : "string", + "typetext" : "" }, - "size" : { - "description" : "Volume size (read only value).", - "format" : "disk-size", - "format_description" : "DiskSize", + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "volume" : { - "default_key" : 1, - "description" : "Volume, device or directory to mount into the container.", - "format" : "pve-lxc-mp-string", - "format_description" : "volume", - "type" : "string" - } - }, - "optional" : 1, - "type" : "string", - "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" - }, - "nameserver" : { - "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", - "format" : "address-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "net[n]" : { - "description" : "Specifies network interfaces for the container.", - "format" : { - "bridge" : { - "description" : "Bridge to attach the network device to.", - "format_description" : "bridge", + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", "optional" : 1, - "pattern" : "[-_.\\w\\d]+", - "type" : "string" + "type" : "string", + "typetext" : "" }, - "firewall" : { - "description" : "Controls whether this interface's firewall rules should be used.", + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, "optional" : 1, - "type" : "boolean" + "type" : "integer", + "typetext" : " (0 - N)" }, - "gw" : { - "description" : "Default gateway for IPv4 traffic.", - "format" : "ipv4", - "format_description" : "GatewayIPv4", + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "gw6" : { - "description" : "Default gateway for IPv6 traffic.", - "format" : "ipv6", - "format_description" : "GatewayIPv6", + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "hwaddr" : { - "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", - "format_description" : "XX:XX:XX:XX:XX:XX", + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], "optional" : 1, - "pattern" : "(?^i:(?:[a-f0-9]{2}:){5}[a-f0-9]{2})", "type" : "string" }, - "ip" : { - "description" : "IPv4 address in CIDR format.", - "format" : "pve-ipv4-config", - "format_description" : "(IPv4/CIDR|dhcp|manual)", + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "ip6" : { - "description" : "IPv6 address in CIDR format.", - "format" : "pve-ipv6-config", - "format_description" : "(IPv6/CIDR|auto|dhcp|manual)", - "optional" : 1, - "type" : "string" + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "mtu" : { - "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)", - "minimum" : 64, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, "optional" : 1, - "type" : "integer" - }, - "name" : { - "description" : "Name of the network device as seen from inside the container. (lxc.network.name)", - "format_description" : "string", - "pattern" : "[-_.\\w\\d]+", - "type" : "string" + "type" : "integer", + "typetext" : " (0 - N)" }, - "rate" : { - "description" : "Apply rate limiting to the interface", - "format_description" : "mbps", + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", "optional" : 1, - "type" : "number" + "type" : "string", + "typetext" : "" }, - "tag" : { - "description" : "VLAN tag for this interface.", - "maximum" : 4094, - "minimum" : 1, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", "optional" : 1, - "type" : "integer" + "type" : "string", + "typetext" : "" }, - "trunks" : { - "description" : "VLAN ids to pass through the interface", - "format_description" : "vlanid[;vlanid...]", + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", "optional" : 1, - "pattern" : "(?^:\\d+(?:;\\d+)*)", - "type" : "string" + "type" : "string", + "typetext" : "" }, "type" : { - "description" : "Network interface type.", + "description" : "Rule type.", "enum" : [ - "veth" + "in", + "out", + "group" ], - "optional" : 1, + "optional" : 0, "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } - }, - "optional" : 1, - "type" : "string", - "typetext" : "name= [,bridge=] [,firewall=<1|0>] [,gw=] [,gw6=] [,hwaddr=] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=] [,rate=] [,tag=] [,trunks=] [,type=]" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "onboot" : { - "default" : 0, - "description" : "Specifies whether a VM will be started during system bootup.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "ostype" : { - "description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", - "enum" : [ - "debian", - "ubuntu", - "centos", - "fedora", - "opensuse", - "archlinux", - "alpine", - "gentoo", - "unmanaged" - ], - "optional" : 1, - "type" : "string" + } }, - "protection" : { - "default" : 0, - "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] }, - "rootfs" : { - "description" : "Use volume as container root.", - "format" : { - "acl" : { - "description" : "Explicitly enable or disable ACL support.", - "optional" : 1, - "type" : "boolean" + "protected" : 1, + "proxyto" : null, + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules", + "text" : "rules" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove IP or Network alias.", + "method" : "DELETE", + "name" : "remove_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "quota" : { - "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", - "optional" : 1, - "type" : "boolean" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] }, - "replicate" : { - "default" : 1, - "description" : "Will include this volume to a storage replica job.", - "optional" : 1, - "type" : "boolean" + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read alias.", + "method" : "GET", + "name" : "read_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "ro" : { - "description" : "Read-only mount point", - "optional" : 1, - "type" : "boolean" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] }, - "shared" : { - "default" : 0, - "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update IP or Network alias.", + "method" : "PUT", + "name" : "update_alias", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDR", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "rename" : { + "description" : "Rename an existing alias.", + "maxLength" : 64, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "size" : { - "description" : "Volume size (read only value).", - "format" : "disk-size", - "format_description" : "DiskSize", - "optional" : 1, - "type" : "string" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] }, - "volume" : { - "default_key" : 1, - "description" : "Volume, device or directory to mount into the container.", - "format" : "pve-lxc-mp-string", - "format_description" : "volume", - "type" : "string" + "protected" : 1, + "returns" : { + "type" : "null" } - }, - "optional" : 1, - "type" : "string", - "typetext" : "[volume=] [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" - }, - "searchdomain" : { - "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", - "format" : "dns-name-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "startup" : { - "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", - "format" : "pve-startup-order", - "optional" : 1, - "type" : "string", - "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " - }, - "swap" : { - "default" : 512, - "description" : "Amount of SWAP for the VM in MB.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "template" : { - "default" : 0, - "description" : "Enable/disable Template.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "tty" : { - "default" : 2, - "description" : "Specify the number of tty available to the container", - "maximum" : 6, - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - 6)" - }, - "unprivileged" : { - "default" : 0, - "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "unused[n]" : { - "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}", + "text" : "{name}" } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Disk", - "VM.Config.CPU", - "VM.Config.Memory", - "VM.Config.Network", - "VM.Config.Options" - ], - "any", - 1 - ], - "description" : "non-volume mount points in rootfs and mp[n] are restricted to root@pam" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/config", - "text" : "config" - }, - { - "children" : [ - { + ], "info" : { "GET" : { - "description" : "Get virtual machine status.", + "allowtoken" : 1, + "description" : "List aliases", "method" : "GET", - "name" : "vm_status", + "name" : "get_aliases", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -15957,38 +25471,69 @@ var pveapi = [ ] ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { - "type" : "object" + "items" : { + "properties" : { + "cidr" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/current", - "text" : "current" - }, - { - "info" : { + }, "POST" : { - "description" : "Start the container.", + "allowtoken" : 1, + "description" : "Create IP or Network Alias.", "method" : "POST", - "name" : "vm_start", + "name" : "create_alias", "parameters" : { "additionalProperties" : 0, "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDR", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "Alias name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "skiplock" : { - "description" : "Ignore locks - only root is allowed to use this option.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -16003,101 +25548,403 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.PowerMgmt" + "VM.Config.Network" ] ] }, "protected" : 1, - "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/start", - "text" : "start" + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases", + "text" : "aliases" }, { - "info" : { - "POST" : { - "description" : "Stop the container. This will abruptly stop all processes running in the container.", - "method" : "POST", - "name" : "vm_stop", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "children" : [ + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove IP or Network from IPSet.", + "method" : "DELETE", + "name" : "remove_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read IP or Network settings from IPSet.", + "method" : "GET", + "name" : "read_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update IP or Network settings", + "method" : "PUT", + "name" : "update_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "nomatch" : { + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + } }, - "skiplock" : { - "description" : "Ignore locks - only root is allowed to use this option.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}", + "text" : "{cidr}" + } + ], + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete IPSet", + "method" : "DELETE", + "name" : "delete_ipset", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "List IPSet content", + "method" : "GET", + "name" : "get_ipset", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "cidr" : { + "type" : "string" + }, + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "nomatch" : { + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{cidr}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Add IP or Network to IPSet.", + "method" : "POST", + "name" : "create_ip", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cidr" : { + "description" : "Network/IP specification in CIDR format.", + "format" : "IPorCIDRorAlias", + "type" : "string", + "typetext" : "" + }, + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "nomatch" : { + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" } } }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.PowerMgmt" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}", + "text" : "{name}" } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/stop", - "text" : "stop" - }, - { + ], "info" : { - "POST" : { - "description" : "Shutdown the container. This will trigger a clean shutdown of the container, see lxc-stop(1) for details.", - "method" : "POST", - "name" : "vm_shutdown", + "GET" : { + "allowtoken" : 1, + "description" : "List IPSets", + "method" : "GET", + "name" : "ipset_index", "parameters" : { "additionalProperties" : 0, "properties" : { - "forceStop" : { - "default" : 0, - "description" : "Make sure the Container stops.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "timeout" : { - "default" : 60, - "description" : "Wait maximal timeout seconds.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -16112,36 +25959,83 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.PowerMgmt" + "VM.Audit" ] ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 0, + "type" : "string" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/shutdown", - "text" : "shutdown" - }, - { - "info" : { + }, "POST" : { - "description" : "Suspend the container.", + "allowtoken" : 1, + "description" : "Create new IPSet", "method" : "POST", - "name" : "vm_suspend", + "name" : "create_ipset", "parameters" : { "additionalProperties" : 0, "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "IP set name.", + "maxLength" : 64, + "minLength" : 2, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, + "rename" : { + "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.", + "maxLength" : 64, + "minLength" : 2, + "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -16156,27 +26050,27 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.PowerMgmt" + "VM.Config.Network" ] ] }, "protected" : 1, - "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/suspend", - "text" : "suspend" + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset", + "text" : "ipset" }, { "info" : { - "POST" : { - "description" : "Resume the container.", - "method" : "POST", - "name" : "vm_resume", + "GET" : { + "allowtoken" : 1, + "description" : "Get VM firewall options.", + "method" : "GET", + "name" : "get_options", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -16200,248 +26094,267 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.PowerMgmt" + "VM.Audit" ] ] }, - "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/status/resume", - "text" : "resume" - } - ], - "info" : { - "GET" : { - "description" : "Directory index", - "method" : "GET", - "name" : "vmcmdidx", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "user" : "all" - }, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : { - "subdir" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{subdir}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/status", - "text" : "status" - }, - { - "children" : [ - { - "children" : [ - { - "info" : { - "POST" : { - "description" : "Rollback LXC state to specified snapshot.", - "method" : "POST", - "name" : "rollback", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "properties" : { + "dhcp" : { + "default" : 0, + "description" : "Enable DHCP.", + "optional" : 1, + "type" : "boolean" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Snapshot", - "VM.Snapshot.Rollback" - ], - "any", - 1 - ] + "enable" : { + "default" : 0, + "description" : "Enable/disable firewall rules.", + "optional" : 1, + "type" : "boolean" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "description" : "the task ID.", + "ipfilter" : { + "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "optional" : 1, + "type" : "boolean" + }, + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/rollback", - "text" : "rollback" - }, - { - "info" : { - "GET" : { - "description" : "Get snapshot configuration", - "method" : "GET", - "name" : "get_snapshot_config", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Snapshot", - "VM.Snapshot.Rollback" - ], - "any", - 1 - ] + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" }, - "proxyto" : "node", - "returns" : { - "type" : "object" + "macfilter" : { + "default" : 0, + "description" : "Enable/disable MAC address filter.", + "optional" : 1, + "type" : "boolean" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean" + }, + "policy_in" : { + "description" : "Input policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "policy_out" : { + "description" : "Output policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "radv" : { + "description" : "Allow sending Router Advertisement.", + "optional" : 1, + "type" : "boolean" } }, - "PUT" : { - "description" : "Update snapshot metadata.", - "method" : "PUT", - "name" : "update_snapshot_config", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "description" : { - "description" : "A textual description or comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set Firewall options.", + "method" : "PUT", + "name" : "set_options", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dhcp" : { + "default" : 0, + "description" : "Enable DHCP.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "default" : 0, + "description" : "Enable/disable firewall rules.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ipfilter" : { + "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macfilter" : { + "default" : 0, + "description" : "Enable/disable MAC address filter.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "policy_in" : { + "description" : "Input policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" + }, + "policy_out" : { + "description" : "Output policy.", + "enum" : [ + "ACCEPT", + "REJECT", + "DROP" + ], + "optional" : 1, + "type" : "string" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Snapshot" - ] - ] + "radv" : { + "description" : "Allow sending Router Advertisement.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}/config", - "text" : "config" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Network" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } } - ], + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/options", + "text" : "options" + }, + { "info" : { - "DELETE" : { - "description" : "Delete a LXC snapshot.", - "method" : "DELETE", - "name" : "delsnapshot", + "GET" : { + "allowtoken" : 1, + "description" : "Read firewall log", + "method" : "GET", + "name" : "log", "parameters" : { "additionalProperties" : 0, "properties" : { - "force" : { - "description" : "For removal from config file, even if removing disk snapshots fails.", + "limit" : { + "minimum" : 0, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "integer", + "typetext" : " (0 - N)" }, "node" : { "description" : "The cluster node name.", @@ -16449,12 +26362,11 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "type" : "string", - "typetext" : "" + "start" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" }, "vmid" : { "description" : "The (unique) ID of the VM.", @@ -16470,21 +26382,41 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.Snapshot" + "VM.Console" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "description" : "the task ID.", - "type" : "string" + "items" : { + "properties" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } - }, + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/log", + "text" : "log" + }, + { + "info" : { "GET" : { - "description" : "", + "allowtoken" : 1, + "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", "method" : "GET", - "name" : "snapshot_cmd_idx", + "name" : "refs", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -16494,12 +26426,14 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "type" : "string", - "typetext" : "" + "type" : { + "description" : "Only list references of specified type.", + "enum" : [ + "alias", + "ipset" + ], + "optional" : 1, + "type" : "string" }, "vmid" : { "description" : "The (unique) ID of the VM.", @@ -16511,42 +26445,200 @@ var pveapi = [ } }, "permissions" : { - "user" : "all" + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] }, "returns" : { "items" : { - "properties" : {}, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "type" : { + "enum" : [ + "alias", + "ipset" + ], + "type" : "string" + } + }, "type" : "object" }, - "links" : [ - { - "href" : "{cmd}", - "rel" : "child" - } - ], "type" : "array" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/snapshot/{snapname}", - "text" : "{snapname}" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/firewall/refs", + "text" : "refs" } ], "info" : { "GET" : { - "description" : "List all snapshots.", + "allowtoken" : 1, + "description" : "Directory index.", "method" : "GET", - "name" : "list", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}/firewall", + "text" : "firewall" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read VM RRD statistics (returns PNG)", + "method" : "GET", + "name" : "rrd", "parameters" : { "additionalProperties" : 0, "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, + "ds" : { + "description" : "The list of datasources you want to display.", + "format" : "pve-configid-list", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", + "enum" : [ + "hour", + "day", + "week", + "month", + "year" + ], + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "returns" : { + "properties" : { + "filename" : { + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/rrd", + "text" : "rrd" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read VM RRD statistics", + "method" : "GET", + "name" : "rrddata", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", + "enum" : [ + "hour", + "day", + "week", + "month", + "year" + ], + "type" : "string" + }, "vmid" : { "description" : "The (unique) ID of the VM.", "format" : "pve-vmid", @@ -16566,44 +26658,242 @@ var pveapi = [ ] }, "protected" : 1, - "proxyto" : "node", "returns" : { "items" : { "properties" : {}, "type" : "object" }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/rrddata", + "text" : "rrddata" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Creates a TCP VNC proxy connections.", + "method" : "POST", + "name" : "vncproxy", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "height" : { + "description" : "sets the height of the console in pixels.", + "maximum" : 2160, + "minimum" : 16, + "optional" : 1, + "type" : "integer", + "typetext" : " (16 - 2160)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "websocket" : { + "description" : "use websocket instead of standard VNC.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "width" : { + "description" : "sets the width of the console in pixels.", + "maximum" : 4096, + "minimum" : 16, + "optional" : 1, + "type" : "integer", + "typetext" : " (16 - 4096)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Console" + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "cert" : { + "type" : "string" + }, + "port" : { + "type" : "integer" + }, + "ticket" : { + "type" : "string" + }, + "upid" : { + "type" : "string" + }, + "user" : { + "type" : "string" + } + } + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/vncproxy", + "text" : "vncproxy" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Creates a TCP proxy connection.", + "method" : "POST", + "name" : "termproxy", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Console" + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "port" : { + "type" : "integer" + }, + "ticket" : { + "type" : "string" + }, + "upid" : { + "type" : "string" + }, + "user" : { + "type" : "string" + } + } + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/termproxy", + "text" : "termproxy" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Opens a weksocket for VNC traffic.", + "method" : "GET", + "name" : "vncwebsocket", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "port" : { + "description" : "Port number returned by previous vncproxy call.", + "maximum" : 5999, + "minimum" : 5900, + "type" : "integer", + "typetext" : " (5900 - 5999)" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "vncticket" : { + "description" : "Ticket from previous call to vncproxy.", + "maxLength" : 512, + "type" : "string", + "typetext" : "" } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Console" + ] ], - "type" : "array" + "description" : "You also need to pass a valid ticket (vncticket)." + }, + "returns" : { + "properties" : { + "port" : { + "type" : "string" + } + }, + "type" : "object" } - }, + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/vncwebsocket", + "text" : "vncwebsocket" + }, + { + "info" : { "POST" : { - "description" : "Snapshot a container.", + "allowtoken" : 1, + "description" : "Returns a SPICE configuration to connect to the CT.", "method" : "POST", - "name" : "snapshot", + "name" : "spiceproxy", "parameters" : { "additionalProperties" : 0, "properties" : { - "description" : { - "description" : "A textual description or comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, + "proxy" : { + "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", + "format" : "address", + "optional" : 1, "type" : "string", "typetext" : "" }, @@ -16621,1508 +26911,1944 @@ var pveapi = [ "perm", "/vms/{vmid}", [ - "VM.Snapshot" + "VM.Console" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "description" : "the task ID.", - "type" : "string" + "additionalProperties" : 1, + "description" : "Returned values can be directly passed to the 'remote-viewer' application.", + "properties" : { + "host" : { + "type" : "string" + }, + "password" : { + "type" : "string" + }, + "proxy" : { + "type" : "string" + }, + "tls-port" : { + "type" : "integer" + }, + "type" : { + "type" : "string" + } + } } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/snapshot", - "text" : "snapshot" + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/spiceproxy", + "text" : "spiceproxy" }, { - "children" : [ - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Delete rule.", - "method" : "DELETE", - "name" : "delete_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Get single rule data.", - "method" : "GET", - "name" : "get_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : null, - "returns" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, - "type" : "object" - } - }, - "PUT" : { - "description" : "Modify rule data.", - "method" : "PUT", - "name" : "update_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "moveto" : { - "description" : "Move rule to new position . Other arguments are ignored.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 1, - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" - } - } + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Migrate the container to another node. Creates a new migration task.", + "method" : "POST", + "name" : "migrate_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bwlimit" : { + "default" : "migrate limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules/{pos}", - "text" : "{pos}" - } - ], - "info" : { - "GET" : { - "description" : "List rules.", - "method" : "GET", - "name" : "get_rules", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "force" : { + "description" : "Force migration despite local bind / device mounts. NOTE: deprecated, use 'shared' property of mount point instead.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "proxyto" : null, - "returns" : { - "items" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{pos}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create new rule.", - "method" : "POST", - "name" : "create_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 0, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 0, - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "online" : { + "description" : "Use online/live migration.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] + "restart" : { + "description" : "Use restart migration", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "target" : { + "description" : "Target node.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "proxyto" : null, - "returns" : { - "type" : "null" + "timeout" : { + "default" : 180, + "description" : "Timeout in seconds for shutdown for restart migration", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/rules", - "text" : "rules" - }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Remove IP or Network alias.", - "method" : "DELETE", - "name" : "remove_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Read alias.", - "method" : "GET", - "name" : "read_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "type" : "object" - } - }, - "PUT" : { - "description" : "Update IP or Network alias.", - "method" : "PUT", - "name" : "update_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDR", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "rename" : { - "description" : "Rename an existing alias.", - "maxLength" : 64, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Migrate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "the task ID.", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/migrate", + "text" : "migrate" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Check if feature for virtual machine is available.", + "method" : "GET", + "name" : "vm_feature", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "feature" : { + "description" : "Feature to check.", + "enum" : [ + "snapshot", + "clone", + "copy" + ], + "type" : "string" }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases/{name}", - "text" : "{name}" - } - ], - "info" : { - "GET" : { - "description" : "List aliases", - "method" : "GET", - "name" : "get_aliases", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "returns" : { - "items" : { - "properties" : { - "cidr" : { - "type" : "string" - }, - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "name" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "hasFeature" : { + "type" : "boolean" } }, - "POST" : { - "description" : "Create IP or Network Alias.", - "method" : "POST", - "name" : "create_alias", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDR", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "Alias name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/feature", + "text" : "feature" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Create a Template.", + "method" : "POST", + "name" : "template", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "permissions" : { - "check" : [ + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Allocate" + ] + ], + "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/template", + "text" : "template" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Create a container clone/copy", + "method" : "POST", + "name" : "clone_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" + }, + "description" : { + "description" : "Description for the new CT.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "full" : { + "description" : "Create a full copy of all disks. This is always done when you clone a normal CT. For CT templates, we try to create a linked clone by default.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "hostname" : { + "description" : "Set a hostname for the new CT.", + "format" : "dns-name", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "newid" : { + "description" : "VMID for the clone.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pool" : { + "description" : "Add the new CT to the specified pool.", + "format" : "pve-poolid", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "snapname" : { + "description" : "The name of the snapshot.", + "format" : "pve-configid", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "storage" : { + "description" : "Target storage for full clone.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "target" : { + "description" : "Target node. Only allowed if the original VM is on shared storage.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "and", + [ + "perm", + "/vms/{vmid}", + [ + "VM.Clone" + ] + ], + [ + "or", + [ "perm", - "/vms/{vmid}", + "/vms/{newid}", [ - "VM.Config.Network" + "VM.Allocate" ] + ], + [ + "perm", + "/pool/{pool}", + [ + "VM.Allocate" + ], + "require_param", + "pool" ] + ] + ], + "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage." + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/clone", + "text" : "clone" + }, + { + "info" : { + "PUT" : { + "allowtoken" : 1, + "description" : "Resize a container mount point.", + "method" : "PUT", + "name" : "resize_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "returns" : { - "type" : "null" + "disk" : { + "description" : "The disk you want to resize.", + "enum" : [ + "rootfs", + "mp0", + "mp1", + "mp2", + "mp3", + "mp4", + "mp5", + "mp6", + "mp7", + "mp8", + "mp9", + "mp10", + "mp11", + "mp12", + "mp13", + "mp14", + "mp15", + "mp16", + "mp17", + "mp18", + "mp19", + "mp20", + "mp21", + "mp22", + "mp23", + "mp24", + "mp25", + "mp26", + "mp27", + "mp28", + "mp29", + "mp30", + "mp31", + "mp32", + "mp33", + "mp34", + "mp35", + "mp36", + "mp37", + "mp38", + "mp39", + "mp40", + "mp41", + "mp42", + "mp43", + "mp44", + "mp45", + "mp46", + "mp47", + "mp48", + "mp49", + "mp50", + "mp51", + "mp52", + "mp53", + "mp54", + "mp55", + "mp56", + "mp57", + "mp58", + "mp59", + "mp60", + "mp61", + "mp62", + "mp63", + "mp64", + "mp65", + "mp66", + "mp67", + "mp68", + "mp69", + "mp70", + "mp71", + "mp72", + "mp73", + "mp74", + "mp75", + "mp76", + "mp77", + "mp78", + "mp79", + "mp80", + "mp81", + "mp82", + "mp83", + "mp84", + "mp85", + "mp86", + "mp87", + "mp88", + "mp89", + "mp90", + "mp91", + "mp92", + "mp93", + "mp94", + "mp95", + "mp96", + "mp97", + "mp98", + "mp99", + "mp100", + "mp101", + "mp102", + "mp103", + "mp104", + "mp105", + "mp106", + "mp107", + "mp108", + "mp109", + "mp110", + "mp111", + "mp112", + "mp113", + "mp114", + "mp115", + "mp116", + "mp117", + "mp118", + "mp119", + "mp120", + "mp121", + "mp122", + "mp123", + "mp124", + "mp125", + "mp126", + "mp127", + "mp128", + "mp129", + "mp130", + "mp131", + "mp132", + "mp133", + "mp134", + "mp135", + "mp136", + "mp137", + "mp138", + "mp139", + "mp140", + "mp141", + "mp142", + "mp143", + "mp144", + "mp145", + "mp146", + "mp147", + "mp148", + "mp149", + "mp150", + "mp151", + "mp152", + "mp153", + "mp154", + "mp155", + "mp156", + "mp157", + "mp158", + "mp159", + "mp160", + "mp161", + "mp162", + "mp163", + "mp164", + "mp165", + "mp166", + "mp167", + "mp168", + "mp169", + "mp170", + "mp171", + "mp172", + "mp173", + "mp174", + "mp175", + "mp176", + "mp177", + "mp178", + "mp179", + "mp180", + "mp181", + "mp182", + "mp183", + "mp184", + "mp185", + "mp186", + "mp187", + "mp188", + "mp189", + "mp190", + "mp191", + "mp192", + "mp193", + "mp194", + "mp195", + "mp196", + "mp197", + "mp198", + "mp199", + "mp200", + "mp201", + "mp202", + "mp203", + "mp204", + "mp205", + "mp206", + "mp207", + "mp208", + "mp209", + "mp210", + "mp211", + "mp212", + "mp213", + "mp214", + "mp215", + "mp216", + "mp217", + "mp218", + "mp219", + "mp220", + "mp221", + "mp222", + "mp223", + "mp224", + "mp225", + "mp226", + "mp227", + "mp228", + "mp229", + "mp230", + "mp231", + "mp232", + "mp233", + "mp234", + "mp235", + "mp236", + "mp237", + "mp238", + "mp239", + "mp240", + "mp241", + "mp242", + "mp243", + "mp244", + "mp245", + "mp246", + "mp247", + "mp248", + "mp249", + "mp250", + "mp251", + "mp252", + "mp253", + "mp254", + "mp255" + ], + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "size" : { + "description" : "The new size. With the '+' sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.", + "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?", + "type" : "string" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/aliases", - "text" : "aliases" - }, - { - "children" : [ - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Remove IP or Network from IPSet.", - "method" : "DELETE", - "name" : "remove_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Read IP or Network settings from IPSet.", - "method" : "GET", - "name" : "read_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "object" - } - }, - "PUT" : { - "description" : "Update IP or Network settings", - "method" : "PUT", - "name" : "update_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "nomatch" : { - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}/{cidr}", - "text" : "{cidr}" - } + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Disk" ], - "info" : { - "DELETE" : { - "description" : "Delete IPSet", - "method" : "DELETE", - "name" : "delete_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "List IPSet content", - "method" : "GET", - "name" : "get_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "returns" : { - "items" : { - "properties" : { - "cidr" : { - "type" : "string" - }, - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "nomatch" : { - "optional" : 1, - "type" : "boolean" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{cidr}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Add IP or Network to IPSet.", - "method" : "POST", - "name" : "create_ip", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cidr" : { - "description" : "Network/IP specification in CIDR format.", - "format" : "IPorCIDRorAlias", - "type" : "string", - "typetext" : "" - }, - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "nomatch" : { - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] - ] - }, - "protected" : 1, - "returns" : { - "type" : "null" - } - } + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "description" : "the task ID.", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/resize", + "text" : "resize" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Move a rootfs-/mp-volume to a different storage", + "method" : "POST", + "name" : "move_volume", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "bwlimit" : { + "default" : "clone limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset/{name}", - "text" : "{name}" - } - ], - "info" : { - "GET" : { - "description" : "List IPSets", - "method" : "GET", - "name" : "ipset_index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "delete" : { + "default" : 0, + "description" : "Delete the original volume after successful copy. By default the original is kept as an unused volume entry.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "returns" : { - "items" : { - "properties" : { - "comment" : { - "optional" : 1, - "type" : "string" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 0, - "type" : "string" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } + "storage" : { + "description" : "Target Storage.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, + "volume" : { + "description" : "Volume which will be moved.", + "enum" : [ + "rootfs", + "mp0", + "mp1", + "mp2", + "mp3", + "mp4", + "mp5", + "mp6", + "mp7", + "mp8", + "mp9", + "mp10", + "mp11", + "mp12", + "mp13", + "mp14", + "mp15", + "mp16", + "mp17", + "mp18", + "mp19", + "mp20", + "mp21", + "mp22", + "mp23", + "mp24", + "mp25", + "mp26", + "mp27", + "mp28", + "mp29", + "mp30", + "mp31", + "mp32", + "mp33", + "mp34", + "mp35", + "mp36", + "mp37", + "mp38", + "mp39", + "mp40", + "mp41", + "mp42", + "mp43", + "mp44", + "mp45", + "mp46", + "mp47", + "mp48", + "mp49", + "mp50", + "mp51", + "mp52", + "mp53", + "mp54", + "mp55", + "mp56", + "mp57", + "mp58", + "mp59", + "mp60", + "mp61", + "mp62", + "mp63", + "mp64", + "mp65", + "mp66", + "mp67", + "mp68", + "mp69", + "mp70", + "mp71", + "mp72", + "mp73", + "mp74", + "mp75", + "mp76", + "mp77", + "mp78", + "mp79", + "mp80", + "mp81", + "mp82", + "mp83", + "mp84", + "mp85", + "mp86", + "mp87", + "mp88", + "mp89", + "mp90", + "mp91", + "mp92", + "mp93", + "mp94", + "mp95", + "mp96", + "mp97", + "mp98", + "mp99", + "mp100", + "mp101", + "mp102", + "mp103", + "mp104", + "mp105", + "mp106", + "mp107", + "mp108", + "mp109", + "mp110", + "mp111", + "mp112", + "mp113", + "mp114", + "mp115", + "mp116", + "mp117", + "mp118", + "mp119", + "mp120", + "mp121", + "mp122", + "mp123", + "mp124", + "mp125", + "mp126", + "mp127", + "mp128", + "mp129", + "mp130", + "mp131", + "mp132", + "mp133", + "mp134", + "mp135", + "mp136", + "mp137", + "mp138", + "mp139", + "mp140", + "mp141", + "mp142", + "mp143", + "mp144", + "mp145", + "mp146", + "mp147", + "mp148", + "mp149", + "mp150", + "mp151", + "mp152", + "mp153", + "mp154", + "mp155", + "mp156", + "mp157", + "mp158", + "mp159", + "mp160", + "mp161", + "mp162", + "mp163", + "mp164", + "mp165", + "mp166", + "mp167", + "mp168", + "mp169", + "mp170", + "mp171", + "mp172", + "mp173", + "mp174", + "mp175", + "mp176", + "mp177", + "mp178", + "mp179", + "mp180", + "mp181", + "mp182", + "mp183", + "mp184", + "mp185", + "mp186", + "mp187", + "mp188", + "mp189", + "mp190", + "mp191", + "mp192", + "mp193", + "mp194", + "mp195", + "mp196", + "mp197", + "mp198", + "mp199", + "mp200", + "mp201", + "mp202", + "mp203", + "mp204", + "mp205", + "mp206", + "mp207", + "mp208", + "mp209", + "mp210", + "mp211", + "mp212", + "mp213", + "mp214", + "mp215", + "mp216", + "mp217", + "mp218", + "mp219", + "mp220", + "mp221", + "mp222", + "mp223", + "mp224", + "mp225", + "mp226", + "mp227", + "mp228", + "mp229", + "mp230", + "mp231", + "mp232", + "mp233", + "mp234", + "mp235", + "mp236", + "mp237", + "mp238", + "mp239", + "mp240", + "mp241", + "mp242", + "mp243", + "mp244", + "mp245", + "mp246", + "mp247", + "mp248", + "mp249", + "mp250", + "mp251", + "mp252", + "mp253", + "mp254", + "mp255" ], - "type" : "array" + "type" : "string" } - }, - "POST" : { - "description" : "Create new IPSet", - "method" : "POST", - "name" : "create_ipset", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "comment" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "name" : { - "description" : "IP set name.", - "maxLength" : 64, - "minLength" : 2, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "rename" : { - "description" : "Rename an existing IPSet. You can set 'rename' to the same value as 'name' to update the 'comment' of an existing IPSet.", - "maxLength" : 64, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Network" - ] + } + }, + "permissions" : { + "check" : [ + "and", + [ + "perm", + "/vms/{vmid}", + [ + "VM.Config.Disk" + ] + ], + [ + "perm", + "/storage/{storage}", + [ + "Datastore.AllocateSpace" ] + ] + ], + "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage." + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/move_volume", + "text" : "move_volume" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get container configuration, including pending changes.", + "method" : "GET", + "name" : "vm_pending", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "returns" : { - "type" : "null" + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/ipset", - "text" : "ipset" + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "delete" : { + "description" : "Indicates a pending delete request if present and not 0.", + "maximum" : 2, + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "key" : { + "description" : "Configuration option name.", + "type" : "string" + }, + "pending" : { + "description" : "Pending value.", + "optional" : 1, + "type" : "string" + }, + "value" : { + "description" : "Current value.", + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/lxc/{vmid}/pending", + "text" : "pending" + } + ], + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy the container (also delete all uses files).", + "method" : "DELETE", + "name" : "destroy_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "force" : { + "default" : 0, + "description" : "Force destroy, even if running.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "purge" : { + "default" : 0, + "description" : "Remove container from all related configurations. For example, backup jobs, replication jobs or HA. Related ACLs and Firewall entries will *always* be removed.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/vms/{vmid}", + [ + "VM.Allocate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Directory index", + "method" : "GET", + "name" : "vmdiridx", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "subdir" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc/{vmid}", + "text" : "{vmid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "LXC container index (per node).", + "method" : "GET", + "name" : "vmlist", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "Only list CTs where you have VM.Audit permissons on /vms/.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "cpus" : { + "description" : "Maximum usable CPUs.", + "optional" : 1, + "type" : "number" + }, + "lock" : { + "description" : "The current config lock, if any.", + "optional" : 1, + "type" : "string" + }, + "maxdisk" : { + "description" : "Root disk size in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxmem" : { + "description" : "Maximum memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "maxswap" : { + "description" : "Maximum SWAP memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "name" : { + "description" : "Container name.", + "optional" : 1, + "type" : "string" + }, + "status" : { + "description" : "LXC Container status.", + "enum" : [ + "stopped", + "running" + ], + "type" : "string" + }, + "tags" : { + "description" : "The current configured tags, if any.", + "optional" : 1, + "type" : "string" + }, + "uptime" : { + "description" : "Uptime.", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{vmid}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create or restore a container.", + "method" : "POST", + "name" : "create_vm", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "arch" : { + "default" : "amd64", + "description" : "OS architecture type.", + "enum" : [ + "amd64", + "i386", + "arm64", + "armhf" + ], + "optional" : 1, + "type" : "string" + }, + "bwlimit" : { + "default" : "restore limit from datacenter or storage config", + "description" : "Override I/O bandwidth limit (in KiB/s).", + "minimum" : "0", + "optional" : 1, + "type" : "number", + "typetext" : " (0 - N)" + }, + "cmode" : { + "default" : "tty", + "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).", + "enum" : [ + "shell", + "console", + "tty" + ], + "optional" : 1, + "type" : "string" + }, + "console" : { + "default" : 1, + "description" : "Attach a console device (/dev/console) to the container.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "cores" : { + "description" : "The number of cores assigned to the container. A container can use all available cores by default.", + "maximum" : 8192, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 8192)" + }, + "cpulimit" : { + "default" : 0, + "description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.", + "maximum" : 8192, + "minimum" : 0, + "optional" : 1, + "type" : "number", + "typetext" : " (0 - 8192)" + }, + "cpuunits" : { + "default" : 1024, + "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.", + "maximum" : 500000, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 500000)" + }, + "debug" : { + "default" : 0, + "description" : "Try to be more verbose. For now this only enables debug log-level on start.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "description" : { + "description" : "Container description. Only used on the configuration web interface.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "features" : { + "description" : "Allow containers access to advanced features.", + "format" : { + "force_rw_sys" : { + "default" : 0, + "description" : "Mount /sys in unprivileged containers as `rw` instead of `mixed`. This can break networking under newer (>= v245) systemd-network use.", + "optional" : 1, + "type" : "boolean" + }, + "fuse" : { + "default" : 0, + "description" : "Allow using 'fuse' file systems in a container. Note that interactions between fuse and the freezer cgroup can potentially cause I/O deadlocks.", + "optional" : 1, + "type" : "boolean" + }, + "keyctl" : { + "default" : 0, + "description" : "For unprivileged containers only: Allow the use of the keyctl() system call. This is required to use docker inside a container. By default unprivileged containers will see this system call as non-existent. This is mostly a workaround for systemd-networkd, as it will treat it as a fatal error when some keyctl() operations are denied by the kernel due to lacking permissions. Essentially, you can choose between running systemd-networkd or docker.", + "optional" : 1, + "type" : "boolean" + }, + "mknod" : { + "default" : 0, + "description" : "Allow unprivileged containers to use mknod() to add certain device nodes. This requires a kernel with seccomp trap to user space support (5.3 or newer). This is experimental.", + "optional" : 1, + "type" : "boolean" + }, + "mount" : { + "description" : "Allow mounting file systems of specific types. This should be a list of file system types as used with the mount command. Note that this can have negative effects on the container's security. With access to a loop device, mounting a file can circumvent the mknod permission of the devices cgroup, mounting an NFS file system can block the host's I/O completely and prevent it from rebooting, etc.", + "format_description" : "fstype;fstype;...", + "optional" : 1, + "pattern" : "(?^:[a-zA-Z0-9_; ]+)", + "type" : "string" + }, + "nesting" : { + "default" : 0, + "description" : "Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.", + "optional" : 1, + "type" : "boolean" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[force_rw_sys=<1|0>] [,fuse=<1|0>] [,keyctl=<1|0>] [,mknod=<1|0>] [,mount=] [,nesting=<1|0>]" + }, + "force" : { + "description" : "Allow to overwrite existing container.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "hookscript" : { + "description" : "Script that will be exectued during various steps in the containers lifetime.", + "format" : "pve-volume-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "hostname" : { + "description" : "Set a host name for the container.", + "format" : "dns-name", + "maxLength" : 255, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ignore-unpack-errors" : { + "description" : "Ignore errors when extracting the template.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "lock" : { + "description" : "Lock/unlock the VM.", + "enum" : [ + "backup", + "create", + "destroyed", + "disk", + "fstrim", + "migrate", + "mounted", + "rollback", + "snapshot", + "snapshot-delete" + ], + "optional" : 1, + "type" : "string" + }, + "memory" : { + "default" : 512, + "description" : "Amount of RAM for the VM in MB.", + "minimum" : 16, + "optional" : 1, + "type" : "integer", + "typetext" : " (16 - N)" + }, + "mp[n]" : { + "description" : "Use volume as container mount point.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "backup" : { + "description" : "Whether to include the mount point in backups.", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "mp" : { + "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", + "format" : "pve-lxc-mp-string", + "format_description" : "Path", + "type" : "string", + "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons." + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } }, - { - "info" : { - "GET" : { - "description" : "Get VM firewall options.", - "method" : "GET", - "name" : "get_options", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] - }, - "proxyto" : "node", - "returns" : { - "properties" : { - "dhcp" : { - "description" : "Enable DHCP.", - "optional" : 1, - "type" : "boolean" - }, - "enable" : { - "description" : "Enable/disable firewall rules.", - "optional" : 1, - "type" : "boolean" - }, - "ipfilter" : { - "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", - "optional" : 1, - "type" : "boolean" - }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "macfilter" : { - "description" : "Enable/disable MAC address filter.", - "optional" : 1, - "type" : "boolean" - }, - "ndp" : { - "description" : "Enable NDP.", - "optional" : 1, - "type" : "boolean" - }, - "policy_in" : { - "description" : "Input policy.", - "enum" : [ - "ACCEPT", - "REJECT", - "DROP" - ], - "optional" : 1, - "type" : "string" - }, - "policy_out" : { - "description" : "Output policy.", - "enum" : [ - "ACCEPT", - "REJECT", - "DROP" - ], - "optional" : 1, - "type" : "string" - }, - "radv" : { - "description" : "Allow sending Router Advertisement.", - "optional" : 1, - "type" : "boolean" - } - }, - "type" : "object" - } - }, - "PUT" : { - "description" : "Set Firewall options.", - "method" : "PUT", - "name" : "set_options", + "optional" : 1, + "type" : "string", + "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + }, + "nameserver" : { + "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "address-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "net[n]" : { + "description" : "Specifies network interfaces for the container.", + "format" : { + "bridge" : { + "description" : "Bridge to attach the network device to.", + "format_description" : "bridge", + "optional" : 1, + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "firewall" : { + "description" : "Controls whether this interface's firewall rules should be used.", + "optional" : 1, + "type" : "boolean" + }, + "gw" : { + "description" : "Default gateway for IPv4 traffic.", + "format" : "ipv4", + "format_description" : "GatewayIPv4", + "optional" : 1, + "type" : "string" + }, + "gw6" : { + "description" : "Default gateway for IPv6 traffic.", + "format" : "ipv6", + "format_description" : "GatewayIPv6", + "optional" : 1, + "type" : "string" + }, + "hwaddr" : { + "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", + "format" : "mac-addr", + "format_description" : "XX:XX:XX:XX:XX:XX", + "optional" : 1, + "type" : "string", + "verbose_description" : "A common MAC address with the I/G (Individual/Group) bit not set." + }, + "ip" : { + "description" : "IPv4 address in CIDR format.", + "format" : "pve-ipv4-config", + "format_description" : "(IPv4/CIDR|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "ip6" : { + "description" : "IPv6 address in CIDR format.", + "format" : "pve-ipv6-config", + "format_description" : "(IPv6/CIDR|auto|dhcp|manual)", + "optional" : 1, + "type" : "string" + }, + "mtu" : { + "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)", + "minimum" : 64, + "optional" : 1, + "type" : "integer" + }, + "name" : { + "description" : "Name of the network device as seen from inside the container. (lxc.network.name)", + "format_description" : "string", + "pattern" : "[-_.\\w\\d]+", + "type" : "string" + }, + "rate" : { + "description" : "Apply rate limiting to the interface", + "format_description" : "mbps", + "optional" : 1, + "type" : "number" + }, + "tag" : { + "description" : "VLAN tag for this interface.", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer" + }, + "trunks" : { + "description" : "VLAN ids to pass through the interface", + "format_description" : "vlanid[;vlanid...]", + "optional" : 1, + "pattern" : "(?^:\\d+(?:;\\d+)*)", + "type" : "string" + }, + "type" : { + "description" : "Network interface type.", + "enum" : [ + "veth" + ], + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "name= [,bridge=] [,firewall=<1|0>] [,gw=] [,gw6=] [,hwaddr=] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=] [,rate=] [,tag=] [,trunks=] [,type=]" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "onboot" : { + "default" : 0, + "description" : "Specifies whether a VM will be started during system bootup.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ostemplate" : { + "description" : "The OS template or backup file.", + "maxLength" : 255, + "type" : "string", + "typetext" : "" + }, + "ostype" : { + "description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", + "enum" : [ + "debian", + "ubuntu", + "centos", + "fedora", + "opensuse", + "archlinux", + "alpine", + "gentoo", + "unmanaged" + ], + "optional" : 1, + "type" : "string" + }, + "password" : { + "description" : "Sets root password inside container.", + "minLength" : 5, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "pool" : { + "description" : "Add the VM to the specified pool.", + "format" : "pve-poolid", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "protection" : { + "default" : 0, + "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "restore" : { + "description" : "Mark this as restore task.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "rootfs" : { + "description" : "Use volume as container root.", + "format" : { + "acl" : { + "description" : "Explicitly enable or disable ACL support.", + "optional" : 1, + "type" : "boolean" + }, + "mountoptions" : { + "description" : "Extra mount options for rootfs/mps.", + "format_description" : "opt[;opt...]", + "optional" : 1, + "pattern" : "(?^:(?^:(noatime|nodev|nosuid|noexec))(;(?^:(noatime|nodev|nosuid|noexec)))*)", + "type" : "string" + }, + "quota" : { + "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", + "optional" : 1, + "type" : "boolean" + }, + "replicate" : { + "default" : 1, + "description" : "Will include this volume to a storage replica job.", + "optional" : 1, + "type" : "boolean" + }, + "ro" : { + "description" : "Read-only mount point", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "default" : 0, + "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", + "optional" : 1, + "type" : "boolean", + "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" + }, + "size" : { + "description" : "Volume size (read only value).", + "format" : "disk-size", + "format_description" : "DiskSize", + "optional" : 1, + "type" : "string" + }, + "volume" : { + "default_key" : 1, + "description" : "Volume, device or directory to mount into the container.", + "format" : "pve-lxc-mp-string", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[volume=] [,acl=<1|0>] [,mountoptions=] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + }, + "searchdomain" : { + "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", + "format" : "dns-name-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ssh-public-keys" : { + "description" : "Setup public SSH keys (one key per line, OpenSSH format).", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "start" : { + "default" : 0, + "description" : "Start the CT after its creation finished successfully.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "startup" : { + "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", + "format" : "pve-startup-order", + "optional" : 1, + "type" : "string", + "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " + }, + "storage" : { + "default" : "local", + "description" : "Default Storage.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "swap" : { + "default" : 512, + "description" : "Amount of SWAP for the VM in MB.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "tags" : { + "description" : "Tags of the Container. This is only meta information.", + "format" : "pve-tag-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "template" : { + "default" : 0, + "description" : "Enable/disable Template.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "timezone" : { + "description" : "Time zone to use in the container. If option isn't set, then nothing will be done. Can be set to 'host' to match the host time zone, or an arbitrary time zone option from /usr/share/zoneinfo/zone.tab", + "format" : "pve-ct-timezone", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "tty" : { + "default" : 2, + "description" : "Specify the number of tty available to the container", + "maximum" : 6, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 6)" + }, + "unique" : { + "description" : "Assign a unique random ethernet address.", + "optional" : 1, + "requires" : "restore", + "type" : "boolean", + "typetext" : "" + }, + "unprivileged" : { + "default" : 0, + "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "unused[n]" : { + "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", + "format" : { + "volume" : { + "default_key" : 1, + "description" : "The volume that is not used currently.", + "format" : "pve-volume-id", + "format_description" : "volume", + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[volume=]" + }, + "vmid" : { + "description" : "The (unique) ID of the VM.", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore, it is enough if the user has 'VM.Backup' permission and the VM already exists. You also need 'Datastore.AllocateSpace' permissions on the storage.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/lxc", + "text" : "lxc" + }, + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "ceph osd in", + "method" : "POST", + "name" : "in", "parameters" : { "additionalProperties" : 0, "properties" : { - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dhcp" : { - "description" : "Enable DHCP.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Enable/disable firewall rules.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "ipfilter" : { - "description" : "Enable default IP filters. This is equivalent to adding an empty ipfilter-net ipset for every interface. Such ipsets implicitly contain sane default restrictions such as restricting IPv6 link local addresses to the one derived from the interface's MAC address. For containers the configured IP addresses will be implicitly added.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "macfilter" : { - "description" : "Enable/disable MAC address filter.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "ndp" : { - "description" : "Enable NDP.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "policy_in" : { - "description" : "Input policy.", - "enum" : [ - "ACCEPT", - "REJECT", - "DROP" - ], - "optional" : 1, - "type" : "string" - }, - "policy_out" : { - "description" : "Output policy.", - "enum" : [ - "ACCEPT", - "REJECT", - "DROP" - ], - "optional" : 1, - "type" : "string" - }, - "radv" : { - "description" : "Allow sending Router Advertisement.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "osdid" : { + "description" : "OSD ID", "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Config.Network" + "Sys.Modify" ] ] }, @@ -18134,697 +28860,751 @@ var pveapi = [ } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/options", - "text" : "options" + "path" : "/nodes/{node}/ceph/osd/{osdid}/in", + "text" : "in" }, { "info" : { - "GET" : { - "description" : "Read firewall log", - "method" : "GET", - "name" : "log", + "POST" : { + "allowtoken" : 1, + "description" : "ceph osd out", + "method" : "POST", + "name" : "out", "parameters" : { "additionalProperties" : 0, "properties" : { - "limit" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "start" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "osdid" : { + "description" : "OSD ID", "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Console" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "n" : { - "description" : "Line number", - "type" : "integer" - }, - "t" : { - "description" : "Line text", - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" + "type" : "null" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/log", - "text" : "log" + "path" : "/nodes/{node}/ceph/osd/{osdid}/out", + "text" : "out" }, { "info" : { - "GET" : { - "description" : "Lists possible IPSet/Alias reference which are allowed in source/dest properties.", - "method" : "GET", - "name" : "refs", + "POST" : { + "allowtoken" : 1, + "description" : "Instruct the OSD to scrub.", + "method" : "POST", + "name" : "scrub", "parameters" : { "additionalProperties" : 0, "properties" : { + "deep" : { + "default" : 0, + "description" : "If set, instructs a deep scrub instead of a normal one.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "type" : { - "description" : "Only list references of specified type.", - "enum" : [ - "alias", - "ipset" - ], - "optional" : 1, - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "osdid" : { + "description" : "OSD ID", "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Audit" + "Sys.Modify" ] ] }, + "protected" : 1, + "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "comment" : { - "optional" : 1, - "type" : "string" - }, - "name" : { - "type" : "string" - }, - "type" : { - "enum" : [ - "alias", - "ipset" - ], - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" + "type" : "null" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/firewall/refs", - "text" : "refs" + "path" : "/nodes/{node}/ceph/osd/{osdid}/scrub", + "text" : "scrub" } ], "info" : { - "GET" : { - "description" : "Directory index.", - "method" : "GET", - "name" : "index", + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy OSD", + "method" : "DELETE", + "name" : "destroyosd", "parameters" : { "additionalProperties" : 0, "properties" : { + "cleanup" : { + "default" : 0, + "description" : "If set, we remove partition table entries.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "osdid" : { + "description" : "OSD ID", "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : "" } } }, - "permissions" : { - "user" : "all" - }, + "protected" : 1, + "proxyto" : "node", "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" + "type" : "string" } } }, "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}/firewall", - "text" : "firewall" + "path" : "/nodes/{node}/ceph/osd/{osdid}", + "text" : "{osdid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get Ceph osd list/tree.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "object" + } }, - { - "info" : { - "GET" : { - "description" : "Read VM RRD statistics (returns PNG)", - "method" : "GET", - "name" : "rrd", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], - "optional" : 1, - "type" : "string" - }, - "ds" : { - "description" : "The list of datasources you want to display.", - "format" : "pve-configid-list", - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", - "enum" : [ - "hour", - "day", - "week", - "month", - "year" - ], - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - } - } + "POST" : { + "allowtoken" : 1, + "description" : "Create OSD", + "method" : "POST", + "name" : "createosd", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "crush-device-class" : { + "description" : "Set the device class of the OSD in crush.", + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "permissions" : { - "check" : [ - "perm", - "/vms/{vmid}", - [ - "VM.Audit" - ] - ] + "db_dev" : { + "description" : "Block device name for block.db.", + "optional" : 1, + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "returns" : { - "properties" : { - "filename" : { - "type" : "string" - } - }, - "type" : "object" + "db_size" : { + "default" : "bluestore_block_db_size or 10% of OSD size", + "description" : "Size in GiB for block.db.", + "minimum" : 1, + "optional" : 1, + "requires" : "db_dev", + "type" : "number", + "typetext" : " (1 - N)", + "verbose_description" : "If a block.db is requested but the size is not given, will be automatically selected by: bluestore_block_db_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 10% of the size of the OSD device. Fails if the available size is not enough." + }, + "dev" : { + "description" : "Block device name.", + "type" : "string", + "typetext" : "" + }, + "encrypted" : { + "default" : 0, + "description" : "Enables encryption of the OSD.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "wal_dev" : { + "description" : "Block device name for block.wal.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "wal_size" : { + "default" : "bluestore_block_wal_size or 1% of OSD size", + "description" : "Size in GiB for block.wal.", + "minimum" : 0.5, + "optional" : 1, + "requires" : "wal_dev", + "type" : "number", + "typetext" : " (0.5 - N)", + "verbose_description" : "If a block.wal is requested but the size is not given, will be automatically selected by: bluestore_block_wal_size from the ceph database (osd or global section) or config (osd or global section)in that order. If this is not available, it will be sized 1% of the size of the OSD device. Fails if the available size is not enough." } } }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/rrd", - "text" : "rrd" - }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/osd", + "text" : "osd" + }, + { + "children" : [ { "info" : { - "GET" : { - "description" : "Read VM RRD statistics", - "method" : "GET", - "name" : "rrddata", + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy Ceph Metadata Server", + "method" : "DELETE", + "name" : "destroymds", "parameters" : { "additionalProperties" : 0, "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], - "optional" : 1, + "name" : { + "description" : "The name (ID) of the mds", + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", "type" : "string" }, "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", - "enum" : [ - "hour", - "day", - "week", - "month", - "year" - ], - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Audit" + "Sys.Modify" ] ] }, "protected" : 1, + "proxyto" : "node", "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" + "type" : "string" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/rrddata", - "text" : "rrddata" - }, - { - "info" : { + }, "POST" : { - "description" : "Creates a TCP VNC proxy connections.", + "allowtoken" : 1, + "description" : "Create Ceph Metadata Server (MDS)", "method" : "POST", - "name" : "vncproxy", + "name" : "createmds", "parameters" : { "additionalProperties" : 0, "properties" : { - "height" : { - "description" : "sets the height of the console in pixels.", - "maximum" : 2160, - "minimum" : 16, + "hotstandby" : { + "default" : "0", + "description" : "Determines whether a ceph-mds daemon should poll and replay the log of an active MDS. Faster switch on MDS failure, but needs more idle resources.", "optional" : 1, - "type" : "integer", - "typetext" : " (16 - 2160)" + "type" : "boolean", + "typetext" : "" + }, + "name" : { + "default" : "nodename", + "description" : "The ID for the mds, when omitted the same as the nodename", + "maxLength" : 200, + "optional" : 1, + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "websocket" : { - "description" : "use websocket instead of standard VNC.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "width" : { - "description" : "sets the width of the console in pixels.", - "maximum" : 4096, - "minimum" : 16, - "optional" : 1, - "type" : "integer", - "typetext" : " (16 - 4096)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Console" + "Sys.Modify" ] ] }, "protected" : 1, + "proxyto" : "node", "returns" : { - "additionalProperties" : 0, - "properties" : { - "cert" : { - "type" : "string" - }, - "port" : { - "type" : "integer" - }, - "ticket" : { - "type" : "string" - }, - "upid" : { - "type" : "string" - }, - "user" : { - "type" : "string" - } - } + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/vncproxy", - "text" : "vncproxy" - }, + "path" : "/nodes/{node}/ceph/mds/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "MDS directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "addr" : { + "optional" : 1, + "type" : "string" + }, + "host" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "description" : "The name (ID) for the MDS" + }, + "rank" : { + "optional" : 1, + "type" : "integer" + }, + "standby_replay" : { + "description" : "If true, the standby MDS is polling the active MDS for faster recovery (hot standby).", + "optional" : 1, + "type" : "boolean" + }, + "state" : { + "description" : "State of the MDS", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/mds", + "text" : "mds" + }, + { + "children" : [ { "info" : { - "POST" : { - "description" : "Creates a TCP proxy connection.", - "method" : "POST", - "name" : "termproxy", + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy Ceph Manager.", + "method" : "DELETE", + "name" : "destroymgr", "parameters" : { "additionalProperties" : 0, "properties" : { + "id" : { + "description" : "The ID of the manager", + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Console" + "Sys.Modify" ] ] }, "protected" : 1, + "proxyto" : "node", "returns" : { - "additionalProperties" : 0, - "properties" : { - "port" : { - "type" : "integer" - }, - "ticket" : { - "type" : "string" - }, - "upid" : { - "type" : "string" - }, - "user" : { - "type" : "string" - } - } + "type" : "string" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/termproxy", - "text" : "termproxy" - }, - { - "info" : { - "GET" : { - "description" : "Opens a weksocket for VNC traffic.", - "method" : "GET", - "name" : "vncwebsocket", + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create Ceph Manager", + "method" : "POST", + "name" : "createmgr", "parameters" : { "additionalProperties" : 0, "properties" : { + "id" : { + "description" : "The ID for the manager, when omitted the same as the nodename", + "maxLength" : 200, + "optional" : 1, + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "port" : { - "description" : "Port number returned by previous vncproxy call.", - "maximum" : 5999, - "minimum" : 5900, - "type" : "integer", - "typetext" : " (5900 - 5999)" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "vncticket" : { - "description" : "Ticket from previous call to vncproxy.", - "maxLength" : 512, - "type" : "string", - "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Console" + "Sys.Modify" ] - ], - "description" : "You also need to pass a valid ticket (vncticket)." + ] }, + "protected" : 1, + "proxyto" : "node", "returns" : { - "properties" : { - "port" : { - "type" : "string" - } - }, - "type" : "object" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/vncwebsocket", - "text" : "vncwebsocket" - }, + "path" : "/nodes/{node}/ceph/mgr/{id}", + "text" : "{id}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "MGR directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "addr" : { + "optional" : 1, + "type" : "string" + }, + "host" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "description" : "The name (ID) for the MGR" + }, + "state" : { + "description" : "State of the MGR", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/mgr", + "text" : "mgr" + }, + { + "children" : [ { "info" : { - "POST" : { - "description" : "Returns a SPICE configuration to connect to the CT.", - "method" : "POST", - "name" : "spiceproxy", + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy Ceph Monitor and Manager.", + "method" : "DELETE", + "name" : "destroymon", "parameters" : { "additionalProperties" : 0, "properties" : { + "monid" : { + "description" : "Monitor ID", + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "proxy" : { - "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As resonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", - "format" : "address", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Console" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "additionalProperties" : 1, - "description" : "Returned values can be directly passed to the 'remote-viewer' application.", - "properties" : { - "host" : { - "type" : "string" - }, - "password" : { - "type" : "string" - }, - "proxy" : { - "type" : "string" - }, - "tls-port" : { - "type" : "integer" - }, - "type" : { - "type" : "string" - } - } + "type" : "string" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/spiceproxy", - "text" : "spiceproxy" - }, - { - "info" : { + }, "POST" : { - "description" : "Migrate the container to another node. Creates a new migration task.", + "allowtoken" : 1, + "description" : "Create Ceph Monitor and Manager", "method" : "POST", - "name" : "migrate_vm", + "name" : "createmon", "parameters" : { "additionalProperties" : 0, "properties" : { - "force" : { - "description" : "Force migration despite local bind / device mounts. NOTE: deprecated, use 'shared' property of mount point instead.", + "mon-address" : { + "description" : "Overwrites autodetected monitor IP address. Must be in the public network of ceph.", + "format" : "ip", "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", "type" : "string", "typetext" : "" }, - "online" : { - "description" : "Use online/live migration.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "restart" : { - "description" : "Use restart migration", + "monid" : { + "description" : "The ID for the monitor, when omitted the same as the nodename", + "maxLength" : 200, "optional" : 1, - "type" : "boolean", - "typetext" : "" + "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", + "type" : "string" }, - "target" : { - "description" : "Target node.", + "node" : { + "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "timeout" : { - "default" : 180, - "description" : "Timeout in seconds for shutdown for restart migration", - "optional" : 1, - "type" : "integer", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Migrate" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "description" : "the task ID.", "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/migrate", - "text" : "migrate" - }, + "path" : "/nodes/{node}/ceph/mon/{monid}", + "text" : "{monid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get Ceph monitor list.", + "method" : "GET", + "name" : "listmon", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "addr" : { + "optional" : 1, + "type" : "string" + }, + "host" : { + "optional" : 1, + "type" : "string" + }, + "name" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/mon", + "text" : "mon" + }, + { + "children" : [ { - "info" : { - "GET" : { - "description" : "Check if feature for virtual machine is available.", - "method" : "GET", - "name" : "vm_feature", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "feature" : { - "description" : "Feature to check.", - "enum" : [ - "snapshot", - "clone", - "copy" - ], - "type" : "string" + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Create a Ceph filesystem", + "method" : "POST", + "name" : "createfs", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "add-storage" : { + "default" : 0, + "description" : "Configure the created CephFS as storage for this cluster.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "name" : { + "default" : "cephfs", + "description" : "The ceph filesystem name.", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "node" : { "description" : "The cluster node name.", @@ -18832,203 +29612,686 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, + "pg_num" : { + "default" : 128, + "description" : "Number of placement groups for the backing data pool. The metadata pool will use a quarter of this.", + "maximum" : 32768, + "minimum" : 8, "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (8 - 32768)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Audit" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "properties" : { - "hasFeature" : { - "type" : "boolean" - } - }, - "type" : "object" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/feature", - "text" : "feature" - }, + "path" : "/nodes/{node}/ceph/fs/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Directory index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "data_pool" : { + "description" : "The name of the data pool.", + "type" : "string" + }, + "metadata_pool" : { + "description" : "The name of the metadata pool.", + "type" : "string" + }, + "name" : { + "description" : "The ceph filesystem name.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/fs", + "text" : "fs" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List local disks.", + "method" : "GET", + "name" : "disks", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Only list specific types of disks.", + "enum" : [ + "unused", + "journal_disks" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "dev" : { + "type" : "string" + }, + "gpt" : { + "type" : "boolean" + }, + "model" : { + "optional" : 1, + "type" : "string" + }, + "osdid" : { + "type" : "integer" + }, + "serial" : { + "optional" : 1, + "type" : "string" + }, + "size" : { + "type" : "integer" + }, + "used" : { + "optional" : 1, + "type" : "string" + }, + "vendor" : { + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/disks", + "text" : "disks" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get Ceph configuration.", + "method" : "GET", + "name" : "config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/config", + "text" : "config" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get Ceph configuration database.", + "method" : "GET", + "name" : "configdb", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "can_update_at_runtime" : { + "type" : "boolean" + }, + "level" : { + "type" : "string" + }, + "mask" : { + "type" : "string" + }, + "name" : { + "type" : "string" + }, + "section" : { + "type" : "string" + }, + "value" : { + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/configdb", + "text" : "configdb" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Create initial ceph default configuration and setup symlinks.", + "method" : "POST", + "name" : "init", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "cluster-network" : { + "description" : "Declare a separate cluster network, OSDs will routeheartbeat, object replication and recovery traffic over it", + "format" : "CIDR", + "maxLength" : 128, + "optional" : 1, + "requires" : "network", + "type" : "string", + "typetext" : "" + }, + "disable_cephx" : { + "default" : 0, + "description" : "Disable cephx authentication.\n\nWARNING: cephx is a security feature protecting against man-in-the-middle attacks. Only consider disabling cephx if your network is private!", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "min_size" : { + "default" : 2, + "description" : "Minimum number of available replicas per object to allow I/O", + "maximum" : 7, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 7)" + }, + "network" : { + "description" : "Use specific network for all ceph related traffic", + "format" : "CIDR", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pg_bits" : { + "default" : 6, + "description" : "Placement group bits, used to specify the default number of placement groups.\n\nNOTE: 'osd pool default pg num' does not work for default pools.", + "maximum" : 14, + "minimum" : 6, + "optional" : 1, + "type" : "integer", + "typetext" : " (6 - 14)" + }, + "size" : { + "default" : 3, + "description" : "Targeted number of replicas per object", + "maximum" : 7, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 7)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/init", + "text" : "init" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Stop ceph services.", + "method" : "POST", + "name" : "stop", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "service" : { + "default" : "ceph.target", + "description" : "Ceph service name.", + "optional" : 1, + "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/stop", + "text" : "stop" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Start ceph services.", + "method" : "POST", + "name" : "start", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "service" : { + "default" : "ceph.target", + "description" : "Ceph service name.", + "optional" : 1, + "pattern" : "(ceph|mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/start", + "text" : "start" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Restart ceph services.", + "method" : "POST", + "name" : "restart", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "service" : { + "default" : "ceph.target", + "description" : "Ceph service name.", + "optional" : 1, + "pattern" : "(mon|mds|osd|mgr)(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)?", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/restart", + "text" : "restart" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get ceph status.", + "method" : "GET", + "name" : "status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/status", + "text" : "status" + }, + { + "children" : [ { "info" : { - "POST" : { - "description" : "Create a Template.", - "method" : "POST", - "name" : "template", + "DELETE" : { + "allowtoken" : 1, + "description" : "Destroy pool", + "method" : "DELETE", + "name" : "destroypool", "parameters" : { "additionalProperties" : 0, "properties" : { + "force" : { + "default" : 0, + "description" : "If true, destroys pool even if in use", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "name" : { + "description" : "The name of the pool. It must be unique.", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "remove_storages" : { + "default" : 0, + "description" : "Remove all pveceph-managed storages configured for this pool", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Allocate" + "Sys.Modify" ] - ], - "description" : "You need 'VM.Allocate' permissions on /vms/{vmid}" + ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "type" : "string" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/template", - "text" : "template" - }, - { - "info" : { - "POST" : { - "description" : "Create a container clone/copy", - "method" : "POST", - "name" : "clone_vm", + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Change POOL settings", + "method" : "PUT", + "name" : "setpool", "parameters" : { "additionalProperties" : 0, "properties" : { - "description" : { - "description" : "Description for the new CT.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "full" : { - "description" : "Create a full copy of all disks. This is always done when you clone a normal CT. For CT templates, we try to create a linked clone by default.", + "application" : { + "description" : "The application of the pool.", + "enum" : [ + "rbd", + "cephfs", + "rgw" + ], "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string" }, - "hostname" : { - "description" : "Set a hostname for the new CT.", - "format" : "dns-name", + "crush_rule" : { + "description" : "The rule to use for mapping object placement in the cluster.", "optional" : 1, "type" : "string", "typetext" : "" }, - "newid" : { - "description" : "VMID for the clone.", - "format" : "pve-vmid", + "min_size" : { + "description" : "Minimum number of replicas per object", + "maximum" : 7, "minimum" : 1, + "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (1 - 7)" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pool" : { - "description" : "Add the new CT to the specified pool.", - "format" : "pve-poolid", - "optional" : 1, + "name" : { + "description" : "The name of the pool. It must be unique.", "type" : "string", "typetext" : "" }, - "snapname" : { - "description" : "The name of the snapshot.", - "format" : "pve-configid", - "maxLength" : 40, - "optional" : 1, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", "typetext" : "" }, - "storage" : { - "description" : "Target storage for full clone.", - "format" : "pve-storage-id", + "pg_autoscale_mode" : { + "description" : "The automatic PG scaling mode of the pool.", + "enum" : [ + "on", + "off", + "warn" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" }, - "target" : { - "description" : "Target node. Only allowed if the original VM is on shared storage.", - "format" : "pve-node", + "pg_num" : { + "description" : "Number of placement groups.", + "maximum" : 32768, + "minimum" : 8, "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "integer", + "typetext" : " (8 - 32768)" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", + "size" : { + "description" : "Number of replicas per object", + "maximum" : 7, "minimum" : 1, + "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (1 - 7)" } } }, "permissions" : { "check" : [ - "and", - [ - "perm", - "/vms/{vmid}", - [ - "VM.Clone" - ] - ], + "perm", + "/", [ - "or", - [ - "perm", - "/vms/{newid}", - [ - "VM.Allocate" - ] - ], - [ - "perm", - "/pool/{pool}", - [ - "VM.Allocate" - ], - "require_param", - "pool" - ] + "Sys.Modify" ] - ], - "description" : "You need 'VM.Clone' permissions on /vms/{vmid}, and 'VM.Allocate' permissions on /vms/{newid} (or on the VM pool /pool/{pool}). You also need 'Datastore.AllocateSpace' on any used storage." + ] }, "protected" : 1, "proxyto" : "node", @@ -19038,39 +30301,225 @@ var pveapi = [ } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/clone", - "text" : "clone" + "path" : "/nodes/{node}/ceph/pools/{name}", + "text" : "{name}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List all pools.", + "method" : "GET", + "name" : "lspools", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "bytes_used" : { + "title" : "Used", + "type" : "integer" + }, + "crush_rule" : { + "title" : "Crush Rule", + "type" : "integer" + }, + "crush_rule_name" : { + "title" : "Crush Rule Name", + "type" : "string" + }, + "min_size" : { + "title" : "Min Size", + "type" : "integer" + }, + "percent_used" : { + "title" : "%-Used", + "type" : "number" + }, + "pg_autoscale_mode" : { + "optional" : 1, + "title" : "PG Autoscale Mode", + "type" : "string" + }, + "pg_num" : { + "title" : "PG Num", + "type" : "integer" + }, + "pool" : { + "title" : "ID", + "type" : "integer" + }, + "pool_name" : { + "title" : "Name", + "type" : "string" + }, + "size" : { + "title" : "Size", + "type" : "integer" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{pool_name}", + "rel" : "child" + } + ], + "type" : "array" + } }, + "POST" : { + "allowtoken" : 1, + "description" : "Create POOL", + "method" : "POST", + "name" : "createpool", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "add_storages" : { + "description" : "Configure VM and CT storage using the new pool.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "application" : { + "default" : "rbd", + "description" : "The application of the pool.", + "enum" : [ + "rbd", + "cephfs", + "rgw" + ], + "optional" : 1, + "type" : "string" + }, + "crush_rule" : { + "description" : "The rule to use for mapping object placement in the cluster.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "min_size" : { + "default" : 2, + "description" : "Minimum number of replicas per object", + "maximum" : 7, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 7)" + }, + "name" : { + "description" : "The name of the pool. It must be unique.", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pg_autoscale_mode" : { + "default" : "warn", + "description" : "The automatic PG scaling mode of the pool.", + "enum" : [ + "on", + "off", + "warn" + ], + "optional" : 1, + "type" : "string" + }, + "pg_num" : { + "default" : 128, + "description" : "Number of placement groups.", + "maximum" : 32768, + "minimum" : 8, + "optional" : 1, + "type" : "integer", + "typetext" : " (8 - 32768)" + }, + "size" : { + "default" : 3, + "description" : "Number of replicas per object", + "maximum" : 7, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 7)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/pools", + "text" : "pools" + }, + { + "children" : [ { "info" : { - "PUT" : { - "description" : "Resize a container mount point.", - "method" : "PUT", - "name" : "resize_vm", + "DELETE" : { + "allowtoken" : 1, + "description" : "Unset a ceph flag", + "method" : "DELETE", + "name" : "unset_flag", "parameters" : { "additionalProperties" : 0, "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "disk" : { - "description" : "The disk you want to resize.", + "flag" : { + "description" : "The ceph flag to unset", "enum" : [ - "rootfs", - "mp0", - "mp1", - "mp2", - "mp3", - "mp4", - "mp5", - "mp6", - "mp7", - "mp8", - "mp9" + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" ], "type" : "string" }, @@ -19079,142 +30528,122 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "size" : { - "description" : "The new size. With the '+' sign the value is added to the actual size of the volume and without it, the value is taken as an absolute one. Shrinking disk size is not supported.", - "pattern" : "\\+?\\d+(\\.\\d+)?[KMGT]?", - "type" : "string" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Config.Disk" - ], - "any", - 1 + "Sys.Modify" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "description" : "the task ID.", - "type" : "string" + "type" : "null" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/resize", - "text" : "resize" - }, - { - "info" : { + }, "POST" : { - "description" : "Move a rootfs-/mp-volume to a different storage", + "allowtoken" : 1, + "description" : "Set a specific ceph flag", "method" : "POST", - "name" : "move_volume", + "name" : "set_flag", "parameters" : { "additionalProperties" : 0, "properties" : { - "delete" : { - "default" : 0, - "description" : "Delete the original volume after successful copy. By default the original is kept as an unused volume entry.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" + "flag" : { + "description" : "The ceph flag to set", + "enum" : [ + "nobackfill", + "nodeep-scrub", + "nodown", + "noin", + "noout", + "norebalance", + "norecover", + "noscrub", + "notieragent", + "noup", + "pause" + ], + "type" : "string" }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "storage" : { - "description" : "Target Storage.", - "format" : "pve-storage-id", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "volume" : { - "description" : "Volume which will be moved.", - "enum" : [ - "rootfs", - "mp0", - "mp1", - "mp2", - "mp3", - "mp4", - "mp5", - "mp6", - "mp7", - "mp8", - "mp9" - ], - "type" : "string" } } }, "permissions" : { "check" : [ - "and", - [ - "perm", - "/vms/{vmid}", - [ - "VM.Config.Disk" - ] - ], + "perm", + "/", [ - "perm", - "/storage/{storage}", - [ - "Datastore.AllocateSpace" - ] + "Sys.Modify" ] - ], - "description" : "You need 'VM.Config.Disk' permissions on /vms/{vmid}, and 'Datastore.AllocateSpace' permissions on the storage." + ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" } } }, "leaf" : 1, - "path" : "/nodes/{node}/lxc/{vmid}/move_volume", - "text" : "move_volume" + "path" : "/nodes/{node}/ceph/flags/{flag}", + "text" : "{flag}" } ], "info" : { - "DELETE" : { - "description" : "Destroy the container (also delete all uses files).", - "method" : "DELETE", - "name" : "destroy_vm", + "GET" : { + "allowtoken" : 1, + "description" : "get all set ceph flags", + "method" : "GET", + "name" : "get_flags", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph/flags", + "text" : "flags" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get OSD crush map", + "method" : "GET", + "name" : "crush", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -19223,23 +30652,19 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, - "type" : "integer", - "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/vms/{vmid}", + "/", [ - "VM.Allocate" - ] + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 ] }, "protected" : 1, @@ -19247,45 +30672,115 @@ var pveapi = [ "returns" : { "type" : "string" } - }, + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/crush", + "text" : "crush" + }, + { + "info" : { "GET" : { - "description" : "Directory index", + "allowtoken" : 1, + "description" : "Read ceph log", "method" : "GET", - "name" : "vmdiridx", + "name" : "log", "parameters" : { "additionalProperties" : 0, "properties" : { + "limit" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "start" : { + "minimum" : 0, + "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (0 - N)" } } }, "permissions" : { - "user" : "all" + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Syslog" + ] + ] }, + "protected" : 1, "proxyto" : "node", "returns" : { "items" : { "properties" : { - "subdir" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", "type" : "string" } }, "type" : "object" }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/ceph/log", + "text" : "log" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List ceph rules.", + "method" : "GET", + "name" : "rules", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, "links" : [ { - "href" : "{subdir}", + "href" : "{name}", "rel" : "child" } ], @@ -19293,16 +30788,17 @@ var pveapi = [ } } }, - "leaf" : 0, - "path" : "/nodes/{node}/lxc/{vmid}", - "text" : "{vmid}" + "leaf" : 1, + "path" : "/nodes/{node}/ceph/rules", + "text" : "rules" } ], "info" : { "GET" : { - "description" : "LXC container index (per node).", + "allowtoken" : 1, + "description" : "Directory index.", "method" : "GET", - "name" : "vmlist", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -19315,11 +30811,17 @@ var pveapi = [ } }, "permissions" : { - "description" : "Only list CTs where you have VM.Audit permissons on /vms/.", - "user" : "all" + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { "items" : { "properties" : {}, @@ -19327,480 +30829,283 @@ var pveapi = [ }, "links" : [ { - "href" : "{vmid}", + "href" : "{name}", "rel" : "child" } ], "type" : "array" } - }, + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/ceph", + "text" : "ceph" + }, + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Extract configuration from vzdump backup archive.", + "method" : "GET", + "name" : "extractconfig", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "volume" : { + "description" : "Volume identifier", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "The user needs 'VM.Backup' permissions on the backed up guest ID, and 'Datastore.AllocateSpace' on the backup storage.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/vzdump/extractconfig", + "text" : "extractconfig" + } + ], + "info" : { "POST" : { - "description" : "Create or restore a container.", + "allowtoken" : 1, + "description" : "Create backup.", "method" : "POST", - "name" : "create_vm", + "name" : "vzdump", "parameters" : { "additionalProperties" : 0, "properties" : { - "arch" : { - "default" : "amd64", - "description" : "OS architecture type.", - "enum" : [ - "amd64", - "i386" - ], - "optional" : 1, - "type" : "string" - }, - "bwlimit" : { - "description" : "Override i/o bandwidth limit (in KiB/s).", - "minimum" : "0", - "optional" : 1, - "type" : "number", - "typetext" : " (0 - N)" - }, - "cmode" : { - "default" : "tty", - "description" : "Console mode. By default, the console command tries to open a connection to one of the available tty devices. By setting cmode to 'console' it tries to attach to /dev/console instead. If you set cmode to 'shell', it simply invokes a shell inside the container (no login).", - "enum" : [ - "shell", - "console", - "tty" - ], - "optional" : 1, - "type" : "string" - }, - "console" : { - "default" : 1, - "description" : "Attach a console device (/dev/console) to the container.", + "all" : { + "default" : 0, + "description" : "Backup all known guest systems on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "cores" : { - "description" : "The number of cores assigned to the container. A container can use all available cores by default.", - "maximum" : 128, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 128)" - }, - "cpulimit" : { + "bwlimit" : { "default" : 0, - "description" : "Limit of CPU usage.\n\nNOTE: If the computer has 2 CPUs, it has a total of '2' CPU time. Value '0' indicates no CPU limit.", - "maximum" : 128, + "description" : "Limit I/O bandwidth (KBytes per second).", "minimum" : 0, "optional" : 1, - "type" : "number", - "typetext" : " (0 - 128)" + "type" : "integer", + "typetext" : " (0 - N)" }, - "cpuunits" : { - "default" : 1024, - "description" : "CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to the weights of all the other running VMs.\n\nNOTE: You can disable fair-scheduler configuration by setting this to 0.", - "maximum" : 500000, - "minimum" : 0, + "compress" : { + "default" : "0", + "description" : "Compress dump file.", + "enum" : [ + "0", + "1", + "gzip", + "lzo", + "zstd" + ], "optional" : 1, - "type" : "integer", - "typetext" : " (0 - 500000)" + "type" : "string" }, - "description" : { - "description" : "Container description. Only used on the configuration web interface.", + "dumpdir" : { + "description" : "Store resulting files to specified directory.", "optional" : 1, "type" : "string", "typetext" : "" }, - "force" : { - "description" : "Allow to overwrite existing container.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "hostname" : { - "description" : "Set a host name for the container.", - "format" : "dns-name", - "maxLength" : 255, + "exclude" : { + "description" : "Exclude specified guest systems (assumes --all)", + "format" : "pve-vmid-list", "optional" : 1, "type" : "string", "typetext" : "" }, - "ignore-unpack-errors" : { - "description" : "Ignore errors when extracting the template.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "lock" : { - "description" : "Lock/unlock the VM.", - "enum" : [ - "migrate", - "backup", - "snapshot", - "rollback" - ], + "exclude-path" : { + "description" : "Exclude certain files/directories (shell globs).", + "format" : "string-alist", "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "memory" : { - "default" : 512, - "description" : "Amount of RAM for the VM in MB.", - "minimum" : 16, + "ionice" : { + "default" : 7, + "description" : "Set CFQ ionice priority.", + "maximum" : 8, + "minimum" : 0, "optional" : 1, "type" : "integer", - "typetext" : " (16 - N)" + "typetext" : " (0 - 8)" }, - "mp[n]" : { - "description" : "Use volume as container mount point.", - "format" : { - "acl" : { - "description" : "Explicitly enable or disable ACL support.", - "optional" : 1, - "type" : "boolean" - }, - "backup" : { - "description" : "Whether to include the mount point in backups.", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Whether to include the mount point in backups (only used for volume mount points)." - }, - "mp" : { - "description" : "Path to the mount point as seen from inside the container (must not contain symlinks).", - "format" : "pve-lxc-mp-string", - "format_description" : "Path", - "type" : "string", - "verbose_description" : "Path to the mount point as seen from inside the container.\n\nNOTE: Must not contain any symlinks for security reasons." - }, - "quota" : { - "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", - "optional" : 1, - "type" : "boolean" - }, - "replicate" : { - "default" : 1, - "description" : "Will include this volume to a storage replica job.", - "optional" : 1, - "type" : "boolean" - }, - "ro" : { - "description" : "Read-only mount point", - "optional" : 1, - "type" : "boolean" - }, - "shared" : { - "default" : 0, - "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" - }, - "size" : { - "description" : "Volume size (read only value).", - "format" : "disk-size", - "format_description" : "DiskSize", - "optional" : 1, - "type" : "string" - }, - "volume" : { - "default_key" : 1, - "description" : "Volume, device or directory to mount into the container.", - "format" : "pve-lxc-mp-string", - "format_description" : "volume", - "type" : "string" - } - }, + "lockwait" : { + "default" : 180, + "description" : "Maximal time to wait for the global lock (minutes).", + "minimum" : 0, "optional" : 1, - "type" : "string", - "typetext" : "[volume=] ,mp= [,acl=<1|0>] [,backup=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" + "type" : "integer", + "typetext" : " (0 - N)" }, - "nameserver" : { - "description" : "Sets DNS server IP address for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", - "format" : "address-list", + "mailnotification" : { + "default" : "always", + "description" : "Specify when to send an email", + "enum" : [ + "always", + "failure" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" }, - "net[n]" : { - "description" : "Specifies network interfaces for the container.", - "format" : { - "bridge" : { - "description" : "Bridge to attach the network device to.", - "format_description" : "bridge", - "optional" : 1, - "pattern" : "[-_.\\w\\d]+", - "type" : "string" - }, - "firewall" : { - "description" : "Controls whether this interface's firewall rules should be used.", - "optional" : 1, - "type" : "boolean" - }, - "gw" : { - "description" : "Default gateway for IPv4 traffic.", - "format" : "ipv4", - "format_description" : "GatewayIPv4", - "optional" : 1, - "type" : "string" - }, - "gw6" : { - "description" : "Default gateway for IPv6 traffic.", - "format" : "ipv6", - "format_description" : "GatewayIPv6", - "optional" : 1, - "type" : "string" - }, - "hwaddr" : { - "description" : "The interface MAC address. This is dynamically allocated by default, but you can set that statically if needed, for example to always have the same link-local IPv6 address. (lxc.network.hwaddr)", - "format_description" : "XX:XX:XX:XX:XX:XX", - "optional" : 1, - "pattern" : "(?^i:(?:[a-f0-9]{2}:){5}[a-f0-9]{2})", - "type" : "string" - }, - "ip" : { - "description" : "IPv4 address in CIDR format.", - "format" : "pve-ipv4-config", - "format_description" : "(IPv4/CIDR|dhcp|manual)", - "optional" : 1, - "type" : "string" - }, - "ip6" : { - "description" : "IPv6 address in CIDR format.", - "format" : "pve-ipv6-config", - "format_description" : "(IPv6/CIDR|auto|dhcp|manual)", - "optional" : 1, - "type" : "string" - }, - "mtu" : { - "description" : "Maximum transfer unit of the interface. (lxc.network.mtu)", - "minimum" : 64, - "optional" : 1, - "type" : "integer" - }, - "name" : { - "description" : "Name of the network device as seen from inside the container. (lxc.network.name)", - "format_description" : "string", - "pattern" : "[-_.\\w\\d]+", - "type" : "string" - }, - "rate" : { - "description" : "Apply rate limiting to the interface", - "format_description" : "mbps", - "optional" : 1, - "type" : "number" - }, - "tag" : { - "description" : "VLAN tag for this interface.", - "maximum" : 4094, - "minimum" : 1, - "optional" : 1, - "type" : "integer" - }, - "trunks" : { - "description" : "VLAN ids to pass through the interface", - "format_description" : "vlanid[;vlanid...]", - "optional" : 1, - "pattern" : "(?^:\\d+(?:;\\d+)*)", - "type" : "string" - }, - "type" : { - "description" : "Network interface type.", - "enum" : [ - "veth" - ], - "optional" : 1, - "type" : "string" - } - }, + "mailto" : { + "description" : "Comma-separated list of email addresses that should receive email notifications.", + "format" : "string-list", "optional" : 1, "type" : "string", - "typetext" : "name= [,bridge=] [,firewall=<1|0>] [,gw=] [,gw6=] [,hwaddr=] [,ip=<(IPv4/CIDR|dhcp|manual)>] [,ip6=<(IPv6/CIDR|auto|dhcp|manual)>] [,mtu=] [,rate=] [,tag=] [,trunks=] [,type=]" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", "typetext" : "" }, - "onboot" : { - "default" : 0, - "description" : "Specifies whether a VM will be started during system bootup.", + "maxfiles" : { + "default" : 1, + "description" : "Maximal number of backup files per guest system.", + "minimum" : 1, "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "ostemplate" : { - "description" : "The OS template or backup file.", - "maxLength" : 255, - "type" : "string", - "typetext" : "" + "type" : "integer", + "typetext" : " (1 - N)" }, - "ostype" : { - "description" : "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", - "enum" : [ - "debian", - "ubuntu", - "centos", - "fedora", - "opensuse", - "archlinux", - "alpine", - "gentoo", - "unmanaged" + "mode" : { + "default" : "snapshot", + "description" : "Backup mode.", + "enum" : [ + "snapshot", + "suspend", + "stop" ], "optional" : 1, "type" : "string" }, - "password" : { - "description" : "Sets root password inside container.", - "minLength" : 5, + "node" : { + "description" : "Only run if executed on this node.", + "format" : "pve-node", "optional" : 1, "type" : "string", "typetext" : "" }, + "pigz" : { + "default" : 0, + "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, "pool" : { - "description" : "Add the VM to the specified pool.", - "format" : "pve-poolid", + "description" : "Backup all known guest systems included in the specified pool.", "optional" : 1, "type" : "string", "typetext" : "" }, - "protection" : { + "prune-backups" : { + "description" : "Use these retention options instead of those from the storage configuration.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, + "quiet" : { "default" : 0, - "description" : "Sets the protection flag of the container. This will prevent the CT or CT's disk remove/update operation.", + "description" : "Be quiet.", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "restore" : { - "description" : "Mark this as restore task.", + "remove" : { + "default" : 1, + "description" : "Remove old backup files if there are more than 'maxfiles' backup files.", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "rootfs" : { - "description" : "Use volume as container root.", - "format" : { - "acl" : { - "description" : "Explicitly enable or disable ACL support.", - "optional" : 1, - "type" : "boolean" - }, - "quota" : { - "description" : "Enable user quotas inside the container (not supported with zfs subvolumes)", - "optional" : 1, - "type" : "boolean" - }, - "replicate" : { - "default" : 1, - "description" : "Will include this volume to a storage replica job.", - "optional" : 1, - "type" : "boolean" - }, - "ro" : { - "description" : "Read-only mount point", - "optional" : 1, - "type" : "boolean" - }, - "shared" : { - "default" : 0, - "description" : "Mark this non-volume mount point as available on multiple nodes (see 'nodes')", - "optional" : 1, - "type" : "boolean", - "verbose_description" : "Mark this non-volume mount point as available on all nodes.\n\nWARNING: This option does not share the mount point automatically, it assumes it is shared already!" - }, - "size" : { - "description" : "Volume size (read only value).", - "format" : "disk-size", - "format_description" : "DiskSize", - "optional" : 1, - "type" : "string" - }, - "volume" : { - "default_key" : 1, - "description" : "Volume, device or directory to mount into the container.", - "format" : "pve-lxc-mp-string", - "format_description" : "volume", - "type" : "string" - } - }, - "optional" : 1, - "type" : "string", - "typetext" : "[volume=] [,acl=<1|0>] [,quota=<1|0>] [,replicate=<1|0>] [,ro=<1|0>] [,shared=<1|0>] [,size=]" - }, - "searchdomain" : { - "description" : "Sets DNS search domains for a container. Create will automatically use the setting from the host if you neither set searchdomain nor nameserver.", - "format" : "dns-name-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ssh-public-keys" : { - "description" : "Setup public SSH keys (one key per line, OpenSSH format).", + "script" : { + "description" : "Use specified hook script.", "optional" : 1, "type" : "string", "typetext" : "" }, - "startup" : { - "description" : "Startup and shutdown behavior. Order is a non-negative number defining the general startup order. Shutdown in done with reverse ordering. Additionally you can set the 'up' or 'down' delay in seconds, which specifies a delay to wait before the next VM is started or stopped.", - "format" : "pve-startup-order", + "size" : { + "default" : 1024, + "description" : "Unused, will be removed in a future release.", + "minimum" : 500, "optional" : 1, - "type" : "string", - "typetext" : "[[order=]\\d+] [,up=\\d+] [,down=\\d+] " + "type" : "integer", + "typetext" : " (500 - N)" }, - "storage" : { - "default" : "local", - "description" : "Default Storage.", - "format" : "pve-storage-id", + "stdexcludes" : { + "default" : 1, + "description" : "Exclude temporary files and logs.", "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "boolean", + "typetext" : "" }, - "swap" : { - "default" : 512, - "description" : "Amount of SWAP for the VM in MB.", - "minimum" : 0, + "stdout" : { + "description" : "Write tar to stdout, not to a file.", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "boolean", + "typetext" : "" }, - "template" : { + "stop" : { "default" : 0, - "description" : "Enable/disable Template.", + "description" : "Stop running backup jobs on this host.", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "tty" : { - "default" : 2, - "description" : "Specify the number of tty available to the container", - "maximum" : 6, + "stopwait" : { + "default" : 10, + "description" : "Maximal time to wait until a guest system is stopped (minutes).", "minimum" : 0, "optional" : 1, "type" : "integer", - "typetext" : " (0 - 6)" + "typetext" : " (0 - N)" }, - "unprivileged" : { - "default" : 0, - "description" : "Makes the container run as unprivileged user. (Should not be modified manually.)", + "storage" : { + "description" : "Store resulting file to this storage.", + "format" : "pve-storage-id", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string", + "typetext" : "" }, - "unused[n]" : { - "description" : "Reference to unused volumes. This is used internally, and should not be modified manually.", - "format" : "pve-volume-id", + "tmpdir" : { + "description" : "Store temporary files to specified directory.", "optional" : 1, "type" : "string", "typetext" : "" }, "vmid" : { - "description" : "The (unique) ID of the VM.", - "format" : "pve-vmid", - "minimum" : 1, + "description" : "The ID of the guest system you want to backup.", + "format" : "pve-vmid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "zstd" : { + "default" : 1, + "description" : "Zstd threads. N=0 uses half of the available cores, N>0 uses N as thread count.", + "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : "" } } }, "permissions" : { - "description" : "You need 'VM.Allocate' permissions on /vms/{vmid} or on the VM pool /pool/{pool}. For restore, it is enough if the user has 'VM.Backup' permission and the VM already exists. You also need 'Datastore.AllocateSpace' permissions on the storage.", + "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'prune-backups', 'tmpdir', 'dumpdir', 'script', 'bwlimit' and 'ionice' parameters are restricted to the 'root@pam' user.", "user" : "all" }, "protected" : 1, @@ -19811,128 +31116,182 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/lxc", - "text" : "lxc" + "path" : "/nodes/{node}/vzdump", + "text" : "vzdump" }, { "children" : [ { "children" : [ { - "children" : [ - { - "info" : { - "POST" : { - "description" : "ceph osd in", - "method" : "POST", - "name" : "in", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "osdid" : { - "description" : "OSD ID", - "type" : "integer", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read service properties", + "method" : "GET", + "name" : "service_state", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" + "service" : { + "description" : "Service ID", + "enum" : [ + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" + ], + "type" : "string" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/osd/{osdid}/in", - "text" : "in" - }, - { - "info" : { - "POST" : { - "description" : "ceph osd out", - "method" : "POST", - "name" : "out", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "osdid" : { - "description" : "OSD ID", - "type" : "integer", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/services/{service}/state", + "text" : "state" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Start service.", + "method" : "POST", + "name" : "service_start", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" + "service" : { + "description" : "Service ID", + "enum" : [ + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" + ], + "type" : "string" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/osd/{osdid}/out", - "text" : "out" + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } } - ], + }, + "leaf" : 1, + "path" : "/nodes/{node}/services/{service}/start", + "text" : "start" + }, + { "info" : { - "DELETE" : { - "description" : "Destroy OSD", - "method" : "DELETE", - "name" : "destroyosd", + "POST" : { + "allowtoken" : 1, + "description" : "Stop service.", + "method" : "POST", + "name" : "service_stop", "parameters" : { "additionalProperties" : 0, "properties" : { - "cleanup" : { - "default" : 0, - "description" : "If set, we remove partition table entries.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "osdid" : { - "description" : "OSD ID", - "type" : "integer", - "typetext" : "" + "service" : { + "description" : "Service ID", + "enum" : [ + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" + ], + "type" : "string" } } }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, "protected" : 1, "proxyto" : "node", "returns" : { @@ -19940,112 +31299,137 @@ var pveapi = [ } } }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/osd/{osdid}", - "text" : "{osdid}" - } - ], - "info" : { - "GET" : { - "description" : "Get Ceph osd list/tree.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "leaf" : 1, + "path" : "/nodes/{node}/services/{service}/stop", + "text" : "stop" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Hard restart service. Use reload if you want to reduce interruptions.", + "method" : "POST", + "name" : "service_restart", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "service" : { + "description" : "Service ID", + "enum" : [ + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" + ], + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" } } }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "object" - } + "leaf" : 1, + "path" : "/nodes/{node}/services/{service}/restart", + "text" : "restart" }, - "POST" : { - "description" : "Create OSD", - "method" : "POST", - "name" : "createosd", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "bluestore" : { - "default" : 1, - "description" : "Use bluestore instead of filestore. This is the default.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Reload service. Falls back to restart if service cannot be reloaded.", + "method" : "POST", + "name" : "service_reload", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "service" : { + "description" : "Service ID", + "enum" : [ + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" + ], + "type" : "string" + } + } }, - "dev" : { - "description" : "Block device name.", - "type" : "string", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] }, - "fstype" : { - "default" : "xfs", - "description" : "File system type (filestore only).", - "enum" : [ - "xfs", - "ext4", - "btrfs" - ], - "optional" : 1, + "protected" : 1, + "proxyto" : "node", + "returns" : { "type" : "string" - }, - "journal_dev" : { - "description" : "Block device name for journal (filestore) or block.db (bluestore).", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "wal_dev" : { - "description" : "Block device name for block.wal (bluestore only).", - "optional" : 1, - "type" : "string", - "typetext" : "" } } }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } + "leaf" : 1, + "path" : "/nodes/{node}/services/{service}/reload", + "text" : "reload" } - }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/osd", - "text" : "osd" - }, - { + ], "info" : { "GET" : { - "description" : "List local disks.", + "allowtoken" : 1, + "description" : "Directory index", "method" : "GET", - "name" : "disks", + "name" : "srvcmdidx", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20055,13 +31439,26 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "type" : { - "description" : "Only list specific types of disks.", + "service" : { + "description" : "Service ID", "enum" : [ - "unused", - "journal_disks" + "pveproxy", + "pvedaemon", + "spiceproxy", + "pvestatd", + "pve-cluster", + "corosync", + "pve-firewall", + "pvefw-logger", + "pve-ha-crm", + "pve-ha-lrm", + "sshd", + "syslog", + "cron", + "postfix", + "ksmtuned", + "systemd-timesyncd" ], - "optional" : 1, "type" : "string" } } @@ -20069,68 +31466,240 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Audit" + ] ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { "items" : { "properties" : { - "dev" : { - "type" : "string" - }, - "gpt" : { - "type" : "boolean" - }, - "model" : { - "optional" : 1, - "type" : "string" - }, - "osdid" : { - "type" : "integer" - }, - "serial" : { - "optional" : 1, - "type" : "string" - }, - "size" : { - "type" : "integer" - }, - "used" : { - "optional" : 1, - "type" : "string" - }, - "vendor" : { - "optional" : 1, + "subdir" : { "type" : "string" } }, "type" : "object" }, + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" + } + ], "type" : "array" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/disks", - "text" : "disks" + "leaf" : 0, + "path" : "/nodes/{node}/services/{service}", + "text" : "{service}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Service list.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{service}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/services", + "text" : "services" + }, + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete subscription key of this node.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Read subscription info.", + "method" : "GET", + "name" : "get", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Update subscription info.", + "method" : "POST", + "name" : "update", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "force" : { + "default" : 0, + "description" : "Always connect to server, even if we have up to date info inside local cache.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set subscription key.", + "method" : "PUT", + "name" : "set", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "key" : { + "description" : "Proxmox VE subscription key", + "maxLength" : 32, + "pattern" : "pve([1248])([cbsp])-[0-9a-f]{10}", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/subscription", + "text" : "subscription" + }, + { + "children" : [ { "info" : { - "GET" : { - "description" : "Get Ceph configuration.", - "method" : "GET", - "name" : "config", + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete network device configuration", + "method" : "DELETE", + "name" : "delete_network", "parameters" : { "additionalProperties" : 0, "properties" : { + "iface" : { + "description" : "Network interface name.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -20142,84 +31711,34 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Modify" + ] ] }, + "protected" : 1, + "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/config", - "text" : "config" - }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Destroy Ceph Monitor and Manager.", - "method" : "DELETE", - "name" : "destroymon", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "exclude-manager" : { - "default" : 0, - "description" : "When set, removes only the monitor, not the manager", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "monid" : { - "description" : "Monitor ID", - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/mon/{monid}", - "text" : "{monid}" - } - ], - "info" : { + }, "GET" : { - "description" : "Get Ceph monitor list.", + "allowtoken" : 1, + "description" : "Read network device configuration", "method" : "GET", - "name" : "listmon", + "name" : "network_config", "parameters" : { "additionalProperties" : 0, "properties" : { + "iface" : { + "description" : "Network interface name.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -20231,265 +31750,988 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Audit" + ] ] }, - "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "addr" : { - "type" : "string" - }, - "name" : { - "type" : "string" - } + "properties" : { + "method" : { + "type" : "string" + }, + "type" : { + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update network device configuration", + "method" : "PUT", + "name" : "update_network", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "address" : { + "description" : "IP address.", + "format" : "ipv4", + "optional" : 1, + "requires" : "netmask", + "type" : "string", + "typetext" : "" + }, + "address6" : { + "description" : "IP address.", + "format" : "ipv6", + "optional" : 1, + "requires" : "netmask6", + "type" : "string", + "typetext" : "" + }, + "autostart" : { + "description" : "Automatically start interface on boot.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "bond-primary" : { + "description" : "Specify the primary interface for active-backup bond.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "bond_mode" : { + "description" : "Bonding mode.", + "enum" : [ + "balance-rr", + "active-backup", + "balance-xor", + "broadcast", + "802.3ad", + "balance-tlb", + "balance-alb", + "balance-slb", + "lacp-balance-slb", + "lacp-balance-tcp" + ], + "optional" : 1, + "type" : "string" }, - "type" : "object" - }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create Ceph Monitor and Manager", - "method" : "POST", - "name" : "createmon", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "exclude-manager" : { - "default" : 0, - "description" : "When set, only a monitor will be created.", + "bond_xmit_hash_policy" : { + "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.", + "enum" : [ + "layer2", + "layer2+3", + "layer3+4" + ], + "optional" : 1, + "type" : "string" + }, + "bridge_ports" : { + "description" : "Specify the interfaces you want to add to your bridge.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "bridge_vlan_aware" : { + "description" : "Enable bridge vlan support.", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "id" : { - "description" : "The ID for the monitor, when omitted the same as the nodename", + "cidr" : { + "description" : "IPv4 CIDR.", + "format" : "CIDRv4", "optional" : 1, - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" + "type" : "string", + "typetext" : "" }, - "mon-address" : { - "description" : "Overwrites autodetected monitor IP address. Must be in the public network of ceph.", - "format" : "ip", + "cidr6" : { + "description" : "IPv6 CIDR.", + "format" : "CIDRv6", "optional" : 1, "type" : "string", "typetext" : "" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", + "comments" : { + "description" : "Comments", + "optional" : 1, "type" : "string", "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/mon", - "text" : "mon" - }, - { - "info" : { - "POST" : { - "description" : "Create initial ceph default configuration and setup symlinks.", - "method" : "POST", - "name" : "init", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "disable_cephx" : { - "default" : 0, - "description" : "Disable cephx authentification.\n\nWARNING: cephx is a security feature protecting against man-in-the-middle attacks. Only consider disabling cephx if your network is private!", + }, + "comments6" : { + "description" : "Comments", "optional" : 1, - "type" : "boolean", - "typetext" : "" + "type" : "string", + "typetext" : "" }, - "min_size" : { - "default" : 2, - "description" : "Minimum number of available replicas per object to allow I/O", - "maximum" : 7, - "minimum" : 1, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway" : { + "description" : "Default gateway address.", + "format" : "ipv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway6" : { + "description" : "Default ipv6 gateway address.", + "format" : "ipv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "type" : "string", + "typetext" : "" + }, + "mtu" : { + "description" : "MTU.", + "maximum" : 65520, + "minimum" : 1280, "optional" : 1, "type" : "integer", - "typetext" : " (1 - 7)" + "typetext" : " (1280 - 65520)" }, - "network" : { - "description" : "Use specific network for all ceph related traffic", - "format" : "CIDR", - "maxLength" : 128, + "netmask" : { + "description" : "Network mask.", + "format" : "ipv4mask", "optional" : 1, + "requires" : "address", "type" : "string", "typetext" : "" }, + "netmask6" : { + "description" : "Network mask.", + "maximum" : 128, + "minimum" : 0, + "optional" : 1, + "requires" : "address6", + "type" : "integer", + "typetext" : " (0 - 128)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "pg_bits" : { - "default" : 6, - "description" : "Placement group bits, used to specify the default number of placement groups.\n\nNOTE: 'osd pool default pg num' does not work for default pools.", - "maximum" : 14, - "minimum" : 6, + "ovs_bonds" : { + "description" : "Specify the interfaces used by the bonding device.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_bridge" : { + "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_options" : { + "description" : "OVS interface options.", + "maxLength" : 1024, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_ports" : { + "description" : "Specify the interfaces you want to add to your bridge.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_tag" : { + "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)", + "maximum" : 4094, + "minimum" : 1, "optional" : 1, "type" : "integer", - "typetext" : " (6 - 14)" + "typetext" : " (1 - 4094)" }, - "size" : { - "default" : 3, - "description" : "Targeted number of replicas per object", - "maximum" : 7, + "slaves" : { + "description" : "Specify the interfaces used by the bonding device.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Network interface type", + "enum" : [ + "bridge", + "bond", + "eth", + "alias", + "vlan", + "OVSBridge", + "OVSBond", + "OVSPort", + "OVSIntPort", + "unknown" + ], + "type" : "string" + }, + "vlan-id" : { + "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).", + "maximum" : 4094, "minimum" : 1, "optional" : 1, "type" : "integer", - "typetext" : " (1 - 7)" + "typetext" : " (1 - 4094)" + }, + "vlan-raw-device" : { + "description" : "Specify the raw interface for the vlan interface.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ "Sys.Modify" ] ] }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/network/{iface}", + "text" : "{iface}" + } + ], + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Revert network configuration changes.", + "method" : "DELETE", + "name" : "revert_network_changes", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "List available networks", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Only list specific interface types.", + "enum" : [ + "bridge", + "bond", + "eth", + "alias", + "vlan", + "OVSBridge", + "OVSBond", + "OVSPort", + "OVSIntPort", + "any_bridge" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{iface}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create network device configuration", + "method" : "POST", + "name" : "create_network", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "address" : { + "description" : "IP address.", + "format" : "ipv4", + "optional" : 1, + "requires" : "netmask", + "type" : "string", + "typetext" : "" + }, + "address6" : { + "description" : "IP address.", + "format" : "ipv6", + "optional" : 1, + "requires" : "netmask6", + "type" : "string", + "typetext" : "" + }, + "autostart" : { + "description" : "Automatically start interface on boot.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "bond-primary" : { + "description" : "Specify the primary interface for active-backup bond.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "bond_mode" : { + "description" : "Bonding mode.", + "enum" : [ + "balance-rr", + "active-backup", + "balance-xor", + "broadcast", + "802.3ad", + "balance-tlb", + "balance-alb", + "balance-slb", + "lacp-balance-slb", + "lacp-balance-tcp" + ], + "optional" : 1, + "type" : "string" + }, + "bond_xmit_hash_policy" : { + "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.", + "enum" : [ + "layer2", + "layer2+3", + "layer3+4" + ], + "optional" : 1, + "type" : "string" + }, + "bridge_ports" : { + "description" : "Specify the interfaces you want to add to your bridge.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "bridge_vlan_aware" : { + "description" : "Enable bridge vlan support.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "cidr" : { + "description" : "IPv4 CIDR.", + "format" : "CIDRv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "cidr6" : { + "description" : "IPv6 CIDR.", + "format" : "CIDRv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "comments" : { + "description" : "Comments", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "comments6" : { + "description" : "Comments", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway" : { + "description" : "Default gateway address.", + "format" : "ipv4", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "gateway6" : { + "description" : "Default ipv6 gateway address.", + "format" : "ipv6", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "type" : "string", + "typetext" : "" + }, + "mtu" : { + "description" : "MTU.", + "maximum" : 65520, + "minimum" : 1280, + "optional" : 1, + "type" : "integer", + "typetext" : " (1280 - 65520)" + }, + "netmask" : { + "description" : "Network mask.", + "format" : "ipv4mask", + "optional" : 1, + "requires" : "address", + "type" : "string", + "typetext" : "" + }, + "netmask6" : { + "description" : "Network mask.", + "maximum" : 128, + "minimum" : 0, + "optional" : 1, + "requires" : "address6", + "type" : "integer", + "typetext" : " (0 - 128)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "ovs_bonds" : { + "description" : "Specify the interfaces used by the bonding device.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_bridge" : { + "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_options" : { + "description" : "OVS interface options.", + "maxLength" : 1024, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_ports" : { + "description" : "Specify the interfaces you want to add to your bridge.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "ovs_tag" : { + "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 4094)" + }, + "slaves" : { + "description" : "Specify the interfaces used by the bonding device.", + "format" : "pve-iface-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Network interface type", + "enum" : [ + "bridge", + "bond", + "eth", + "alias", + "vlan", + "OVSBridge", + "OVSBond", + "OVSPort", + "OVSIntPort", + "unknown" + ], + "type" : "string" + }, + "vlan-id" : { + "description" : "vlan-id for a custom named vlan interface (ifupdown2 only).", + "maximum" : 4094, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 4094)" + }, + "vlan-raw-device" : { + "description" : "Specify the raw interface for the vlan interface.", + "format" : "pve-iface", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/init", - "text" : "init" + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } }, + "PUT" : { + "allowtoken" : 1, + "description" : "Reload network configuration", + "method" : "PUT", + "name" : "reload_network_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/network", + "text" : "network" + }, + { + "children" : [ { "children" : [ { "info" : { - "DELETE" : { - "description" : "Destroy Ceph Manager.", - "method" : "DELETE", - "name" : "destroymgr", + "GET" : { + "allowtoken" : 1, + "description" : "Read task log.", + "method" : "GET", + "name" : "read_task_log", "parameters" : { "additionalProperties" : 0, "properties" : { - "id" : { - "description" : "The ID of the manager", - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" + "limit" : { + "default" : 50, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "start" : { + "default" : 0, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "upid" : { + "type" : "string", + "typetext" : "" } } }, "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "description" : "The user needs 'Sys.Audit' permissions on '/nodes/' if the task does not belong to him.", + "user" : "all" }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/ceph/mgr/{id}", - "text" : "{id}" + "path" : "/nodes/{node}/tasks/{upid}/log", + "text" : "log" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read task status.", + "method" : "GET", + "name" : "read_task_status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "upid" : { + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "The user needs 'Sys.Audit' permissions on '/nodes/' if the task does not belong to him.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "pid" : { + "type" : "integer" + }, + "status" : { + "enum" : [ + "running", + "stopped" + ], + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/tasks/{upid}/status", + "text" : "status" } ], "info" : { - "POST" : { - "description" : "Create Ceph Manager", - "method" : "POST", - "name" : "createmgr", + "DELETE" : { + "allowtoken" : 1, + "description" : "Stop a task.", + "method" : "DELETE", + "name" : "stop_task", "parameters" : { "additionalProperties" : 0, "properties" : { - "id" : { - "description" : "The ID for the manager, when omitted the same as the nodename", - "optional" : 1, - "pattern" : "[a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?", - "type" : "string" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "upid" : { + "type" : "string", + "typetext" : "" } } }, "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "description" : "The user needs 'Sys.Modify' permissions on '/nodes/' if the task does not belong to him.", + "user" : "all" }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "", + "method" : "GET", + "name" : "upid_index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "upid" : { + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" } } }, "leaf" : 0, - "path" : "/nodes/{node}/ceph/mgr", - "text" : "mgr" - }, + "path" : "/nodes/{node}/tasks/{upid}", + "text" : "{upid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read task list for one node (finished tasks).", + "method" : "GET", + "name" : "node_tasks", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "errors" : { + "default" : 0, + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "limit" : { + "default" : 50, + "description" : "Only list this amount of tasks.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "source" : { + "default" : "archive", + "description" : "List archived, active or all tasks.", + "enum" : [ + "archive", + "active", + "all" + ], + "optional" : 1, + "type" : "string" + }, + "start" : { + "default" : 0, + "description" : "List tasks beginning from this offset.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "typefilter" : { + "description" : "Only list tasks of this type (e.g., vzstart, vzdump).", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "userfilter" : { + "description" : "Only list tasks from this user.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "Only list tasks for this VM.", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "description" : "List task associated with the current user, or all task the user has 'Sys.Audit' permissions on /nodes/ (the the task runs on).", + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "endtime" : { + "optional" : 1, + "title" : "Endtime", + "type" : "integer" + }, + "id" : { + "title" : "ID", + "type" : "string" + }, + "node" : { + "title" : "Node", + "type" : "string" + }, + "pid" : { + "title" : "PID", + "type" : "integer" + }, + "pstart" : { + "type" : "integer" + }, + "starttime" : { + "title" : "Starttime", + "type" : "integer" + }, + "status" : { + "optional" : 1, + "title" : "Status", + "type" : "string" + }, + "type" : { + "title" : "Type", + "type" : "string" + }, + "upid" : { + "title" : "UPID", + "type" : "string" + }, + "user" : { + "title" : "User", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{upid}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/tasks", + "text" : "tasks" + }, + { + "children" : [ { "info" : { - "POST" : { - "description" : "Stop ceph services.", - "method" : "POST", - "name" : "stop", + "GET" : { + "allowtoken" : 1, + "description" : "Scan zfs pool list on local node.", + "method" : "GET", + "name" : "zfsscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20498,41 +32740,45 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "service" : { - "description" : "Ceph service name.", - "optional" : 1, - "pattern" : "(mon|mds|osd|mgr)\\.[A-Za-z0-9\\-]{1,32}", - "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Modify" + "Datastore.Allocate" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "pool" : { + "description" : "ZFS pool name.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/ceph/stop", - "text" : "stop" + "path" : "/nodes/{node}/scan/zfs", + "text" : "zfs" }, { "info" : { - "POST" : { - "description" : "Start ceph services.", - "method" : "POST", - "name" : "start", + "GET" : { + "allowtoken" : 1, + "description" : "Scan remote NFS server.", + "method" : "GET", + "name" : "nfsscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20542,138 +32788,129 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Ceph service name.", - "optional" : 1, - "pattern" : "(mon|mds|osd|mgr)\\.[A-Za-z0-9\\-]{1,32}", - "type" : "string" + "server" : { + "description" : "The server address (name or IP).", + "format" : "pve-storage-server", + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Modify" + "Datastore.Allocate" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "options" : { + "description" : "NFS export options.", + "type" : "string" + }, + "path" : { + "description" : "The exported path.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/ceph/start", - "text" : "start" + "path" : "/nodes/{node}/scan/nfs", + "text" : "nfs" }, { "info" : { "GET" : { - "description" : "Get ceph status.", + "allowtoken" : 1, + "description" : "Scan remote CIFS server.", "method" : "GET", - "name" : "status", + "name" : "cifsscan", "parameters" : { "additionalProperties" : 0, "properties" : { + "domain" : { + "description" : "SMB domain (Workgroup).", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "password" : { + "description" : "User password.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "server" : { + "description" : "The server address (name or IP).", + "format" : "pve-storage-server", + "type" : "string", + "typetext" : "" + }, + "username" : { + "description" : "User name.", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Datastore.Allocate" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/status", - "text" : "status" - }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Destroy pool", - "method" : "DELETE", - "name" : "destroypool", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "force" : { - "default" : 0, - "description" : "If true, destroys pool even if in use", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "name" : { - "description" : "The name of the pool. It must be unique.", - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "remove_storages" : { - "default" : 0, - "description" : "Remove all pveceph-managed storages configured for this pool", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] + "items" : { + "properties" : { + "description" : { + "description" : "Descriptive text from server.", + "type" : "string" + }, + "share" : { + "description" : "The cifs share name.", + "type" : "string" + } }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/pools/{name}", - "text" : "{name}" + "type" : "object" + }, + "type" : "array" + } } - ], + }, + "leaf" : 1, + "path" : "/nodes/{node}/scan/cifs", + "text" : "cifs" + }, + { "info" : { "GET" : { - "description" : "List all pools.", + "allowtoken" : 1, + "description" : "Scan remote GlusterFS server.", "method" : "GET", - "name" : "lspools", + "name" : "glusterfsscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20682,19 +32919,22 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "server" : { + "description" : "The server address (name or IP).", + "format" : "pve-storage-server", + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Datastore.Allocate" + ] ] }, "protected" : 1, @@ -20702,227 +32942,85 @@ var pveapi = [ "returns" : { "items" : { "properties" : { - "pool" : { - "type" : "integer" - }, - "pool_name" : { + "volname" : { + "description" : "The volume name.", "type" : "string" - }, - "size" : { - "type" : "integer" } }, "type" : "object" }, - "links" : [ - { - "href" : "{pool_name}", - "rel" : "child" - } - ], "type" : "array" } - }, - "POST" : { - "description" : "Create POOL", - "method" : "POST", - "name" : "createpool", + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/scan/glusterfs", + "text" : "glusterfs" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Scan remote iSCSI server.", + "method" : "GET", + "name" : "iscsiscan", "parameters" : { "additionalProperties" : 0, "properties" : { - "add_storages" : { - "description" : "Configure VM and CT storages using the new pool.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "application" : { - "description" : "The application of the pool, 'rbd' by default.", - "enum" : [ - "rbd", - "cephfs", - "rgw" - ], - "optional" : 1, - "type" : "string" - }, - "crush_rule" : { - "description" : "The rule to use for mapping object placement in the cluster.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "min_size" : { - "default" : 2, - "description" : "Minimum number of replicas per object", - "maximum" : 7, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 7)" - }, - "name" : { - "description" : "The name of the pool. It must be unique.", - "type" : "string", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "pg_num" : { - "default" : 64, - "description" : "Number of placement groups.", - "maximum" : 32768, - "minimum" : 8, - "optional" : 1, - "type" : "integer", - "typetext" : " (8 - 32768)" - }, - "size" : { - "default" : 3, - "description" : "Number of replicas per object", - "maximum" : 7, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 7)" + "portal" : { + "description" : "The iSCSI portal (IP or DNS name with optional port).", + "format" : "pve-storage-portal-dns", + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Modify" + "Datastore.Allocate" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "portal" : { + "description" : "The iSCSI portal name.", + "type" : "string" + }, + "target" : { + "description" : "The iSCSI target name.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/pools", - "text" : "pools" + "leaf" : 1, + "path" : "/nodes/{node}/scan/iscsi", + "text" : "iscsi" }, { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Unset a ceph flag", - "method" : "DELETE", - "name" : "unset_flag", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "flag" : { - "description" : "The ceph flag to set/unset", - "enum" : [ - "full", - "pause", - "noup", - "nodown", - "noout", - "noin", - "nobackfill", - "norebalance", - "norecover", - "noscrub", - "nodeep-scrub", - "notieragent" - ], - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - }, - "POST" : { - "description" : "Set a ceph flag", - "method" : "POST", - "name" : "set_flag", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "flag" : { - "description" : "The ceph flag to set/unset", - "enum" : [ - "full", - "pause", - "noup", - "nodown", - "noout", - "noin", - "nobackfill", - "norebalance", - "norecover", - "noscrub", - "nodeep-scrub", - "notieragent" - ], - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/flags/{flag}", - "text" : "{flag}" - } - ], "info" : { "GET" : { - "description" : "get all set ceph flags", + "allowtoken" : 1, + "description" : "List local LVM volume groups.", "method" : "GET", - "name" : "get_flags", + "name" : "lvmscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20937,29 +33035,39 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Audit" + "Datastore.Allocate" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "vg" : { + "description" : "The LVM logical volume group name.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, - "leaf" : 0, - "path" : "/nodes/{node}/ceph/flags", - "text" : "flags" + "leaf" : 1, + "path" : "/nodes/{node}/scan/lvm", + "text" : "lvm" }, { "info" : { "GET" : { - "description" : "Get OSD crush map", + "allowtoken" : 1, + "description" : "List local LVM Thin Pools.", "method" : "GET", - "name" : "crush", + "name" : "lvmthinscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -20968,100 +33076,290 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "vg" : { + "maxLength" : 100, + "pattern" : "[a-zA-Z0-9\\.\\+\\_][a-zA-Z0-9\\.\\+\\_\\-]+", + "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/", + "/storage", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Datastore.Allocate" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "lv" : { + "description" : "The LVM Thin Pool name (LVM logical volume).", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/ceph/crush", - "text" : "crush" + "path" : "/nodes/{node}/scan/lvmthin", + "text" : "lvmthin" }, { "info" : { "GET" : { - "description" : "Read ceph log", + "allowtoken" : 1, + "description" : "List local USB devices.", "method" : "GET", - "name" : "log", + "name" : "usbscan", "parameters" : { "additionalProperties" : 0, "properties" : { - "limit" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "busnum" : { + "type" : "integer" + }, + "class" : { + "type" : "integer" + }, + "devnum" : { + "type" : "integer" + }, + "level" : { + "type" : "integer" + }, + "manufacturer" : { + "optional" : 1, + "type" : "string" + }, + "port" : { + "type" : "integer" + }, + "prodid" : { + "type" : "string" + }, + "product" : { + "optional" : 1, + "type" : "string" + }, + "serial" : { + "optional" : 1, + "type" : "string" + }, + "speed" : { + "type" : "string" + }, + "usbpath" : { + "optional" : 1, + "type" : "string" + }, + "vendid" : { + "type" : "string" + } }, - "start" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/scan/usb", + "text" : "usb" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Index of available scan methods", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "method" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{method}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/scan", + "text" : "scan" + }, + { + "children" : [ + { + "children" : [ + { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List mediated device types for given PCI device.", + "method" : "GET", + "name" : "mdevscan", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pciid" : { + "description" : "The PCI ID to list the mdev types for.", + "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "available" : { + "description" : "The number of still available instances of this type.", + "type" : "integer" + }, + "description" : { + "type" : "string" + }, + "type" : { + "description" : "The name of the mdev type.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/hardware/pci/{pciid}/mdev", + "text" : "mdev" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Index of available pci methods", + "method" : "GET", + "name" : "pciindex", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pciid" : { + "pattern" : "(?:[0-9a-fA-F]{4}:)?[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\\.[0-9a-fA-F]", + "type" : "string" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "method" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{method}", + "rel" : "child" + } + ], + "type" : "array" } } }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Syslog" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : { - "n" : { - "description" : "Line number", - "type" : "integer" - }, - "t" : { - "description" : "Line text", - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" - } + "leaf" : 0, + "path" : "/nodes/{node}/hardware/pci/{pciid}", + "text" : "{pciid}" } - }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/log", - "text" : "log" - }, - { + ], "info" : { "GET" : { - "description" : "List ceph rules.", + "allowtoken" : 1, + "description" : "List local PCI devices.", "method" : "GET", - "name" : "rules", + "name" : "pciscan", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -21070,6 +33368,21 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "pci-class-blacklist" : { + "default" : "05;06;08;0b", + "description" : "A list of blacklisted PCI classes, which will not be returned. Following are filtered by default: Memory Controller (05), Bridge (06), Generic System Peripheral (08) and Processor (0b).", + "format" : "string-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "verbose" : { + "default" : 1, + "description" : "If disabled, does only print the PCI IDs. Otherwise, additional information like vendor and device will be returned.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, @@ -21078,23 +33391,72 @@ var pveapi = [ "perm", "/", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Modify" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { "items" : { - "properties" : {}, + "properties" : { + "class" : { + "description" : "The PCI Class of the device.", + "type" : "string" + }, + "device" : { + "description" : "The Device ID.", + "type" : "string" + }, + "device_name" : { + "optional" : 1, + "type" : "string" + }, + "id" : { + "description" : "The PCI ID.", + "type" : "string" + }, + "iommugroup" : { + "description" : "The IOMMU group in which the device is in. If no IOMMU group is detected, it is set to -1.", + "type" : "integer" + }, + "mdev" : { + "description" : "If set, marks that the device is capable of creating mediated devices.", + "optional" : 1, + "type" : "boolean" + }, + "subsystem_device" : { + "description" : "The Subsystem Device ID.", + "optional" : 1, + "type" : "string" + }, + "subsystem_device_name" : { + "optional" : 1, + "type" : "string" + }, + "subsystem_vendor" : { + "description" : "The Subsystem Vendor ID.", + "optional" : 1, + "type" : "string" + }, + "subsystem_vendor_name" : { + "optional" : 1, + "type" : "string" + }, + "vendor" : { + "description" : "The Vendor ID.", + "type" : "string" + }, + "vendor_name" : { + "optional" : 1, + "type" : "string" + } + }, "type" : "object" }, "links" : [ { - "href" : "{name}", + "href" : "{id}", "rel" : "child" } ], @@ -21102,14 +33464,15 @@ var pveapi = [ } } }, - "leaf" : 1, - "path" : "/nodes/{node}/ceph/rules", - "text" : "rules" + "leaf" : 0, + "path" : "/nodes/{node}/hardware/pci", + "text" : "pci" } ], "info" : { "GET" : { - "description" : "Directory index.", + "allowtoken" : 1, + "description" : "Index of hardware types", "method" : "GET", "name" : "index", "parameters" : { @@ -21124,25 +33487,20 @@ var pveapi = [ } }, "permissions" : { - "check" : [ - "perm", - "/", - [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 - ] + "user" : "all" }, "returns" : { "items" : { - "properties" : {}, + "properties" : { + "type" : { + "type" : "string" + } + }, "type" : "object" }, "links" : [ { - "href" : "{name}", + "href" : "{type}", "rel" : "child" } ], @@ -21151,334 +33509,575 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/ceph", - "text" : "ceph" + "path" : "/nodes/{node}/hardware", + "text" : "hardware" }, { "children" : [ { - "info" : { - "GET" : { - "description" : "Extract configuration from vzdump backup archive.", - "method" : "GET", - "name" : "extractconfig", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Prune backups. Only those using the standard naming scheme are considered.", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "prune-backups" : { + "description" : "Use these retention options instead of those from the storage configuration.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.", + "enum" : [ + "qemu", + "lxc" + ], + "optional" : 1, + "type" : "string" + }, + "vmid" : { + "description" : "Only prune backups for this VM.", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } }, - "volume" : { - "description" : "Volume identifier", - "type" : "string", - "typetext" : "" + "permissions" : { + "description" : "You need the 'Datastore.Allocate' privilege on the storage (or if a VM ID is specified, 'Datastore.AllocateSpace' and 'VM.Backup' for the VM).", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get prune information for backups. NOTE: this is only a preview and might not be what a subsequent prune call does if backups are removed/added in the meantime.", + "method" : "GET", + "name" : "dryrun", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "prune-backups" : { + "description" : "Use these retention options instead of those from the storage configuration.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Either 'qemu' or 'lxc'. Only consider backups for guests of this type.", + "enum" : [ + "qemu", + "lxc" + ], + "optional" : 1, + "type" : "string" + }, + "vmid" : { + "description" : "Only consider backups for this guest.", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/storage/{storage}", + [ + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "ctime" : { + "description" : "Creation time of the backup (seconds since the UNIX epoch).", + "type" : "integer" + }, + "mark" : { + "description" : "Whether the backup would be kept or removed. For backups that don't use the standard naming scheme, it's 'protected'.", + "type" : "string" + }, + "type" : { + "description" : "One of 'qemu', 'lxc', 'openvz' or 'unknown'.", + "type" : "string" + }, + "vmid" : { + "description" : "The VM the backup belongs to.", + "optional" : 1, + "type" : "integer" + }, + "volid" : { + "description" : "Backup volume ID.", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, - "permissions" : { - "description" : "The user needs 'VM.Backup' permissions on the backed up guest ID, and 'Datastore.AllocateSpace' on the backup storage.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/vzdump/extractconfig", - "text" : "extractconfig" - } - ], - "info" : { - "POST" : { - "description" : "Create backup.", - "method" : "POST", - "name" : "vzdump", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "all" : { - "default" : 0, - "description" : "Backup all known guest systems on this host.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "bwlimit" : { - "default" : 0, - "description" : "Limit I/O bandwidth (KBytes per second).", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "compress" : { - "default" : "0", - "description" : "Compress dump file.", - "enum" : [ - "0", - "1", - "gzip", - "lzo" - ], - "optional" : 1, - "type" : "string" - }, - "dumpdir" : { - "description" : "Store resulting files to specified directory.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "exclude" : { - "description" : "Exclude specified guest systems (assumes --all)", - "format" : "pve-vmid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "exclude-path" : { - "description" : "Exclude certain files/directories (shell globs).", - "format" : "string-alist", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ionice" : { - "default" : 7, - "description" : "Set CFQ ionice priority.", - "maximum" : 8, - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - 8)" - }, - "lockwait" : { - "default" : 180, - "description" : "Maximal time to wait for the global lock (minutes).", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "mailnotification" : { - "default" : "always", - "description" : "Specify when to send an email", - "enum" : [ - "always", - "failure" - ], - "optional" : 1, - "type" : "string" - }, - "mailto" : { - "description" : "Comma-separated list of email addresses that should receive email notifications.", - "format" : "string-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "maxfiles" : { - "default" : 1, - "description" : "Maximal number of backup files per guest system.", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, - "mode" : { - "default" : "snapshot", - "description" : "Backup mode.", - "enum" : [ - "snapshot", - "suspend", - "stop" - ], - "optional" : 1, - "type" : "string" - }, - "node" : { - "description" : "Only run if executed on this node.", - "format" : "pve-node", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "pigz" : { - "default" : 0, - "description" : "Use pigz instead of gzip when N>0. N=1 uses half of cores, N>1 uses N as thread count.", - "optional" : 1, - "type" : "integer", - "typetext" : "" - }, - "quiet" : { - "default" : 0, - "description" : "Be quiet.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "remove" : { - "default" : 1, - "description" : "Remove old backup files if there are more than 'maxfiles' backup files.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "script" : { - "description" : "Use specified hook script.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "size" : { - "default" : 1024, - "description" : "Unused, will be removed in a future release.", - "minimum" : 500, - "optional" : 1, - "type" : "integer", - "typetext" : " (500 - N)" - }, - "stdexcludes" : { - "default" : 1, - "description" : "Exclude temporary files and logs.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "stdout" : { - "description" : "Write tar to stdout, not to a file.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "stop" : { - "default" : 0, - "description" : "Stop runnig backup jobs on this host.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "stopwait" : { - "default" : 10, - "description" : "Maximal time to wait until a guest system is stopped (minutes).", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "storage" : { - "description" : "Store resulting file to this storage.", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "tmpdir" : { - "description" : "Store temporary files to specified directory.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "The ID of the guest system you want to backup.", - "format" : "pve-vmid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "description" : "The user needs 'VM.Backup' permissions on any VM, and 'Datastore.AllocateSpace' on the backup storage. The 'maxfiles', 'tmpdir', 'dumpdir', 'script', 'bwlimit' and 'ionice' parameters are restricted to the 'root@pam' user.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/vzdump", - "text" : "vzdump" - }, - { - "children" : [ - { - "children" : [ + "leaf" : 1, + "path" : "/nodes/{node}/storage/{storage}/prunebackups", + "text" : "prunebackups" + }, { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete volume", + "method" : "DELETE", + "name" : "delete", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "delay" : { + "description" : "Time to wait for the task to finish. We return 'null' if the task finish within that time.", + "maximum" : 30, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 30)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "volume" : { + "description" : "Volume identifier", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "You need 'Datastore.Allocate' privilege on the storage (or 'Datastore.AllocateSpace' for backup volumes if you have VM.Backup privilege on the VM).", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "optional" : 1, + "type" : "string" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get volume attributes", + "method" : "GET", + "name" : "info", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "volume" : { + "description" : "Volume identifier", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "You need read access for the volume.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "format" : { + "description" : "Format identifier ('raw', 'qcow2', 'subvol', 'iso', 'tgz' ...)", + "type" : "string" + }, + "notes" : { + "description" : "Optional notes.", + "optional" : 1, + "type" : "string" + }, + "path" : { + "description" : "The Path", + "type" : "string" + }, + "size" : { + "description" : "Volume size in bytes.", + "renderer" : "bytes", + "type" : "integer" + }, + "used" : { + "description" : "Used space. Please note that most storage plugins do not report anything useful here.", + "renderer" : "bytes", + "type" : "integer" + } + }, + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Copy a volume. This is experimental code - do not use.", + "method" : "POST", + "name" : "copy", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "target" : { + "description" : "Target volume identifier", + "type" : "string", + "typetext" : "" + }, + "target_node" : { + "description" : "Target node. Default is local node.", + "format" : "pve-node", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "volume" : { + "description" : "Source volume identifier", + "type" : "string", + "typetext" : "" + } + } + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update volume attributes", + "method" : "PUT", + "name" : "updateattributes", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "notes" : { + "description" : "The new notes.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "volume" : { + "description" : "Volume identifier", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "You need read access for the volume.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/storage/{storage}/content/{volume}", + "text" : "{volume}" + } + ], "info" : { "GET" : { - "description" : "Read service properties", + "allowtoken" : 1, + "description" : "List storage content.", "method" : "GET", - "name" : "service_state", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { + "content" : { + "description" : "Only list content of this type.", + "format" : "pve-storage-content", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Service ID", + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "Only list images for this VM", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/storage/{storage}", + [ + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "ctime" : { + "description" : "Creation time (seconds since the UNIX Epoch).", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "format" : { + "description" : "Format identifier ('raw', 'qcow2', 'subvol', 'iso', 'tgz' ...)", + "type" : "string" + }, + "notes" : { + "description" : "Optional notes. If they contain multiple lines, only the first one is returned here.", + "optional" : 1, + "type" : "string" + }, + "parent" : { + "description" : "Volume identifier of parent (for linked cloned).", + "optional" : 1, + "type" : "string" + }, + "size" : { + "description" : "Volume size in bytes.", + "renderer" : "bytes", + "type" : "integer" + }, + "used" : { + "description" : "Used space. Please note that most storage plugins do not report anything useful here.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "verification" : { + "description" : "Last backup verification result, only useful for PBS storages.", + "optional" : 1, + "properties" : { + "state" : { + "description" : "Last backup verification state.", + "type" : "string" + }, + "upid" : { + "description" : "Last backup verification UPID.", + "type" : "string" + } + }, + "type" : "object" + }, + "vmid" : { + "description" : "Associated Owner VMID.", + "optional" : 1, + "type" : "integer" + }, + "volid" : { + "description" : "Volume identifier.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{volid}", + "rel" : "child" + } + ], + "type" : "array" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Allocate disk images.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "filename" : { + "description" : "The name of the file to create.", + "type" : "string", + "typetext" : "" + }, + "format" : { "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" + "raw", + "qcow2", + "subvol" ], + "optional" : 1, + "requires" : "size", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "size" : { + "description" : "Size in kilobyte (1024 bytes). Optional suffixes 'M' (megabyte, 1024K) and 'G' (gigabyte, 1024M)", + "pattern" : "\\d+[MG]?", "type" : "string" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "vmid" : { + "description" : "Specify owner VM", + "format" : "pve-vmid", + "minimum" : 1, + "type" : "integer", + "typetext" : " (1 - N)" } } }, "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Audit" + "Datastore.AllocateSpace" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "properties" : {}, - "type" : "object" + "description" : "Volume identifier", + "type" : "string" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/services/{service}/state", - "text" : "state" + "leaf" : 0, + "path" : "/nodes/{node}/storage/{storage}/content", + "text" : "content" }, { "info" : { - "POST" : { - "description" : "Start service.", - "method" : "POST", - "name" : "service_start", + "GET" : { + "allowtoken" : 1, + "description" : "Read storage status.", + "method" : "GET", + "name" : "read_status", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -21488,84 +34087,82 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Service ID", - "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" - ], - "type" : "string" + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Modify" - ] + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "object" } } }, "leaf" : 1, - "path" : "/nodes/{node}/services/{service}/start", - "text" : "start" + "path" : "/nodes/{node}/storage/{storage}/status", + "text" : "status" }, { "info" : { - "POST" : { - "description" : "Stop service.", - "method" : "POST", - "name" : "service_stop", + "GET" : { + "allowtoken" : 1, + "description" : "Read storage RRD statistics (returns PNG).", + "method" : "GET", + "name" : "rrd", "parameters" : { "additionalProperties" : 0, "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, + "ds" : { + "description" : "The list of datasources you want to display.", + "format" : "pve-configid-list", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Service ID", + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" + "hour", + "day", + "week", + "month", + "year" ], "type" : "string" } @@ -21574,57 +34171,70 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Modify" - ] + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "properties" : { + "filename" : { + "type" : "string" + } + }, + "type" : "object" } } }, "leaf" : 1, - "path" : "/nodes/{node}/services/{service}/stop", - "text" : "stop" + "path" : "/nodes/{node}/storage/{storage}/rrd", + "text" : "rrd" }, { "info" : { - "POST" : { - "description" : "Restart service.", - "method" : "POST", - "name" : "service_restart", + "GET" : { + "allowtoken" : 1, + "description" : "Read storage RRD statistics.", + "method" : "GET", + "name" : "rrddata", "parameters" : { "additionalProperties" : 0, "properties" : { + "cf" : { + "description" : "The RRD consolidation function", + "enum" : [ + "AVERAGE", + "MAX" + ], + "optional" : 1, + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Service ID", + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "timeframe" : { + "description" : "Specify the time frame you are interested in.", "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" + "hour", + "day", + "week", + "month", + "year" ], "type" : "string" } @@ -21633,1041 +34243,434 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Modify" - ] + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : {}, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/services/{service}/restart", - "text" : "restart" + "path" : "/nodes/{node}/storage/{storage}/rrddata", + "text" : "rrddata" }, { "info" : { "POST" : { - "description" : "Reload service.", + "allowtoken" : 1, + "description" : "Upload templates and ISO images.", "method" : "POST", - "name" : "service_reload", + "name" : "upload", "parameters" : { "additionalProperties" : 0, "properties" : { + "content" : { + "description" : "Content type.", + "format" : "pve-storage-content", + "type" : "string", + "typetext" : "" + }, + "filename" : { + "description" : "The name of the file to create.", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "service" : { - "description" : "Service ID", - "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" - ], - "type" : "string" + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "tmpfilename" : { + "description" : "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trusted port on localhost.", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Modify" + "Datastore.AllocateTemplate" ] ] }, "protected" : 1, - "proxyto" : "node", "returns" : { "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/services/{service}/reload", - "text" : "reload" - } - ], - "info" : { - "GET" : { - "description" : "Directory index", - "method" : "GET", - "name" : "srvcmdidx", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "service" : { - "description" : "Service ID", - "enum" : [ - "pveproxy", - "pvedaemon", - "spiceproxy", - "pvestatd", - "pve-cluster", - "corosync", - "pve-firewall", - "pvefw-logger", - "pve-ha-crm", - "pve-ha-lrm", - "sshd", - "syslog", - "cron", - "postfix", - "ksmtuned", - "systemd-timesyncd" - ], - "type" : "string" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] - }, - "returns" : { - "items" : { - "properties" : { - "subdir" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{subdir}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/services/{service}", - "text" : "{service}" - } - ], - "info" : { - "GET" : { - "description" : "Service list.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "links" : [ - { - "href" : "{service}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/services", - "text" : "services" - }, - { - "info" : { - "GET" : { - "description" : "Read subscription info.", - "method" : "GET", - "name" : "get", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "user" : "all" - }, - "proxyto" : "node", - "returns" : { - "type" : "object" - } - }, - "POST" : { - "description" : "Update subscription info.", - "method" : "POST", - "name" : "update", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "force" : { - "default" : 0, - "description" : "Always connect to server, even if we have up to date info inside local cache.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - }, - "PUT" : { - "description" : "Set subscription key.", - "method" : "PUT", - "name" : "set", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "key" : { - "description" : "Proxmox VE subscription key", - "maxLength" : 32, - "pattern" : "pve([124])([cbsp])-[0-9a-f]{10}", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/subscription", - "text" : "subscription" - }, - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Delete network device configuration", - "method" : "DELETE", - "name" : "delete_network", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "iface" : { - "description" : "Network interface name.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Read network device configuration", - "method" : "GET", - "name" : "network_config", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "iface" : { - "description" : "Network interface name.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] - }, - "proxyto" : "node", - "returns" : { - "properties" : { - "method" : { - "type" : "string" - }, - "type" : { - "type" : "string" - } - }, - "type" : "object" - } - }, - "PUT" : { - "description" : "Update network device configuration", - "method" : "PUT", - "name" : "update_network", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "address" : { - "description" : "IP address.", - "format" : "ipv4", - "optional" : 1, - "requires" : "netmask", - "type" : "string", - "typetext" : "" - }, - "address6" : { - "description" : "IP address.", - "format" : "ipv6", - "optional" : 1, - "requires" : "netmask6", - "type" : "string", - "typetext" : "" - }, - "autostart" : { - "description" : "Automatically start interface on boot.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "bond_mode" : { - "description" : "Bonding mode.", - "enum" : [ - "balance-rr", - "active-backup", - "balance-xor", - "broadcast", - "802.3ad", - "balance-tlb", - "balance-alb", - "balance-slb", - "lacp-balance-slb", - "lacp-balance-tcp" - ], - "optional" : 1, - "type" : "string" - }, - "bond_xmit_hash_policy" : { - "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.", - "enum" : [ - "layer2", - "layer2+3", - "layer3+4" - ], - "optional" : 1, - "type" : "string" - }, - "bridge_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", - "format" : "pve-iface-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "bridge_vlan_aware" : { - "description" : "Enable bridge vlan support.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "comments" : { - "description" : "Comments", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "comments6" : { - "description" : "Comments", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "gateway" : { - "description" : "Default gateway address.", - "format" : "ipv4", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "gateway6" : { - "description" : "Default ipv6 gateway address.", - "format" : "ipv6", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "iface" : { - "description" : "Network interface name.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "type" : "string", - "typetext" : "" - }, - "netmask" : { - "description" : "Network mask.", - "format" : "ipv4mask", - "optional" : 1, - "requires" : "address", - "type" : "string", - "typetext" : "" - }, - "netmask6" : { - "description" : "Network mask.", - "maximum" : 128, - "minimum" : 0, - "optional" : 1, - "requires" : "address6", - "type" : "integer", - "typetext" : " (0 - 128)" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "ovs_bonds" : { - "description" : "Specify the interfaces used by the bonding device.", - "format" : "pve-iface-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_bridge" : { - "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.", - "format" : "pve-iface", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_options" : { - "description" : "OVS interface options.", - "maxLength" : 1024, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", - "format" : "pve-iface-list", - "optional" : 1, + "path" : "/nodes/{node}/storage/{storage}/upload", + "text" : "upload" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "", + "method" : "GET", + "name" : "diridx", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", "typetext" : "" }, - "ovs_tag" : { - "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)", - "maximum" : 4094, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 4094)" - }, - "slaves" : { - "description" : "Specify the interfaces used by the bonding device.", - "format" : "pve-iface-list", - "optional" : 1, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", "type" : "string", "typetext" : "" - }, - "type" : { - "description" : "Network interface type", - "enum" : [ - "bridge", - "bond", - "eth", - "alias", - "vlan", - "OVSBridge", - "OVSBond", - "OVSPort", - "OVSIntPort", - "unknown" - ], - "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/nodes/{node}", + "/storage/{storage}", [ - "Sys.Modify" - ] + "Datastore.Audit", + "Datastore.AllocateSpace" + ], + "any", + 1 ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { - "type" : "null" + "items" : { + "properties" : { + "subdir" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" + } + ], + "type" : "array" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/network/{iface}", - "text" : "{iface}" + "leaf" : 0, + "path" : "/nodes/{node}/storage/{storage}", + "text" : "{storage}" } ], "info" : { - "DELETE" : { - "description" : "Revert network configuration changes.", - "method" : "DELETE", - "name" : "revert_network_changes", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - }, "GET" : { - "description" : "List available networks", + "allowtoken" : 1, + "description" : "Get status for all datastores.", "method" : "GET", "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Only list specific interface types.", - "enum" : [ - "bridge", - "bond", - "eth", - "alias", - "vlan", - "OVSBridge", - "OVSBond", - "OVSPort", - "OVSIntPort", - "any_bridge" - ], - "optional" : 1, - "type" : "string" - } - } - }, - "permissions" : { - "user" : "all" - }, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "links" : [ - { - "href" : "{iface}", - "rel" : "child" - } - ], - "type" : "array" - } - }, - "POST" : { - "description" : "Create network device configuration", - "method" : "POST", - "name" : "create_network", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "address" : { - "description" : "IP address.", - "format" : "ipv4", - "optional" : 1, - "requires" : "netmask", - "type" : "string", - "typetext" : "" - }, - "address6" : { - "description" : "IP address.", - "format" : "ipv6", + "content" : { + "description" : "Only list stores which support this content type.", + "format" : "pve-storage-content-list", "optional" : 1, - "requires" : "netmask6", "type" : "string", "typetext" : "" }, - "autostart" : { - "description" : "Automatically start interface on boot.", + "enabled" : { + "default" : 0, + "description" : "Only list stores which are enabled (not disabled in config).", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "bond_mode" : { - "description" : "Bonding mode.", - "enum" : [ - "balance-rr", - "active-backup", - "balance-xor", - "broadcast", - "802.3ad", - "balance-tlb", - "balance-alb", - "balance-slb", - "lacp-balance-slb", - "lacp-balance-tcp" - ], - "optional" : 1, - "type" : "string" - }, - "bond_xmit_hash_policy" : { - "description" : "Selects the transmit hash policy to use for slave selection in balance-xor and 802.3ad modes.", - "enum" : [ - "layer2", - "layer2+3", - "layer3+4" - ], - "optional" : 1, - "type" : "string" - }, - "bridge_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", - "format" : "pve-iface-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "bridge_vlan_aware" : { - "description" : "Enable bridge vlan support.", + "format" : { + "default" : 0, + "description" : "Include information about formats", "optional" : 1, "type" : "boolean", "typetext" : "" }, - "comments" : { - "description" : "Comments", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "comments6" : { - "description" : "Comments", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "gateway" : { - "description" : "Default gateway address.", - "format" : "ipv4", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "gateway6" : { - "description" : "Default ipv6 gateway address.", - "format" : "ipv6", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "iface" : { - "description" : "Network interface name.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "type" : "string", - "typetext" : "" - }, - "netmask" : { - "description" : "Network mask.", - "format" : "ipv4mask", - "optional" : 1, - "requires" : "address", - "type" : "string", - "typetext" : "" - }, - "netmask6" : { - "description" : "Network mask.", - "maximum" : 128, - "minimum" : 0, - "optional" : 1, - "requires" : "address6", - "type" : "integer", - "typetext" : " (0 - 128)" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "ovs_bonds" : { - "description" : "Specify the interfaces used by the bonding device.", - "format" : "pve-iface-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_bridge" : { - "description" : "The OVS bridge associated with a OVS port. This is required when you create an OVS port.", - "format" : "pve-iface", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_options" : { - "description" : "OVS interface options.", - "maxLength" : 1024, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "ovs_ports" : { - "description" : "Specify the iterfaces you want to add to your bridge.", - "format" : "pve-iface-list", + "storage" : { + "description" : "Only list status for specified storage", + "format" : "pve-storage-id", "optional" : 1, "type" : "string", "typetext" : "" }, - "ovs_tag" : { - "description" : "Specify a VLan tag (used by OVSPort, OVSIntPort, OVSBond)", - "maximum" : 4094, - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - 4094)" - }, - "slaves" : { - "description" : "Specify the interfaces used by the bonding device.", - "format" : "pve-iface-list", + "target" : { + "description" : "If target is different to 'node', we only lists shared storages which content is accessible on this 'node' and the specified 'target' node.", + "format" : "pve-node", "optional" : 1, "type" : "string", "typetext" : "" - }, - "type" : { - "description" : "Network interface type", - "enum" : [ - "bridge", - "bond", - "eth", - "alias", - "vlan", - "OVSBridge", - "OVSBond", - "OVSPort", - "OVSIntPort", - "unknown" - ], - "type" : "string" } } }, "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] + "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/'", + "user" : "all" }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "items" : { + "properties" : { + "active" : { + "description" : "Set when storage is accessible.", + "optional" : 1, + "type" : "boolean" + }, + "avail" : { + "description" : "Available storage space in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "content" : { + "description" : "Allowed storage content types.", + "format" : "pve-storage-content-list", + "type" : "string" + }, + "enabled" : { + "description" : "Set when storage is enabled (not disabled).", + "optional" : 1, + "type" : "boolean" + }, + "shared" : { + "description" : "Shared flag from storage configuration.", + "optional" : 1, + "type" : "boolean" + }, + "storage" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string" + }, + "total" : { + "description" : "Total storage space in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "type" : { + "description" : "Storage type.", + "type" : "string" + }, + "used" : { + "description" : "Used storage space in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "used_fraction" : { + "description" : "Used fraction (used/total).", + "optional" : 1, + "renderer" : "fraction_as_percentage", + "type" : "number" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{storage}", + "rel" : "child" + } + ], + "type" : "array" } } }, "leaf" : 0, - "path" : "/nodes/{node}/network", - "text" : "network" + "path" : "/nodes/{node}/storage", + "text" : "storage" }, { "children" : [ { - "children" : [ - { - "info" : { - "GET" : { - "description" : "Read task log.", - "method" : "GET", - "name" : "read_task_log", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "limit" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "start" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "upid" : { - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "description" : "The user needs 'Sys.Audit' permissions on '/nodes/' if the task does not belong to him.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List LVM Volume Groups", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "children" : { "items" : { "properties" : { - "n" : { - "description" : "Line number", + "children" : { + "description" : "The underlying physical volumes", + "items" : { + "properties" : { + "free" : { + "description" : "The free bytes in the physical volume", + "type" : "integer" + }, + "leaf" : { + "type" : "boolean" + }, + "name" : { + "description" : "The name of the physical volume", + "type" : "string" + }, + "size" : { + "description" : "The size of the physical volume in bytes", + "type" : "integer" + } + }, + "type" : "object" + }, + "optional" : 1, + "type" : "array" + }, + "free" : { + "description" : "The free bytes in the volume group", "type" : "integer" }, - "t" : { - "description" : "Line text", - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/tasks/{upid}/log", - "text" : "log" - }, - { - "info" : { - "GET" : { - "description" : "Read task status.", - "method" : "GET", - "name" : "read_task_status", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "upid" : { - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "description" : "The user needs 'Sys.Audit' permissions on '/nodes/' if the task does not belong to him.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "properties" : { - "pid" : { - "type" : "integer" + "leaf" : { + "type" : "boolean" + }, + "name" : { + "description" : "The name of the volume group", + "type" : "string" + }, + "size" : { + "description" : "The size of the volume group in bytes", + "type" : "integer" + } }, - "status" : { - "enum" : [ - "running", - "stopped" - ], - "type" : "string" - } + "type" : "object" }, - "type" : "object" + "type" : "array" + }, + "leaf" : { + "type" : "boolean" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/tasks/{upid}/status", - "text" : "status" - } - ], - "info" : { - "DELETE" : { - "description" : "Stop a task.", - "method" : "DELETE", - "name" : "stop_task", + }, + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create an LVM Volume Group", + "method" : "POST", + "name" : "create", "parameters" : { "additionalProperties" : 0, "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", + "add_storage" : { + "default" : 0, + "description" : "Configure storage using the Volume Group", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "device" : { + "description" : "The block device you want to create the volume group on", "type" : "string", "typetext" : "" }, - "upid" : { + "name" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", "type" : "string", "typetext" : "" } } }, "permissions" : { - "description" : "The user needs 'Sys.Modify' permissions on '/nodes/' if the task does not belong to him.", - "user" : "all" + "check" : [ + "perm", + "/", + [ + "Sys.Modify", + "Datastore.Allocate" + ] + ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "type" : "string" } - }, + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/disks/lvm", + "text" : "lvm" + }, + { + "info" : { "GET" : { - "description" : "", + "allowtoken" : 1, + "description" : "List LVM thinpools", "method" : "GET", - "name" : "upid_index", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -22676,118 +34679,114 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "upid" : { - "type" : "string", - "typetext" : "" } } }, "permissions" : { - "user" : "all" + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] }, + "protected" : 1, + "proxyto" : "node", "returns" : { "items" : { - "properties" : {}, + "properties" : { + "lv" : { + "description" : "The name of the thinpool.", + "type" : "string" + }, + "lv_size" : { + "description" : "The size of the thinpool in bytes.", + "type" : "integer" + }, + "metadata_size" : { + "description" : "The size of the metadata lv in bytes.", + "type" : "integer" + }, + "metadata_used" : { + "description" : "The used bytes of the metadata lv.", + "type" : "integer" + }, + "used" : { + "description" : "The used bytes of the thinpool.", + "type" : "integer" + } + }, "type" : "object" }, - "links" : [ - { - "href" : "{name}", - "rel" : "child" - } - ], "type" : "array" } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/tasks/{upid}", - "text" : "{upid}" - } - ], - "info" : { - "GET" : { - "description" : "Read task list for one node (finished tasks).", - "method" : "GET", - "name" : "node_tasks", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "errors" : { - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "limit" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "start" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create an LVM thinpool", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "add_storage" : { + "default" : 0, + "description" : "Configure storage using the thinpool.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "device" : { + "description" : "The block device you want to create the thinpool on.", + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } }, - "userfilter" : { - "optional" : 1, - "type" : "string", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify", + "Datastore.Allocate" + ] + ] }, - "vmid" : { - "description" : "Only list tasks for this VM.", - "format" : "pve-vmid", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" } } }, - "permissions" : { - "description" : "List task associated with the current user, or all task the user has 'Sys.Audit' permissions on /nodes/ (the the task runs on).", - "user" : "all" - }, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : { - "upid" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{upid}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/tasks", - "text" : "tasks" - }, - { - "children" : [ + "leaf" : 1, + "path" : "/nodes/{node}/disks/lvmthin", + "text" : "lvmthin" + }, { "info" : { "GET" : { - "description" : "Scan zfs pool list on local node.", + "allowtoken" : 1, + "description" : "PVE Managed Directory storages.", "method" : "GET", - "name" : "zfsscan", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -22802,10 +34801,13 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/storage", + "/", [ - "Datastore.Allocate" - ] + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 ] }, "protected" : 1, @@ -22813,7 +34815,24 @@ var pveapi = [ "returns" : { "items" : { "properties" : { - "pool" : { + "device" : { + "description" : "The mounted device.", + "type" : "string" + }, + "options" : { + "description" : "The mount options.", + "type" : "string" + }, + "path" : { + "description" : "The mount path.", + "type" : "string" + }, + "type" : { + "description" : "The filesystem type.", + "type" : "string" + }, + "unitfile" : { + "description" : "The path of the mount unit.", "type" : "string" } }, @@ -22821,18 +34840,190 @@ var pveapi = [ }, "type" : "array" } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a Filesystem on an unused disk. Will be mounted under '/mnt/pve/NAME'.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "add_storage" : { + "default" : 0, + "description" : "Configure storage using the directory.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "device" : { + "description" : "The block device you want to create the filesystem on.", + "type" : "string", + "typetext" : "" + }, + "filesystem" : { + "default" : "ext4", + "description" : "The desired filesystem.", + "enum" : [ + "ext4", + "xfs" + ], + "optional" : 1, + "type" : "string" + }, + "name" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify", + "Datastore.Allocate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/zfs", - "text" : "zfs" + "path" : "/nodes/{node}/disks/directory", + "text" : "directory" }, { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get details about a zpool.", + "method" : "GET", + "name" : "detail", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "name" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "action" : { + "description" : "Information about the recommended action to fix the state.", + "optional" : 1, + "type" : "string" + }, + "children" : { + "description" : "The pool configuration information, including the vdevs for each section (e.g. spares, cache), may be nested.", + "items" : { + "properties" : { + "cksum" : { + "optional" : 1, + "type" : "number" + }, + "msg" : { + "description" : "An optional message about the vdev.", + "type" : "string" + }, + "name" : { + "description" : "The name of the vdev or section.", + "type" : "string" + }, + "read" : { + "optional" : 1, + "type" : "number" + }, + "state" : { + "description" : "The state of the vdev.", + "optional" : 1, + "type" : "string" + }, + "write" : { + "optional" : 1, + "type" : "number" + } + }, + "type" : "object" + }, + "type" : "array" + }, + "errors" : { + "description" : "Information about the errors on the zpool.", + "type" : "string" + }, + "name" : { + "description" : "The name of the zpool.", + "type" : "string" + }, + "scan" : { + "description" : "Information about the last/current scrub.", + "type" : "string" + }, + "state" : { + "description" : "The state of the zpool.", + "type" : "string" + }, + "status" : { + "description" : "Information about the state of the zpool.", + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/disks/zfs/{name}", + "text" : "{name}" + } + ], "info" : { "GET" : { - "description" : "Scan remote NFS server.", + "allowtoken" : 1, + "description" : "List Zpools.", "method" : "GET", - "name" : "nfsscan", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -22841,21 +35032,19 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "server" : { - "format" : "pve-storage-server", - "type" : "string", - "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/storage", + "/", [ - "Datastore.Allocate" - ] + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 ] }, "protected" : 1, @@ -22863,67 +35052,181 @@ var pveapi = [ "returns" : { "items" : { "properties" : { - "options" : { + "alloc" : { + "description" : "", + "type" : "integer" + }, + "dedup" : { + "description" : "", + "type" : "number" + }, + "frag" : { + "description" : "", + "type" : "integer" + }, + "free" : { + "description" : "", + "type" : "integer" + }, + "health" : { + "description" : "", "type" : "string" }, - "path" : { + "name" : { + "description" : "", "type" : "string" + }, + "size" : { + "description" : "", + "type" : "integer" } }, "type" : "object" }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], "type" : "array" } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create a ZFS pool.", + "method" : "POST", + "name" : "create", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "add_storage" : { + "default" : 0, + "description" : "Configure storage using the zpool.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ashift" : { + "default" : 12, + "description" : "Pool sector size exponent.", + "maximum" : 16, + "minimum" : 9, + "optional" : 1, + "type" : "integer", + "typetext" : " (9 - 16)" + }, + "compression" : { + "default" : "on", + "description" : "The compression algorithm to use.", + "enum" : [ + "on", + "off", + "gzip", + "lz4", + "lzjb", + "zle" + ], + "optional" : 1, + "type" : "string" + }, + "devices" : { + "description" : "The block devices you want to create the zpool on.", + "format" : "string-list", + "type" : "string", + "typetext" : "" + }, + "name" : { + "description" : "The storage identifier.", + "format" : "pve-storage-id", + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "raidlevel" : { + "description" : "The RAID level to use.", + "enum" : [ + "single", + "mirror", + "raid10", + "raidz", + "raidz2", + "raidz3" + ], + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify", + "Datastore.Allocate" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" + } } }, - "leaf" : 1, - "path" : "/nodes/{node}/scan/nfs", - "text" : "nfs" + "leaf" : 0, + "path" : "/nodes/{node}/disks/zfs", + "text" : "zfs" }, { "info" : { "GET" : { - "description" : "Scan remote CIFS server.", + "allowtoken" : 1, + "description" : "List local disks.", "method" : "GET", - "name" : "cifsscan", + "name" : "list", "parameters" : { "additionalProperties" : 0, "properties" : { - "domain" : { - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "password" : { + "skipsmart" : { + "default" : 0, + "description" : "Skip smart checks.", "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "server" : { - "format" : "pve-storage-server", - "type" : "string", - "typetext" : "" + "type" : "boolean", + "typetext" : "" }, - "username" : { + "type" : { + "description" : "Only list specific types of disks.", + "enum" : [ + "unused", + "journal_disks" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/storage", + "/", [ - "Datastore.Allocate" - ] + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 ] }, "protected" : 1, @@ -22931,10 +35234,41 @@ var pveapi = [ "returns" : { "items" : { "properties" : { - "description" : { + "devpath" : { + "description" : "The device path", "type" : "string" }, - "share" : { + "gpt" : { + "type" : "boolean" + }, + "health" : { + "optional" : 1, + "type" : "string" + }, + "model" : { + "optional" : 1, + "type" : "string" + }, + "osdid" : { + "type" : "integer" + }, + "serial" : { + "optional" : 1, + "type" : "string" + }, + "size" : { + "type" : "integer" + }, + "used" : { + "optional" : 1, + "type" : "string" + }, + "vendor" : { + "optional" : 1, + "type" : "string" + }, + "wwn" : { + "optional" : 1, "type" : "string" } }, @@ -22945,118 +35279,178 @@ var pveapi = [ } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/cifs", - "text" : "cifs" + "path" : "/nodes/{node}/disks/list", + "text" : "list" }, { "info" : { "GET" : { - "description" : "Scan remote GlusterFS server.", + "allowtoken" : 1, + "description" : "Get SMART Health of a disk.", "method" : "GET", - "name" : "glusterfsscan", + "name" : "smart", "parameters" : { "additionalProperties" : 0, "properties" : { + "disk" : { + "description" : "Block device name", + "pattern" : "^/dev/[a-zA-Z0-9\\/]+$", + "type" : "string" + }, + "healthonly" : { + "description" : "If true returns only the health status", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "server" : { - "format" : "pve-storage-server", - "type" : "string", - "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/storage", + "/", [ - "Datastore.Allocate" - ] + "Sys.Audit", + "Datastore.Audit" + ], + "any", + 1 ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "volname" : { - "type" : "string" - } + "properties" : { + "attributes" : { + "optional" : 1, + "type" : "array" }, - "type" : "object" + "health" : { + "type" : "string" + }, + "text" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "optional" : 1, + "type" : "string" + } }, - "type" : "array" + "type" : "object" } } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/glusterfs", - "text" : "glusterfs" + "path" : "/nodes/{node}/disks/smart", + "text" : "smart" }, { "info" : { - "GET" : { - "description" : "Scan remote iSCSI server.", - "method" : "GET", - "name" : "iscsiscan", + "POST" : { + "allowtoken" : 1, + "description" : "Initialize Disk with GPT", + "method" : "POST", + "name" : "initgpt", "parameters" : { "additionalProperties" : 0, "properties" : { + "disk" : { + "description" : "Block device name", + "pattern" : "^/dev/[a-zA-Z0-9\\/]+$", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "portal" : { - "format" : "pve-storage-portal-dns", - "type" : "string", - "typetext" : "" + "uuid" : { + "description" : "UUID for the GPT table", + "maxLength" : 36, + "optional" : 1, + "pattern" : "[a-fA-F0-9\\-]+", + "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/storage", + "/", [ - "Datastore.Allocate" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "portal" : { - "type" : "string" - }, - "target" : { - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/iscsi", - "text" : "iscsi" - }, + "path" : "/nodes/{node}/disks/initgpt", + "text" : "initgpt" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Node index.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/disks", + "text" : "disks" + }, + { + "children" : [ { "info" : { "GET" : { - "description" : "List local LVM volume groups.", + "allowtoken" : 1, + "description" : "List available updates.", "method" : "GET", - "name" : "lvmscan", + "name" : "list_updates", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -23071,9 +35465,9 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/storage", + "/nodes/{node}", [ - "Datastore.Allocate" + "Sys.Modify" ] ] }, @@ -23081,27 +35475,17 @@ var pveapi = [ "proxyto" : "node", "returns" : { "items" : { - "properties" : { - "vg" : { - "type" : "string" - } - }, + "properties" : {}, "type" : "object" }, "type" : "array" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/scan/lvm", - "text" : "lvm" - }, - { - "info" : { - "GET" : { - "description" : "List local LVM Thin Pools.", - "method" : "GET", - "name" : "lvmthinscan", + }, + "POST" : { + "allowtoken" : 1, + "description" : "This is used to resynchronize the package index files from their sources (apt-get update).", + "method" : "POST", + "name" : "update_database", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -23111,310 +35495,192 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "vg" : { - "maxLength" : 100, - "pattern" : "[a-zA-Z0-9\\.\\+\\_][a-zA-Z0-9\\.\\+\\_\\-]+", - "type" : "string" + "notify" : { + "default" : 0, + "description" : "Send notification mail about new packages (to email address specified for user 'root@pam').", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "quiet" : { + "default" : 0, + "description" : "Only produces output suitable for logging, omitting progress indicators.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/storage", + "/nodes/{node}", [ - "Datastore.Allocate" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "lv" : { - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/lvmthin", - "text" : "lvmthin" + "path" : "/nodes/{node}/apt/update", + "text" : "update" }, { "info" : { "GET" : { - "description" : "List local USB devices.", + "allowtoken" : 1, + "description" : "Get package changelogs.", "method" : "GET", - "name" : "usbscan", + "name" : "changelog", "parameters" : { "additionalProperties" : 0, "properties" : { + "name" : { + "description" : "Package name.", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "version" : { + "description" : "Package version.", + "optional" : 1, + "type" : "string", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ "Sys.Modify" ] ] }, - "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "busnum" : { - "type" : "integer" - }, - "class" : { - "type" : "integer" - }, - "devnum" : { - "type" : "integer" - }, - "level" : { - "type" : "integer" - }, - "manufacturer" : { - "optional" : 1, - "type" : "string" - }, - "port" : { - "type" : "integer" - }, - "prodid" : { - "type" : "string" - }, - "product" : { - "optional" : 1, - "type" : "string" - }, - "serial" : { - "optional" : 1, - "type" : "string" - }, - "speed" : { - "type" : "string" - }, - "usbpath" : { - "optional" : 1, - "type" : "string" - }, - "vendid" : { - "type" : "string" - } - }, - "type" : "object" - }, - "type" : "array" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/scan/usb", - "text" : "usb" - } - ], - "info" : { - "GET" : { - "description" : "Index of available scan methods", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "user" : "all" - }, - "returns" : { - "items" : { - "properties" : { - "method" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{method}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/scan", - "text" : "scan" - }, - { - "children" : [ + "path" : "/nodes/{node}/apt/changelog", + "text" : "changelog" + }, { - "children" : [ - { - "children" : [ - { - "info" : { - "DELETE" : { - "description" : "Delete volume", - "method" : "DELETE", - "name" : "delete", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "volume" : { - "description" : "Volume identifier", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "description" : "You need 'Datastore.Allocate' privilege on the storage (or 'Datastore.AllocateSpace' for backup volumes if you have VM.Backup privilege on the VM).", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } - }, - "GET" : { - "description" : "Get volume attributes", - "method" : "GET", - "name" : "info", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "volume" : { - "description" : "Volume identifier", - "type" : "string", - "typetext" : "" - } - } - }, - "permissions" : { - "description" : "You need read access for the volume.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "object" - } - }, - "POST" : { - "description" : "Copy a volume. This is experimental code - do not use.", - "method" : "POST", - "name" : "copy", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "target" : { - "description" : "Target volume identifier", - "type" : "string", - "typetext" : "" - }, - "target_node" : { - "description" : "Target node. Default is local node.", - "format" : "pve-node", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "volume" : { - "description" : "Source volume identifier", - "type" : "string", - "typetext" : "" - } - } - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/storage/{storage}/content/{volume}", - "text" : "{volume}" + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get package information for important Proxmox packages.", + "method" : "GET", + "name" : "versions", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } } - ], + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : {}, + "type" : "object" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/apt/versions", + "text" : "versions" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Directory index for apt (Advanced Package Tool).", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "returns" : { + "items" : { + "properties" : { + "id" : { + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{id}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/nodes/{node}/apt", + "text" : "apt" + }, + { + "children" : [ + { + "children" : [ + { "info" : { - "GET" : { - "description" : "List storage content.", - "method" : "GET", - "name" : "index", + "DELETE" : { + "allowtoken" : 1, + "description" : "Delete rule.", + "method" : "DELETE", + "name" : "delete_rule", "parameters" : { "additionalProperties" : 0, "properties" : { - "content" : { - "description" : "Only list content of this type.", - "format" : "pve-storage-content", + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, "optional" : 1, "type" : "string", "typetext" : "" @@ -23425,382 +35691,314 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "Only list images for this VM", - "format" : "pve-vmid", - "minimum" : 1, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (0 - N)" } } }, "permissions" : { "check" : [ "perm", - "/storage/{storage}", + "/nodes/{node}", [ - "Datastore.Audit", - "Datastore.AllocateSpace" - ], - "any", - 1 + "Sys.Modify" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "volid" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{volid}", - "rel" : "child" - } - ], - "type" : "array" + "type" : "null" } }, - "POST" : { - "description" : "Allocate disk images.", - "method" : "POST", - "name" : "create", + "GET" : { + "allowtoken" : 1, + "description" : "Get single rule data.", + "method" : "GET", + "name" : "get_rule", "parameters" : { "additionalProperties" : 0, "properties" : { - "filename" : { - "description" : "The name of the file to create.", - "type" : "string", - "typetext" : "" - }, - "format" : { - "enum" : [ - "raw", - "qcow2", - "subvol" - ], - "optional" : 1, - "requires" : "size", - "type" : "string" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "size" : { - "description" : "Size in kilobyte (1024 bytes). Optional suffixes 'M' (megabyte, 1024K) and 'G' (gigabyte, 1024M)", - "pattern" : "\\d+[MG]?", - "type" : "string" - }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "type" : "string", - "typetext" : "" - }, - "vmid" : { - "description" : "Specify owner VM", - "format" : "pve-vmid", - "minimum" : 1, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, "type" : "integer", - "typetext" : " (1 - N)" + "typetext" : " (0 - N)" } } }, "permissions" : { "check" : [ "perm", - "/storage/{storage}", + "/nodes/{node}", [ - "Datastore.AllocateSpace" + "Sys.Audit" ] ] }, - "protected" : 1, "proxyto" : "node", "returns" : { - "description" : "Volume identifier", - "type" : "string" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/storage/{storage}/content", - "text" : "content" - }, - { - "info" : { - "GET" : { - "description" : "Read storage status.", - "method" : "GET", - "name" : "read_status", - "parameters" : { - "additionalProperties" : 0, "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "action" : { + "type" : "string" }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "type" : "string", - "typetext" : "" + "comment" : { + "optional" : 1, + "type" : "string" + }, + "dest" : { + "optional" : 1, + "type" : "string" + }, + "dport" : { + "optional" : 1, + "type" : "string" + }, + "enable" : { + "optional" : 1, + "type" : "integer" + }, + "icmp-type" : { + "optional" : 1, + "type" : "string" + }, + "iface" : { + "optional" : 1, + "type" : "string" + }, + "ipversion" : { + "optional" : 1, + "type" : "integer" + }, + "log" : { + "description" : "Log level for firewall rule", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "optional" : 1, + "type" : "string" + }, + "pos" : { + "type" : "integer" + }, + "proto" : { + "optional" : 1, + "type" : "string" + }, + "source" : { + "optional" : 1, + "type" : "string" + }, + "sport" : { + "optional" : 1, + "type" : "string" + }, + "type" : { + "type" : "string" } - } - }, - "permissions" : { - "check" : [ - "perm", - "/storage/{storage}", - [ - "Datastore.Audit", - "Datastore.AllocateSpace" - ], - "any", - 1 - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "properties" : {}, + }, "type" : "object" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/storage/{storage}/status", - "text" : "status" - }, - { - "info" : { - "GET" : { - "description" : "Read storage RRD statistics (returns PNG).", - "method" : "GET", - "name" : "rrd", + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Modify rule data.", + "method" : "PUT", + "name" : "update_rule", "parameters" : { "additionalProperties" : 0, "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, "optional" : 1, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", "type" : "string" }, - "ds" : { - "description" : "The list of datasources you want to display.", + "comment" : { + "description" : "Descriptive comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "delete" : { + "description" : "A list of settings you want to delete.", "format" : "pve-configid-list", + "optional" : 1, "type" : "string", "typetext" : "" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, "type" : "string", "typetext" : "" }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, "type" : "string", "typetext" : "" }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", - "enum" : [ - "hour", - "day", - "week", - "month", - "year" - ], - "type" : "string" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/storage/{storage}", - [ - "Datastore.Audit", - "Datastore.AllocateSpace" - ], - "any", - 1 - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "properties" : { - "filename" : { - "type" : "string" - } - }, - "type" : "object" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/storage/{storage}/rrd", - "text" : "rrd" - }, - { - "info" : { - "GET" : { - "description" : "Read storage RRD statistics.", - "method" : "GET", - "name" : "rrddata", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "cf" : { - "description" : "The RRD consolidation function", - "enum" : [ - "AVERAGE", - "MAX" - ], + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", "optional" : 1, - "type" : "string" + "type" : "string", + "typetext" : "" }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, "type" : "string", "typetext" : "" }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, "type" : "string", "typetext" : "" }, - "timeframe" : { - "description" : "Specify the time frame you are interested in.", + "log" : { + "description" : "Log level for firewall rule.", "enum" : [ - "hour", - "day", - "week", - "month", - "year" + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" ], + "optional" : 1, "type" : "string" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/storage/{storage}", - [ - "Datastore.Audit", - "Datastore.AllocateSpace" - ], - "any", - 1 - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/storage/{storage}/rrddata", - "text" : "rrddata" - }, - { - "info" : { - "POST" : { - "description" : "Upload templates and ISO images.", - "method" : "POST", - "name" : "upload", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "content" : { - "description" : "Content type.", - "format" : "pve-storage-content", - "type" : "string", - "typetext" : "" }, - "filename" : { - "description" : "The name of the file to create.", + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, + "optional" : 1, "type" : "string", "typetext" : "" }, + "moveto" : { + "description" : "Move rule to new position . Other arguments are ignored.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", + "optional" : 1, "type" : "string", "typetext" : "" }, - "tmpfilename" : { - "description" : "The source file name. This parameter is usually set by the REST handler. You can only overwrite it when connecting to the trustet port on localhost.", + "type" : { + "description" : "Rule type.", + "enum" : [ + "in", + "out", + "group" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" } } }, "permissions" : { "check" : [ "perm", - "/storage/{storage}", + "/nodes/{node}", [ - "Datastore.AllocateTemplate" + "Sys.Modify" ] ] }, "protected" : 1, + "proxyto" : "node", "returns" : { - "type" : "string" + "type" : "null" } } }, "leaf" : 1, - "path" : "/nodes/{node}/storage/{storage}/upload", - "text" : "upload" + "path" : "/nodes/{node}/firewall/rules/{pos}", + "text" : "{pos}" } ], "info" : { "GET" : { - "description" : "", + "allowtoken" : 1, + "description" : "List rules.", "method" : "GET", - "name" : "diridx", + "name" : "get_rules", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -23809,139 +36007,199 @@ var pveapi = [ "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "storage" : { - "description" : "The storage identifier.", - "format" : "pve-storage-id", - "type" : "string", - "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/storage/{storage}", + "/nodes/{node}", [ - "Datastore.Audit", - "Datastore.AllocateSpace" - ], - "any", - 1 + "Sys.Audit" + ] ] }, + "proxyto" : "node", "returns" : { "items" : { "properties" : { - "subdir" : { - "type" : "string" + "pos" : { + "type" : "integer" } }, "type" : "object" }, "links" : [ { - "href" : "{subdir}", + "href" : "{pos}", "rel" : "child" } ], "type" : "array" } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/storage/{storage}", - "text" : "{storage}" - } - ], - "info" : { - "GET" : { - "description" : "Get status for all datastores.", - "method" : "GET", - "name" : "index", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "content" : { - "description" : "Only list stores which support this content type.", - "format" : "pve-storage-content-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enabled" : { - "default" : 0, - "description" : "Only list stores which are enabled (not disabled in config).", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "format" : { - "default" : 0, - "description" : "Include information about formats", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + }, + "POST" : { + "allowtoken" : 1, + "description" : "Create new rule.", + "method" : "POST", + "name" : "create_rule", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", + "maxLength" : 20, + "minLength" : 2, + "optional" : 0, + "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", + "type" : "string" + }, + "comment" : { + "description" : "Descriptive comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dest" : { + "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "dport" : { + "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-dport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "description" : "Flag to enable/disable a rule.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "icmp-type" : { + "description" : "Specify icmp-type. Only valid if proto equals 'icmp'.", + "format" : "pve-fw-icmp-type-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "iface" : { + "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", + "format" : "pve-iface", + "maxLength" : 20, + "minLength" : 2, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "log" : { + "description" : "Log level for firewall rule.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "macro" : { + "description" : "Use predefined standard macro.", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "pos" : { + "description" : "Update rule at position .", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "proto" : { + "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", + "format" : "pve-fw-protocol-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "source" : { + "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", + "format" : "pve-fw-addr-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "sport" : { + "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", + "format" : "pve-fw-sport-spec", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "type" : { + "description" : "Rule type.", + "enum" : [ + "in", + "out", + "group" + ], + "optional" : 0, + "type" : "string" + } + } }, - "storage" : { - "description" : "Only list status for specified storage", - "format" : "pve-storage-id", - "optional" : 1, - "type" : "string", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] }, - "target" : { - "description" : "If target is different to 'node', we only lists shared storages which content is accessible on this 'node' and the specified 'target' node.", - "format" : "pve-node", - "optional" : 1, - "type" : "string", - "typetext" : "" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" } } }, - "permissions" : { - "description" : "Only list entries where you have 'Datastore.Audit' or 'Datastore.AllocateSpace' permissions on '/storage/'", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : { - "storage" : { - "type" : "string" - } - }, - "type" : "object" - }, - "links" : [ - { - "href" : "{storage}", - "rel" : "child" - } - ], - "type" : "array" - } - } - }, - "leaf" : 0, - "path" : "/nodes/{node}/storage", - "text" : "storage" - }, - { - "children" : [ + "leaf" : 0, + "path" : "/nodes/{node}/firewall/rules", + "text" : "rules" + }, { "info" : { "GET" : { - "description" : "List local disks.", + "allowtoken" : 1, + "description" : "Get host firewall options.", "method" : "GET", - "name" : "list", + "name" : "get_options", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -23956,149 +36214,372 @@ var pveapi = [ "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Audit" + ] ] }, - "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "devpath" : { - "description" : "The device path", - "type" : "string" - }, - "gpt" : { - "type" : "boolean" - }, - "health" : { - "optional" : 1, - "type" : "string" - }, - "model" : { - "optional" : 1, - "type" : "string" - }, - "osdid" : { - "type" : "integer" - }, - "serial" : { - "optional" : 1, - "type" : "string" - }, - "size" : { - "type" : "integer" - }, - "used" : { - "optional" : 1, - "type" : "string" - }, - "vendor" : { - "optional" : 1, - "type" : "string" - }, - "wwn" : { - "optional" : 1, - "type" : "string" - } + "properties" : { + "enable" : { + "description" : "Enable host firewall rules.", + "optional" : 1, + "type" : "boolean" }, - "type" : "object" + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_nf_conntrack" : { + "default" : 0, + "description" : "Enable logging of conntrack information.", + "optional" : 1, + "type" : "boolean" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean" + }, + "nf_conntrack_allow_invalid" : { + "default" : 0, + "description" : "Allow invalid packets on connection tracking.", + "optional" : 1, + "type" : "boolean" + }, + "nf_conntrack_max" : { + "default" : 262144, + "description" : "Maximum number of tracked connections.", + "minimum" : 32768, + "optional" : 1, + "type" : "integer" + }, + "nf_conntrack_tcp_timeout_established" : { + "default" : 432000, + "description" : "Conntrack established timeout.", + "minimum" : 7875, + "optional" : 1, + "type" : "integer" + }, + "nf_conntrack_tcp_timeout_syn_recv" : { + "default" : 60, + "description" : "Conntrack syn recv timeout.", + "maximum" : 60, + "minimum" : 30, + "optional" : 1, + "type" : "integer" + }, + "nosmurfs" : { + "description" : "Enable SMURFS filter.", + "optional" : 1, + "type" : "boolean" + }, + "protection_synflood" : { + "default" : 0, + "description" : "Enable synflood protection", + "optional" : 1, + "type" : "boolean" + }, + "protection_synflood_burst" : { + "default" : 1000, + "description" : "Synflood protection rate burst by ip src.", + "optional" : 1, + "type" : "integer" + }, + "protection_synflood_rate" : { + "default" : 200, + "description" : "Synflood protection rate syn/sec by ip src.", + "optional" : 1, + "type" : "integer" + }, + "smurf_log_level" : { + "description" : "Log level for SMURFS filter.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "tcp_flags_log_level" : { + "description" : "Log level for illegal tcp flags filter.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "tcpflags" : { + "default" : 0, + "description" : "Filter illegal combinations of TCP flags.", + "optional" : 1, + "type" : "boolean" + } }, - "type" : "array" + "type" : "object" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/disks/list", - "text" : "list" - }, - { - "info" : { - "GET" : { - "description" : "Get SMART Health of a disk.", - "method" : "GET", - "name" : "smart", + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set Firewall options.", + "method" : "PUT", + "name" : "set_options", "parameters" : { "additionalProperties" : 0, "properties" : { - "disk" : { - "description" : "Block device name", - "pattern" : "^/dev/[a-zA-Z0-9\\/]+$", + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "enable" : { + "description" : "Enable host firewall rules.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "log_level_in" : { + "description" : "Log level for incoming traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, "type" : "string" }, - "healthonly" : { - "description" : "If true returns only the health status", + "log_level_out" : { + "description" : "Log level for outgoing traffic.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "log_nf_conntrack" : { + "default" : 0, + "description" : "Enable logging of conntrack information.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "ndp" : { + "default" : 0, + "description" : "Enable NDP (Neighbor Discovery Protocol).", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "nf_conntrack_allow_invalid" : { + "default" : 0, + "description" : "Allow invalid packets on connection tracking.", "optional" : 1, "type" : "boolean", "typetext" : "" }, + "nf_conntrack_max" : { + "default" : 262144, + "description" : "Maximum number of tracked connections.", + "minimum" : 32768, + "optional" : 1, + "type" : "integer", + "typetext" : " (32768 - N)" + }, + "nf_conntrack_tcp_timeout_established" : { + "default" : 432000, + "description" : "Conntrack established timeout.", + "minimum" : 7875, + "optional" : 1, + "type" : "integer", + "typetext" : " (7875 - N)" + }, + "nf_conntrack_tcp_timeout_syn_recv" : { + "default" : 60, + "description" : "Conntrack syn recv timeout.", + "maximum" : 60, + "minimum" : 30, + "optional" : 1, + "type" : "integer", + "typetext" : " (30 - 60)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" + }, + "nosmurfs" : { + "description" : "Enable SMURFS filter.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "protection_synflood" : { + "default" : 0, + "description" : "Enable synflood protection", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "protection_synflood_burst" : { + "default" : 1000, + "description" : "Synflood protection rate burst by ip src.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "protection_synflood_rate" : { + "default" : 200, + "description" : "Synflood protection rate syn/sec by ip src.", + "optional" : 1, + "type" : "integer", + "typetext" : "" + }, + "smurf_log_level" : { + "description" : "Log level for SMURFS filter.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "tcp_flags_log_level" : { + "description" : "Log level for illegal tcp flags filter.", + "enum" : [ + "emerg", + "alert", + "crit", + "err", + "warning", + "notice", + "info", + "debug", + "nolog" + ], + "optional" : 1, + "type" : "string" + }, + "tcpflags" : { + "default" : 0, + "description" : "Filter illegal combinations of TCP flags.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Audit", - "Datastore.Audit" - ], - "any", - 1 + "Sys.Modify" + ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "properties" : { - "attributes" : { - "optional" : 1, - "type" : "array" - }, - "health" : { - "type" : "string" - }, - "text" : { - "optional" : 1, - "type" : "string" - }, - "type" : { - "optional" : 1, - "type" : "string" - } - }, - "type" : "object" + "type" : "null" } } }, "leaf" : 1, - "path" : "/nodes/{node}/disks/smart", - "text" : "smart" + "path" : "/nodes/{node}/firewall/options", + "text" : "options" }, { "info" : { - "POST" : { - "description" : "Initialize Disk with GPT", - "method" : "POST", - "name" : "initgpt", + "GET" : { + "allowtoken" : 1, + "description" : "Read firewall log", + "method" : "GET", + "name" : "log", "parameters" : { "additionalProperties" : 0, "properties" : { - "disk" : { - "description" : "Block device name", - "pattern" : "^/dev/[a-zA-Z0-9\\/]+$", - "type" : "string" + "limit" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" }, "node" : { "description" : "The cluster node name.", @@ -24106,39 +36587,52 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "uuid" : { - "description" : "UUID for the GPT table", - "maxLength" : 36, + "start" : { + "minimum" : 0, "optional" : 1, - "pattern" : "[a-fA-F0-9\\-]+", - "type" : "string" + "type" : "integer", + "typetext" : " (0 - N)" } } }, "permissions" : { "check" : [ "perm", - "/", + "/nodes/{node}", [ - "Sys.Modify" + "Sys.Syslog" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "string" + "items" : { + "properties" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, "leaf" : 1, - "path" : "/nodes/{node}/disks/initgpt", - "text" : "initgpt" + "path" : "/nodes/{node}/firewall/log", + "text" : "log" } ], "info" : { "GET" : { - "description" : "Node index.", + "allowtoken" : 1, + "description" : "Directory index.", "method" : "GET", "name" : "index", "parameters" : { @@ -24155,7 +36649,6 @@ var pveapi = [ "permissions" : { "user" : "all" }, - "proxyto" : "node", "returns" : { "items" : { "properties" : {}, @@ -24172,152 +36665,176 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/disks", - "text" : "disks" + "path" : "/nodes/{node}/firewall", + "text" : "firewall" }, { "children" : [ { - "info" : { - "GET" : { - "description" : "List available updates.", - "method" : "GET", - "name" : "list_updates", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get replication job status.", + "method" : "GET", + "name" : "job_status", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", + "format" : "pve-replication-job-id", + "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "description" : "Requires the VM.Audit permission on /vms/.", + "user" : "all" + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "object" } } }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "items" : { - "properties" : {}, - "type" : "object" - }, - "type" : "array" - } + "leaf" : 1, + "path" : "/nodes/{node}/replication/{id}/status", + "text" : "status" }, - "POST" : { - "description" : "This is used to resynchronize the package index files from their sources (apt-get update).", - "method" : "POST", - "name" : "update_database", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read replication job log.", + "method" : "GET", + "name" : "read_job_log", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", + "format" : "pve-replication-job-id", + "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", + "type" : "string" + }, + "limit" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "start" : { + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + } + } }, - "notify" : { - "default" : 0, - "description" : "Send notification mail about new packages (to email address specified for user 'root@pam').", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + "permissions" : { + "description" : "Requires the VM.Audit permission on /vms/, or 'Sys.Audit' on '/nodes/'", + "user" : "all" }, - "quiet" : { - "default" : 0, - "description" : "Only produces output suitable for logging, omitting progress indicators.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "n" : { + "description" : "Line number", + "type" : "integer" + }, + "t" : { + "description" : "Line text", + "type" : "string" + } + }, + "type" : "object" + }, + "type" : "array" } } }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/apt/update", - "text" : "update" - }, - { - "info" : { - "GET" : { - "description" : "Get package changelogs.", - "method" : "GET", - "name" : "changelog", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "name" : { - "description" : "Package name.", - "type" : "string", - "typetext" : "" + "leaf" : 1, + "path" : "/nodes/{node}/replication/{id}/log", + "text" : "log" + }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Schedule replication job to start as soon as possible.", + "method" : "POST", + "name" : "schedule_now", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "id" : { + "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", + "format" : "pve-replication-job-id", + "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", + "type" : "string" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/storage", + [ + "Datastore.Allocate" + ] + ] }, - "version" : { - "description" : "Package version.", - "optional" : 1, - "type" : "string", - "typetext" : "" + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "string" } } }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "proxyto" : "node", - "returns" : { - "type" : "string" - } + "leaf" : 1, + "path" : "/nodes/{node}/replication/{id}/schedule_now", + "text" : "schedule_now" } - }, - "leaf" : 1, - "path" : "/nodes/{node}/apt/changelog", - "text" : "changelog" - }, - { + ], "info" : { "GET" : { - "description" : "Get package information for important Proxmox packages.", + "allowtoken" : 1, + "description" : "Directory index.", "method" : "GET", - "name" : "versions", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { + "id" : { + "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", + "format" : "pve-replication-job-id", + "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", + "type" : "string" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -24327,37 +36844,45 @@ var pveapi = [ } }, "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] + "user" : "all" }, - "proxyto" : "node", "returns" : { "items" : { "properties" : {}, "type" : "object" }, + "links" : [ + { + "href" : "{name}", + "rel" : "child" + } + ], "type" : "array" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/apt/versions", - "text" : "versions" + "leaf" : 0, + "path" : "/nodes/{node}/replication/{id}", + "text" : "{id}" } ], "info" : { "GET" : { - "description" : "Directory index for apt (Advanced Package Tool).", + "allowtoken" : 1, + "description" : "List status of all replication jobs on this node.", "method" : "GET", - "name" : "index", + "name" : "status", "parameters" : { "additionalProperties" : 0, "properties" : { + "guest" : { + "description" : "Only list replication jobs for this guest.", + "format" : "pve-vmid", + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - N)" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -24367,8 +36892,11 @@ var pveapi = [ } }, "permissions" : { + "description" : "Requires the VM.Audit permission on /vms/.", "user" : "all" }, + "protected" : 1, + "proxyto" : "node", "returns" : { "items" : { "properties" : { @@ -24389,8 +36917,8 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/apt", - "text" : "apt" + "path" : "/nodes/{node}/replication", + "text" : "replication" }, { "children" : [ @@ -24399,31 +36927,18 @@ var pveapi = [ { "info" : { "DELETE" : { - "description" : "Delete rule.", + "allowtoken" : 1, + "description" : "Revoke existing certificate from CA.", "method" : "DELETE", - "name" : "delete_rule", + "name" : "revoke_certificate", "parameters" : { "additionalProperties" : 0, "properties" : { - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" } } }, @@ -24439,28 +36954,29 @@ var pveapi = [ "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "type" : "string" } }, - "GET" : { - "description" : "Get single rule data.", - "method" : "GET", - "name" : "get_rule", + "POST" : { + "allowtoken" : 1, + "description" : "Order a new certificate from ACME-compatible CA.", + "method" : "POST", + "name" : "new_certificate", "parameters" : { "additionalProperties" : 0, "properties" : { + "force" : { + "default" : 0, + "description" : "Overwrite existing custom certificate.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" } } }, @@ -24469,142 +36985,36 @@ var pveapi = [ "perm", "/nodes/{node}", [ - "Sys.Audit" + "Sys.Modify" ] ] }, + "protected" : 1, "proxyto" : "node", "returns" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, - "type" : "object" + "type" : "string" } }, "PUT" : { - "description" : "Modify rule data.", + "allowtoken" : 1, + "description" : "Renew existing certificate from CA.", "method" : "PUT", - "name" : "update_rule", + "name" : "renew_certificate", "parameters" : { "additionalProperties" : 0, "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "moveto" : { - "description" : "Move rule to new position . Other arguments are ignored.", - "minimum" : 0, + "force" : { + "default" : 0, + "description" : "Force renewal even if expiry is more than 30 days away.", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "boolean", + "typetext" : "" }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 1, - "type" : "string" } } }, @@ -24620,20 +37030,21 @@ var pveapi = [ "protected" : 1, "proxyto" : "node", "returns" : { - "type" : "null" + "type" : "string" } } }, "leaf" : 1, - "path" : "/nodes/{node}/firewall/rules/{pos}", - "text" : "{pos}" + "path" : "/nodes/{node}/certificates/acme/certificate", + "text" : "certificate" } ], "info" : { "GET" : { - "description" : "List rules.", + "allowtoken" : 1, + "description" : "ACME index.", "method" : "GET", - "name" : "get_rules", + "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -24646,170 +37057,34 @@ var pveapi = [ } }, "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] + "user" : "all" }, - "proxyto" : "node", "returns" : { "items" : { - "properties" : { - "pos" : { - "type" : "integer" - } - }, + "properties" : {}, "type" : "object" }, "links" : [ { - "href" : "{pos}", + "href" : "{name}", "rel" : "child" } ], "type" : "array" } - }, - "POST" : { - "description" : "Create new rule.", - "method" : "POST", - "name" : "create_rule", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "action" : { - "description" : "Rule action ('ACCEPT', 'DROP', 'REJECT') or security group name.", - "maxLength" : 20, - "minLength" : 2, - "optional" : 0, - "pattern" : "[A-Za-z][A-Za-z0-9\\-\\_]+", - "type" : "string" - }, - "comment" : { - "description" : "Descriptive comment.", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dest" : { - "description" : "Restrict packet destination address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "dport" : { - "description" : "Restrict TCP/UDP destination port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-dport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Flag to enable/disable a rule.", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "iface" : { - "description" : "Network interface name. You have to use network configuration key names for VMs and containers ('net\\d+'). Host related rules can use arbitrary strings.", - "format" : "pve-iface", - "maxLength" : 20, - "minLength" : 2, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "macro" : { - "description" : "Use predefined standard macro.", - "maxLength" : 128, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" - }, - "pos" : { - "description" : "Update rule at position .", - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, - "proto" : { - "description" : "IP protocol. You can use protocol names ('tcp'/'udp') or simple numbers, as defined in '/etc/protocols'.", - "format" : "pve-fw-protocol-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "source" : { - "description" : "Restrict packet source address. This can refer to a single IP address, an IP set ('+ipsetname') or an IP alias definition. You can also specify an address range like '20.34.101.207-201.3.9.99', or a list of IP addresses and networks (entries are separated by comma). Please do not mix IPv4 and IPv6 addresses inside such lists.", - "format" : "pve-fw-addr-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "sport" : { - "description" : "Restrict TCP/UDP source port. You can use service names or simple numbers (0-65535), as defined in '/etc/services'. Port ranges can be specified with '\\d+:\\d+', for example '80:85', and you can use comma separated list to match several ports or ranges.", - "format" : "pve-fw-sport-spec", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "type" : { - "description" : "Rule type.", - "enum" : [ - "in", - "out", - "group" - ], - "optional" : 0, - "type" : "string" - } - } - }, - "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Modify" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "null" - } } }, "leaf" : 0, - "path" : "/nodes/{node}/firewall/rules", - "text" : "rules" + "path" : "/nodes/{node}/certificates/acme", + "text" : "acme" }, { "info" : { "GET" : { - "description" : "Get host firewall options.", + "allowtoken" : 1, + "description" : "Get information about node's certificates.", "method" : "GET", - "name" : "get_options", + "name" : "info", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -24822,242 +37097,99 @@ var pveapi = [ } }, "permissions" : { - "check" : [ - "perm", - "/nodes/{node}", - [ - "Sys.Audit" - ] - ] + "user" : "all" }, "proxyto" : "node", "returns" : { - "properties" : { - "enable" : { - "description" : "Enable host firewall rules.", - "optional" : 1, - "type" : "boolean" - }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "ndp" : { - "description" : "Enable NDP.", - "optional" : 1, - "type" : "boolean" - }, - "nf_conntrack_max" : { - "description" : "Maximum number of tracked connections.", - "minimum" : 32768, - "optional" : 1, - "type" : "integer" - }, - "nf_conntrack_tcp_timeout_established" : { - "description" : "Conntrack established timeout.", - "minimum" : 7875, - "optional" : 1, - "type" : "integer" - }, - "nosmurfs" : { - "description" : "Enable SMURFS filter.", - "optional" : 1, - "type" : "boolean" - }, - "smurf_log_level" : { - "description" : "Log level for SMURFS filter.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "tcp_flags_log_level" : { - "description" : "Log level for illegal tcp flags filter.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" + "items" : { + "properties" : { + "filename" : { + "optional" : 1, + "type" : "string" + }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, + "issuer" : { + "description" : "Certificate issuer name.", + "optional" : 1, + "type" : "string" + }, + "notafter" : { + "description" : "Certificate's notAfter timestamp (UNIX epoch).", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + }, + "notbefore" : { + "description" : "Certificate's notBefore timestamp (UNIX epoch).", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + }, + "pem" : { + "description" : "Certificate in PEM format", + "format" : "pem-certificate", + "optional" : 1, + "type" : "string" + }, + "public-key-bits" : { + "description" : "Certificate's public key size", + "optional" : 1, + "type" : "integer" + }, + "public-key-type" : { + "description" : "Certificate's public key algorithm", + "optional" : 1, + "type" : "string" + }, + "san" : { + "description" : "List of Certificate's SubjectAlternativeName entries.", + "items" : { + "type" : "string" + }, + "optional" : 1, + "renderer" : "yaml", + "type" : "array" + }, + "subject" : { + "description" : "Certificate subject name.", + "optional" : 1, + "type" : "string" + } }, - "tcpflags" : { - "description" : "Filter illegal combinations of TCP flags.", - "optional" : 1, - "type" : "boolean" - } + "type" : "object" }, - "type" : "object" + "type" : "array" } - }, - "PUT" : { - "description" : "Set Firewall options.", - "method" : "PUT", - "name" : "set_options", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "delete" : { - "description" : "A list of settings you want to delete.", - "format" : "pve-configid-list", - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "digest" : { - "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", - "maxLength" : 40, - "optional" : 1, - "type" : "string", - "typetext" : "" - }, - "enable" : { - "description" : "Enable host firewall rules.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "log_level_in" : { - "description" : "Log level for incoming traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "log_level_out" : { - "description" : "Log level for outgoing traffic.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "ndp" : { - "description" : "Enable NDP.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "nf_conntrack_max" : { - "description" : "Maximum number of tracked connections.", - "minimum" : 32768, - "optional" : 1, - "type" : "integer", - "typetext" : " (32768 - N)" - }, - "nf_conntrack_tcp_timeout_established" : { - "description" : "Conntrack established timeout.", - "minimum" : 7875, - "optional" : 1, - "type" : "integer", - "typetext" : " (7875 - N)" - }, + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/certificates/info", + "text" : "info" + }, + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "DELETE custom certificate chain and key.", + "method" : "DELETE", + "name" : "remove_custom_cert", + "parameters" : { + "additionalProperties" : 0, + "properties" : { "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "nosmurfs" : { - "description" : "Enable SMURFS filter.", - "optional" : 1, - "type" : "boolean", - "typetext" : "" - }, - "smurf_log_level" : { - "description" : "Log level for SMURFS filter.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "tcp_flags_log_level" : { - "description" : "Log level for illegal tcp flags filter.", - "enum" : [ - "emerg", - "alert", - "crit", - "err", - "warning", - "notice", - "info", - "debug", - "nolog" - ], - "optional" : 1, - "type" : "string" - }, - "tcpflags" : { - "description" : "Filter illegal combinations of TCP flags.", + "restart" : { + "default" : 0, + "description" : "Restart pveproxy.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -25078,26 +37210,34 @@ var pveapi = [ "returns" : { "type" : "null" } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/firewall/options", - "text" : "options" - }, - { - "info" : { - "GET" : { - "description" : "Read firewall log", - "method" : "GET", - "name" : "log", + }, + "POST" : { + "allowtoken" : 1, + "description" : "Upload or update custom certificate chain and key.", + "method" : "POST", + "name" : "upload_custom_cert", "parameters" : { "additionalProperties" : 0, "properties" : { - "limit" : { - "minimum" : 0, + "certificates" : { + "description" : "PEM encoded certificate (chain).", + "format" : "pem-certificate-chain", + "type" : "string", + "typetext" : "" + }, + "force" : { + "default" : 0, + "description" : "Overwrite existing custom or ACME certificate files.", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "boolean", + "typetext" : "" + }, + "key" : { + "description" : "PEM encoded private key.", + "format" : "pem-string", + "optional" : 1, + "type" : "string", + "typetext" : "" }, "node" : { "description" : "The cluster node name.", @@ -25105,11 +37245,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, - "start" : { - "minimum" : 0, + "restart" : { + "default" : 0, + "description" : "Restart pveproxy.", "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "type" : "boolean", + "typetext" : "" } } }, @@ -25118,38 +37259,85 @@ var pveapi = [ "perm", "/nodes/{node}", [ - "Sys.Syslog" + "Sys.Modify" ] ] }, "protected" : 1, "proxyto" : "node", "returns" : { - "items" : { - "properties" : { - "n" : { - "description" : "Line number", - "type" : "integer" - }, - "t" : { - "description" : "Line text", + "properties" : { + "filename" : { + "optional" : 1, + "type" : "string" + }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, + "issuer" : { + "description" : "Certificate issuer name.", + "optional" : 1, + "type" : "string" + }, + "notafter" : { + "description" : "Certificate's notAfter timestamp (UNIX epoch).", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + }, + "notbefore" : { + "description" : "Certificate's notBefore timestamp (UNIX epoch).", + "optional" : 1, + "renderer" : "timestamp", + "type" : "integer" + }, + "pem" : { + "description" : "Certificate in PEM format", + "format" : "pem-certificate", + "optional" : 1, + "type" : "string" + }, + "public-key-bits" : { + "description" : "Certificate's public key size", + "optional" : 1, + "type" : "integer" + }, + "public-key-type" : { + "description" : "Certificate's public key algorithm", + "optional" : 1, + "type" : "string" + }, + "san" : { + "description" : "List of Certificate's SubjectAlternativeName entries.", + "items" : { "type" : "string" - } + }, + "optional" : 1, + "renderer" : "yaml", + "type" : "array" }, - "type" : "object" + "subject" : { + "description" : "Certificate subject name.", + "optional" : 1, + "type" : "string" + } }, - "type" : "array" + "type" : "object" } } }, "leaf" : 1, - "path" : "/nodes/{node}/firewall/log", - "text" : "log" + "path" : "/nodes/{node}/certificates/custom", + "text" : "custom" } ], "info" : { "GET" : { - "description" : "Directory index.", + "allowtoken" : 1, + "description" : "Node index.", "method" : "GET", "name" : "index", "parameters" : { @@ -25182,173 +37370,329 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/firewall", - "text" : "firewall" + "path" : "/nodes/{node}/certificates", + "text" : "certificates" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get node configuration options.", + "method" : "GET", + "name" : "get_config", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "property" : { + "default" : "all", + "description" : "Return only a specific property from the node configuration.", + "enum" : [ + "acme", + "acmedomain0", + "acmedomain1", + "acmedomain2", + "acmedomain3", + "acmedomain4", + "acmedomain5", + "description", + "startall-onboot-delay", + "wakeonlan" + ], + "optional" : 1, + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "proxyto" : "node", + "returns" : { + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Set node configuration options.", + "method" : "PUT", + "name" : "set_options", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "acme" : { + "description" : "Node specific ACME settings.", + "format" : { + "account" : { + "default" : "default", + "description" : "ACME account config file name.", + "format" : "pve-configid", + "format_description" : "name", + "optional" : 1, + "type" : "string" + }, + "domains" : { + "description" : "List of domains for this node's ACME certificate", + "format" : "pve-acme-domain-list", + "format_description" : "domain[;domain;...]", + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[account=] [,domains=]" + }, + "acmedomain[n]" : { + "description" : "ACME domain and validation plugin", + "format" : { + "alias" : { + "description" : "Alias for the Domain to verify ACME Challenge over DNS", + "format" : "pve-acme-alias", + "format_description" : "domain", + "optional" : 1, + "type" : "string" + }, + "domain" : { + "default_key" : 1, + "description" : "domain for this node's ACME certificate", + "format" : "pve-acme-domain", + "format_description" : "domain", + "type" : "string" + }, + "plugin" : { + "default" : "standalone", + "description" : "The ACME plugin ID", + "format" : "pve-configid", + "format_description" : "name of the plugin configuration", + "optional" : 1, + "type" : "string" + } + }, + "optional" : 1, + "type" : "string", + "typetext" : "[domain=] [,alias=] [,plugin=]" + }, + "delete" : { + "description" : "A list of settings you want to delete.", + "format" : "pve-configid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "description" : { + "description" : "Node description/comment.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "startall-onboot-delay" : { + "default" : 0, + "description" : "Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.", + "maximum" : 300, + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - 300)" + }, + "wakeonlan" : { + "description" : "MAC address for wake on LAN", + "format" : "mac-addr", + "optional" : 1, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/config", + "text" : "config" }, { "children" : [ { "children" : [ { - "info" : { - "GET" : { - "description" : "Get replication job status.", - "method" : "GET", - "name" : "job_status", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "id" : { - "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", - "format" : "pve-replication-job-id", - "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", - "type" : "string" + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "List zone content.", + "method" : "GET", + "name" : "index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" + } + } }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "permissions" : { + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Audit" + ], + "any", + 1 + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "properties" : { + "status" : { + "description" : "Status.", + "optional" : 1, + "type" : "string" + }, + "statusmsg" : { + "description" : "Status details", + "optional" : 1, + "type" : "string" + }, + "vnet" : { + "description" : "Vnet identifier.", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{vnet}", + "rel" : "child" + } + ], + "type" : "array" } } }, - "permissions" : { - "description" : "Requires the VM.Audit permission on /vms/.", - "user" : "all" - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "properties" : {}, - "type" : "object" - } + "leaf" : 1, + "path" : "/nodes/{node}/sdn/zones/{zone}/content", + "text" : "content" } - }, - "leaf" : 1, - "path" : "/nodes/{node}/replication/{id}/status", - "text" : "status" - }, - { + ], "info" : { "GET" : { - "description" : "Read replication job log.", + "allowtoken" : 1, + "description" : "", "method" : "GET", - "name" : "read_job_log", + "name" : "diridx", "parameters" : { "additionalProperties" : 0, "properties" : { - "id" : { - "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", - "format" : "pve-replication-job-id", - "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", - "type" : "string" - }, - "limit" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", "type" : "string", "typetext" : "" }, - "start" : { - "minimum" : 0, - "optional" : 1, - "type" : "integer", - "typetext" : " (0 - N)" + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string", + "typetext" : "" } } }, "permissions" : { - "description" : "Requires the VM.Audit permission on /vms/, or 'Sys.Audit' on '/nodes/'", - "user" : "all" + "check" : [ + "perm", + "/sdn/zones/{zone}", + [ + "SDN.Audit" + ], + "any", + 1 + ] }, - "protected" : 1, - "proxyto" : "node", "returns" : { "items" : { "properties" : { - "n" : { - "description" : "Line number", - "type" : "integer" - }, - "t" : { - "description" : "Line text", + "subdir" : { "type" : "string" } }, "type" : "object" }, - "type" : "array" - } - } - }, - "leaf" : 1, - "path" : "/nodes/{node}/replication/{id}/log", - "text" : "log" - }, - { - "info" : { - "POST" : { - "description" : "Schedule replication job to start as soon as possible.", - "method" : "POST", - "name" : "schedule_now", - "parameters" : { - "additionalProperties" : 0, - "properties" : { - "id" : { - "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", - "format" : "pve-replication-job-id", - "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", - "type" : "string" - }, - "node" : { - "description" : "The cluster node name.", - "format" : "pve-node", - "type" : "string", - "typetext" : "" + "links" : [ + { + "href" : "{subdir}", + "rel" : "child" } - } - }, - "permissions" : { - "check" : [ - "perm", - "/storage", - [ - "Datastore.Allocate" - ] - ] - }, - "protected" : 1, - "proxyto" : "node", - "returns" : { - "type" : "string" + ], + "type" : "array" } } }, - "leaf" : 1, - "path" : "/nodes/{node}/replication/{id}/schedule_now", - "text" : "schedule_now" + "leaf" : 0, + "path" : "/nodes/{node}/sdn/zones/{zone}", + "text" : "{zone}" } ], "info" : { "GET" : { - "description" : "Directory index.", + "allowtoken" : 1, + "description" : "Get status for all zones.", "method" : "GET", "name" : "index", "parameters" : { "additionalProperties" : 0, "properties" : { - "id" : { - "description" : "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '-'.", - "format" : "pve-replication-job-id", - "pattern" : "[1-9][0-9]{2,8}-\\d{1,9}", - "type" : "string" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -25358,16 +37702,34 @@ var pveapi = [ } }, "permissions" : { + "description" : "Only list entries where you have 'SDN.Audit'", "user" : "all" }, + "protected" : 1, + "proxyto" : "node", "returns" : { "items" : { - "properties" : {}, + "properties" : { + "status" : { + "description" : "Status of zone", + "enum" : [ + "available", + "pending", + "error" + ], + "type" : "string" + }, + "zone" : { + "description" : "The SDN zone object identifier.", + "format" : "pve-sdn-zone-id", + "type" : "string" + } + }, "type" : "object" }, "links" : [ { - "href" : "{name}", + "href" : "{zone}", "rel" : "child" } ], @@ -25376,26 +37738,19 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/replication/{id}", - "text" : "{id}" + "path" : "/nodes/{node}/sdn/zones", + "text" : "zones" } ], "info" : { "GET" : { - "description" : "List status of all replication jobs on this node.", + "allowtoken" : 1, + "description" : "SDN index.", "method" : "GET", - "name" : "status", + "name" : "sdnindex", "parameters" : { "additionalProperties" : 0, "properties" : { - "guest" : { - "description" : "Only list replication jobs for this guest.", - "format" : "pve-vmid", - "minimum" : 1, - "optional" : 1, - "type" : "integer", - "typetext" : " (1 - N)" - }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -25405,23 +37760,16 @@ var pveapi = [ } }, "permissions" : { - "description" : "Requires the VM.Audit permission on /vms/.", "user" : "all" }, - "protected" : 1, - "proxyto" : "node", "returns" : { "items" : { - "properties" : { - "id" : { - "type" : "string" - } - }, + "properties" : {}, "type" : "object" }, "links" : [ { - "href" : "{id}", + "href" : "{name}", "rel" : "child" } ], @@ -25430,12 +37778,13 @@ var pveapi = [ } }, "leaf" : 0, - "path" : "/nodes/{node}/replication", - "text" : "replication" + "path" : "/nodes/{node}/sdn", + "text" : "sdn" }, { "info" : { "GET" : { + "allowtoken" : 1, "description" : "API version details", "method" : "GET", "name" : "version", @@ -25457,12 +37806,15 @@ var pveapi = [ "returns" : { "properties" : { "release" : { + "description" : "The current installed Proxmox VE Release", "type" : "string" }, "repoid" : { + "description" : "The short git commit hash ID from which this version was build", "type" : "string" }, "version" : { + "description" : "The current installed pve-manager package version", "type" : "string" } }, @@ -25477,6 +37829,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node status", "method" : "GET", "name" : "status", @@ -25502,11 +37855,11 @@ var pveapi = [ }, "proxyto" : "node", "returns" : { - "properties" : {}, "type" : "object" } }, "POST" : { + "allowtoken" : 1, "description" : "Reboot or shutdown a node.", "method" : "POST", "name" : "node_cmd", @@ -25552,6 +37905,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read tap/vm network device interface counters", "method" : "GET", "name" : "netstat", @@ -25592,6 +37946,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Execute multiple commands in order.", "method" : "POST", "name" : "execute", @@ -25623,7 +37978,6 @@ var pveapi = [ "protected" : 1, "proxyto" : "node", "returns" : { - "properties" : {}, "type" : "array" } } @@ -25632,9 +37986,49 @@ var pveapi = [ "path" : "/nodes/{node}/execute", "text" : "execute" }, + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Try to wake a node via 'wake on LAN' network packet.", + "method" : "POST", + "name" : "wakeonlan", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "target node for wake on LAN packet", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.PowerMgmt" + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "MAC address used to assemble the WoL magic packet.", + "format" : "mac-addr", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/wakeonlan", + "text" : "wakeonlan" + }, { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node RRD statistics (returns PNG)", "method" : "GET", "name" : "rrd", @@ -25702,6 +38096,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read node RRD statistics", "method" : "GET", "name" : "rrddata", @@ -25762,6 +38157,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read system log", "method" : "GET", "name" : "syslog", @@ -25840,15 +38236,109 @@ var pveapi = [ "path" : "/nodes/{node}/syslog", "text" : "syslog" }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Read Journal", + "method" : "GET", + "name" : "journal", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "endcursor" : { + "description" : "End before the given Cursor. Conflicts with 'until'", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "lastentries" : { + "description" : "Limit to the last X lines. Conflicts with a range.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + }, + "since" : { + "description" : "Display all log since this UNIX epoch. Conflicts with 'startcursor'.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "startcursor" : { + "description" : "Start after the given Cursor. Conflicts with 'since'", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "until" : { + "description" : "Display all log until this UNIX epoch. Conflicts with 'endcursor'.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Syslog" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "items" : { + "type" : "string" + }, + "type" : "array" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/journal", + "text" : "journal" + }, { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a VNC Shell proxy.", "method" : "POST", "name" : "vncshell", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "login", + "upgrade", + "ceph_install" + ], + "optional" : 1, + "type" : "string" + }, + "cmd-opts" : { + "default" : "", + "description" : "Add parameters to a command. Encoded as null terminated strings.", + "optional" : 1, + "requires" : "cmd", + "type" : "string", + "typetext" : "" + }, "height" : { "description" : "sets the height of the console in pixels.", "maximum" : 2160, @@ -25865,7 +38355,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -25926,12 +38416,32 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a VNC Shell proxy.", "method" : "POST", "name" : "termproxy", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "login", + "upgrade", + "ceph_install" + ], + "optional" : 1, + "type" : "string" + }, + "cmd-opts" : { + "default" : "", + "description" : "Add parameters to a command. Encoded as null terminated strings.", + "optional" : 1, + "requires" : "cmd", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -25940,7 +38450,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -25984,6 +38494,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Opens a weksocket for VNC traffic.", "method" : "GET", "name" : "vncwebsocket", @@ -26038,12 +38549,32 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Creates a SPICE shell.", "method" : "POST", "name" : "spiceshell", "parameters" : { "additionalProperties" : 0, "properties" : { + "cmd" : { + "default" : "login", + "description" : "Run specific command or default to login.", + "enum" : [ + "login", + "upgrade", + "ceph_install" + ], + "optional" : 1, + "type" : "string" + }, + "cmd-opts" : { + "default" : "", + "description" : "Add parameters to a command. Encoded as null terminated strings.", + "optional" : 1, + "requires" : "cmd", + "type" : "string", + "typetext" : "" + }, "node" : { "description" : "The cluster node name.", "format" : "pve-node", @@ -26051,7 +38582,7 @@ var pveapi = [ "typetext" : "" }, "proxy" : { - "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As resonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", + "description" : "SPICE proxy server. This can be used by the client to specify the proxy server. All nodes in a cluster runs 'spiceproxy', so it is up to the client to choose one. By default, we return the node where the VM is currently running. As reasonable setting is to use same node you use to connect to the API (This is window.location.hostname for the JS GUI).", "format" : "address", "optional" : 1, "type" : "string", @@ -26059,7 +38590,7 @@ var pveapi = [ }, "upgrade" : { "default" : 0, - "description" : "Run 'apt-get dist-upgrade' instead of normal shell.", + "description" : "Deprecated, use the 'cmd' property instead! Run 'apt-get dist-upgrade' instead of normal shell.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -26108,6 +38639,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read DNS settings.", "method" : "GET", "name" : "dns", @@ -26160,6 +38692,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Write DNS settings.", "method" : "PUT", "name" : "update_dns", @@ -26223,6 +38756,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Read server time and time zone settings.", "method" : "GET", "name" : "time", @@ -26253,11 +38787,13 @@ var pveapi = [ "localtime" : { "description" : "Seconds since 1970-01-01 00:00:00 (local time)", "minimum" : 1297163644, + "renderer" : "timestamp_gmt", "type" : "integer" }, "time" : { "description" : "Seconds since 1970-01-01 00:00:00 UTC.", "minimum" : 1297163644, + "renderer" : "timestamp", "type" : "integer" }, "timezone" : { @@ -26269,6 +38805,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Set time zone.", "method" : "PUT", "name" : "set_timezone", @@ -26311,6 +38848,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get list of appliances.", "method" : "GET", "name" : "aplinfo", @@ -26338,6 +38876,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Download appliance templates.", "method" : "POST", "name" : "apl_download", @@ -26357,7 +38896,7 @@ var pveapi = [ "typetext" : "" }, "template" : { - "description" : "The template wich will downloaded", + "description" : "The template which will downloaded", "maxLength" : 255, "type" : "string", "typetext" : "" @@ -26387,6 +38926,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Gather various systems information about a node", "method" : "GET", "name" : "report", @@ -26424,14 +38964,16 @@ var pveapi = [ { "info" : { "POST" : { - "description" : "Start all VMs and containers (when onboot=1).", + "allowtoken" : 1, + "description" : "Start all VMs and containers located on this node (by default only those with onboot=1).", "method" : "POST", "name" : "startall", "parameters" : { "additionalProperties" : 0, "properties" : { "force" : { - "description" : "force if onboot=0.", + "default" : "off", + "description" : "Issue start command even if virtual guest have 'onboot' not set or set to off.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -26443,7 +38985,7 @@ var pveapi = [ "typetext" : "" }, "vms" : { - "description" : "Only consider Guests with these IDs.", + "description" : "Only consider guests from this comma separated list of VMIDs.", "format" : "pve-vmid-list", "optional" : 1, "type" : "string", @@ -26474,6 +39016,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Stop all VMs and Containers.", "method" : "POST", "name" : "stopall", @@ -26518,6 +39061,7 @@ var pveapi = [ { "info" : { "POST" : { + "allowtoken" : 1, "description" : "Migrate all VMs and Containers.", "method" : "POST", "name" : "migrateall", @@ -26549,6 +39093,12 @@ var pveapi = [ "optional" : 1, "type" : "string", "typetext" : "" + }, + "with-local-disks" : { + "description" : "Enable live storage migration for local disk", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, @@ -26571,10 +39121,104 @@ var pveapi = [ "leaf" : 1, "path" : "/nodes/{node}/migrateall", "text" : "migrateall" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get the content of /etc/hosts.", + "method" : "GET", + "name" : "get_etc_hosts", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/", + [ + "Sys.Audit" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "properties" : { + "data" : { + "description" : "The content of /etc/hosts.", + "type" : "string" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Write /etc/hosts.", + "method" : "POST", + "name" : "write_etc_hosts", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "data" : { + "description" : "The target content of /etc/hosts.", + "type" : "string", + "typetext" : "" + }, + "digest" : { + "description" : "Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.", + "maxLength" : 40, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "perm", + "/nodes/{node}", + [ + "Sys.Modify" + ] + ] + }, + "protected" : 1, + "proxyto" : "node", + "returns" : { + "type" : "null" + } + } + }, + "leaf" : 1, + "path" : "/nodes/{node}/hosts", + "text" : "hosts" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Node index.", "method" : "GET", "name" : "index", @@ -26614,6 +39258,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Cluster node index.", "method" : "GET", "name" : "index", @@ -26625,7 +39270,61 @@ var pveapi = [ }, "returns" : { "items" : { - "properties" : {}, + "properties" : { + "cpu" : { + "description" : "CPU utilization.", + "optional" : 1, + "renderer" : "fraction_as_percentage", + "type" : "number" + }, + "level" : { + "description" : "Support level.", + "optional" : 1, + "type" : "string" + }, + "maxcpu" : { + "description" : "Number of available CPUs.", + "optional" : 1, + "type" : "integer" + }, + "maxmem" : { + "description" : "Number of available memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "mem" : { + "description" : "Used memory in bytes.", + "optional" : 1, + "renderer" : "bytes", + "type" : "integer" + }, + "node" : { + "description" : "The cluster node name.", + "format" : "pve-node", + "type" : "string" + }, + "ssl_fingerprint" : { + "description" : "The SSL fingerprint for the node certificate.", + "optional" : 1, + "type" : "string" + }, + "status" : { + "description" : "Node status.", + "enum" : [ + "unknown", + "online", + "offline" + ], + "type" : "string" + }, + "uptime" : { + "description" : "Node uptime in seconds.", + "optional" : 1, + "renderer" : "duration", + "type" : "integer" + } + }, "type" : "object" }, "links" : [ @@ -26647,6 +39346,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete storage configuration.", "method" : "DELETE", "name" : "delete", @@ -26676,6 +39376,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Read storage configuration.", "method" : "GET", "name" : "read", @@ -26699,9 +39400,12 @@ var pveapi = [ ] ] }, - "returns" : {} + "returns" : { + "type" : "object" + } }, "PUT" : { + "allowtoken" : 1, "description" : "Update storage configuration.", "method" : "PUT", "name" : "update", @@ -26718,35 +39422,35 @@ var pveapi = [ "description" : "Set bandwidth/io limits various operations.", "format" : { "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", + "description" : "bandwidth limit in KiB/s for cloning disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "default" : { - "description" : "default bandwidth limit in MiB/s", + "description" : "default bandwidth limit in KiB/s", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", + "description" : "bandwidth limit in KiB/s for moving disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", + "description" : "bandwidth limit in KiB/s for restoring guests from backups", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, @@ -26804,6 +39508,18 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "encryption-key" : { + "description" : "Encryption key. Use 'autogen' to generate one automatically without passphrase.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, "format" : { "description" : "Default image format.", "format" : "pve-storage-format", @@ -26811,6 +39527,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "fuse" : { + "description" : "Mount CephFS through FUSE.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "is_mountpoint" : { "default" : "no", "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.", @@ -26819,11 +39541,17 @@ var pveapi = [ "typetext" : "" }, "krbd" : { - "description" : "Access rbd through krbd kernel module.", + "description" : "Always access rbd through krbd kernel module.", "optional" : 1, "type" : "boolean", "typetext" : "" }, + "lio_tpg" : { + "description" : "target portal group for Linux LIO targets", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "maxfiles" : { "description" : "Maximal number of backup files per VM. Use '0' for unlimted.", "minimum" : 0, @@ -26845,6 +39573,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mountpoint" : { + "description" : "mount point", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "nodes" : { "description" : "List of cluster node names.", "format" : "pve-node-list", @@ -26866,7 +39601,7 @@ var pveapi = [ "typetext" : "" }, "password" : { - "description" : "Password for CIFS share.", + "description" : "Password for accessing the share/datastore.", "maxLength" : 256, "optional" : 1, "type" : "string", @@ -26878,6 +39613,22 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "port" : { + "default" : 8007, + "description" : "For non default port.", + "maximum" : 65535, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 65535)" + }, + "prune-backups" : { + "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, "redundancy" : { "default" : 2, "description" : "The redundancy count specifies the number of nodes to which the resource should be deployed. It must be at least 1 and at most the number of nodes in the cluster.", @@ -26921,10 +39672,14 @@ var pveapi = [ "typetext" : "" }, "smbversion" : { - "description" : "", + "description" : "SMB protocol version", + "enum" : [ + "2.0", + "2.1", + "3.0" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" }, "sparse" : { "description" : "use sparse volumes", @@ -26938,6 +39693,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "subdir" : { + "description" : "Subdir to mount.", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "tagged_only" : { "description" : "Only use logical volumes tagged with 'pve-vm-ID'.", "optional" : 1, @@ -26974,7 +39736,46 @@ var pveapi = [ }, "protected" : 1, "returns" : { - "type" : "null" + "properties" : { + "config" : { + "additionalProperties" : 1, + "description" : "Partial, possible server generated, configuration properties.", + "optional" : 1, + "properties" : { + "encryption-key" : { + "description" : "The, possible auto-generated, encryption-key.", + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + }, + "storage" : { + "description" : "The ID of the created storage.", + "type" : "string" + }, + "type" : { + "description" : "The type of the created storage.", + "enum" : [ + "cephfs", + "cifs", + "dir", + "drbd", + "glusterfs", + "iscsi", + "iscsidirect", + "lvm", + "lvmthin", + "nfs", + "pbs", + "rbd", + "zfs", + "zfspool" + ], + "type" : "string" + } + }, + "type" : "object" } } }, @@ -26985,6 +39786,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Storage index.", "method" : "GET", "name" : "index", @@ -26994,6 +39796,7 @@ var pveapi = [ "type" : { "description" : "Only list storage of specific type", "enum" : [ + "cephfs", "cifs", "dir", "drbd", @@ -27003,8 +39806,8 @@ var pveapi = [ "lvm", "lvmthin", "nfs", + "pbs", "rbd", - "sheepdog", "zfs", "zfspool" ], @@ -27036,6 +39839,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create a new storage.", "method" : "POST", "name" : "create", @@ -27065,35 +39869,35 @@ var pveapi = [ "description" : "Set bandwidth/io limits various operations.", "format" : { "clone" : { - "description" : "bandwidth limit in MiB/s for cloning disks", + "description" : "bandwidth limit in KiB/s for cloning disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "default" : { - "description" : "default bandwidth limit in MiB/s", + "description" : "default bandwidth limit in KiB/s", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "migration" : { - "description" : "bandwidth limit in MiB/s for migrating guests", + "description" : "bandwidth limit in KiB/s for migrating guests (including moving local disks)", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "move" : { - "description" : "bandwidth limit in MiB/s for moving disks", + "description" : "bandwidth limit in KiB/s for moving disks", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, "type" : "number" }, "restore" : { - "description" : "bandwidth limit in MiB/s for restoring guests from backups", + "description" : "bandwidth limit in KiB/s for restoring guests from backups", "format_description" : "LIMIT", "minimum" : "0", "optional" : 1, @@ -27123,6 +39927,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "datastore" : { + "description" : "Proxmox Backup Server datastore name.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "disable" : { "description" : "Flag to disable the storage.", "optional" : 1, @@ -27136,6 +39946,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "encryption-key" : { + "description" : "Encryption key. Use 'autogen' to generate one automatically without passphrase.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "export" : { "description" : "NFS export path.", "format" : "pve-storage-path", @@ -27143,6 +39959,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "fingerprint" : { + "description" : "Certificate SHA 256 fingerprint.", + "optional" : 1, + "pattern" : "([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}", + "type" : "string" + }, "format" : { "description" : "Default image format.", "format" : "pve-storage-format", @@ -27150,6 +39972,12 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "fuse" : { + "description" : "Mount CephFS through FUSE.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "is_mountpoint" : { "default" : "no", "description" : "Assume the given path is an externally managed mountpoint and consider the storage offline if it is not mounted. Using a boolean (yes/no) value serves as a shortcut to using the target path in this field.", @@ -27164,11 +39992,17 @@ var pveapi = [ "typetext" : "" }, "krbd" : { - "description" : "Access rbd through krbd kernel module.", + "description" : "Always access rbd through krbd kernel module.", "optional" : 1, "type" : "boolean", "typetext" : "" }, + "lio_tpg" : { + "description" : "target portal group for Linux LIO targets", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "maxfiles" : { "description" : "Maximal number of backup files per VM. Use '0' for unlimted.", "minimum" : 0, @@ -27190,6 +40024,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "mountpoint" : { + "description" : "mount point", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "nodes" : { "description" : "List of cluster node names.", "format" : "pve-node-list", @@ -27211,7 +40052,7 @@ var pveapi = [ "typetext" : "" }, "password" : { - "description" : "Password for CIFS share.", + "description" : "Password for accessing the share/datastore.", "maxLength" : 256, "optional" : 1, "type" : "string", @@ -27230,6 +40071,15 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "port" : { + "default" : 8007, + "description" : "For non default port.", + "maximum" : 65535, + "minimum" : 1, + "optional" : 1, + "type" : "integer", + "typetext" : " (1 - 65535)" + }, "portal" : { "description" : "iSCSI portal (IP or DNS name with optional port).", "format" : "pve-storage-portal-dns", @@ -27237,6 +40087,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "prune-backups" : { + "description" : "The retention options with shorter intervals are processed first with --keep-last being the very first one. Each option covers a specific period of time. We say that backups within this period are covered by this option. The next option does not take care of already covered backups and only considers older backups.", + "format" : "prune-backups", + "optional" : 1, + "type" : "string", + "typetext" : "[keep-all=<1|0>] [,keep-daily=] [,keep-hourly=] [,keep-last=] [,keep-monthly=] [,keep-weekly=] [,keep-yearly=]" + }, "redundancy" : { "default" : 2, "description" : "The redundancy count specifies the number of nodes to which the resource should be deployed. It must be at least 1 and at most the number of nodes in the cluster.", @@ -27286,10 +40143,14 @@ var pveapi = [ "typetext" : "" }, "smbversion" : { - "description" : "", + "description" : "SMB protocol version", + "enum" : [ + "2.0", + "2.1", + "3.0" + ], "optional" : 1, - "type" : "string", - "typetext" : "" + "type" : "string" }, "sparse" : { "description" : "use sparse volumes", @@ -27303,6 +40164,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "subdir" : { + "description" : "Subdir to mount.", + "format" : "pve-storage-path", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "tagged_only" : { "description" : "Only use logical volumes tagged with 'pve-vm-ID'.", "optional" : 1, @@ -27335,6 +40203,7 @@ var pveapi = [ "type" : { "description" : "Storage type.", "enum" : [ + "cephfs", "cifs", "dir", "drbd", @@ -27344,8 +40213,8 @@ var pveapi = [ "lvm", "lvmthin", "nfs", + "pbs", "rbd", - "sheepdog", "zfs", "zfspool" ], @@ -27384,7 +40253,46 @@ var pveapi = [ }, "protected" : 1, "returns" : { - "type" : "null" + "properties" : { + "config" : { + "additionalProperties" : 1, + "description" : "Partial, possible server generated, configuration properties.", + "optional" : 1, + "properties" : { + "encryption-key" : { + "description" : "The, possible auto-generated, encryption-key.", + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + }, + "storage" : { + "description" : "The ID of the created storage.", + "type" : "string" + }, + "type" : { + "description" : "The type of the created storage.", + "enum" : [ + "cephfs", + "cifs", + "dir", + "drbd", + "glusterfs", + "iscsi", + "iscsidirect", + "lvm", + "lvmthin", + "nfs", + "pbs", + "rbd", + "zfs", + "zfspool" + ], + "type" : "string" + } + }, + "type" : "object" } } }, @@ -27397,8 +40305,447 @@ var pveapi = [ { "children" : [ { + "children" : [ + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get user TFA types (Personal and Realm).", + "method" : "GET", + "name" : "read_user_tfa_type", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "userid-group", + [ + "User.Modify", + "Sys.Audit" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "realm" : { + "description" : "The type of TFA the users realm has set, if any.", + "enum" : [ + "oath", + "yubico" + ], + "optional" : 1, + "type" : "string" + }, + "user" : { + "description" : "The type of TFA the user has set, if any.", + "enum" : [ + "oath", + "u2f" + ], + "optional" : 1, + "type" : "string" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/users/{userid}/tfa", + "text" : "tfa" + }, + { + "children" : [ + { + "info" : { + "DELETE" : { + "allowtoken" : 1, + "description" : "Remove API token for a specific user.", + "method" : "DELETE", + "name" : "remove_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "type" : "null" + } + }, + "GET" : { + "allowtoken" : 1, + "description" : "Get specific API token information.", + "method" : "GET", + "name" : "read_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "returns" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + }, + "POST" : { + "allowtoken" : 1, + "description" : "Generate a new API token for a specific user. NOTE: returns API token value, which needs to be stored as it cannot be retrieved afterwards!", + "method" : "POST", + "name" : "generate_token", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "additionalProperties" : 0, + "properties" : { + "full-tokenid" : { + "description" : "The full token id.", + "format_description" : "!", + "type" : "string" + }, + "info" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + }, + "value" : { + "description" : "API token value used for authentication.", + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 1, + "description" : "Update API token for a specific user.", + "method" : "PUT", + "name" : "update_token_info", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer", + "typetext" : " (0 - N)" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "protected" : 1, + "returns" : { + "description" : "Updated token information.", + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/users/{userid}/token/{tokenid}", + "text" : "{tokenid}" + } + ], + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Get user API tokens.", + "method" : "GET", + "name" : "token_index", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "perm", + "/access/users/{userid}", + [ + "User.Modify" + ] + ] + ] + }, + "returns" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + } + }, + "type" : "object" + }, + "links" : [ + { + "href" : "{tokenid}", + "rel" : "child" + } + ], + "type" : "array" + } + } + }, + "leaf" : 0, + "path" : "/access/users/{userid}/token", + "text" : "token" + } + ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete user.", "method" : "DELETE", "name" : "delete_user", @@ -27435,6 +40782,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get user configuration.", "method" : "GET", "name" : "read_user", @@ -27467,13 +40815,19 @@ var pveapi = [ "type" : "string" }, "email" : { + "format" : "email-opt", "optional" : 1, "type" : "string" }, "enable" : { + "default" : 1, + "description" : "Enable the account (default). You can set this to '0' to disable the account", + "optional" : 1, "type" : "boolean" }, "expire" : { + "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, "optional" : 1, "type" : "integer" }, @@ -27482,20 +40836,32 @@ var pveapi = [ "type" : "string" }, "groups" : { + "items" : { + "format" : "pve-groupid", + "type" : "string" + }, + "optional" : 1, "type" : "array" }, "keys" : { + "description" : "Keys for two factor auth (yubico).", "optional" : 1, "type" : "string" }, "lastname" : { "optional" : 1, "type" : "string" + }, + "tokens" : { + "optional" : 1, + "type" : "object" } - } + }, + "type" : "object" } }, "PUT" : { + "allowtoken" : 1, "description" : "Update user configuration.", "method" : "PUT", "name" : "update_user", @@ -27520,7 +40886,8 @@ var pveapi = [ "typetext" : "" }, "enable" : { - "description" : "Enable/disable the account.", + "default" : 1, + "description" : "Enable the account (default). You can set this to '0' to disable the account", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -27579,13 +40946,14 @@ var pveapi = [ } } }, - "leaf" : 1, + "leaf" : 0, "path" : "/access/users/{userid}", "text" : "{userid}" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "User index.", "method" : "GET", "name" : "index", @@ -27597,6 +40965,13 @@ var pveapi = [ "optional" : 1, "type" : "boolean", "typetext" : "" + }, + "full" : { + "default" : 0, + "description" : "Include group and token information.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" } } }, @@ -27607,7 +40982,80 @@ var pveapi = [ "returns" : { "items" : { "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "email" : { + "format" : "email-opt", + "optional" : 1, + "type" : "string" + }, + "enable" : { + "default" : 1, + "description" : "Enable the account (default). You can set this to '0' to disable the account", + "optional" : 1, + "type" : "boolean" + }, + "expire" : { + "description" : "Account expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "firstname" : { + "optional" : 1, + "type" : "string" + }, + "groups" : { + "format" : "pve-groupid-list", + "optional" : 1, + "type" : "string" + }, + "keys" : { + "description" : "Keys for two factor auth (yubico).", + "optional" : 1, + "type" : "string" + }, + "lastname" : { + "optional" : 1, + "type" : "string" + }, + "tokens" : { + "items" : { + "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, + "expire" : { + "default" : "same as user", + "description" : "API token expiration date (seconds since epoch). '0' means no expiration date.", + "minimum" : 0, + "optional" : 1, + "type" : "integer" + }, + "privsep" : { + "default" : 1, + "description" : "Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.", + "optional" : 1, + "type" : "boolean" + }, + "tokenid" : { + "description" : "User-specific token identifier.", + "pattern" : "(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)", + "type" : "string" + } + }, + "type" : "object" + }, + "optional" : 1, + "type" : "array" + }, "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, "type" : "string" } }, @@ -27623,6 +41071,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new user.", "method" : "POST", "name" : "create_user", @@ -27642,7 +41091,7 @@ var pveapi = [ }, "enable" : { "default" : 1, - "description" : "Enable the account (default). You can set this to '0' to disable the accout", + "description" : "Enable the account (default). You can set this to '0' to disable the account", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -27726,6 +41175,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete group.", "method" : "DELETE", "name" : "delete_group", @@ -27754,6 +41204,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get group configuration.", "method" : "GET", "name" : "read_group", @@ -27788,6 +41239,9 @@ var pveapi = [ }, "members" : { "items" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, "type" : "string" }, "type" : "array" @@ -27797,6 +41251,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update group data.", "method" : "PUT", "name" : "update_group", @@ -27837,6 +41292,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Group index.", "method" : "GET", "name" : "index", @@ -27850,7 +41306,18 @@ var pveapi = [ "returns" : { "items" : { "properties" : { + "comment" : { + "optional" : 1, + "type" : "string" + }, "groupid" : { + "format" : "pve-groupid", + "type" : "string" + }, + "users" : { + "description" : "list of users which form this group", + "format" : "pve-userid-list", + "optional" : 1, "type" : "string" } }, @@ -27866,6 +41333,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new group.", "method" : "POST", "name" : "create_group", @@ -27908,6 +41376,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete role.", "method" : "DELETE", "name" : "delete_role", @@ -27936,6 +41405,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get role configuration.", "method" : "GET", "name" : "read_role", @@ -27952,10 +41422,156 @@ var pveapi = [ "permissions" : { "user" : "all" }, - "returns" : {} + "returns" : { + "additionalProperties" : 0, + "properties" : { + "Datastore.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "Datastore.AllocateSpace" : { + "optional" : 1, + "type" : "boolean" + }, + "Datastore.AllocateTemplate" : { + "optional" : 1, + "type" : "boolean" + }, + "Datastore.Audit" : { + "optional" : 1, + "type" : "boolean" + }, + "Group.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "Permissions.Modify" : { + "optional" : 1, + "type" : "boolean" + }, + "Pool.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "Realm.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "Realm.AllocateUser" : { + "optional" : 1, + "type" : "boolean" + }, + "SDN.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "SDN.Audit" : { + "optional" : 1, + "type" : "boolean" + }, + "Sys.Audit" : { + "optional" : 1, + "type" : "boolean" + }, + "Sys.Console" : { + "optional" : 1, + "type" : "boolean" + }, + "Sys.Modify" : { + "optional" : 1, + "type" : "boolean" + }, + "Sys.PowerMgmt" : { + "optional" : 1, + "type" : "boolean" + }, + "Sys.Syslog" : { + "optional" : 1, + "type" : "boolean" + }, + "User.Modify" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Allocate" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Audit" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Backup" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Clone" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.CDROM" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.CPU" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.Cloudinit" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.Disk" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.HWType" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.Memory" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.Network" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Config.Options" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Console" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Migrate" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Monitor" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.PowerMgmt" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Snapshot" : { + "optional" : 1, + "type" : "boolean" + }, + "VM.Snapshot.Rollback" : { + "optional" : 1, + "type" : "boolean" + } + }, + "type" : "object" + } }, "PUT" : { - "description" : "Create new role.", + "allowtoken" : 1, + "description" : "Update an existing role.", "method" : "PUT", "name" : "update_role", "parameters" : { @@ -27969,6 +41585,7 @@ var pveapi = [ }, "privs" : { "format" : "pve-priv-list", + "optional" : 1, "type" : "string", "typetext" : "" }, @@ -28001,6 +41618,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Role index.", "method" : "GET", "name" : "index", @@ -28013,8 +41631,19 @@ var pveapi = [ "returns" : { "items" : { "properties" : { + "privs" : { + "format" : "pve-priv-list", + "optional" : 1, + "type" : "string" + }, "roleid" : { + "format" : "pve-roleid", "type" : "string" + }, + "special" : { + "default" : 0, + "optional" : 1, + "type" : "boolean" } }, "type" : "object" @@ -28029,6 +41658,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new role.", "method" : "POST", "name" : "create_role", @@ -28070,6 +41700,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Get Access Control List (ACLs).", "method" : "GET", "name" : "read_acl", @@ -28085,9 +41716,13 @@ var pveapi = [ "additionalProperties" : 0, "properties" : { "path" : { + "description" : "Access control path", "type" : "string" }, "propagate" : { + "default" : 1, + "description" : "Allow to propagate (inherit) permissions.", + "optional" : 1, "type" : "boolean" }, "roleid" : { @@ -28096,7 +41731,8 @@ var pveapi = [ "type" : { "enum" : [ "user", - "group" + "group", + "token" ], "type" : "string" }, @@ -28110,6 +41746,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update Access Control List (add or remove permissions).", "method" : "PUT", "name" : "update_acl", @@ -28147,6 +41784,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "tokens" : { + "description" : "List of API tokens.", + "format" : "pve-tokenid-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "users" : { "description" : "List of users.", "format" : "pve-userid-list", @@ -28175,8 +41819,93 @@ var pveapi = [ { "children" : [ { + "children" : [ + { + "info" : { + "POST" : { + "allowtoken" : 1, + "description" : "Syncs users and/or groups from the configured LDAP to user.cfg. NOTE: Synced groups will have the name 'name-$realm', so make sure those groups do not exist to prevent overwriting.", + "method" : "POST", + "name" : "sync", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "dry-run" : { + "default" : 0, + "description" : "If set, does not write anything.", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, + "enable-new" : { + "default" : "1", + "description" : "Enable newly synced users immediately.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "full" : { + "description" : "If set, uses the LDAP Directory as source of truth, deleting users or groups not returned from the sync. Otherwise only syncs information which is not already present, and does not deletes or modifies anything else.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "purge" : { + "description" : "Remove ACLs for users or groups which were removed from the config during a sync.", + "optional" : "1", + "type" : "boolean", + "typetext" : "" + }, + "realm" : { + "description" : "Authentication domain ID", + "format" : "pve-realm", + "maxLength" : 32, + "type" : "string", + "typetext" : "" + }, + "scope" : { + "description" : "Select what to sync.", + "enum" : [ + "users", + "groups", + "both" + ], + "optional" : "1", + "type" : "string" + } + } + }, + "permissions" : { + "check" : [ + "and", + [ + "userid-param", + "Realm.AllocateUser" + ], + [ + "userid-group", + [ + "User.Modify" + ] + ] + ], + "description" : "'Realm.AllocateUser' on '/access/realm/' and 'User.Modify' permissions to '/access/groups/'." + }, + "protected" : 1, + "returns" : { + "description" : "Worker Task-UPID", + "type" : "string" + } + } + }, + "leaf" : 1, + "path" : "/access/domains/{realm}/sync", + "text" : "sync" + } + ], "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete an authentication server.", "method" : "DELETE", "name" : "delete", @@ -28207,6 +41936,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get auth server configuration.", "method" : "GET", "name" : "read", @@ -28237,6 +41967,7 @@ var pveapi = [ "returns" : {} }, "PUT" : { + "allowtoken" : 1, "description" : "Update authentication server settings.", "method" : "PUT", "name" : "update", @@ -28264,6 +41995,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "case-sensitive" : { + "default" : 1, + "description" : "username is case-sensitive", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "cert" : { "description" : "Path to the client certificate", "optional" : 1, @@ -28311,6 +42049,60 @@ var pveapi = [ "pattern" : "\\S+", "type" : "string" }, + "filter" : { + "description" : "LDAP filter for user sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_classes" : { + "default" : "groupOfNames, group, univentionGroup, ipausergroup", + "description" : "The objectclasses for groups.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_dn" : { + "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.", + "maxLength" : 256, + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, + "group_filter" : { + "description" : "LDAP filter for group sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_name_attr" : { + "description" : "LDAP attribute representing a groups name. If not set or found, the first value of the DN will be used as name.", + "format" : "ldap-simple-attr", + "maxLength" : 256, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mode" : { + "default" : "ldap", + "description" : "LDAP protocol mode.", + "enum" : [ + "ldap", + "ldaps", + "ldap+starttls" + ], + "optional" : 1, + "type" : "string" + }, + "password" : { + "description" : "LDAP bind password. Will be stored in '/etc/pve/priv/realm/.pw'.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "port" : { "description" : "Server port.", "maximum" : 65535, @@ -28327,7 +42119,7 @@ var pveapi = [ "typetext" : "" }, "secure" : { - "description" : "Use secure LDAPS protocol.", + "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -28348,13 +42140,37 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "sslversion" : { + "description" : "LDAPS TLS/SSL version. It's not recommended to use version older than 1.2!", + "enum" : [ + "tlsv1", + "tlsv1_1", + "tlsv1_2", + "tlsv1_3" + ], + "optional" : 1, + "type" : "string" + }, + "sync-defaults-options" : { + "description" : "The default options for behavior of synchronizations.", + "format" : "realm-sync-options", + "optional" : 1, + "type" : "string", + "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=]" + }, + "sync_attributes" : { + "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write 'email=mail'. By default, each PVE user field is represented by an LDAP attribute of the same name.", + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, "tfa" : { "description" : "Use Two-factor authentication.", "format" : "pve-tfa-config", "maxLength" : 128, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" }, "user_attr" : { "description" : "LDAP user attribute name", @@ -28363,6 +42179,14 @@ var pveapi = [ "pattern" : "\\S{2,}", "type" : "string" }, + "user_classes" : { + "default" : "inetorgperson, posixaccount, person, user", + "description" : "The objectclasses for users.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "verify" : { "default" : 0, "description" : "Verify the server's SSL certificate", @@ -28388,13 +42212,14 @@ var pveapi = [ } } }, - "leaf" : 1, + "leaf" : 0, "path" : "/access/domains/{realm}", "text" : "{realm}" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Authentication domain index.", "method" : "GET", "name" : "index", @@ -28424,6 +42249,9 @@ var pveapi = [ ], "optional" : 1, "type" : "string" + }, + "type" : { + "type" : "string" } }, "type" : "object" @@ -28438,6 +42266,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Add an authentication server.", "method" : "POST", "name" : "create", @@ -28465,6 +42294,13 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "case-sensitive" : { + "default" : 1, + "description" : "username is case-sensitive", + "optional" : 1, + "type" : "boolean", + "typetext" : "" + }, "cert" : { "description" : "Path to the client certificate", "optional" : 1, @@ -28497,6 +42333,60 @@ var pveapi = [ "pattern" : "\\S+", "type" : "string" }, + "filter" : { + "description" : "LDAP filter for user sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_classes" : { + "default" : "groupOfNames, group, univentionGroup, ipausergroup", + "description" : "The objectclasses for groups.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_dn" : { + "description" : "LDAP base domain name for group sync. If not set, the base_dn will be used.", + "maxLength" : 256, + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, + "group_filter" : { + "description" : "LDAP filter for group sync.", + "maxLength" : 2048, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "group_name_attr" : { + "description" : "LDAP attribute representing a groups name. If not set or found, the first value of the DN will be used as name.", + "format" : "ldap-simple-attr", + "maxLength" : 256, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "mode" : { + "default" : "ldap", + "description" : "LDAP protocol mode.", + "enum" : [ + "ldap", + "ldaps", + "ldap+starttls" + ], + "optional" : 1, + "type" : "string" + }, + "password" : { + "description" : "LDAP bind password. Will be stored in '/etc/pve/priv/realm/.pw'.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "port" : { "description" : "Server port.", "maximum" : 65535, @@ -28513,7 +42403,7 @@ var pveapi = [ "typetext" : "" }, "secure" : { - "description" : "Use secure LDAPS protocol.", + "description" : "Use secure LDAPS protocol. DEPRECATED: use 'mode' instead.", "optional" : 1, "type" : "boolean", "typetext" : "" @@ -28534,13 +42424,37 @@ var pveapi = [ "type" : "string", "typetext" : "" }, + "sslversion" : { + "description" : "LDAPS TLS/SSL version. It's not recommended to use version older than 1.2!", + "enum" : [ + "tlsv1", + "tlsv1_1", + "tlsv1_2", + "tlsv1_3" + ], + "optional" : 1, + "type" : "string" + }, + "sync-defaults-options" : { + "description" : "The default options for behavior of synchronizations.", + "format" : "realm-sync-options", + "optional" : 1, + "type" : "string", + "typetext" : "[enable-new=<1|0>] [,full=<1|0>] [,purge=<1|0>] [,scope=]" + }, + "sync_attributes" : { + "description" : "Comma separated list of key=value pairs for specifying which LDAP attributes map to which PVE user field. For example, to map the LDAP attribute 'mail' to PVEs 'email', write 'email=mail'. By default, each PVE user field is represented by an LDAP attribute of the same name.", + "optional" : 1, + "pattern" : "\\w+=[^,]+(,\\s*\\w+=[^,]+)*", + "type" : "string" + }, "tfa" : { "description" : "Use Two-factor authentication.", "format" : "pve-tfa-config", "maxLength" : 128, "optional" : 1, "type" : "string", - "typetext" : "" + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" }, "type" : { "description" : "Realm type.", @@ -28559,6 +42473,14 @@ var pveapi = [ "pattern" : "\\S{2,}", "type" : "string" }, + "user_classes" : { + "default" : "inetorgperson, posixaccount, person, user", + "description" : "The objectclasses for users.", + "format" : "ldap-simple-attr-list", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, "verify" : { "default" : 0, "description" : "Verify the server's SSL certificate", @@ -28591,6 +42513,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "Dummy. Useful for formatters which want to provide a login page.", "method" : "GET", "name" : "get_ticket", @@ -28605,6 +42528,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 0, "description" : "Create or verify authentication ticket.", "method" : "POST", "name" : "create_ticket", @@ -28666,6 +42590,10 @@ var pveapi = [ "optional" : 1, "type" : "string" }, + "clustername" : { + "optional" : 1, + "type" : "string" + }, "ticket" : { "optional" : 1, "type" : "string" @@ -28685,9 +42613,10 @@ var pveapi = [ { "info" : { "PUT" : { + "allowtoken" : 0, "description" : "Change user password.", "method" : "PUT", - "name" : "change_passsword", + "name" : "change_password", "parameters" : { "additionalProperties" : 0, "properties" : { @@ -28739,10 +42668,167 @@ var pveapi = [ "leaf" : 1, "path" : "/access/password", "text" : "password" + }, + { + "info" : { + "POST" : { + "allowtoken" : 0, + "description" : "Finish a u2f challenge.", + "method" : "POST", + "name" : "verify_tfa", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "response" : { + "description" : "The response to the current authentication challenge.", + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "user" : "all" + }, + "protected" : 1, + "returns" : { + "properties" : { + "ticket" : { + "type" : "string" + } + }, + "type" : "object" + } + }, + "PUT" : { + "allowtoken" : 0, + "description" : "Change user u2f authentication.", + "method" : "PUT", + "name" : "change_tfa", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "action" : { + "description" : "The action to perform", + "enum" : [ + "delete", + "new", + "confirm" + ], + "type" : "string" + }, + "config" : { + "description" : "A TFA configuration. This must currently be of type TOTP of not set at all.", + "format" : "pve-tfa-config", + "maxLength" : 128, + "optional" : 1, + "type" : "string", + "typetext" : "type= [,digits=] [,id=] [,key=] [,step=] [,url=]" + }, + "key" : { + "description" : "When adding TOTP, the shared secret value.", + "format" : "pve-tfa-secret", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "password" : { + "description" : "The current password.", + "maxLength" : 64, + "minLength" : 5, + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "response" : { + "description" : "Either the the response to the current u2f registration challenge, or, when adding TOTP, the currently valid TOTP value.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "userid" : { + "description" : "User ID", + "format" : "pve-userid", + "maxLength" : 64, + "type" : "string", + "typetext" : "" + } + } + }, + "permissions" : { + "check" : [ + "or", + [ + "userid-param", + "self" + ], + [ + "and", + [ + "userid-param", + "Realm.AllocateUser" + ], + [ + "userid-group", + [ + "User.Modify" + ] + ] + ] + ], + "description" : "A user can change their own u2f or totp token." + }, + "protected" : 1, + "returns" : { + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/tfa", + "text" : "tfa" + }, + { + "info" : { + "GET" : { + "allowtoken" : 1, + "description" : "Retrieve effective permissions of given user/token.", + "method" : "GET", + "name" : "permissions", + "parameters" : { + "additionalProperties" : 0, + "properties" : { + "path" : { + "description" : "Only dump this specific path, not the whole tree.", + "optional" : 1, + "type" : "string", + "typetext" : "" + }, + "userid" : { + "description" : "User ID or full API token ID", + "optional" : 1, + "pattern" : "(?^:^(?^:[^\\s:/]+)\\@(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+)(?:!(?^:[A-Za-z][A-Za-z0-9\\.\\-_]+))?$)", + "type" : "string" + } + } + }, + "permissions" : { + "description" : "Each user/token is allowed to dump their own permissions. A user can dump the permissions of another user if they have 'Sys.Audit' permission on /access.", + "user" : "all" + }, + "returns" : { + "description" : "Map of \"path\" => (Map of \"privilege\" => \"propagate boolean\").", + "type" : "object" + } + } + }, + "leaf" : 1, + "path" : "/access/permissions", + "text" : "permissions" } ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Directory index.", "method" : "GET", "name" : "index", @@ -28780,6 +42866,7 @@ var pveapi = [ { "info" : { "DELETE" : { + "allowtoken" : 1, "description" : "Delete pool.", "method" : "DELETE", "name" : "delete_pool", @@ -28809,6 +42896,7 @@ var pveapi = [ } }, "GET" : { + "allowtoken" : 1, "description" : "Get pool configuration.", "method" : "GET", "name" : "read_pool", @@ -28875,6 +42963,7 @@ var pveapi = [ } }, "PUT" : { + "allowtoken" : 1, "description" : "Update pool data.", "method" : "PUT", "name" : "update_pool", @@ -28936,6 +43025,7 @@ var pveapi = [ ], "info" : { "GET" : { + "allowtoken" : 1, "description" : "Pool index.", "method" : "GET", "name" : "index", @@ -28965,6 +43055,7 @@ var pveapi = [ } }, "POST" : { + "allowtoken" : 1, "description" : "Create new pool.", "method" : "POST", "name" : "create_pool", @@ -29005,6 +43096,7 @@ var pveapi = [ { "info" : { "GET" : { + "allowtoken" : 1, "description" : "API version details. The result also includes the global datacenter confguration.", "method" : "GET", "name" : "version",