| 152 | |
| 153 | |
| 154 | void FullFrameworkWriter::operator()(JSON::ObjectWriter* writer) const |
| 155 | { |
| 156 | json(writer, Summary<Framework>(*framework_)); |
| 157 | |
| 158 | // Add additional fields to those generated by the |
| 159 | // `Summary<Framework>` overload. |
| 160 | writer->field("user", framework_->info.user()); |
| 161 | writer->field("failover_timeout", framework_->info.failover_timeout()); |
| 162 | writer->field("checkpoint", framework_->info.checkpoint()); |
| 163 | writer->field("registered_time", framework_->registeredTime.secs()); |
| 164 | writer->field("unregistered_time", framework_->unregisteredTime.secs()); |
| 165 | |
| 166 | if (framework_->info.has_principal()) { |
| 167 | writer->field("principal", framework_->info.principal()); |
| 168 | } |
| 169 | |
| 170 | // TODO(bmahler): Consider deprecating this in favor of the split |
| 171 | // used and offered resources added in `Summary<Framework>`. |
| 172 | writer->field( |
| 173 | "resources", |
| 174 | framework_->totalUsedResources + framework_->totalOfferedResources); |
| 175 | |
| 176 | // TODO(benh): Consider making reregisteredTime an Option. |
| 177 | if (framework_->registeredTime != framework_->reregisteredTime) { |
| 178 | writer->field("reregistered_time", framework_->reregisteredTime.secs()); |
| 179 | } |
| 180 | |
| 181 | // For multi-role frameworks the `role` field will be unset. |
| 182 | // Note that we could set `roles` here for both cases, which |
| 183 | // would make tooling simpler (only need to look for `roles`). |
| 184 | // However, we opted to just mirror the protobuf akin to how |
| 185 | // generic protobuf -> JSON translation works. |
| 186 | if (framework_->capabilities.multiRole) { |
| 187 | writer->field("roles", framework_->info.roles()); |
| 188 | } else { |
| 189 | writer->field("role", framework_->info.role()); |
| 190 | } |
| 191 | |
| 192 | // Model all of the tasks associated with a framework. |
| 193 | writer->field("tasks", [this](JSON::ArrayWriter* writer) { |
| 194 | foreachvalue (Task* task, framework_->tasks) { |
| 195 | // Skip unauthorized tasks. |
| 196 | if (!approvers_->approved<VIEW_TASK>(*task, framework_->info)) { |
| 197 | continue; |
| 198 | } |
| 199 | |
| 200 | writer->element(*task); |
| 201 | } |
| 202 | }); |
| 203 | |
| 204 | writer->field("unreachable_tasks", [this](JSON::ArrayWriter* writer) { |
| 205 | foreachvalue (const Owned<Task>& task, framework_->unreachableTasks) { |
| 206 | // Skip unauthorized tasks. |
| 207 | if (!approvers_->approved<VIEW_TASK>(*task, framework_->info)) { |
| 208 | continue; |
| 209 | } |
| 210 | |
| 211 | writer->element(*task); |
nothing calls this directly
no test coverage detected