| 829 | } |
| 830 | |
| 831 | async fn update_relay_gateway( |
| 832 | &self, |
| 833 | request: Request<api::UpdateRelayGatewayRequest>, |
| 834 | ) -> Result<Response<()>, Status> { |
| 835 | let req_relay = match &request.get_ref().relay_gateway { |
| 836 | Some(v) => v, |
| 837 | None => { |
| 838 | return Err(Status::invalid_argument("relay_gateway is missing")); |
| 839 | } |
| 840 | }; |
| 841 | let tenant_id = Uuid::from_str(&req_relay.tenant_id).map_err(|e| e.status())?; |
| 842 | let relay_id = RelayId::from_str(&req_relay.relay_id).map_err(|e| e.status())?; |
| 843 | |
| 844 | // The tenant_id is part of the relay PK. |
| 845 | self.validator |
| 846 | .validate( |
| 847 | request.extensions(), |
| 848 | validator::ValidateGatewaysAccess::new(validator::Flag::List, tenant_id), |
| 849 | ) |
| 850 | .await?; |
| 851 | |
| 852 | let _ = gateway::update_relay_gateway(gateway::RelayGateway { |
| 853 | relay_id, |
| 854 | tenant_id: tenant_id.into(), |
| 855 | name: req_relay.name.clone(), |
| 856 | description: req_relay.description.clone(), |
| 857 | stats_interval_secs: req_relay.stats_interval as i32, |
| 858 | region_config_id: req_relay.region_config_id.clone(), |
| 859 | ..Default::default() |
| 860 | }) |
| 861 | .await |
| 862 | .map_err(|e| e.status())?; |
| 863 | |
| 864 | let mut resp = Response::new(()); |
| 865 | resp.metadata_mut() |
| 866 | .insert("x-log-tenant_id", req_relay.tenant_id.parse().unwrap()); |
| 867 | resp.metadata_mut() |
| 868 | .insert("x-log-relay_id", req_relay.relay_id.parse().unwrap()); |
| 869 | |
| 870 | Ok(resp) |
| 871 | } |
| 872 | |
| 873 | async fn delete_relay_gateway( |
| 874 | &self, |