Skip to main content

vantage_aws/models/ecs/
service.rs

1use serde::{Deserialize, Serialize};
2use vantage_table::table::Table;
3
4use crate::AwsAccount;
5
6/// One ECS service — `ListServices` returns just an ARN per row.
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct Service {
9    #[serde(rename = "serviceArn")]
10    pub service_arn: String,
11}
12
13/// `ListServices` table. AWS requires `cluster` (a name or ARN) before
14/// it will list anything, so add `eq("cluster", "...")` first or
15/// traverse from a [`Cluster`](super::cluster::Cluster).
16pub fn services_table(aws: AwsAccount) -> Table<AwsAccount, Service> {
17    Table::new(
18        "json1/serviceArns@nextToken:ecs/AmazonEC2ContainerServiceV20141113.ListServices",
19        aws,
20    )
21    .with_id_column("serviceArn")
22}
23
24impl Service {
25    /// The service's short name, parsed out of [`Self::service_arn`].
26    pub fn name(&self) -> Option<&str> {
27        self.service_arn.rsplit('/').next()
28    }
29}