@rancher/shell 3.0.9-rc.5 → 3.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/assets/images/providers/oci-open-containers.svg +22 -0
  2. package/assets/images/providers/traefik.png +0 -0
  3. package/assets/styles/themes/_dark.scss +2 -0
  4. package/assets/styles/themes/_light.scss +2 -0
  5. package/assets/styles/themes/_modern.scss +6 -0
  6. package/assets/translations/en-us.yaml +129 -25
  7. package/components/CruResource.vue +3 -1
  8. package/components/ExplorerProjectsNamespaces.vue +12 -12
  9. package/components/IconOrSvg.vue +61 -42
  10. package/components/Resource/Detail/Card/StatusCard/__tests__/StatusCard.test.ts +109 -0
  11. package/components/Resource/Detail/Card/StatusCard/index.vue +21 -4
  12. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +19 -2
  13. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +19 -11
  14. package/components/Resource/Detail/ResourcePopover/__tests__/index.test.ts +12 -0
  15. package/components/Resource/Detail/ResourcePopover/index.vue +2 -0
  16. package/components/Resource/Detail/ResourceRow.vue +2 -2
  17. package/components/ResourceList/index.vue +7 -4
  18. package/components/SortableTable/index.vue +2 -2
  19. package/components/Window/ContainerLogs.vue +48 -37
  20. package/components/fleet/FleetClusterTargets/TargetsList.vue +2 -2
  21. package/components/fleet/FleetClusterTargets/index.vue +6 -1
  22. package/components/fleet/GitRepoAdvancedTab.vue +333 -0
  23. package/components/fleet/GitRepoMetadataTab.vue +43 -0
  24. package/components/fleet/GitRepoRepositoryTab.vue +101 -0
  25. package/components/fleet/GitRepoTargetTab.vue +77 -0
  26. package/components/fleet/HelmOpAdvancedTab.vue +247 -0
  27. package/components/fleet/HelmOpChartTab.vue +158 -0
  28. package/components/fleet/HelmOpMetadataTab.vue +46 -0
  29. package/components/fleet/HelmOpTargetTab.vue +84 -0
  30. package/components/fleet/HelmOpValuesTab.vue +147 -0
  31. package/components/fleet/__tests__/FleetClusterTargets.test.ts +119 -70
  32. package/components/form/BannerSettings.vue +2 -2
  33. package/components/form/NodeScheduling.vue +81 -7
  34. package/components/form/NotificationSettings.vue +2 -2
  35. package/components/form/PodAffinity.vue +1 -36
  36. package/components/form/ResourceLabeledSelect.vue +8 -4
  37. package/components/form/ResourceQuota/Namespace.vue +30 -9
  38. package/components/form/ResourceQuota/NamespaceRow.vue +25 -7
  39. package/components/form/ResourceQuota/Project.vue +140 -82
  40. package/components/form/ResourceQuota/ResourceQuotaEntry.vue +145 -0
  41. package/components/form/ResourceQuota/__tests__/Namespace.test.ts +307 -0
  42. package/components/form/ResourceQuota/__tests__/NamespaceRow.test.ts +281 -0
  43. package/components/form/ResourceQuota/__tests__/Project.test.ts +274 -27
  44. package/components/form/ResourceQuota/__tests__/ResourceQuotaEntry.test.ts +215 -0
  45. package/components/form/SchedulingCustomization.vue +14 -6
  46. package/components/form/SelectOrCreateAuthSecret.vue +107 -18
  47. package/components/form/__tests__/NodeScheduling.test.ts +12 -9
  48. package/components/form/__tests__/PodAffinity.test.ts +21 -2
  49. package/components/form/__tests__/SchedulingCustomization.test.ts +240 -0
  50. package/components/formatter/ClusterLink.vue +8 -0
  51. package/components/formatter/SecretOrigin.vue +79 -0
  52. package/config/labels-annotations.js +7 -6
  53. package/config/pagination-table-headers.js +6 -4
  54. package/config/product/explorer.js +1 -11
  55. package/config/product/manager.js +0 -1
  56. package/config/query-params.js +3 -0
  57. package/config/settings.ts +15 -2
  58. package/config/table-headers.js +21 -17
  59. package/config/types.js +23 -8
  60. package/detail/fleet.cattle.io.cluster.vue +1 -1
  61. package/detail/workload/index.vue +11 -16
  62. package/dialog/DeactivateDriverDialog.vue +1 -1
  63. package/dialog/FeatureFlagListDialog.vue +1 -1
  64. package/dialog/Ipv6NetworkingDialog.vue +156 -0
  65. package/dialog/ScalePoolDownDialog.vue +2 -2
  66. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  67. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +1 -0
  68. package/edit/__tests__/management.cattle.io.project.test.js +56 -128
  69. package/edit/auth/oidc.vue +1 -1
  70. package/edit/catalog.cattle.io.clusterrepo.vue +155 -25
  71. package/edit/fleet.cattle.io.gitrepo.vue +153 -283
  72. package/edit/fleet.cattle.io.helmop.vue +190 -332
  73. package/edit/management.cattle.io.project.vue +5 -42
  74. package/edit/management.cattle.io.setting.vue +6 -0
  75. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/auth.spec.ts +145 -0
  76. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/index.test.ts +202 -0
  77. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/tls.spec.ts +226 -0
  78. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +24 -21
  79. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/opsgenie.spec.ts +157 -0
  80. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/pagerduty.spec.ts +132 -0
  81. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/slack.spec.ts +108 -0
  82. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +2 -1
  83. package/edit/monitoring.coreos.com.receiver/__tests__/auth.spec.ts +165 -0
  84. package/edit/monitoring.coreos.com.receiver/__tests__/index.test.ts +153 -0
  85. package/edit/monitoring.coreos.com.receiver/__tests__/tls.spec.ts +115 -0
  86. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.spec.ts +86 -0
  87. package/edit/monitoring.coreos.com.receiver/types/__tests__/opsgenie.spec.ts +209 -0
  88. package/edit/monitoring.coreos.com.receiver/types/__tests__/pagerduty.spec.ts +105 -0
  89. package/edit/monitoring.coreos.com.receiver/types/__tests__/slack.spec.ts +92 -0
  90. package/edit/monitoring.coreos.com.receiver/types/__tests__/webhook.spec.ts +131 -0
  91. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +55 -24
  92. package/edit/provisioning.cattle.io.cluster/__tests__/Networking.test.ts +1 -103
  93. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +13 -1
  94. package/edit/provisioning.cattle.io.cluster/__tests__/rke2-fleet-cluster-agent.test.ts +283 -0
  95. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +65 -49
  96. package/edit/provisioning.cattle.io.cluster/ingress/IngressCards.vue +114 -0
  97. package/edit/provisioning.cattle.io.cluster/ingress/IngressConfiguration.vue +158 -0
  98. package/edit/provisioning.cattle.io.cluster/rke2.vue +167 -69
  99. package/edit/provisioning.cattle.io.cluster/shared.ts +36 -1
  100. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -1
  101. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +70 -7
  102. package/edit/provisioning.cattle.io.cluster/tabs/Ingress.vue +343 -0
  103. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -1
  104. package/edit/provisioning.cattle.io.cluster/tabs/etcd/__tests__/S3Config.test.ts +13 -1
  105. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +10 -44
  106. package/edit/secret/index.vue +1 -1
  107. package/edit/token.vue +68 -29
  108. package/edit/workload/__tests__/index.test.ts +2 -37
  109. package/edit/workload/index.vue +6 -2
  110. package/edit/workload/mixins/workload.js +0 -32
  111. package/list/__tests__/management.cattle.io.setting.test.ts +198 -0
  112. package/list/management.cattle.io.setting.vue +13 -0
  113. package/list/provisioning.cattle.io.cluster.vue +50 -1
  114. package/list/secret.vue +4 -9
  115. package/list/service.vue +6 -8
  116. package/machine-config/amazonec2.vue +11 -4
  117. package/machine-config/components/EC2Networking.vue +46 -30
  118. package/machine-config/components/__tests__/EC2Networking.test.ts +7 -7
  119. package/machine-config/components/__tests__/utils/vpcSubnetMockData.js +0 -9
  120. package/machine-config/digitalocean.vue +3 -3
  121. package/models/__tests__/chart.test.ts +2 -2
  122. package/models/__tests__/namespace.test.ts +11 -0
  123. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +96 -0
  124. package/models/__tests__/workload.test.ts +42 -1
  125. package/models/catalog.cattle.io.clusterrepo.js +30 -4
  126. package/models/chart.js +3 -3
  127. package/models/ext.cattle.io.token.js +48 -0
  128. package/models/kontainerdriver.js +2 -2
  129. package/models/namespace.js +7 -1
  130. package/models/nodedriver.js +2 -2
  131. package/models/provisioning.cattle.io.cluster.js +28 -7
  132. package/models/secret.js +0 -17
  133. package/models/service.js +44 -1
  134. package/models/token.js +4 -0
  135. package/models/workload.js +12 -6
  136. package/package.json +1 -1
  137. package/pages/account/index.vue +96 -67
  138. package/pages/auth/setup.vue +5 -14
  139. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +45 -18
  140. package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +4 -1
  141. package/pages/c/_cluster/apps/charts/index.vue +82 -3
  142. package/pages/c/_cluster/apps/charts/install.vue +317 -42
  143. package/pages/c/_cluster/explorer/tools/index.vue +1 -1
  144. package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
  145. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -4
  146. package/pages/c/_cluster/settings/index.vue +3 -1
  147. package/pages/c/_cluster/uiplugins/index.vue +1 -1
  148. package/plugins/dashboard-store/__tests__/getters.test.ts +108 -0
  149. package/plugins/dashboard-store/__tests__/resource-class.test.ts +27 -0
  150. package/plugins/dashboard-store/actions.js +3 -8
  151. package/plugins/dashboard-store/getters.js +7 -5
  152. package/plugins/dashboard-store/mutations.js +4 -1
  153. package/plugins/dashboard-store/resource-class.js +3 -3
  154. package/plugins/steve/__tests__/steve-class.test.ts +102 -141
  155. package/plugins/steve/steve-class.js +12 -3
  156. package/plugins/steve/steve-pagination-utils.ts +6 -2
  157. package/rancher-components/RcIcon/types.ts +2 -0
  158. package/rancher-components/RcItemCard/RcItemCard.vue +72 -20
  159. package/store/prefs.js +3 -0
  160. package/types/aws-sdk.d.ts +121 -0
  161. package/types/resources/node.ts +15 -0
  162. package/types/shell/index.d.ts +537 -506
  163. package/types/store/pagination.types.ts +5 -5
  164. package/utils/__tests__/array.test.ts +1 -29
  165. package/utils/__tests__/cluster-agent-configuration.test.ts +203 -0
  166. package/utils/array.ts +0 -11
  167. package/utils/aws.ts +21 -0
  168. package/utils/cluster.js +22 -2
  169. package/utils/selector-typed.ts +1 -1
  170. package/utils/svg-filter.js +4 -3
  171. package/components/__tests__/ProjectRow.test.ts +0 -206
  172. package/components/form/ResourceQuota/ProjectRow.vue +0 -277
