greentic_types/
deployment.rs1use alloc::string::String;
4use alloc::vec::Vec;
5
6use crate::SecretRequirement;
7use semver::Version;
8
9#[cfg(feature = "schemars")]
10use schemars::JsonSchema;
11#[cfg(feature = "serde")]
12use serde::{Deserialize, Serialize};
13use serde_json::Value;
14
15#[derive(Clone, Debug, PartialEq)]
17#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
18#[cfg_attr(feature = "schemars", derive(JsonSchema))]
19pub struct DeploymentPlan {
20 pub pack_id: String,
22 #[cfg_attr(
24 feature = "schemars",
25 schemars(with = "String", description = "SemVer version")
26 )]
27 pub pack_version: Version,
28 pub tenant: String,
30 pub environment: String,
32 pub runners: Vec<RunnerPlan>,
34 #[cfg_attr(
36 feature = "serde",
37 serde(default, skip_serializing_if = "Option::is_none")
38 )]
39 pub messaging: Option<MessagingPlan>,
40 pub channels: Vec<ChannelPlan>,
42 pub secrets: Vec<SecretRequirement>,
44 pub oauth: Vec<OAuthPlan>,
46 #[cfg_attr(
48 feature = "serde",
49 serde(default, skip_serializing_if = "Option::is_none")
50 )]
51 pub telemetry: Option<TelemetryPlan>,
52 #[cfg_attr(feature = "serde", serde(default))]
54 pub extra: Value,
55}
56
57#[derive(Clone, Debug, PartialEq)]
59#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
60#[cfg_attr(feature = "schemars", derive(JsonSchema))]
61pub struct RunnerPlan {
62 pub name: String,
64 pub replicas: u32,
66 #[cfg_attr(feature = "serde", serde(default))]
68 pub capabilities: Value,
69}
70
71#[derive(Clone, Debug, PartialEq)]
73#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
74#[cfg_attr(feature = "schemars", derive(JsonSchema))]
75pub struct MessagingPlan {
76 pub logical_cluster: String,
78 pub subjects: Vec<MessagingSubjectPlan>,
80 #[cfg_attr(feature = "serde", serde(default))]
82 pub extra: Value,
83}
84
85#[derive(Clone, Debug, PartialEq)]
87#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
88#[cfg_attr(feature = "schemars", derive(JsonSchema))]
89pub struct MessagingSubjectPlan {
90 pub name: String,
92 pub purpose: String,
94 pub durable: bool,
96 #[cfg_attr(feature = "serde", serde(default))]
98 pub extra: Value,
99}
100
101#[derive(Clone, Debug, PartialEq)]
103#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
104#[cfg_attr(feature = "schemars", derive(JsonSchema))]
105pub struct ChannelPlan {
106 pub name: String,
108 pub flow_id: String,
110 pub kind: String,
112 #[cfg_attr(feature = "serde", serde(default))]
114 pub config: Value,
115}
116
117#[derive(Clone, Debug, PartialEq)]
119#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
120#[cfg_attr(feature = "schemars", derive(JsonSchema))]
121pub struct OAuthPlan {
122 pub provider_id: String,
124 pub logical_client_id: String,
126 pub redirect_path: String,
128 #[cfg_attr(feature = "serde", serde(default))]
130 pub extra: Value,
131}
132
133#[derive(Clone, Debug, PartialEq)]
135#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
136#[cfg_attr(feature = "schemars", derive(JsonSchema))]
137pub struct TelemetryPlan {
138 pub required: bool,
140 #[cfg_attr(
142 feature = "serde",
143 serde(default, skip_serializing_if = "Option::is_none")
144 )]
145 pub suggested_endpoint: Option<String>,
146 #[cfg_attr(feature = "serde", serde(default))]
148 pub extra: Value,
149}