1use crate::{
2 api::{
3 ComponentStatus, DeleteResult, GetResult, ModelSummary, PutResult, Status, StatusInfo,
4 StatusResult, StatusType, TraitStatus, VersionInfo,
5 },
6 CapabilityProperties, Component, ComponentProperties, ConfigDefinition, ConfigProperty,
7 LinkProperty, Manifest, Metadata, Policy, Properties, SecretProperty, SecretSourceProperty,
8 SharedApplicationComponentProperties, Specification, Spread, SpreadScalerProperty,
9 TargetConfig, Trait, TraitProperty,
10};
11use wasmcloud::wadm;
12
13#[cfg(all(feature = "wit", target_family = "wasm"))]
14wit_bindgen::generate!({
15 path: "wit",
16 additional_derives: [
17 serde::Serialize,
18 serde::Deserialize,
19 ],
20 with: {
21 "wasmcloud:wadm/types@0.2.0": generate,
22 "wasmcloud:wadm/client@0.2.0": generate,
23 "wasmcloud:wadm/handler@0.2.0": generate
24 }
25});
26
27#[cfg(all(feature = "wit", not(target_family = "wasm")))]
28wit_bindgen_wrpc::generate!({
29 generate_unused_types: true,
30 additional_derives: [
31 serde::Serialize,
32 serde::Deserialize,
33 ],
34 with: {
35 "wasmcloud:wadm/types@0.2.0": generate,
36 "wasmcloud:wadm/client@0.2.0": generate,
37 "wasmcloud:wadm/handler@0.2.0": generate
38 }
39});
40
41impl From<Manifest> for wadm::types::OamManifest {
44 fn from(manifest: Manifest) -> Self {
45 wadm::types::OamManifest {
46 api_version: manifest.api_version.to_string(),
47 kind: manifest.kind.to_string(),
48 metadata: manifest.metadata.into(),
49 spec: manifest.spec.into(),
50 }
51 }
52}
53
54impl From<Metadata> for wadm::types::Metadata {
55 fn from(metadata: Metadata) -> Self {
56 wadm::types::Metadata {
57 name: metadata.name,
58 annotations: metadata.annotations.into_iter().collect(),
59 labels: metadata.labels.into_iter().collect(),
60 }
61 }
62}
63
64impl From<Specification> for wadm::types::Specification {
65 fn from(spec: Specification) -> Self {
66 wadm::types::Specification {
67 components: spec.components.into_iter().map(|c| c.into()).collect(),
68 policies: spec.policies.into_iter().map(|c| c.into()).collect(),
69 }
70 }
71}
72
73impl From<Component> for wadm::types::Component {
74 fn from(component: Component) -> Self {
75 wadm::types::Component {
76 name: component.name,
77 properties: component.properties.into(),
78 traits: component
79 .traits
80 .map(|traits| traits.into_iter().map(|t| t.into()).collect()),
81 }
82 }
83}
84
85impl From<Policy> for wadm::types::Policy {
86 fn from(policy: Policy) -> Self {
87 wadm::types::Policy {
88 name: policy.name,
89 properties: policy.properties.into_iter().collect(),
90 type_: policy.policy_type,
91 }
92 }
93}
94
95impl From<Properties> for wadm::types::Properties {
96 fn from(properties: Properties) -> Self {
97 match properties {
98 Properties::Component { properties } => {
99 wadm::types::Properties::Component(properties.into())
100 }
101 Properties::Capability { properties } => {
102 wadm::types::Properties::Capability(properties.into())
103 }
104 }
105 }
106}
107
108impl From<ComponentProperties> for wadm::types::ComponentProperties {
109 fn from(properties: ComponentProperties) -> Self {
110 wadm::types::ComponentProperties {
111 application: properties.application.map(Into::into),
112 image: properties.image,
113 id: properties.id,
114 config: properties.config.into_iter().map(|c| c.into()).collect(),
115 secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
116 }
117 }
118}
119
120impl From<CapabilityProperties> for wadm::types::CapabilityProperties {
121 fn from(properties: CapabilityProperties) -> Self {
122 wadm::types::CapabilityProperties {
123 application: properties.application.map(Into::into),
124 image: properties.image,
125 id: properties.id,
126 config: properties.config.into_iter().map(|c| c.into()).collect(),
127 secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
128 }
129 }
130}
131
132impl From<ConfigProperty> for wadm::types::ConfigProperty {
133 fn from(property: ConfigProperty) -> Self {
134 wadm::types::ConfigProperty {
135 name: property.name,
136 properties: property.properties.map(|props| props.into_iter().collect()),
137 }
138 }
139}
140
141impl From<SecretProperty> for wadm::types::SecretProperty {
142 fn from(property: SecretProperty) -> Self {
143 wadm::types::SecretProperty {
144 name: property.name,
145 properties: property.properties.into(),
146 }
147 }
148}
149
150impl From<SecretSourceProperty> for wadm::types::SecretSourceProperty {
151 fn from(property: SecretSourceProperty) -> Self {
152 wadm::types::SecretSourceProperty {
153 policy: property.policy,
154 key: property.key,
155 field: property.field,
156 version: property.version,
157 }
158 }
159}
160
161impl From<SharedApplicationComponentProperties>
162 for wadm::types::SharedApplicationComponentProperties
163{
164 fn from(properties: SharedApplicationComponentProperties) -> Self {
165 wadm::types::SharedApplicationComponentProperties {
166 name: properties.name,
167 component: properties.component,
168 }
169 }
170}
171
172impl From<Trait> for wadm::types::Trait {
173 fn from(trait_: Trait) -> Self {
174 wadm::types::Trait {
175 trait_type: trait_.trait_type,
176 properties: trait_.properties.into(),
177 }
178 }
179}
180
181impl From<TraitProperty> for wadm::types::TraitProperty {
182 fn from(property: TraitProperty) -> Self {
183 match property {
184 TraitProperty::Link(link) => wadm::types::TraitProperty::Link(link.into()),
185 TraitProperty::SpreadScaler(spread) => {
186 wadm::types::TraitProperty::Spreadscaler(spread.into())
187 }
188 TraitProperty::Custom(custom) => wadm::types::TraitProperty::Custom(custom.to_string()),
189 }
190 }
191}
192
193impl From<LinkProperty> for wadm::types::LinkProperty {
194 fn from(property: LinkProperty) -> Self {
195 wadm::types::LinkProperty {
196 source: property.source.map(|c| c.into()),
197 target: property.target.into(),
198 namespace: property.namespace,
199 package: property.package,
200 interfaces: property.interfaces,
201 name: property.name,
202 }
203 }
204}
205
206impl From<ConfigDefinition> for wadm::types::ConfigDefinition {
207 fn from(definition: ConfigDefinition) -> Self {
208 wadm::types::ConfigDefinition {
209 config: definition.config.into_iter().map(|c| c.into()).collect(),
210 secrets: definition.secrets.into_iter().map(|s| s.into()).collect(),
211 }
212 }
213}
214
215impl From<TargetConfig> for wadm::types::TargetConfig {
216 fn from(config: TargetConfig) -> Self {
217 wadm::types::TargetConfig {
218 name: config.name,
219 config: config.config.into_iter().map(|c| c.into()).collect(),
220 secrets: config.secrets.into_iter().map(|s| s.into()).collect(),
221 }
222 }
223}
224
225impl From<SpreadScalerProperty> for wadm::types::SpreadscalerProperty {
226 fn from(property: SpreadScalerProperty) -> Self {
227 wadm::types::SpreadscalerProperty {
228 instances: property.instances as u32,
229 spread: property.spread.into_iter().map(|s| s.into()).collect(),
230 }
231 }
232}
233
234impl From<Spread> for wadm::types::Spread {
235 fn from(spread: Spread) -> Self {
236 wadm::types::Spread {
237 name: spread.name,
238 requirements: spread.requirements.into_iter().collect(),
239 weight: spread.weight.map(|w| w as u32),
240 }
241 }
242}
243
244impl From<ModelSummary> for wadm::types::ModelSummary {
245 fn from(summary: ModelSummary) -> Self {
246 wadm::types::ModelSummary {
247 name: summary.name,
248 version: summary.version,
249 description: summary.description,
250 deployed_version: summary.deployed_version,
251 status: summary.status.into(),
252 status_message: summary.status_message,
253 }
254 }
255}
256
257impl From<DeleteResult> for wadm::types::DeleteResult {
258 fn from(result: DeleteResult) -> Self {
259 match result {
260 DeleteResult::Deleted => wadm::types::DeleteResult::Deleted,
261 DeleteResult::Error => wadm::types::DeleteResult::Error,
262 DeleteResult::Noop => wadm::types::DeleteResult::Noop,
263 }
264 }
265}
266
267impl From<GetResult> for wadm::types::GetResult {
268 fn from(result: GetResult) -> Self {
269 match result {
270 GetResult::Error => wadm::types::GetResult::Error,
271 GetResult::Success => wadm::types::GetResult::Success,
272 GetResult::NotFound => wadm::types::GetResult::NotFound,
273 }
274 }
275}
276
277impl From<PutResult> for wadm::types::PutResult {
278 fn from(result: PutResult) -> Self {
279 match result {
280 PutResult::Error => wadm::types::PutResult::Error,
281 PutResult::Created => wadm::types::PutResult::Created,
282 PutResult::NewVersion => wadm::types::PutResult::NewVersion,
283 }
284 }
285}
286
287impl From<StatusType> for wadm::types::StatusType {
288 fn from(status: StatusType) -> Self {
289 match status {
290 StatusType::Undeployed => wadm::types::StatusType::Undeployed,
291 StatusType::Reconciling => wadm::types::StatusType::Reconciling,
292 StatusType::Deployed => wadm::types::StatusType::Deployed,
293 StatusType::Failed => wadm::types::StatusType::Failed,
294 StatusType::Waiting => wadm::types::StatusType::Waiting,
295 StatusType::Unhealthy => wadm::types::StatusType::Unhealthy,
296 }
297 }
298}
299
300impl From<wadm::types::StatusType> for StatusType {
303 fn from(status: wadm::types::StatusType) -> Self {
304 match status {
305 wadm::types::StatusType::Undeployed => StatusType::Undeployed,
306 wadm::types::StatusType::Reconciling => StatusType::Reconciling,
307 wadm::types::StatusType::Deployed => StatusType::Deployed,
308 wadm::types::StatusType::Failed => StatusType::Failed,
309 wadm::types::StatusType::Waiting => StatusType::Waiting,
310 wadm::types::StatusType::Unhealthy => StatusType::Unhealthy,
311 }
312 }
313}
314
315impl From<wadm::types::StatusInfo> for StatusInfo {
316 fn from(info: wadm::types::StatusInfo) -> Self {
317 StatusInfo {
318 status_type: info.status_type.into(),
319 message: info.message,
320 }
321 }
322}
323
324impl From<wadm::types::ComponentStatus> for ComponentStatus {
325 fn from(status: wadm::types::ComponentStatus) -> Self {
326 ComponentStatus {
327 name: status.name,
328 component_type: status.component_type,
329 info: status.info.into(),
330 traits: status
331 .traits
332 .into_iter()
333 .map(|t| TraitStatus {
334 trait_type: t.trait_type,
335 info: t.info.into(),
336 })
337 .collect(),
338 }
339 }
340}
341
342impl From<wadm::types::TraitStatus> for TraitStatus {
343 fn from(status: wadm::types::TraitStatus) -> Self {
344 TraitStatus {
345 trait_type: status.trait_type,
346 info: status.info.into(),
347 }
348 }
349}
350
351impl From<wadm::types::StatusResult> for StatusResult {
352 fn from(result: wadm::types::StatusResult) -> Self {
353 match result {
354 wadm::types::StatusResult::Error => StatusResult::Error,
355 wadm::types::StatusResult::Ok => StatusResult::Ok,
356 wadm::types::StatusResult::NotFound => StatusResult::NotFound,
357 }
358 }
359}
360
361impl From<wadm::types::OamManifest> for Manifest {
362 fn from(manifest: wadm::types::OamManifest) -> Self {
363 Manifest {
364 api_version: manifest.api_version,
365 kind: manifest.kind,
366 metadata: manifest.metadata.into(),
367 spec: manifest.spec.into(),
368 }
369 }
370}
371
372impl From<wadm::types::Metadata> for Metadata {
373 fn from(metadata: wadm::types::Metadata) -> Self {
374 Metadata {
375 name: metadata.name,
376 annotations: metadata.annotations.into_iter().collect(),
377 labels: metadata.labels.into_iter().collect(),
378 }
379 }
380}
381
382impl From<wadm::types::Specification> for Specification {
383 fn from(spec: wadm::types::Specification) -> Self {
384 Specification {
385 components: spec.components.into_iter().map(|c| c.into()).collect(),
386 policies: spec.policies.into_iter().map(|c| c.into()).collect(),
387 }
388 }
389}
390
391impl From<wadm::types::Component> for Component {
392 fn from(component: wadm::types::Component) -> Self {
393 Component {
394 name: component.name,
395 properties: component.properties.into(),
396 traits: component
397 .traits
398 .map(|traits| traits.into_iter().map(|t| t.into()).collect()),
399 }
400 }
401}
402
403impl From<wadm::types::Policy> for Policy {
404 fn from(policy: wadm::types::Policy) -> Self {
405 Policy {
406 name: policy.name,
407 properties: policy.properties.into_iter().collect(),
408 policy_type: policy.type_,
409 }
410 }
411}
412
413impl From<wadm::types::Properties> for Properties {
414 fn from(properties: wadm::types::Properties) -> Self {
415 match properties {
416 wadm::types::Properties::Component(properties) => Properties::Component {
417 properties: properties.into(),
418 },
419 wadm::types::Properties::Capability(properties) => Properties::Capability {
420 properties: properties.into(),
421 },
422 }
423 }
424}
425
426impl From<wadm::types::ComponentProperties> for ComponentProperties {
427 fn from(properties: wadm::types::ComponentProperties) -> Self {
428 ComponentProperties {
429 image: properties.image,
430 application: properties.application.map(Into::into),
431 id: properties.id,
432 config: properties.config.into_iter().map(|c| c.into()).collect(),
433 secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
434 }
435 }
436}
437
438impl From<wadm::types::CapabilityProperties> for CapabilityProperties {
439 fn from(properties: wadm::types::CapabilityProperties) -> Self {
440 CapabilityProperties {
441 image: properties.image,
442 application: properties.application.map(Into::into),
443 id: properties.id,
444 config: properties.config.into_iter().map(|c| c.into()).collect(),
445 secrets: properties.secrets.into_iter().map(|c| c.into()).collect(),
446 }
447 }
448}
449
450impl From<wadm::types::ConfigProperty> for ConfigProperty {
451 fn from(property: wadm::types::ConfigProperty) -> Self {
452 ConfigProperty {
453 name: property.name,
454 properties: property.properties.map(|props| props.into_iter().collect()),
455 }
456 }
457}
458
459impl From<wadm::types::SecretProperty> for SecretProperty {
460 fn from(property: wadm::types::SecretProperty) -> Self {
461 SecretProperty {
462 name: property.name,
463 properties: property.properties.into(),
464 }
465 }
466}
467
468impl From<wadm::types::SecretSourceProperty> for SecretSourceProperty {
469 fn from(property: wadm::types::SecretSourceProperty) -> Self {
470 SecretSourceProperty {
471 policy: property.policy,
472 key: property.key,
473 field: property.field,
474 version: property.version,
475 }
476 }
477}
478
479impl From<wadm::types::SharedApplicationComponentProperties>
480 for SharedApplicationComponentProperties
481{
482 fn from(properties: wadm::types::SharedApplicationComponentProperties) -> Self {
483 SharedApplicationComponentProperties {
484 name: properties.name,
485 component: properties.component,
486 }
487 }
488}
489
490impl From<wadm::types::Trait> for Trait {
491 fn from(trait_: wadm::types::Trait) -> Self {
492 Trait {
493 trait_type: trait_.trait_type,
494 properties: trait_.properties.into(),
495 }
496 }
497}
498
499impl From<wadm::types::TraitProperty> for TraitProperty {
500 fn from(property: wadm::types::TraitProperty) -> Self {
501 match property {
502 wadm::types::TraitProperty::Link(link) => TraitProperty::Link(link.into()),
503 wadm::types::TraitProperty::Spreadscaler(spread) => {
504 TraitProperty::SpreadScaler(spread.into())
505 }
506 wadm::types::TraitProperty::Custom(custom) => {
507 TraitProperty::Custom(serde_json::value::Value::String(custom))
508 }
509 }
510 }
511}
512
513impl From<wadm::types::LinkProperty> for LinkProperty {
514 fn from(property: wadm::types::LinkProperty) -> Self {
515 #[allow(deprecated)]
516 LinkProperty {
517 source: property.source.map(|c| c.into()),
518 target: property.target.into(),
519 namespace: property.namespace,
520 package: property.package,
521 interfaces: property.interfaces,
522 name: property.name,
523 source_config: None,
524 target_config: None,
525 }
526 }
527}
528
529impl From<wadm::types::ConfigDefinition> for ConfigDefinition {
530 fn from(definition: wadm::types::ConfigDefinition) -> Self {
531 ConfigDefinition {
532 config: definition.config.into_iter().map(|c| c.into()).collect(),
533 secrets: definition.secrets.into_iter().map(|s| s.into()).collect(),
534 }
535 }
536}
537
538impl From<wadm::types::TargetConfig> for TargetConfig {
539 fn from(config: wadm::types::TargetConfig) -> Self {
540 TargetConfig {
541 name: config.name,
542 config: config.config.into_iter().map(|c| c.into()).collect(),
543 secrets: config.secrets.into_iter().map(|s| s.into()).collect(),
544 }
545 }
546}
547
548impl From<wadm::types::SpreadscalerProperty> for SpreadScalerProperty {
549 fn from(property: wadm::types::SpreadscalerProperty) -> Self {
550 SpreadScalerProperty {
551 instances: property.instances as usize,
552 spread: property.spread.into_iter().map(|s| s.into()).collect(),
553 }
554 }
555}
556
557impl From<wadm::types::Spread> for Spread {
558 fn from(spread: wadm::types::Spread) -> Self {
559 Spread {
560 name: spread.name,
561 requirements: spread.requirements.into_iter().collect(),
562 weight: spread.weight.map(|w| w as usize),
563 }
564 }
565}
566
567impl From<VersionInfo> for wadm::types::VersionInfo {
568 fn from(info: VersionInfo) -> Self {
569 wasmcloud::wadm::types::VersionInfo {
570 version: info.version,
571 deployed: info.deployed,
572 }
573 }
574}
575
576impl From<StatusInfo> for wadm::types::StatusInfo {
578 fn from(info: StatusInfo) -> Self {
579 wadm::types::StatusInfo {
580 status_type: info.status_type.into(),
581 message: info.message,
582 }
583 }
584}
585
586impl From<Status> for wadm::types::Status {
588 fn from(status: Status) -> Self {
589 wadm::types::Status {
590 version: status.version,
591 info: status.info.into(),
592 components: status.components.into_iter().map(|c| c.into()).collect(),
593 }
594 }
595}
596
597impl From<ComponentStatus> for wadm::types::ComponentStatus {
599 fn from(component_status: ComponentStatus) -> Self {
600 wadm::types::ComponentStatus {
601 name: component_status.name,
602 component_type: component_status.component_type,
603 info: component_status.info.into(),
604 traits: component_status
605 .traits
606 .into_iter()
607 .map(|t| t.into())
608 .collect(),
609 }
610 }
611}
612
613impl From<TraitStatus> for wadm::types::TraitStatus {
615 fn from(trait_status: TraitStatus) -> Self {
616 wadm::types::TraitStatus {
617 trait_type: trait_status.trait_type,
618 info: trait_status.info.into(),
619 }
620 }
621}