in nfm-controller/src/reports/publisher_endpoint.rs [604:658]
fn build_report(num_flows: usize, address_family: i32, include_k8s: bool) -> NfmReport {
let mut report = NfmReport::new();
let mut aggregated_results = vec![];
let mut rng = rand::thread_rng();
for flow_idx in 0..num_flows {
let context = SockContext {
is_client: true,
address_family: address_family as u32,
local_ipv4: rng.next_u32(),
remote_ipv4: rng.next_u32(),
local_ipv6: rand_ipv6(&mut rng),
remote_ipv6: rand_ipv6(&mut rng),
local_port: 0,
remote_port: rand_service_port(&mut rng),
..Default::default()
};
let stats = build_random_network_stats(&mut rng);
let mut flow = FlowProperties::try_from(&context).unwrap();
if include_k8s {
let service_name_mutator = flow_idx % 5;
let pod_name_mutator = flow_idx % 20;
flow.kubernetes_metadata = Some(FlowMetadata {
local: Some(PodInfo {
name: format!("nginx-deployment-59f8b7dc9-bzmfn-{}", pod_name_mutator),
namespace: "default".to_string(),
service_name: format!("nginx-service-{}", service_name_mutator),
}),
remote: Some(PodInfo {
name: format!("nginx-doppelganger-9997cd54b-rz55s-{}", pod_name_mutator),
namespace: "nfm".to_string(),
service_name: format!("nginx-doppelganger-{}", service_name_mutator),
}),
});
}
aggregated_results.push(AggregateResults { flow, stats });
}
report.set_network_stats(aggregated_results);
report.set_service_metadata(ServiceMetadata {
name: ReportValue::String("network-flow-monitor".into()),
version: ReportValue::String("1.0".into()),
build_ts: ReportValue::String("the-build-ts".into()),
});
report.set_env_metadata(build_env_metadata());
report.set_process_stats(build_process_stats());
report.set_host_stats(build_host_stats());
if include_k8s {
report.set_k8s_metadata(build_k8s_metadata());
}
report
}