Skip to content

Commit 1347d49

Browse files
authored
feat(data-plane): support for multiple servers (#173)
# Description Support listening on multiple server endpoints for message processor. Signed-off-by: Mauro Sardara <[email protected]>
1 parent 716acf4 commit 1347d49

File tree

13 files changed

+134
-114
lines changed

13 files changed

+134
-114
lines changed

data-plane/config/base/server-config.yaml

+4-5
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ runtime:
1313

1414
services:
1515
gateway/0:
16-
server:
17-
endpoint: "0.0.0.0:46357"
18-
tls:
19-
insecure: true
20-
16+
servers:
17+
- endpoint: "0.0.0.0:46357"
18+
tls:
19+
insecure: true
2120
clients: []

data-plane/config/basic-auth/server-config.yaml

+9-9
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ runtime:
1313

1414
services:
1515
gateway/0:
16-
server:
17-
endpoint: "0.0.0.0:46357"
18-
tls:
19-
cert_file: "./config/crypto/server-cert.pem"
20-
key_file: "./config/crypto/server-key.pem"
21-
auth:
22-
basic:
23-
username: username
24-
password: ${env:PASSWORD}
16+
servers:
17+
- endpoint: "0.0.0.0:46357"
18+
tls:
19+
cert_file: "./config/crypto/server-cert.pem"
20+
key_file: "./config/crypto/server-key.pem"
21+
auth:
22+
basic:
23+
username: username
24+
password: ${env:PASSWORD}
2525

2626
clients: []

data-plane/config/mtls/server-config.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ runtime:
1313

1414
services:
1515
gateway/0:
16-
server:
17-
endpoint: "0.0.0.0:46357"
18-
tls:
19-
cert_file: "./config/crypto/server-cert.pem"
20-
key_file: "./config/crypto/server-key.pem"
16+
servers:
17+
- endpoint: "0.0.0.0:46357"
18+
tls:
19+
cert_file: "./config/crypto/server-cert.pem"
20+
key_file: "./config/crypto/server-key.pem"
2121

22-
client_ca_file: "./config/crypto/client-ca-cert.pem"
22+
client_ca_file: "./config/crypto/client-ca-cert.pem"
2323

2424
clients: []

data-plane/config/tls/server-config.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ runtime:
1313

1414
services:
1515
gateway/0:
16-
server:
17-
endpoint: "0.0.0.0:46357"
18-
tls:
19-
cert_file: "./config/crypto/server-cert.pem"
20-
key_file: "./config/crypto/server-key.pem"
16+
servers:
17+
- endpoint: "0.0.0.0:46357"
18+
tls:
19+
cert_file: "./config/crypto/server-cert.pem"
20+
key_file: "./config/crypto/server-key.pem"
2121

2222
clients: []

data-plane/examples/src/sdk-mock/main.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ async fn main() {
3939

4040
// get service
4141
let id = agp_config::component::id::ID::new_with_str("gateway/0").unwrap();
42-
let svc = config.services.remove(&id).unwrap();
42+
let mut svc = config.services.remove(&id).unwrap();
4343

4444
// create local agent
4545
let agent_id = 0;
@@ -49,9 +49,13 @@ async fn main() {
4949
.await
5050
.expect("failed to create agent");
5151

52-
// connect to the remote gateway
53-
let conn_id = svc.connect(None).await.unwrap();
54-
info!("remote connection id = {}", conn_id);
52+
// run the service - this will create all the connections provided via the config file.
53+
svc.run().await.unwrap();
54+
55+
// get the connection id
56+
let conn_id = svc
57+
.get_connection_id(&svc.config().clients()[0].endpoint)
58+
.unwrap();
5559

5660
let local_agent_type = AgentType::from_strings("cisco", "default", local_agent);
5761
svc.subscribe(

data-plane/gateway/config/src/component.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ pub trait Component {
2323

2424
// start the component
2525
#[allow(async_fn_in_trait)]
26-
async fn start(&self) -> Result<(), ComponentError>;
26+
async fn start(&mut self) -> Result<(), ComponentError>;
2727
}
2828

2929
pub trait ComponentBuilder {

data-plane/gateway/gateway/src/bin/main.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn main() {
2424
let config_file = args.config().expect("config file is required");
2525

2626
// create configured components
27-
let config = config::load_config(config_file).expect("failed to load configuration");
27+
let mut config = config::load_config(config_file).expect("failed to load configuration");
2828

2929
// print build info
3030
info!("{}", build_info::BUILD_INFO);
@@ -49,7 +49,7 @@ fn main() {
4949
);
5050

5151
// start services
52-
for service in config.services.iter() {
52+
for service in config.services.iter_mut() {
5353
info!("Starting service: {}", service.0);
5454
service.1.start().await.expect("failed to start service")
5555
}

data-plane/gateway/nop_component/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl Component for NopComponent {
6565
}
6666

6767
// Start the component
68-
async fn start(&self) -> Result<(), ComponentError> {
68+
async fn start(&mut self) -> Result<(), ComponentError> {
6969
// Start the component
7070
Ok(())
7171
}

data-plane/gateway/service/src/errors.rs

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ pub enum ServiceError {
3333
SessionNotFound(String),
3434
#[error("error in session: {0}")]
3535
SessionError(String),
36+
#[error("client already connected: {0}")]
37+
ClientAlreadyConnected(String),
3638
#[error("unknown error")]
3739
Unknown,
3840
}

0 commit comments

Comments
 (0)