Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Commit c9b4d19

Browse files
authored
Precise flag for worker status rendering (#292)
1 parent e290052 commit c9b4d19

File tree

2 files changed

+61
-27
lines changed

2 files changed

+61
-27
lines changed

golem-cli/src/command_handler/worker/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ impl WorkerCommandHandler {
808808

809809
self.ctx
810810
.log_handler()
811-
.log_view(&WorkerGetView::from(result));
811+
.log_view(&WorkerGetView::from_metadata(result, true));
812812

813813
Ok(())
814814
}

golem-cli/src/model/text/worker.rs

Lines changed: 60 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -71,33 +71,40 @@ impl MessageWithFields for WorkerCreateView {
7171
}
7272

7373
#[derive(Debug, Clone, Serialize, Deserialize)]
74-
pub struct WorkerGetView(pub WorkerMetadataView);
74+
pub struct WorkerGetView {
75+
pub metadata: WorkerMetadataView,
76+
pub precise: bool,
77+
}
7578

76-
impl From<WorkerMetadata> for WorkerGetView {
77-
fn from(value: WorkerMetadata) -> Self {
78-
WorkerMetadataView::from(value).into()
79+
impl WorkerGetView {
80+
pub fn from_metadata(metadata: WorkerMetadata, precise: bool) -> Self {
81+
Self {
82+
metadata: WorkerMetadataView::from(metadata),
83+
precise,
84+
}
7985
}
80-
}
8186

82-
impl From<WorkerMetadataView> for WorkerGetView {
83-
fn from(value: WorkerMetadataView) -> Self {
84-
Self(value)
87+
pub fn from_metadata_view(metadata: WorkerMetadataView) -> Self {
88+
Self {
89+
metadata,
90+
precise: false,
91+
}
8592
}
8693
}
8794

8895
impl MessageWithFields for WorkerGetView {
8996
fn message(&self) -> String {
9097
format!(
9198
"Got metadata for worker {}",
92-
format_message_highlight(&self.0.worker_name)
99+
format_message_highlight(&self.metadata.worker_name)
93100
)
94101
}
95102

96103
fn fields(&self) -> Vec<(String, String)> {
97104
let mut fields = FieldsBuilder::new();
98105

99106
let mut update_history = String::new();
100-
for update in &self.0.updates {
107+
for update in &self.metadata.updates {
101108
match update {
102109
UpdateRecord::PendingUpdate(update) => {
103110
let _ = writeln!(
@@ -143,38 +150,65 @@ impl MessageWithFields for WorkerGetView {
143150
}
144151

145152
fields
146-
.fmt_field("Component name", &self.0.component_name, format_id)
147-
.fmt_field("Component version", &self.0.component_version, format_id)
148-
.fmt_field("Worker name", &self.0.worker_name, format_main_id)
149-
.field("Created at", &self.0.created_at)
150-
.fmt_field("Component size", &self.0.component_size, format_binary_size)
153+
.fmt_field("Component name", &self.metadata.component_name, format_id)
154+
.fmt_field(
155+
"Component version",
156+
&self.metadata.component_version,
157+
format_id,
158+
)
159+
.fmt_field("Worker name", &self.metadata.worker_name, format_main_id)
160+
.field("Created at", &self.metadata.created_at)
161+
.fmt_field(
162+
"Component size",
163+
&self.metadata.component_size,
164+
format_binary_size,
165+
)
151166
.fmt_field(
152167
"Total linear memory size",
153-
&self.0.total_linear_memory_size,
168+
&self.metadata.total_linear_memory_size,
154169
format_binary_size,
155170
)
156-
.fmt_field_optional("Arguments", &self.0.args, !self.0.args.is_empty(), |args| {
157-
args.join(" ")
158-
})
171+
.fmt_field_optional(
172+
"Arguments",
173+
&self.metadata.args,
174+
!self.metadata.args.is_empty(),
175+
|args| args.join(" "),
176+
)
159177
.fmt_field_optional(
160178
"Environment variables",
161-
&self.0.env,
162-
!self.0.env.is_empty(),
179+
&self.metadata.env,
180+
!self.metadata.env.is_empty(),
163181
|env| {
164182
env.iter()
165183
.map(|(k, v)| format!("{}={}", k, v.bold()))
166184
.join(";")
167185
},
168186
)
169-
.fmt_field("Status", &self.0.status, format_status)
170-
.fmt_field("Retry count", &self.0.retry_count, format_retry_count)
187+
.fmt_field_optional("Status", &self.metadata.status, self.precise, format_status)
188+
.fmt_field_optional(
189+
"Retry count",
190+
&self.metadata.retry_count,
191+
self.precise,
192+
format_retry_count,
193+
)
171194
.fmt_field_optional(
172195
"Pending invocation count",
173-
&self.0.pending_invocation_count,
174-
self.0.pending_invocation_count > 0,
196+
&self.metadata.pending_invocation_count,
197+
self.metadata.pending_invocation_count > 0,
175198
|n| n.to_string(),
176199
)
177-
.fmt_field_option("Last error", &self.0.last_error, |err| format_stack(err));
200+
.fmt_field_optional(
201+
"Last error",
202+
&self.metadata.last_error,
203+
self.metadata.last_error.is_some() && self.precise,
204+
|err| format_stack(err.as_ref().unwrap()),
205+
)
206+
.fmt_field_optional(
207+
"WARNING",
208+
"The presented worker metadata may not be up-to-date",
209+
!self.precise,
210+
format_warn,
211+
);
178212

179213
fields.build()
180214
}

0 commit comments

Comments
 (0)