Skip to content

Commit 9ab22a0

Browse files
author
Jonathan Woollett-Light
committed
fix: tracing::instrument
Adds function instrumentation. Signed-off-by: Jonathan Woollett-Light <jcawl@amazon.co.uk>
1 parent 6b3d1e3 commit 9ab22a0

File tree

221 files changed

+2303
-5
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

221 files changed

+2303
-5
lines changed

src/api_server/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ impl ApiServer {
6363
/// Constructor for `ApiServer`.
6464
///
6565
/// Returns the newly formed `ApiServer`.
66+
#[tracing::instrument(level = "trace", ret)]
6667
pub fn new(
6768
api_request_sender: mpsc::Sender<ApiRequest>,
6869
vmm_response_receiver: mpsc::Receiver<ApiResponse>,
@@ -147,6 +148,7 @@ impl ApiServer {
147148
/// let mut buf: [u8; 100] = [0; 100];
148149
/// assert!(sock.read(&mut buf[..]).unwrap() > 0);
149150
/// ```
151+
#[tracing::instrument(level = "trace", ret)]
150152
pub fn bind_and_run(
151153
&mut self,
152154
path: &PathBuf,
@@ -223,6 +225,7 @@ impl ApiServer {
223225
}
224226

225227
/// Handles an API request received through the associated socket.
228+
#[tracing::instrument(level = "trace", ret)]
226229
pub fn handle_request(
227230
&mut self,
228231
request: &Request,
@@ -252,6 +255,7 @@ impl ApiServer {
252255
}
253256
}
254257

258+
#[tracing::instrument(level = "trace", ret)]
255259
fn serve_vmm_action_request(
256260
&mut self,
257261
vmm_action: Box<VmmAction>,
@@ -294,12 +298,14 @@ impl ApiServer {
294298
}
295299

296300
/// An HTTP response which also includes a body.
301+
#[tracing::instrument(level = "trace", ret)]
297302
pub(crate) fn json_response<T: Into<String> + Debug>(status: StatusCode, body: T) -> Response {
298303
let mut response = Response::new(Version::Http11, status);
299304
response.set_body(Body::new(body.into()));
300305
response
301306
}
302307

308+
#[tracing::instrument(level = "trace", ret)]
303309
fn json_fault_message<T: AsRef<str> + serde::Serialize + Debug>(msg: T) -> String {
304310
json!({ "fault_message": msg }).to_string()
305311
}

src/api_server/src/parsed_request.rs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,15 @@ pub(crate) struct ParsingInfo {
4242
}
4343

4444
impl ParsingInfo {
45+
#[tracing::instrument(level = "trace", ret)]
4546
pub fn append_deprecation_message(&mut self, message: &str) {
4647
match self.deprecation_message.as_mut() {
4748
None => self.deprecation_message = Some(message.to_owned()),
4849
Some(s) => (*s).push_str(message),
4950
}
5051
}
5152

53+
#[tracing::instrument(level = "trace", ret)]
5254
pub fn take_deprecation_message(&mut self) -> Option<String> {
5355
self.deprecation_message.take()
5456
}
@@ -122,21 +124,25 @@ impl TryFrom<&Request> for ParsedRequest {
122124
}
123125

124126
impl ParsedRequest {
127+
#[tracing::instrument(level = "trace", ret)]
125128
pub(crate) fn new(action: RequestAction) -> Self {
126129
Self {
127130
action,
128131
parsing_info: Default::default(),
129132
}
130133
}
131-
134+
135+
#[tracing::instrument(level = "trace", ret)]
132136
pub(crate) fn into_parts(self) -> (RequestAction, ParsingInfo) {
133137
(self.action, self.parsing_info)
134138
}
135139

140+
#[tracing::instrument(level = "trace")]
136141
pub(crate) fn parsing_info(&mut self) -> &mut ParsingInfo {
137142
&mut self.parsing_info
138143
}
139144

145+
#[tracing::instrument(level = "trace", ret)]
140146
pub(crate) fn success_response_with_data<T>(body_data: &T) -> Response
141147
where
142148
T: ?Sized + Serialize + Debug,
@@ -147,6 +153,7 @@ impl ParsedRequest {
147153
response
148154
}
149155

156+
#[tracing::instrument(level = "trace", ret)]
150157
pub(crate) fn success_response_with_mmds_value(body_data: &Value) -> Response {
151158
info!("The request was executed successfully. Status code: 200 OK.");
152159
let mut response = Response::new(Version::Http11, StatusCode::OK);
@@ -158,6 +165,7 @@ impl ParsedRequest {
158165
response
159166
}
160167

168+
#[tracing::instrument(level = "trace", ret)]
161169
pub(crate) fn convert_to_response(
162170
request_outcome: &std::result::Result<VmmData, VmmActionError>,
163171
) -> Response {
@@ -207,6 +215,7 @@ impl ParsedRequest {
207215
}
208216

209217
/// Helper function to avoid boiler-plate code.
218+
#[tracing::instrument(level = "trace", ret)]
210219
pub(crate) fn new_sync(vmm_action: VmmAction) -> ParsedRequest {
211220
ParsedRequest::new(RequestAction::Sync(Box::new(vmm_action)))
212221
}
@@ -216,6 +225,7 @@ impl ParsedRequest {
216225
///
217226
/// The `info` macro is used for logging.
218227
#[inline]
228+
#[tracing::instrument(level = "trace", ret)]
219229
fn log_received_api_request(api_description: String) {
220230
info!("The API server received a {}.", api_description);
221231
}
@@ -227,6 +237,7 @@ fn log_received_api_request(api_description: String) {
227237
/// * `method` - one of `GET`, `PATCH`, `PUT`
228238
/// * `path` - path of the API request
229239
/// * `body` - body of the API request
240+
#[tracing::instrument(level = "trace", ret)]
230241
fn describe(method: Method, path: &str, body: Option<&Body>) -> String {
231242
match (path, body) {
232243
("/mmds", Some(_)) | (_, None) => format!("{:?} request on {:?}", method, path),
@@ -242,6 +253,7 @@ fn describe(method: Method, path: &str, body: Option<&Body>) -> String {
242253
}
243254

244255
/// Generates a `GenericError` for each request method.
256+
#[tracing::instrument(level = "trace", ret)]
245257
pub(crate) fn method_to_error(method: Method) -> Result<ParsedRequest, Error> {
246258
match method {
247259
Method::Get => Err(Error::Generic(
@@ -280,6 +292,7 @@ pub(crate) enum Error {
280292

281293
// It's convenient to turn errors into HTTP responses directly.
282294
impl From<Error> for Response {
295+
#[tracing::instrument(level = "trace", ret)]
283296
fn from(err: Error) -> Self {
284297
let msg = ApiServer::json_fault_message(format!("{}", err));
285298
match err {
@@ -293,6 +306,7 @@ impl From<Error> for Response {
293306
}
294307

295308
// This function is supposed to do id validation for requests.
309+
#[tracing::instrument(level = "trace", ret)]
296310
pub(crate) fn checked_id(id: &str) -> Result<&str, Error> {
297311
// todo: are there any checks we want to do on id's?
298312
// not allow them to be empty strings maybe?
@@ -325,6 +339,7 @@ pub mod tests {
325339
use super::*;
326340

327341
impl PartialEq for ParsedRequest {
342+
#[tracing::instrument(level = "trace", ret)]
328343
fn eq(&self, other: &ParsedRequest) -> bool {
329344
if self.parsing_info.deprecation_message != other.parsing_info.deprecation_message {
330345
return false;
@@ -339,13 +354,15 @@ pub mod tests {
339354
}
340355
}
341356

357+
#[tracing::instrument(level = "trace", ret)]
342358
pub(crate) fn vmm_action_from_request(req: ParsedRequest) -> VmmAction {
343359
match req.action {
344360
RequestAction::Sync(vmm_action) => *vmm_action,
345361
_ => panic!("Invalid request"),
346362
}
347363
}
348364

365+
#[tracing::instrument(level = "trace", ret)]
349366
pub(crate) fn depr_action_from_req(req: ParsedRequest, msg: Option<String>) -> VmmAction {
350367
let (action_req, mut parsing_info) = req.into_parts();
351368
match action_req {
@@ -359,6 +376,7 @@ pub mod tests {
359376
}
360377
}
361378

379+
#[tracing::instrument(level = "trace", ret)]
362380
fn http_response(body: &str, status_code: i32) -> String {
363381
let header = format!(
364382
"HTTP/1.1 {} \r\nServer: Firecracker API\r\nConnection: keep-alive\r\n",
@@ -378,6 +396,7 @@ pub mod tests {
378396
}
379397
}
380398

399+
#[tracing::instrument(level = "trace", ret)]
381400
fn http_request(request_type: &str, endpoint: &str, body: Option<&str>) -> String {
382401
let req_no_body = format!(
383402
"{} {} HTTP/1.1\r\nContent-Type: application/json\r\n",

src/api_server/src/request/actions.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ struct ActionBody {
2828
action_type: ActionType,
2929
}
3030

31+
#[tracing::instrument(level = "trace", ret)]
3132
pub(crate) fn parse_put_actions(body: &Body) -> Result<ParsedRequest, Error> {
3233
METRICS.put_api_requests.actions_count.inc();
3334
let action_body = serde_json::from_slice::<ActionBody>(body.raw()).map_err(|err| {

src/api_server/src/request/balloon.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use super::super::VmmAction;
1010
use crate::parsed_request::{Error, ParsedRequest};
1111
use crate::request::Body;
1212

13+
#[tracing::instrument(level = "trace", ret)]
1314
pub(crate) fn parse_get_balloon(path_second_token: Option<&str>) -> Result<ParsedRequest, Error> {
1415
match path_second_token {
1516
Some(stats_path) => match stats_path {
@@ -23,12 +24,14 @@ pub(crate) fn parse_get_balloon(path_second_token: Option<&str>) -> Result<Parse
2324
}
2425
}
2526

27+
#[tracing::instrument(level = "trace", ret)]
2628
pub(crate) fn parse_put_balloon(body: &Body) -> Result<ParsedRequest, Error> {
2729
Ok(ParsedRequest::new_sync(VmmAction::SetBalloonDevice(
2830
serde_json::from_slice::<BalloonDeviceConfig>(body.raw())?,
2931
)))
3032
}
3133

34+
#[tracing::instrument(level = "trace", ret)]
3235
pub(crate) fn parse_patch_balloon(
3336
body: &Body,
3437
path_second_token: Option<&str>,

src/api_server/src/request/boot_source.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use super::super::VmmAction;
88
use crate::parsed_request::{Error, ParsedRequest};
99
use crate::request::Body;
1010

11+
#[tracing::instrument(level = "trace", ret)]
1112
pub(crate) fn parse_put_boot_source(body: &Body) -> Result<ParsedRequest, Error> {
1213
METRICS.put_api_requests.boot_source_count.inc();
1314
Ok(ParsedRequest::new_sync(VmmAction::ConfigureBootSource(

src/api_server/src/request/cpu_configuration.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use super::super::VmmAction;
88
use crate::parsed_request::{Error, ParsedRequest};
99
use crate::request::Body;
1010

11+
#[tracing::instrument(level = "trace", ret)]
1112
pub(crate) fn parse_put_cpu_config(body: &Body) -> Result<ParsedRequest, Error> {
1213
METRICS.put_api_requests.cpu_cfg_count.inc();
1314

src/api_server/src/request/drive.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use super::super::VmmAction;
88
use crate::parsed_request::{checked_id, Error, ParsedRequest};
99
use crate::request::{Body, StatusCode};
1010

11+
#[tracing::instrument(level = "trace", ret)]
1112
pub(crate) fn parse_put_drive(
1213
body: &Body,
1314
id_from_path: Option<&str>,
@@ -38,6 +39,7 @@ pub(crate) fn parse_put_drive(
3839
}
3940
}
4041

42+
#[tracing::instrument(level = "trace", ret)]
4143
pub(crate) fn parse_patch_drive(
4244
body: &Body,
4345
id_from_path: Option<&str>,

src/api_server/src/request/entropy.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use vmm::vmm_config::entropy::EntropyDeviceConfig;
77
use crate::parsed_request::{Error, ParsedRequest};
88
use crate::request::Body;
99

10+
#[tracing::instrument(level = "trace", ret)]
1011
pub(crate) fn parse_put_entropy(body: &Body) -> Result<ParsedRequest, Error> {
1112
let cfg = serde_json::from_slice::<EntropyDeviceConfig>(body.raw())?;
1213
Ok(ParsedRequest::new_sync(VmmAction::SetEntropyDevice(cfg)))

src/api_server/src/request/instance_info.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use vmm::rpc_interface::VmmAction;
66

77
use crate::parsed_request::{Error, ParsedRequest};
88

9+
#[tracing::instrument(level = "trace", ret)]
910
pub(crate) fn parse_get_instance_info() -> Result<ParsedRequest, Error> {
1011
METRICS.get_api_requests.instance_info_count.inc();
1112
Ok(ParsedRequest::new_sync(VmmAction::GetVmInstanceInfo))

src/api_server/src/request/logger.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use super::super::VmmAction;
88
use crate::parsed_request::{Error, ParsedRequest};
99
use crate::request::Body;
1010

11+
#[tracing::instrument(level = "trace", ret)]
1112
pub(crate) fn parse_put_logger(body: &Body) -> Result<ParsedRequest, Error> {
1213
METRICS.put_api_requests.logger_count.inc();
1314
let res = serde_json::from_slice::<LoggerConfig>(body.raw());

0 commit comments

Comments
 (0)