# JSON-RPC Methods {#jsonrpc} # Overview {#jsonrpc_overview} SPDK implements a [JSON-RPC 2.0](http://www.jsonrpc.org/specification) server to allow external management tools to dynamically configure SPDK components. # App Framework {#jsonrpc_components_app} ## kill_instance {#rpc_kill_instance} Send a signal to the application. ### Parameters Name | Optional | Type | Description ----------------------- | -------- | ----------- | ----------- sig_name | Required | string | Signal to send (SIGINT, SIGTERM, SIGQUIT, SIGHUP, or SIGKILL) ### Example Example request: ~~~ { "jsonrpc": "2.0", "id": 1, "method": "kill_instance", "params": { "sig_name": "SIGINT" } } ~~~ Example response: ~~~ { "jsonrpc": "2.0", "id": 1, "result": true } ~~~ ## context_switch_monitor {#rpc_context_switch_monitor} Query, enable, or disable the context switch monitoring functionality. ### Parameters Name | Optional | Type | Description ----------------------- | -------- | ----------- | ----------- enabled | Optional | boolean | Enable (`true`) or disable (`false`) monitoring (omit this parameter to query the current state) ### Response The current state of context switch monitoring is returned as a boolean. ### Example Example request: ~~~ { "jsonrpc": "2.0", "id": 1, "method": "context_switch_monitor", "params": { "enabled": false } } ~~~ Example response: ~~~ { "jsonrpc": "2.0", "id": 1, "result": false } ~~~ # NVMe-oF Target {#jsonrpc_components_nvmf_tgt} ## get_nvmf_subsystems method {#rpc_get_nvmf_subsystems} ### Parameters This method has no parameters. ### Example Example request: ~~~ { "jsonrpc": "2.0", "id": 1, "method": "get_nvmf_subsystems" } ~~~ Example response: ~~~ { "jsonrpc": "2.0", "id": 1, "result": [ { "core": 0, "nqn": "nqn.2014-08.org.nvmexpress.discovery", "subtype": "Discovery" "listen_addresses": [], "hosts": [], "allow_any_host": true }, { "core": 5, "nqn": "nqn.2016-06.io.spdk:cnode1", "subtype": "NVMe", "listen_addresses": [ { "trtype": "RDMA", "adrfam": "IPv4", "traddr": "192.168.0.123", "trsvcid": "4420" } ], "hosts": [ {"nqn": "nqn.2016-06.io.spdk:host1"} ], "allow_any_host": false, "serial_number": "abcdef", "namespaces": [ {"nsid": 1, "name": "Malloc2"}, {"nsid": 2, "name": "Nvme0n1"} ] } ] } ~~~ ## construct_nvmf_subsystem method {#rpc_construct_nvmf_subsystem} Construct an NVMe over Fabrics target subsystem. ### Parameters Name | Optional | Type | Description ----------------------- | -------- | ----------- | ----------- core | Optional | number | Core to run the subsystem's poller on. Default: Automatically assign a core. nqn | Required | string | Subsystem NQN listen_addresses | Required | array | Array of @ref rpc_construct_nvmf_subsystem_listen_address objects hosts | Optional | array | Array of strings containing allowed host NQNs. Default: No hosts allowed. allow_any_host | Optional | boolean | Allow any host (`true`) or enforce allowed host whitelist (`false`). Default: `false`. serial_number | Required | string | Serial number of virtual controller namespaces | Optional | array | Array of @ref rpc_construct_nvmf_subsystem_namespace objects. Default: No namespaces. ### listen_address {#rpc_construct_nvmf_subsystem_listen_address} Name | Optional | Type | Description ----------------------- | -------- | ----------- | ----------- trtype | Required | string | Transport type ("RDMA") adrfam | Required | string | Address family ("IPv4", "IPv6", "IB", or "FC") traddr | Required | string | Transport address trsvcid | Required | string | Transport service ID ### namespace {#rpc_construct_nvmf_subsystem_namespace} Name | Optional | Type | Description ----------------------- | -------- | ----------- | ----------- nsid | Optional | number | Namespace ID between 1 and 4294967294, inclusive. Default: Automatically assign NSID. bdev_name | Required | string | Name of bdev to expose as a namespace. ### Example Example request: ~~~ { "jsonrpc": "2.0", "id": 1, "method": "construct_nvmf_subsystem", "params": { "core": 5, "nqn": "nqn.2016-06.io.spdk:cnode1", "listen_addresses": [ { "trtype": "RDMA", "adrfam": "IPv4", "traddr": "192.168.0.123", "trsvcid: "4420" } ], "hosts": [ "nqn.2016-06.io.spdk:host1", "nqn.2016-06.io.spdk:host2" ], "allow_any_host": false, "serial_number": "abcdef", "namespaces": [ {"nsid": 1, "name": "Malloc2"}, {"nsid": 2, "name": "Nvme0n1"} ] } } ~~~ Example response: ~~~ { "jsonrpc": "2.0", "id": 1, "result": true } ~~~ ## delete_nvmf_subsystem method {#rpc_delete_nvmf_subsystem} Delete an existing NVMe-oF subsystem. ### Parameters Parameter | Optional | Type | Description ---------------------- | -------- | ----------- | ----------- nqn | Required | string | Subsystem NQN to delete. ### Example Example request: ~~~ { "jsonrpc": "2.0", "id": 1, "method": "delete_nvmf_subsystem", "params": { "nqn": "nqn.2016-06.io.spdk:cnode1" } } ~~~ Example response: ~~~ { "jsonrpc": "2.0", "id": 1, "result": true } ~~~