Skip to main content

EcsState

Struct EcsState 

Source
pub struct EcsState {
Show 20 fields pub account_id: String, pub region: String, pub clusters: BTreeMap<String, Cluster>, pub task_definitions: BTreeMap<String, BTreeMap<i32, TaskDefinition>>, pub next_revision: BTreeMap<String, i32>, pub account_setting_defaults: BTreeMap<String, String>, pub principal_account_settings: BTreeMap<String, BTreeMap<String, String>>, pub tasks: BTreeMap<String, Task>, pub events: Vec<LifecycleEvent>, pub services: BTreeMap<String, Service>, pub container_instances: BTreeMap<String, ContainerInstance>, pub attributes: BTreeMap<String, Attribute>, pub capacity_providers: BTreeMap<String, CapacityProvider>, pub task_sets: BTreeMap<String, TaskSet>, pub daemon_task_definitions: BTreeMap<String, BTreeMap<i32, DaemonTaskDefinition>>, pub next_daemon_revision: BTreeMap<String, i32>, pub daemons: BTreeMap<String, Daemon>, pub daemon_deployments: BTreeMap<String, DaemonDeployment>, pub express_gateway_services: BTreeMap<String, ExpressGatewayService>, pub service_revisions: BTreeMap<String, ServiceRevision>,
}

Fields§

§account_id: String§region: String§clusters: BTreeMap<String, Cluster>

Cluster state keyed by cluster name.

§task_definitions: BTreeMap<String, BTreeMap<i32, TaskDefinition>>

Task definitions keyed by family -> revision -> definition. ECS revisions monotonically increase per-family regardless of deregistration, so we track the running counter separately.

§next_revision: BTreeMap<String, i32>

Running revision counter per family. Grows monotonically even after task definitions are deregistered or deleted.

§account_setting_defaults: BTreeMap<String, String>

Account-default settings (PutAccountSettingDefault). Keyed by setting name (e.g. serviceLongArnFormat).

§principal_account_settings: BTreeMap<String, BTreeMap<String, String>>

Per-principal account settings (PutAccountSetting). Keyed by principal ARN, then setting name.

§tasks: BTreeMap<String, Task>

Tasks keyed by task ID (the trailing segment of the task ARN).

§events: Vec<LifecycleEvent>

Lifecycle event log for introspection. Bounded at 1024 entries (oldest dropped) so long-running servers don’t grow unboundedly.

§services: BTreeMap<String, Service>

Services keyed by service name within an account. ECS requires unique service names per cluster, and since service names are already unique per-cluster globally we scope keys by cluster_name:service_name in EcsState::service_key.

§container_instances: BTreeMap<String, ContainerInstance>

Container instances keyed by cluster/arn-suffix. Users register EC2 hosts here; fakecloud still runs tasks via Docker regardless, but the control-plane records remain so DescribeContainerInstances round-trips.

§attributes: BTreeMap<String, Attribute>

Custom attributes keyed by cluster/target-arn-or-id/name.

§capacity_providers: BTreeMap<String, CapacityProvider>

Capacity providers keyed by name.

§task_sets: BTreeMap<String, TaskSet>

Task sets keyed by cluster/service/task-set-id.

§daemon_task_definitions: BTreeMap<String, BTreeMap<i32, DaemonTaskDefinition>>

Daemon task definitions keyed by family -> revision -> definition. Same shape as task_definitions but isolated since daemon defs use the dedicated RegisterDaemonTaskDefinition op and have their own revision counter.

§next_daemon_revision: BTreeMap<String, i32>

Per-family monotonic revision counter for daemon task defs.

§daemons: BTreeMap<String, Daemon>

Daemons keyed by cluster/daemon-name. Daemons are cluster-scoped and run one task per matching capacity provider per AWS spec.

§daemon_deployments: BTreeMap<String, DaemonDeployment>

Daemon deployment history keyed by deployment ARN. Each CreateDaemon / UpdateDaemon mints a new deployment record.