@@ -0,0 +1,333 @@
1
+ <script setup>
2
+ import { useStore } from 'vuex';
3
+ import { useI18n } from '@shell/composables/useI18n';
4
+ import { Banner } from '@components/Banner';
5
+ import { LabeledInput } from '@components/Form/LabeledInput';
6
+ import LabeledSelect from '@shell/components/form/LabeledSelect';
7
+ import SelectOrCreateAuthSecret from '@shell/components/form/SelectOrCreateAuthSecret';
8
+ import Checkbox from '@components/Form/Checkbox/Checkbox.vue';
9
+ import UnitInput from '@shell/components/form/UnitInput';
10
+ import FleetOCIStorageSecret from '@shell/components/fleet/FleetOCIStorageSecret.vue';
11
+
12
+ defineProps({
13
+ value: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ mode: {
18
+ type: String,
19
+ required: true
20
+ },
21
+ isView: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ workspace: {
26
+ type: String,
27
+ required: true
28
+ },
29
+ tlsMode: {
30
+ type: String,
31
+ required: true
32
+ },
33
+ tlsOptions: {
34
+ type: Array,
35
+ required: true
36
+ },
37
+ caBundle: {
38
+ type: String,
39
+ default: null
40
+ },
41
+ isTls: {
42
+ type: Boolean,
43
+ required: true
44
+ },
45
+ displayHelmRepoUrlRegex: {
46
+ type: Boolean,
47
+ required: true
48
+ },
49
+ tempCachedValues: {
50
+ type: Object,
51
+ required: true
52
+ },
53
+ correctDriftEnabled: {
54
+ type: Boolean,
55
+ required: true
56
+ },
57
+ pollingInterval: {
58
+ type: Number,
59
+ required: false,
60
+ default: undefined
61
+ },
62
+ showPollingIntervalWarning: {
63
+ type: Boolean,
64
+ required: true
65
+ },
66
+ specifyOption: {
67
+ type: String,
68
+ required: true
69
+ },
70
+ registerBeforeHook: {
71
+ type: Function,
72
+ required: true
73
+ },
74
+ isGithubDotComRepository: {
75
+ type: Boolean,
76
+ required: true,
77
+ },
78
+ isBasicAuthSelected: {
79
+ type: Boolean,
80
+ required: true,
81
+ }
82
+ });
83
+
84
+ const emit = defineEmits([
85
+ 'update:tls-mode',
86
+ 'update:ca-bundle',
87
+ 'update:auth',
88
+ 'update:cached-auth',
89
+ 'update:correct-drift',
90
+ 'update:polling-enabled',
91
+ 'update:polling-interval',
92
+ 'update:validate-polling-interval',
93
+ ]);
94
+
95
+ const store = useStore();
96
+ const { t } = useI18n(store);
97
+
98
+ const updateTlsMode = (event) => {
99
+ emit('update:tls-mode', event);
100
+ };
101
+
102
+ const updateCaBundle = (value) => {
103
+ emit('update:ca-bundle', value);
104
+ };
105
+
106
+ const updateAuth = (val, key) => {
107
+ emit('update:auth', { value: val, key });
108
+ };
109
+
110
+ const updateCachedAuthVal = (val, key) => {
111
+ emit('update:cached-auth', { value: val, key });
112
+ };
113
+
114
+ const updateCorrectDrift = (value) => {
115
+ emit('update:correct-drift', value);
116
+ };
117
+
118
+ const enablePolling = (value) => {
119
+ emit('update:polling-enabled', value);
120
+ };
121
+
122
+ const updatePollingInterval = (value) => {
123
+ emit('update:polling-interval', value);
124
+ };
125
+
126
+ const validatePollingInterval = () => {
127
+ emit('update:validate-polling-interval');
128
+ };
129
+ </script>
130
+
131
+ <template>
132
+ <div>
133
+ <Banner
134
+ v-if="!isView"
135
+ color="info"
136
+ label-key="fleet.gitRepo.add.steps.advanced.info"
137
+ data-testid="gitrepo-advanced-info"
138
+ />
139
+
140
+ <h2>{{ t('fleet.gitRepo.auth.title') }}</h2>
141
+ <Banner
142
+ v-if="isGithubDotComRepository && isBasicAuthSelected"
143
+ color="warning"
144
+ label-key="fleet.gitRepo.auth.githubdotcomPasswordBanner"
145
+ data-testid="gitrepo-githubdotcom-password-warning"
146
+ />
147
+ <SelectOrCreateAuthSecret
148
+ data-testid="gitrepo-git-auth"
149
+ :value="value.spec.clientSecretName"
150
+ :register-before-hook="registerBeforeHook"
151
+ :namespace="value.metadata.namespace"
152
+ :delegate-create-to-parent="true"
153
+ in-store="management"
154
+ :pre-select="tempCachedValues.clientSecretName"
155
+ :mode="mode"
156
+ generate-name="gitrepo-auth-"
157
+ label-key="fleet.gitRepo.auth.git"
158
+ :cache-secrets="true"
159
+ :show-ssh-known-hosts="true"
160
+ :is-github-dot-com-repository="isGithubDotComRepository"
161
+ @update:value="updateAuth($event, 'clientSecretName')"
162
+ @inputauthval="updateCachedAuthVal($event, 'clientSecretName')"
163
+ />
164
+ <SelectOrCreateAuthSecret
165
+ data-testid="gitrepo-helm-auth"
166
+ :value="value.spec.helmSecretName"
167
+ :register-before-hook="registerBeforeHook"
168
+ :namespace="value.metadata.namespace"
169
+ :delegate-create-to-parent="true"
170
+ in-store="management"
171
+ :mode="mode"
172
+ generate-name="helmrepo-auth-"
173
+ label-key="fleet.gitRepo.auth.helm"
174
+ :pre-select="tempCachedValues.helmSecretName"
175
+ :cache-secrets="true"
176
+ :show-ssh-known-hosts="true"
177
+ @update:value="updateAuth($event, 'helmSecretName')"
178
+ @inputauthval="updateCachedAuthVal($event, 'helmSecretName')"
179
+ />
180
+
181
+ <div
182
+ v-if="displayHelmRepoUrlRegex"
183
+ class="row mt-20"
184
+ >
185
+ <div
186
+ class="col span-6"
187
+ data-testid="gitrepo-helm-repo-url-regex"
188
+ >
189
+ <LabeledInput
190
+ v-model:value="value.spec.helmRepoURLRegex"
191
+ :mode="mode"
192
+ label-key="fleet.gitRepo.helmRepoURLRegex"
193
+ />
194
+ </div>
195
+ </div>
196
+
197
+ <template v-if="isTls">
198
+ <div class="row mt-20">
199
+ <div class="col span-6">
200
+ <LabeledSelect
201
+ :label="t('fleet.gitRepo.tls.label')"
202
+ :mode="mode"
203
+ :value="tlsMode"
204
+ :options="tlsOptions"
205
+ @update:value="updateTlsMode($event)"
206
+ />
207
+ </div>
208
+ <div
209
+ v-if="tlsMode === specifyOption"
210
+ class="col span-6"
211
+ >
212
+ <LabeledInput
213
+ :value="caBundle"
214
+ :mode="mode"
215
+ type="multiline"
216
+ label-key="fleet.gitRepo.caBundle.label"
217
+ placeholder-key="fleet.gitRepo.caBundle.placeholder"
218
+ @update:value="updateCaBundle"
219
+ />
220
+ </div>
221
+ </div>
222
+ </template>
223
+ <div class="spacer" />
224
+
225
+ <h2>
226
+ {{ t('fleet.gitRepo.ociStorageSecret.title') }}
227
+ </h2>
228
+ <div class="row mt-20">
229
+ <div class="col span-6">
230
+ <FleetOCIStorageSecret
231
+ :secret="value.spec.ociRegistrySecret"
232
+ :workspace="workspace"
233
+ :mode="mode"
234
+ @update:value="value.spec.ociRegistrySecret=$event"
235
+ />
236
+ </div>
237
+ </div>
238
+ <div class="spacer" />
239
+
240
+ <h2>
241
+ {{ t('fleet.gitRepo.resources.label') }}
242
+ </h2>
243
+ <div class="resource-handling">
244
+ <Checkbox
245
+ :value="correctDriftEnabled"
246
+ :tooltip="t('fleet.gitRepo.resources.correctDriftTooltip')"
247
+ data-testid="gitRepo-correctDrift-checkbox"
248
+ class="check"
249
+ type="checkbox"
250
+ label-key="fleet.gitRepo.resources.correctDrift"
251
+ :mode="mode"
252
+ @update:value="updateCorrectDrift"
253
+ />
254
+ <Checkbox
255
+ v-model:value="value.spec.keepResources"
256
+ :tooltip="t('fleet.gitRepo.resources.keepResourcesTooltip')"
257
+ data-testid="gitRepo-keepResources-checkbox"
258
+ class="check"
259
+ type="checkbox"
260
+ label-key="fleet.gitRepo.resources.keepResources"
261
+ :mode="mode"
262
+ />
263
+ </div>
264
+
265
+ <div class="spacer" />
266
+ <h2>
267
+ {{ t('fleet.gitRepo.polling.label') }}
268
+ </h2>
269
+ <div class="row polling">
270
+ <div class="col span-6">
271
+ <Checkbox
272
+ :value="value.isPollingEnabled"
273
+ data-testid="gitRepo-enablePolling-checkbox"
274
+ class="check"
275
+ type="checkbox"
276
+ label-key="fleet.gitRepo.polling.enable"
277
+ :mode="mode"
278
+ @update:value="enablePolling"
279
+ />
280
+ </div>
281
+ <template v-if="value.isPollingEnabled">
282
+ <div class="col">
283
+ <Banner
284
+ v-if="showPollingIntervalWarning"
285
+ color="warning"
286
+ label-key="fleet.gitRepo.polling.pollingInterval.minimumValueWarning"
287
+ data-testid="gitRepo-pollingInterval-minimumValueWarning"
288
+ />
289
+ <Banner
290
+ v-if="value.isWebhookConfigured"
291
+ color="warning"
292
+ label-key="fleet.gitRepo.polling.pollingInterval.webhookWarning"
293
+ data-testid="gitRepo-pollingInterval-webhookWarning"
294
+ />
295
+ </div>
296
+ <div class="col span-6">
297
+ <UnitInput
298
+ :value="pollingInterval"
299
+ data-testid="gitRepo-pollingInterval-input"
300
+ min="1"
301
+ :suffix="t('suffix.seconds', { count: pollingInterval })"
302
+ :label="t('fleet.gitRepo.polling.pollingInterval.label')"
303
+ :mode="mode"
304
+ tooltip-key="fleet.gitRepo.polling.pollingInterval.tooltip"
305
+ @update:value="updatePollingInterval"
306
+ @blur.capture="validatePollingInterval"
307
+ />
308
+ </div>
309
+ </template>
310
+ </div>
311
+ </div>
312
+ </template>
313
+
314
+ <style lang="scss" scoped>
315
+ .spacer {
316
+ padding: 30px 0 0 0;
317
+ }
318
+ :deep() .select-or-create-auth-secret {
319
+ .row {
320
+ margin-top: 10px !important;
321
+ }
322
+ }
323
+ .resource-handling {
324
+ display: flex;
325
+ flex-direction: column;
326
+ gap: 5px;
327
+ }
328
+ .polling {
329
+ display: flex;
330
+ flex-direction: column;
331
+ gap: 5px;
332
+ }
333
+ </style>
@@ -0,0 +1,43 @@
1
+ <script setup>
2
+ import Labels from '@shell/components/form/Labels';
3
+ import NameNsDescription from '@shell/components/form/NameNsDescription';
4
+
5
+ defineProps({
6
+ value: {
7
+ type: Object,
8
+ required: true
9
+ },
10
+ mode: {
11
+ type: String,
12
+ required: true
13
+ },
14
+ isView: {
15
+ type: Boolean,
16
+ default: false
17
+ }
18
+ });
19
+
20
+ const emit = defineEmits(['input']);
21
+
22
+ const updateValue = (event) => {
23
+ emit('input', event);
24
+ };
25
+ </script>
26
+
27
+ <template>
28
+ <div>
29
+ <NameNsDescription
30
+ v-if="!isView"
31
+ :value="value"
32
+ :namespaced="false"
33
+ :mode="mode"
34
+ @update:value="updateValue"
35
+ />
36
+ <Labels
37
+ :value="value"
38
+ :mode="mode"
39
+ :display-side-by-side="false"
40
+ :add-icon="'icon-plus'"
41
+ />
42
+ </div>
43
+ </template>
@@ -0,0 +1,101 @@
1
+ <script setup>
2
+ import { useStore } from 'vuex';
3
+ import { useI18n } from '@shell/composables/useI18n';
4
+ import InputWithSelect from '@shell/components/form/InputWithSelect';
5
+ import { LabeledInput } from '@components/Form/LabeledInput';
6
+ import FleetGitRepoPaths from '@shell/components/fleet/FleetGitRepoPaths.vue';
7
+
8
+ defineProps({
9
+ value: {
10
+ type: Object,
11
+ required: true
12
+ },
13
+ mode: {
14
+ type: String,
15
+ required: true
16
+ },
17
+ isView: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ refType: {
22
+ type: String,
23
+ required: true
24
+ },
25
+ refValue: {
26
+ type: String,
27
+ required: true
28
+ },
29
+ touched: {
30
+ type: [Object, Boolean],
31
+ default: null
32
+ },
33
+ fvGetAndReportPathRules: {
34
+ type: Function,
35
+ required: true
36
+ }
37
+ });
38
+
39
+ const emit = defineEmits(['update:ref', 'update:paths', 'touched']);
40
+
41
+ const store = useStore();
42
+ const { t } = useI18n(store);
43
+
44
+ const changeRef = (event) => {
45
+ emit('update:ref', event);
46
+ };
47
+
48
+ const updatePaths = (value) => {
49
+ emit('update:paths', value);
50
+ };
51
+
52
+ const onTouched = (value) => {
53
+ emit('touched', value);
54
+ };
55
+ </script>
56
+
57
+ <template>
58
+ <div>
59
+ <h2>{{ t('fleet.gitRepo.repo.title') }}</h2>
60
+ <div
61
+ class="row mb-20"
62
+ :class="{'mt-20': isView}"
63
+ >
64
+ <div class="col span-6">
65
+ <LabeledInput
66
+ v-model:value="value.spec.repo"
67
+ :mode="mode"
68
+ label-key="fleet.gitRepo.repo.label"
69
+ :placeholder="t('fleet.gitRepo.repo.placeholder', null, true)"
70
+ :required="true"
71
+ :rules="fvGetAndReportPathRules('spec.repo')"
72
+ />
73
+ </div>
74
+ <div class="col span-6">
75
+ <InputWithSelect
76
+ :data-testid="`gitrepo-${refType}`"
77
+ :mode="mode"
78
+ :select-label="t('fleet.gitRepo.ref.label')"
79
+ :select-value="refType"
80
+ :text-label="t(`fleet.gitRepo.ref.${refType}Label`)"
81
+ :text-placeholder="t(`fleet.gitRepo.ref.${refType}Placeholder`)"
82
+ :text-value="refValue"
83
+ :text-required="true"
84
+ :options="[{label: t('fleet.gitRepo.ref.branch'), value: 'branch'}, {label: t('fleet.gitRepo.ref.revision'), value: 'revision'}]"
85
+ @update:value="changeRef($event)"
86
+ />
87
+ </div>
88
+ </div>
89
+
90
+ <FleetGitRepoPaths
91
+ :value="{
92
+ paths: value.spec.paths,
93
+ bundles: value.spec.bundles
94
+ }"
95
+ :mode="mode"
96
+ :touched="touched"
97
+ @update:value="updatePaths"
98
+ @touched="onTouched"
99
+ />
100
+ </div>
101
+ </template>
@@ -0,0 +1,77 @@
1
+ <script setup>
2
+ import { useStore } from 'vuex';
3
+ import { useI18n } from '@shell/composables/useI18n';
4
+ import { LabeledInput } from '@components/Form/LabeledInput';
5
+ import FleetClusterTargets from '@shell/components/fleet/FleetClusterTargets/index.vue';
6
+
7
+ defineProps({
8
+ value: {
9
+ type: Object,
10
+ required: true
11
+ },
12
+ mode: {
13
+ type: String,
14
+ required: true
15
+ },
16
+ realMode: {
17
+ type: String,
18
+ required: true
19
+ },
20
+ targetsCreated: {
21
+ type: String,
22
+ default: ''
23
+ }
24
+ });
25
+
26
+ const emit = defineEmits(['update:targets', 'created']);
27
+
28
+ const store = useStore();
29
+ const { t } = useI18n(store);
30
+
31
+ const updateTargets = (value) => {
32
+ emit('update:targets', value);
33
+ };
34
+
35
+ const onCreated = (value) => {
36
+ emit('created', value);
37
+ };
38
+ </script>
39
+
40
+ <template>
41
+ <div>
42
+ <h2>{{ t('fleet.gitRepo.target.label') }}</h2>
43
+ <FleetClusterTargets
44
+ :targets="value.spec.targets"
45
+ :matching="value.targetClusters"
46
+ :namespace="value.metadata.namespace"
47
+ :mode="realMode"
48
+ :created="targetsCreated"
49
+ @update:value="updateTargets"
50
+ @created="onCreated"
51
+ />
52
+
53
+ <h3 class="mmt-16">
54
+ {{ t('fleet.gitRepo.target.additionalOptions') }}
55
+ </h3>
56
+ <div class="row mt-20">
57
+ <div class="col span-6">
58
+ <LabeledInput
59
+ v-model:value="value.spec.serviceAccount"
60
+ :mode="mode"
61
+ label-key="fleet.gitRepo.serviceAccount.label"
62
+ placeholder-key="fleet.gitRepo.serviceAccount.placeholder"
63
+ />
64
+ </div>
65
+ <div class="col span-6">
66
+ <LabeledInput
67
+ v-model:value="value.spec.targetNamespace"
68
+ :mode="mode"
69
+ label-key="fleet.gitRepo.targetNamespace.label"
70
+ placeholder-key="fleet.gitRepo.targetNamespace.placeholder"
71
+ label="Target Namespace"
72
+ placeholder="Optional: Require all resources to be in this namespace"
73
+ />
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </template>