alien_core/bindings/
artifact_registry.rs1use super::BindingValue;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
9#[serde(rename_all = "camelCase")]
10pub struct EcrArtifactRegistryBinding {
11 pub repository_prefix: BindingValue<String>,
13 pub pull_role_arn: BindingValue<Option<String>>,
15 pub push_role_arn: BindingValue<Option<String>>,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
21#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
22#[serde(rename_all = "camelCase")]
23pub struct AcrArtifactRegistryBinding {
24 pub registry_name: BindingValue<String>,
26 pub resource_group_name: BindingValue<String>,
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
32#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
33#[serde(rename_all = "camelCase")]
34pub struct GarArtifactRegistryBinding {
35 pub pull_service_account_email: BindingValue<Option<String>>,
37 pub push_service_account_email: BindingValue<Option<String>>,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
43#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
44#[serde(rename_all = "camelCase")]
45pub struct LocalArtifactRegistryBinding {
46 pub registry_url: BindingValue<String>,
48 pub data_dir: BindingValue<Option<String>>,
50}
51
52#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
54#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
55#[serde(tag = "service", rename_all = "lowercase")]
56pub enum ArtifactRegistryBinding {
57 Ecr(EcrArtifactRegistryBinding),
59 Acr(AcrArtifactRegistryBinding),
61 Gar(GarArtifactRegistryBinding),
63 Local(LocalArtifactRegistryBinding),
65}
66
67impl ArtifactRegistryBinding {
68 pub fn ecr(
70 repository_prefix: impl Into<BindingValue<String>>,
71 pull_role_arn: impl Into<BindingValue<Option<String>>>,
72 push_role_arn: impl Into<BindingValue<Option<String>>>,
73 ) -> Self {
74 Self::Ecr(EcrArtifactRegistryBinding {
75 repository_prefix: repository_prefix.into(),
76 pull_role_arn: pull_role_arn.into(),
77 push_role_arn: push_role_arn.into(),
78 })
79 }
80
81 pub fn acr(
83 registry_name: impl Into<BindingValue<String>>,
84 resource_group_name: impl Into<BindingValue<String>>,
85 ) -> Self {
86 Self::Acr(AcrArtifactRegistryBinding {
87 registry_name: registry_name.into(),
88 resource_group_name: resource_group_name.into(),
89 })
90 }
91
92 pub fn gar(
94 pull_service_account_email: impl Into<BindingValue<Option<String>>>,
95 push_service_account_email: impl Into<BindingValue<Option<String>>>,
96 ) -> Self {
97 Self::Gar(GarArtifactRegistryBinding {
98 pull_service_account_email: pull_service_account_email.into(),
99 push_service_account_email: push_service_account_email.into(),
100 })
101 }
102
103 pub fn local(
105 registry_url: impl Into<BindingValue<String>>,
106 data_dir: impl Into<BindingValue<Option<String>>>,
107 ) -> Self {
108 Self::Local(LocalArtifactRegistryBinding {
109 registry_url: registry_url.into(),
110 data_dir: data_dir.into(),
111 })
112 }
113}