From e56c4532ce5dace34fe83cfb78beafff127601ee Mon Sep 17 00:00:00 2001 From: cthuang Date: Fri, 11 Feb 2022 15:46:04 +0000 Subject: [PATCH] TUN-5697: Listen for UpdateConfiguration RPC in quic transport --- connection/quic.go | 4 ++-- quic/quic_protocol_test.go | 12 ++++++++---- tunnelrpc/pogs/configurationrpc.go | 8 ++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/connection/quic.go b/connection/quic.go index 5c4c893d..1b9f2e55 100644 --- a/connection/quic.go +++ b/connection/quic.go @@ -265,8 +265,8 @@ func (q *QUICConnection) UnregisterUdpSession(ctx context.Context, sessionID uui } // UpdateConfiguration is the RPC method invoked by edge when there is a new configuration -func (q *QUICConnection) UpdateConfiguration(ctx context.Context, version int32, config []byte) (*tunnelpogs.UpdateConfigurationResponse, error) { - return nil, fmt.Errorf("TODO: TUN-5698") +func (q *QUICConnection) UpdateConfiguration(ctx context.Context, version int32, config []byte) *tunnelpogs.UpdateConfigurationResponse { + return q.orchestrator.UpdateConfig(version, config) } // streamReadWriteAcker is a light wrapper over QUIC streams with a callback to send response back to diff --git a/quic/quic_protocol_test.go b/quic/quic_protocol_test.go index ae381a54..a801b63e 100644 --- a/quic/quic_protocol_test.go +++ b/quic/quic_protocol_test.go @@ -231,14 +231,18 @@ type mockConfigRPCServer struct { config []byte } -func (s mockConfigRPCServer) UpdateConfiguration(_ context.Context, version int32, config []byte) (*tunnelpogs.UpdateConfigurationResponse, error) { +func (s mockConfigRPCServer) UpdateConfiguration(_ context.Context, version int32, config []byte) *tunnelpogs.UpdateConfigurationResponse { if s.version != version { - return nil, fmt.Errorf("expect version %d, got %d", s.version, version) + return &tunnelpogs.UpdateConfigurationResponse{ + Err: fmt.Errorf("expect version %d, got %d", s.version, version), + } } if !bytes.Equal(s.config, config) { - return nil, fmt.Errorf("expect config %v, got %v", s.config, config) + return &tunnelpogs.UpdateConfigurationResponse{ + Err: fmt.Errorf("expect config %v, got %v", s.config, config), + } } - return &tunnelpogs.UpdateConfigurationResponse{LastAppliedVersion: version}, nil + return &tunnelpogs.UpdateConfigurationResponse{LastAppliedVersion: version} } type mockRPCStream struct { diff --git a/tunnelrpc/pogs/configurationrpc.go b/tunnelrpc/pogs/configurationrpc.go index 294c5e04..b82cdd53 100644 --- a/tunnelrpc/pogs/configurationrpc.go +++ b/tunnelrpc/pogs/configurationrpc.go @@ -11,7 +11,7 @@ import ( ) type ConfigurationManager interface { - UpdateConfiguration(ctx context.Context, version int32, config []byte) (*UpdateConfigurationResponse, error) + UpdateConfiguration(ctx context.Context, version int32, config []byte) *UpdateConfigurationResponse } type ConfigurationManager_PogsImpl struct { @@ -31,16 +31,12 @@ func (i ConfigurationManager_PogsImpl) UpdateConfiguration(p tunnelrpc.Configura return err } - updateResp, err := i.impl.UpdateConfiguration(p.Ctx, version, config) - if err != nil { - return err - } - result, err := p.Results.NewResult() if err != nil { return err } + updateResp := i.impl.UpdateConfiguration(p.Ctx, version, config) return updateResp.Marshal(result) }