Skip to main content

RuntimeOutputs

Struct RuntimeOutputs 

Source
pub struct RuntimeOutputs { /* private fields */ }
Expand description

Runtime outputs generated during deployment operations

This struct contains fields that are generated during deployment operations and represent the runtime state of deployed infrastructure. Fields are private to protect invariants and provide semantic clarity through setters.

§Lifecycle

Fields are populated at different stages of the deployment lifecycle:

  • Creation: All fields are None (use RuntimeOutputs::new())
  • After Provisioning: instance_ip and provision_method are set (use record_provisioning() or record_registration())
  • After Run Command: service_endpoints is set (use record_services_started())

§Future Fields

This struct is expected to grow as deployment operations become more complex:

  • container_id: Option<String> - Container/VM identifier
  • resource_metrics: Option<ResourceMetrics> - CPU, memory, disk usage

§Examples

use torrust_tracker_deployer_lib::domain::environment::runtime_outputs::{RuntimeOutputs, ProvisionMethod};
use std::net::{IpAddr, Ipv4Addr};

// Create empty runtime outputs
let mut runtime_outputs = RuntimeOutputs::new();
assert!(runtime_outputs.instance_ip().is_none());

// After provisioning, record the IP and method
let ip = IpAddr::V4(Ipv4Addr::new(192, 168, 1, 100));
runtime_outputs.record_provisioning(ip);
assert_eq!(runtime_outputs.instance_ip(), Some(ip));
assert_eq!(runtime_outputs.provision_method(), Some(ProvisionMethod::Provisioned));

Implementations§

Source§

impl RuntimeOutputs

Source

pub fn new() -> Self

Creates new empty runtime outputs

All fields are initialized to None, representing an environment that has not yet been provisioned or run.

§Examples
use torrust_tracker_deployer_lib::domain::environment::runtime_outputs::RuntimeOutputs;

let outputs = RuntimeOutputs::new();
assert!(outputs.instance_ip().is_none());
assert!(outputs.provision_method().is_none());
assert!(outputs.service_endpoints().is_none());
Source

pub fn instance_ip(&self) -> Option<IpAddr>

Returns the instance IP address if available

This is None until the environment has been provisioned or registered.

Source

pub fn provision_method(&self) -> Option<ProvisionMethod>

Returns how the instance was provisioned

  • None: Unknown or legacy state
  • Some(Provisioned): Created via provision command
  • Some(Registered): Connected via register command
Source

pub fn service_endpoints(&self) -> Option<&ServiceEndpoints>

Returns the service endpoints if available

This is None until the run command has started services successfully.

Source

pub fn record_provisioning(&mut self, ip: IpAddr)

Records that provisioning has completed with the given instance IP

Call this after the provision command successfully creates infrastructure. Sets both instance_ip and provision_method to Provisioned.

§Arguments
  • ip - The IP address of the newly provisioned instance
Source

pub fn record_registration(&mut self, ip: IpAddr)

Records that an existing instance has been registered

Call this after the register command connects to existing infrastructure. Sets both instance_ip and provision_method to Registered.

§Arguments
  • ip - The IP address of the registered instance
Source

pub fn record_services_started(&mut self, endpoints: ServiceEndpoints)

Records that services have been started with the given endpoints

Call this after the run command successfully starts all services. The endpoints can then be displayed to users or used for health checks.

§Arguments
  • endpoints - The URLs for all running services
Source

pub fn set_instance_ip(&mut self, ip: IpAddr)

Sets the instance IP directly

Prefer record_provisioning() or record_registration() which also set the provision method. This method is provided for cases where only the IP needs to be updated (e.g., deserialization workarounds).

Source

pub fn set_provision_method(&mut self, method: ProvisionMethod)

Sets the provision method directly

Prefer record_provisioning() or record_registration() which also set the instance IP. This method is provided for backward compatibility.

Trait Implementations§

Source§

impl Clone for RuntimeOutputs

Source§

fn clone(&self) -> Self

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 RuntimeOutputs

Source§

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

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

impl Default for RuntimeOutputs

Source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for RuntimeOutputs

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 RuntimeOutputs

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoResult<T> for T

Source§

type Err = !

Source§

fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>

Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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 = !

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

fn try_from(value: U) -> Result<T, !>

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