fn build_report()

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
    }