msggen: Add staticbackup call to list of managed methods

Changelog-Added: cln-grpc: Added `staticbackup` support to cln-grpc
This commit is contained in:
Christian Decker
2023-08-04 12:25:42 +02:00
committed by Rusty Russell
parent 3e14056ce0
commit 9074341ef6
9 changed files with 572 additions and 418 deletions

View File

@@ -1500,6 +1500,9 @@
"SignpsbtResponse": { "SignpsbtResponse": {
"SignPsbt.signed_psbt": 1 "SignPsbt.signed_psbt": 1
}, },
"StaticbackupResponse": {
"StaticBackup.scb[]": 1
},
"TxdiscardRequest": { "TxdiscardRequest": {
"TxDiscard.txid": 1 "TxDiscard.txid": 1
}, },
@@ -5285,6 +5288,14 @@
"added": "pre-v0.10.1", "added": "pre-v0.10.1",
"deprecated": false "deprecated": false
}, },
"StaticBackup": {
"added": "pre-v0.10.1",
"deprecated": null
},
"StaticBackup.scb[]": {
"added": "pre-v0.10.1",
"deprecated": false
},
"Stop": { "Stop": {
"added": "pre-v0.10.1", "added": "pre-v0.10.1",
"deprecated": null "deprecated": null

View File

@@ -64,6 +64,7 @@ service Node {
rpc Stop(StopRequest) returns (StopResponse) {} rpc Stop(StopRequest) returns (StopResponse) {}
rpc PreApproveKeysend(PreapprovekeysendRequest) returns (PreapprovekeysendResponse) {} rpc PreApproveKeysend(PreapprovekeysendRequest) returns (PreapprovekeysendResponse) {}
rpc PreApproveInvoice(PreapproveinvoiceRequest) returns (PreapproveinvoiceResponse) {} rpc PreApproveInvoice(PreapproveinvoiceRequest) returns (PreapproveinvoiceResponse) {}
rpc StaticBackup(StaticbackupRequest) returns (StaticbackupResponse) {}
} }
message GetinfoRequest { message GetinfoRequest {
@@ -1745,3 +1746,10 @@ message PreapproveinvoiceRequest {
message PreapproveinvoiceResponse { message PreapproveinvoiceResponse {
} }
message StaticbackupRequest {
}
message StaticbackupResponse {
repeated bytes scb = 1;
}

View File

@@ -1623,6 +1623,16 @@ impl From<responses::PreapproveinvoiceResponse> for pb::PreapproveinvoiceRespons
} }
} }
#[allow(unused_variables)]
impl From<responses::StaticbackupResponse> for pb::StaticbackupResponse {
fn from(c: responses::StaticbackupResponse) -> Self {
Self {
// Field: StaticBackup.scb[]
scb: c.scb.into_iter().map(|i| hex::decode(i).unwrap()).collect(), // Rule #3 for type hex
}
}
}
#[allow(unused_variables)] #[allow(unused_variables)]
impl From<requests::GetinfoRequest> for pb::GetinfoRequest { impl From<requests::GetinfoRequest> for pb::GetinfoRequest {
fn from(c: requests::GetinfoRequest) -> Self { fn from(c: requests::GetinfoRequest) -> Self {
@@ -2317,6 +2327,14 @@ impl From<requests::PreapproveinvoiceRequest> for pb::PreapproveinvoiceRequest {
} }
} }
#[allow(unused_variables)]
impl From<requests::StaticbackupRequest> for pb::StaticbackupRequest {
fn from(c: requests::StaticbackupRequest) -> Self {
Self {
}
}
}
#[allow(unused_variables)] #[allow(unused_variables)]
impl From<pb::GetinfoRequest> for requests::GetinfoRequest { impl From<pb::GetinfoRequest> for requests::GetinfoRequest {
@@ -2996,3 +3014,11 @@ impl From<pb::PreapproveinvoiceRequest> for requests::PreapproveinvoiceRequest {
} }
} }
#[allow(unused_variables)]
impl From<pb::StaticbackupRequest> for requests::StaticbackupRequest {
fn from(c: pb::StaticbackupRequest) -> Self {
Self {
}
}
}

View File

@@ -1818,4 +1818,36 @@ async fn pre_approve_invoice(
} }
async fn static_backup(
&self,
request: tonic::Request<pb::StaticbackupRequest>,
) -> Result<tonic::Response<pb::StaticbackupResponse>, tonic::Status> {
let req = request.into_inner();
let req: requests::StaticbackupRequest = req.into();
debug!("Client asked for static_backup");
trace!("static_backup request: {:?}", req);
let mut rpc = ClnRpc::new(&self.rpc_path)
.await
.map_err(|e| Status::new(Code::Internal, e.to_string()))?;
let result = rpc.call(Request::StaticBackup(req))
.await
.map_err(|e| Status::new(
Code::Unknown,
format!("Error calling method StaticBackup: {:?}", e)))?;
match result {
Response::StaticBackup(r) => {
trace!("static_backup response: {:?}", r);
Ok(tonic::Response::new(r.into()))
},
r => Err(Status::new(
Code::Internal,
format!(
"Unexpected result {:?} to method call StaticBackup",
r
)
)),
}
}
} }

32
cln-rpc/src/model.rs generated
View File