§express_gateway_services: BTreeMap<String, ExpressGatewayService>

Express Gateway services keyed by cluster/service-name. The 2026 Express Gateway feature is a serverless container service with built-in load balancing and autoscaling.

§service_revisions: BTreeMap<String, ServiceRevision>

Service revisions keyed by serviceRevisionArn ({service_arn}:{n}). A revision is minted on CreateService and on each UpdateService that changes the task definition, so DescribeServiceRevisions can return the real configuration snapshot instead of an empty stub.

Implementations§

Source§

impl EcsState

Source

pub fn new(account_id: &str, region: &str) -> Self

Source

pub fn reset(&mut self)

Source

pub fn record_service_revision(&mut self, service: &Service) -> String

Mint and store a new service revision for service, numbered by how many revisions already exist for that service ({service_arn}:{n}). Returns the new serviceRevisionArn.

Source

pub fn service_key(cluster_name: &str, service_name: &str) -> String

Services are uniquely identified by (cluster, name) within an account; this helper composes the storage key used in self.services.

Source

pub fn service_arn(&self, cluster_name: &str, service_name: &str) -> String

Source

pub fn task_arn(&self, cluster_name: &str, task_id: &str) -> String

Source

pub fn container_instance_arn( &self, cluster_name: &str, instance_id: &str, ) -> String

Source

pub fn effective_account_setting( &self, name: &str, principal_arn: Option<&str>, ) -> Option<String>

Resolve the effective value of an account setting. Principal overrides win over account-level defaults, matching AWS’s PutAccountSetting / PutAccountSettingDefault layering. With no principal_arn argument the caller gets the account default.

Source

pub fn push_event(&mut self, event: LifecycleEvent)

Append a lifecycle event, trimming the oldest when the cap is hit.

Source

pub fn cluster_arn(&self, cluster_name: &str) -> String

Source

pub fn task_definition_arn(&self, family: &str, revision: i32) -> String

Source

pub fn resolve_cluster_name(input: Option<&str>) -> String

Given a user-supplied cluster reference (name or ARN), return the cluster name. Defaults to "default" when None/empty, matching the AWS CLI behaviour.

Source

pub fn allocate_revision(&mut self, family: &str) -> i32

Bump and return the next revision number for a family. Never reused: monotonically increases even across deregistration.

Source§

impl EcsState

Source

pub fn daemon_key(cluster: &str, name: &str) -> String

Composite key for daemon storage (cluster_name/daemon_name).

Source

pub fn express_gateway_key(cluster: &str, name: &str) -> String

Composite key for express-gateway storage (cluster_name/service_name).

Source

pub fn allocate_daemon_revision(&mut self, family: &str) -> i32

Allocate the next monotonic revision for a daemon task family.

Source

pub fn daemon_arn(&self, cluster: &str, name: &str) -> String

Build a daemon ARN for a (cluster, name) pair under this account/region.

Source

pub fn express_gateway_arn(&self, cluster: &str, name: &str) -> String

Build an express-gateway service ARN.

Source

pub fn daemon_task_definition_arn(&self, family: &str, revision: i32) -> String

Build a daemon task definition ARN for a family:revision pair.

Source

pub fn daemon_deployment_arn( &self, daemon_name: &str, deployment_id: &str, ) -> String

Build a daemon deployment ARN.

Trait Implementations§

Source§

impl AccountState for EcsState

Source§

fn new_for_account(account_id: &str, region: &str, _endpoint: &str) -> Self

Create a fresh, empty state for the given account.
Source§

fn inherit_from(&mut self, _sibling: &Self)

Called after a new account state is created via MultiAccountState::get_or_create, with a reference to an existing sibling state. Services can override this to propagate shared resources (e.g. body caches) to the new state.
Source§

impl Clone for EcsState

Source§

fn clone(&self) -> EcsState

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EcsState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for EcsState

Source§

fn default() -> EcsState

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for EcsState

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for EcsState

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more