(raw: PolicyFile)
| 672 | } |
| 673 | |
| 674 | fn to_proto(raw: PolicyFile) -> SandboxPolicy { |
| 675 | let network_policies = raw |
| 676 | .network_policies |
| 677 | .into_iter() |
| 678 | .map(|(key, rule)| { |
| 679 | let proto_rule = NetworkPolicyRule { |
| 680 | name: if rule.name.is_empty() { |
| 681 | key.clone() |
| 682 | } else { |
| 683 | rule.name |
| 684 | }, |
| 685 | endpoints: rule |
| 686 | .endpoints |
| 687 | .into_iter() |
| 688 | .map(|e| { |
| 689 | let protocol = e.protocol; |
| 690 | let allow_rules = e.rules; |
| 691 | let deny_rules = e.deny_rules; |
| 692 | // Normalize port/ports: ports takes precedence, else |
| 693 | // single port is promoted to ports array. |
| 694 | let normalized_ports: Vec<u32> = if !e.ports.is_empty() { |
| 695 | e.ports.into_iter().map(u32::from).collect() |
| 696 | } else if e.port > 0 { |
| 697 | vec![u32::from(e.port)] |
| 698 | } else { |
| 699 | vec![] |
| 700 | }; |
| 701 | NetworkEndpoint { |
| 702 | host: e.host, |
| 703 | path: e.path, |
| 704 | port: normalized_ports.first().copied().unwrap_or(0), |
| 705 | ports: normalized_ports, |
| 706 | protocol: protocol.clone(), |
| 707 | tls: e.tls, |
| 708 | enforcement: e.enforcement, |
| 709 | access: e.access, |
| 710 | rules: allow_rules |
| 711 | .into_iter() |
| 712 | .map(|r| L7Rule { |
| 713 | allow: Some(allow_def_to_proto(&protocol, r.allow)), |
| 714 | }) |
| 715 | .collect(), |
| 716 | allowed_ips: e.allowed_ips, |
| 717 | deny_rules: deny_rules |
| 718 | .into_iter() |
| 719 | .map(|deny| deny_def_to_proto(&protocol, deny)) |
| 720 | .collect(), |
| 721 | allow_encoded_slash: e.allow_encoded_slash, |
| 722 | websocket_credential_rewrite: e.websocket_credential_rewrite, |
| 723 | request_body_credential_rewrite: e.request_body_credential_rewrite, |
| 724 | // Advisor provenance is internal runtime state, not |
| 725 | // a user-authored policy schema field. |
| 726 | advisor_proposed: false, |
| 727 | persisted_queries: e.persisted_queries, |
| 728 | graphql_persisted_queries: e |
| 729 | .graphql_persisted_queries |
| 730 | .into_iter() |
| 731 | .map(|(key, op)| { |
no test coverage detected