@@ -70,6 +70,7 @@ pub enum Request {
Stop(requests::StopRequest), Stop(requests::StopRequest),
PreApproveKeysend(requests::PreapprovekeysendRequest), PreApproveKeysend(requests::PreapprovekeysendRequest),
PreApproveInvoice(requests::PreapproveinvoiceRequest), PreApproveInvoice(requests::PreapproveinvoiceRequest),
StaticBackup(requests::StaticbackupRequest),
} }
#[derive(Clone, Debug, Serialize, Deserialize)] #[derive(Clone, Debug, Serialize, Deserialize)]
@@ -132,6 +133,7 @@ pub enum Response {
Stop(responses::StopResponse), Stop(responses::StopResponse),
PreApproveKeysend(responses::PreapprovekeysendResponse), PreApproveKeysend(responses::PreapprovekeysendResponse),
PreApproveInvoice(responses::PreapproveinvoiceResponse), PreApproveInvoice(responses::PreapproveinvoiceResponse),
StaticBackup(responses::StaticbackupResponse),
} }
@@ -1555,6 +1557,20 @@ pub mod requests {
type Response = super::responses::PreapproveinvoiceResponse; type Response = super::responses::PreapproveinvoiceResponse;
} }
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct StaticbackupRequest {
}
impl From<StaticbackupRequest> for Request {
fn from(r: StaticbackupRequest) -> Self {
Request::StaticBackup(r)
}
}
impl IntoRequest for StaticbackupRequest {
type Response = super::responses::StaticbackupResponse;
}
} }
@@ -4900,5 +4916,21 @@ pub mod responses {
} }
} }
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct StaticbackupResponse {
pub scb: Vec<String>,
}
impl TryFrom<Response> for StaticbackupResponse {
type Error = super::TryFromResponseError;
fn try_from(response: Response) -> Result<Self, Self::Error> {
match response {
Response::StaticBackup(response) => Ok(response),
_ => Err(TryFromResponseError)
}
}
}
} }

View File

@@ -111,6 +111,7 @@ def load_jsonrpc_service(schema_dir: str):
# "help", # "help",
"PreApproveKeysend", "PreApproveKeysend",
"PreApproveInvoice", "PreApproveInvoice",
"StaticBackup",
] ]
methods = [load_jsonrpc_method(name, schema_dir=schema_dir) for name in method_names] methods = [load_jsonrpc_method(name, schema_dir=schema_dir) for name in method_names]
service = Service(name="Node", methods=methods) service = Service(name="Node", methods=methods)

File diff suppressed because one or more lines are too long

View File

@@ -294,6 +294,11 @@ class NodeStub(object):
request_serializer=node__pb2.PreapproveinvoiceRequest.SerializeToString, request_serializer=node__pb2.PreapproveinvoiceRequest.SerializeToString,
response_deserializer=node__pb2.PreapproveinvoiceResponse.FromString, response_deserializer=node__pb2.PreapproveinvoiceResponse.FromString,
) )
self.StaticBackup = channel.unary_unary(
'/cln.Node/StaticBackup',
request_serializer=node__pb2.StaticbackupRequest.SerializeToString,
response_deserializer=node__pb2.StaticbackupResponse.FromString,
)
class NodeServicer(object): class NodeServicer(object):
@@ -635,6 +640,12 @@ class NodeServicer(object):
context.set_details('Method not implemented!') context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!') raise NotImplementedError('Method not implemented!')
def StaticBackup(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def add_NodeServicer_to_server(servicer, server): def add_NodeServicer_to_server(servicer, server):
rpc_method_handlers = { rpc_method_handlers = {
@@ -918,6 +929,11 @@ def add_NodeServicer_to_server(servicer, server):
request_deserializer=node__pb2.PreapproveinvoiceRequest.FromString, request_deserializer=node__pb2.PreapproveinvoiceRequest.FromString,
response_serializer=node__pb2.PreapproveinvoiceResponse.SerializeToString, response_serializer=node__pb2.PreapproveinvoiceResponse.SerializeToString,
), ),
'StaticBackup': grpc.unary_unary_rpc_method_handler(
servicer.StaticBackup,
request_deserializer=node__pb2.StaticbackupRequest.FromString,
response_serializer=node__pb2.StaticbackupResponse.SerializeToString,
),
} }
generic_handler = grpc.method_handlers_generic_handler( generic_handler = grpc.method_handlers_generic_handler(
'cln.Node', rpc_method_handlers) 'cln.Node', rpc_method_handlers)
@@ -1879,3 +1895,20 @@ class Node(object):
node__pb2.PreapproveinvoiceResponse.FromString, node__pb2.PreapproveinvoiceResponse.FromString,
options, channel_credentials, options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata) insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def StaticBackup(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/cln.Node/StaticBackup',
node__pb2.StaticbackupRequest.SerializeToString,
node__pb2.StaticbackupResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

View File

@@ -1371,3 +1371,9 @@ def preapprovekeysend2py(m):
def preapproveinvoice2py(m): def preapproveinvoice2py(m):
return remove_default({ return remove_default({
}) })
def staticbackup2py(m):
return remove_default({
"scb": [hexlify(m.scb) for i in hexlify(m.scb)], # ArrayField[primitive] in generate_composite
})