Skip to content

Commit cd28860

Browse files
Martin Moreira de Jesusnoetarbouriech
andcommitted
feat(node-agent): add cni
add cni and format code Signed-off-by: Martin Moreira de Jesus <[email protected]> Signed-off-by: Noé Tarbouriech <[email protected]> Co-Authored-By: Noé Tarbouriech <[email protected]>
1 parent 88c6e0d commit cd28860

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

node-agent/src/args.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ pub struct CliArguments {
99
#[arg(long, default_value_t = 3, env)]
1010
pub lifecycle_retries: i32,
1111

12+
/// Enable the orka CNI in containerd.
13+
#[arg(long, default_value_t = false, env)]
14+
pub cni: bool,
1215

1316
/// The address of the scheduler to connect the node agent to.
1417
#[arg(long, default_value = "[::]", env)]

node-agent/src/main.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,28 @@ mod workload_manager;
33

44
use std::process::exit;
55

6-
use clap::Parser;
7-
use orka_proto::scheduler_agent::{lifecycle_service_client::LifecycleServiceClient, ConnectionRequest, status_update_service_client::StatusUpdateServiceClient, DisconnectionNotice};
8-
use tokio::sync::mpsc::{Sender, Receiver, self};
9-
use tracing::{info, error, warn};
10-
use uuid::Uuid;
116
use anyhow::Result;
7+
use clap::Parser;
8+
use orka_proto::scheduler_agent::{
9+
lifecycle_service_client::LifecycleServiceClient,
10+
status_update_service_client::StatusUpdateServiceClient, ConnectionRequest,
11+
DisconnectionNotice,
12+
};
13+
use tokio::sync::mpsc::{self, Receiver, Sender};
14+
use tracing::{error, info, warn};
1215
use tracing_log::AsTrace;
16+
use uuid::Uuid;
1317

14-
use crate::workload_manager::grpc::server::GrpcServer;
1518
use crate::args::CliArguments;
19+
use crate::workload_manager::grpc::server::GrpcServer;
1620
use crate::workload_manager::node::metrics::stream_node_status;
1721

1822
async fn execute_node_lifecycle(
1923
node_id: Uuid,
2024
node_agent_port: u16,
2125
scheduler_connection_string: String,
2226
) -> Result<()> {
23-
info!(
24-
"Connecting to scheduler on {}",
25-
scheduler_connection_string
26-
);
27+
info!("Connecting to scheduler on {}", scheduler_connection_string);
2728

2829
loop {
2930
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
@@ -100,7 +101,7 @@ async fn main() {
100101
info!("Node ID: {}", node_id);
101102

102103
let (tx, mut rx): (Sender<i32>, Receiver<i32>) = mpsc::channel(1);
103-
104+
104105
let lifecycle_tx = tx.clone();
105106
let lifecycle_connection_string = scheduler_connection_string.clone();
106107

@@ -125,7 +126,8 @@ async fn main() {
125126
}
126127
}
127128

128-
error!("
129+
error!(
130+
"
129131
Node lifecycle failed, initiating graceful shutdown"
130132
);
131133

@@ -134,9 +136,9 @@ async fn main() {
134136

135137
// start grpc server
136138
tokio::spawn(async move {
137-
error!("Starting gRPC server on {}:{}",
138-
args.node_agent_address,
139-
args.node_agent_port
139+
error!(
140+
"Starting gRPC server on {}:{}",
141+
args.node_agent_address, args.node_agent_port
140142
);
141143

142144
let grpc = GrpcServer::new(args.node_agent_address, args.node_agent_port);

node-agent/src/workload_manager/container/client.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
use clap::Parser;
12
use containerd_client::{
23
connect,
34
services::v1::{
4-
containers_client::ContainersClient, tasks_client::TasksClient,
5-
GetContainerRequest, GetContainerResponse, KillRequest, WaitRequest, WaitResponse, DeleteTaskRequest, DeleteContainerRequest, GetResponse, GetRequest, MetricsRequest, MetricsResponse,
5+
containers_client::ContainersClient, tasks_client::TasksClient, DeleteContainerRequest,
6+
DeleteTaskRequest, GetContainerRequest, GetContainerResponse, GetRequest, GetResponse,
7+
KillRequest, MetricsRequest, MetricsResponse, WaitRequest, WaitResponse,
68
},
79
with_namespace,
810
};
@@ -12,6 +14,7 @@ use tonic::{Request, Status};
1214

1315
use super::error::ContainerClientError;
1416

17+
use crate::args::CliArguments;
1518
use orka_proto::node_agent::Workload;
1619

1720
const NAMESPACE: &str = "default";
@@ -172,9 +175,16 @@ impl ContainerClient {
172175
.iter()
173176
.map(|value| format!("--env={}", value));
174177

178+
let cni = if CliArguments::parse().cni {
179+
vec!["--cni"]
180+
} else {
181+
vec![]
182+
};
183+
175184
// TODO - use containerd library to create container instead of ctr
176185
let command = Command::new("ctr")
177186
.arg("run")
187+
.args(cni.as_slice())
178188
.arg("--detach")
179189
.args(env)
180190
.arg(&workload.image)

0 commit comments

Comments
 (0)