Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit 72ece9c

Browse files
ilayaperumalgtzolov
authored andcommitted
Doc to show properties handling for stream update
- Add examples and notes to show how properties are handled during `stream update` - Callout property values from the manifest Resolves #2498
1 parent 7197736 commit 72ece9c

File tree

1 file changed

+240
-0
lines changed

1 file changed

+240
-0
lines changed

spring-cloud-dataflow-docs/src/main/asciidoc/streams-skipper.adoc

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,246 @@ $ curl http://localhost:9002/info
9696
{"app":{"description":"Spring Cloud Stream Log Sink Rabbit Binder Application","name":"log-sink-rabbit","version":"1.2.0.RELEASE"}}
9797
----
9898

99+
=== Force upgrade of a Stream
100+
101+
When upgrading a stream, the --force option can be used to deploy new instances of currently deployed applications even if no applicaton or deployment properties have changed.
102+
This behavior is needed in the case when configuration information is obtained by the application itself at startup time, for example from Spring Cloud Config Server.
103+
You can specify which applications to force upgrade by using the option --app-names.
104+
If you do not specify any application names, all the applications will be force upgraded.
105+
You can specify --force and --app-names options together with --properties or --propertiesFile options.
106+
107+
=== Overriding properties during Stream update
108+
109+
The properties that are passed during stream update are added on top of the existing properties for the same stream.
110+
111+
For instance, the stream `ticktock` is deployed without any explicit properties as follows:
112+
113+
[source,bash]
114+
----
115+
dataflow:>stream create --name ticktock --definition "time | log --name=mylogger"
116+
Created new stream 'ticktock'
117+
118+
dataflow:>stream deploy --name ticktock
119+
Deployment request has been sent for stream 'ticktock'
120+
----
121+
122+
[source,bash]
123+
----
124+
dataflow:>stream manifest --name ticktock
125+
"apiVersion": "skipper.spring.io/v1"
126+
"kind": "SpringCloudDeployerApplication"
127+
"metadata":
128+
"name": "time"
129+
"spec":
130+
"resource": "maven://org.springframework.cloud.stream.app:time-source-rabbit"
131+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:1.3.1.RELEASE"
132+
"version": "1.3.1.RELEASE"
133+
"applicationProperties":
134+
"spring.metrics.export.triggers.application.includes": "integration**"
135+
"spring.cloud.dataflow.stream.app.label": "time"
136+
"spring.cloud.stream.metrics.key": "ticktock.time.${spring.cloud.application.guid}"
137+
"spring.cloud.stream.bindings.output.producer.requiredGroups": "ticktock"
138+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
139+
"spring.cloud.stream.bindings.output.destination": "ticktock.time"
140+
"spring.cloud.dataflow.stream.name": "ticktock"
141+
"spring.cloud.dataflow.stream.app.type": "source"
142+
"deploymentProperties":
143+
"spring.cloud.deployer.group": "ticktock"
144+
---
145+
"apiVersion": "skipper.spring.io/v1"
146+
"kind": "SpringCloudDeployerApplication"
147+
"metadata":
148+
"name": "log"
149+
"spec":
150+
"resource": "maven://org.springframework.cloud.stream.app:log-sink-rabbit"
151+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:log-sink-rabbit:jar:metadata:1.3.1.RELEASE"
152+
"version": "1.3.1.RELEASE"
153+
"applicationProperties":
154+
"spring.metrics.export.triggers.application.includes": "integration**"
155+
"spring.cloud.dataflow.stream.app.label": "log"
156+
"spring.cloud.stream.metrics.key": "ticktock.log.${spring.cloud.application.guid}"
157+
"spring.cloud.stream.bindings.input.group": "ticktock"
158+
"log.name": "mylogger"
159+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
160+
"spring.cloud.dataflow.stream.name": "ticktock"
161+
"spring.cloud.dataflow.stream.app.type": "sink"
162+
"spring.cloud.stream.bindings.input.destination": "ticktock.time"
163+
"deploymentProperties":
164+
"spring.cloud.deployer.group": "ticktock"
165+
----
166+
167+
In the second update, we try to add a new property for `log` application `foo2=bar2`.
168+
169+
[source,bash]
170+
----
171+
dataflow:>stream update --name ticktock --properties app.log.foo2=bar2
172+
Update request has been sent for the stream 'ticktock'
173+
174+
dataflow:>stream manifest --name ticktock
175+
"apiVersion": "skipper.spring.io/v1"
176+
"kind": "SpringCloudDeployerApplication"
177+
"metadata":
178+
"name": "time"
179+
"spec":
180+
"resource": "maven://org.springframework.cloud.stream.app:time-source-rabbit"
181+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:1.3.1.RELEASE"
182+
"version": "1.3.1.RELEASE"
183+
"applicationProperties":
184+
"spring.metrics.export.triggers.application.includes": "integration**"
185+
"spring.cloud.dataflow.stream.app.label": "time"
186+
"spring.cloud.stream.metrics.key": "ticktock.time.${spring.cloud.application.guid}"
187+
"spring.cloud.stream.bindings.output.producer.requiredGroups": "ticktock"
188+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
189+
"spring.cloud.stream.bindings.output.destination": "ticktock.time"
190+
"spring.cloud.dataflow.stream.name": "ticktock"
191+
"spring.cloud.dataflow.stream.app.type": "source"
192+
"deploymentProperties":
193+
"spring.cloud.deployer.group": "ticktock"
194+
---
195+
"apiVersion": "skipper.spring.io/v1"
196+
"kind": "SpringCloudDeployerApplication"
197+
"metadata":
198+
"name": "log"
199+
"spec":
200+
"resource": "maven://org.springframework.cloud.stream.app:log-sink-rabbit"
201+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:log-sink-rabbit:jar:metadata:1.3.1.RELEASE"
202+
"version": "1.3.1.RELEASE"
203+
"applicationProperties":
204+
"spring.metrics.export.triggers.application.includes": "integration**"
205+
"spring.cloud.dataflow.stream.app.label": "log"
206+
"spring.cloud.stream.metrics.key": "ticktock.log.${spring.cloud.application.guid}"
207+
"spring.cloud.stream.bindings.input.group": "ticktock"
208+
"log.name": "mylogger"
209+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
210+
"spring.cloud.dataflow.stream.name": "ticktock"
211+
"spring.cloud.dataflow.stream.app.type": "sink"
212+
"foo2": "bar2" // <1>
213+
"spring.cloud.stream.bindings.input.destination": "ticktock.time"
214+
"deploymentProperties":
215+
"spring.cloud.deployer.count": "1"
216+
"spring.cloud.deployer.group": "ticktock"
217+
218+
dataflow:>stream list
219+
╔═══════════╤══════════════════════════════════════════╤═════════════════════════════════════════╗
220+
║Stream Name│ Stream Definition │ Status ║
221+
╠═══════════╪══════════════════════════════════════════╪═════════════════════════════════════════╣
222+
║ticktock │time | log --log.name=mylogger --foo2=bar2│The stream has been successfully deployed║
223+
╚═══════════╧══════════════════════════════════════════╧═════════════════════════════════════════╝
224+
225+
----
226+
227+
<1> Property `foo2=bar2` is applied for the `log` application.
228+
229+
Now, when we add another property `foo3=bar3` to `log` application, this new property is added on top of the existing properties for the stream `ticktock`.
230+
231+
[source,bash]
232+
----
233+
dataflow:>stream update --name ticktock --properties app.log.foo3=bar3
234+
Update request has been sent for the stream 'ticktock'
235+
236+
dataflow:>stream manifest --name ticktock
237+
"apiVersion": "skipper.spring.io/v1"
238+
"kind": "SpringCloudDeployerApplication"
239+
"metadata":
240+
"name": "time"
241+
"spec":
242+
"resource": "maven://org.springframework.cloud.stream.app:time-source-rabbit"
243+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:1.3.1.RELEASE"
244+
"version": "1.3.1.RELEASE"
245+
"applicationProperties":
246+
"spring.metrics.export.triggers.application.includes": "integration**"
247+
"spring.cloud.dataflow.stream.app.label": "time"
248+
"spring.cloud.stream.metrics.key": "ticktock.time.${spring.cloud.application.guid}"
249+
"spring.cloud.stream.bindings.output.producer.requiredGroups": "ticktock"
250+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
251+
"spring.cloud.stream.bindings.output.destination": "ticktock.time"
252+
"spring.cloud.dataflow.stream.name": "ticktock"
253+
"spring.cloud.dataflow.stream.app.type": "source"
254+
"deploymentProperties":
255+
"spring.cloud.deployer.group": "ticktock"
256+
---
257+
"apiVersion": "skipper.spring.io/v1"
258+
"kind": "SpringCloudDeployerApplication"
259+
"metadata":
260+
"name": "log"
261+
"spec":
262+
"resource": "maven://org.springframework.cloud.stream.app:log-sink-rabbit"
263+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:log-sink-rabbit:jar:metadata:1.3.1.RELEASE"
264+
"version": "1.3.1.RELEASE"
265+
"applicationProperties":
266+
"spring.metrics.export.triggers.application.includes": "integration**"
267+
"spring.cloud.dataflow.stream.app.label": "log"
268+
"spring.cloud.stream.metrics.key": "ticktock.log.${spring.cloud.application.guid}"
269+
"spring.cloud.stream.bindings.input.group": "ticktock"
270+
"log.name": "mylogger"
271+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
272+
"spring.cloud.dataflow.stream.name": "ticktock"
273+
"spring.cloud.dataflow.stream.app.type": "sink"
274+
"foo2": "bar2" <1>
275+
"spring.cloud.stream.bindings.input.destination": "ticktock.time"
276+
"foo3": "bar3" <1>
277+
"deploymentProperties":
278+
"spring.cloud.deployer.count": "1"
279+
"spring.cloud.deployer.group": "ticktock"
280+
----
281+
282+
<1> The property `foo3=bar3` is added along with the existing `foo2=bar2` for the `log` application.
283+
284+
We can still override the existing properties as follows:
285+
286+
[source,bash]
287+
----
288+
dataflow:>stream update --name ticktock --properties app.log.foo3=bar4
289+
Update request has been sent for the stream 'ticktock'
290+
291+
dataflow:>stream manifest ticktock
292+
"apiVersion": "skipper.spring.io/v1"
293+
"kind": "SpringCloudDeployerApplication"
294+
"metadata":
295+
"name": "time"
296+
"spec":
297+
"resource": "maven://org.springframework.cloud.stream.app:time-source-rabbit"
298+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:1.3.1.RELEASE"
299+
"version": "1.3.1.RELEASE"
300+
"applicationProperties":
301+
"spring.metrics.export.triggers.application.includes": "integration**"
302+
"spring.cloud.dataflow.stream.app.label": "time"
303+
"spring.cloud.stream.metrics.key": "ticktock.time.${spring.cloud.application.guid}"
304+
"spring.cloud.stream.bindings.output.producer.requiredGroups": "ticktock"
305+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
306+
"spring.cloud.stream.bindings.output.destination": "ticktock.time"
307+
"spring.cloud.dataflow.stream.name": "ticktock"
308+
"spring.cloud.dataflow.stream.app.type": "source"
309+
"deploymentProperties":
310+
"spring.cloud.deployer.group": "ticktock"
311+
---
312+
"apiVersion": "skipper.spring.io/v1"
313+
"kind": "SpringCloudDeployerApplication"
314+
"metadata":
315+
"name": "log"
316+
"spec":
317+
"resource": "maven://org.springframework.cloud.stream.app:log-sink-rabbit"
318+
"resourceMetadata": "maven://org.springframework.cloud.stream.app:log-sink-rabbit:jar:metadata:1.3.1.RELEASE"
319+
"version": "1.3.1.RELEASE"
320+
"applicationProperties":
321+
"spring.metrics.export.triggers.application.includes": "integration**"
322+
"spring.cloud.dataflow.stream.app.label": "log"
323+
"spring.cloud.stream.metrics.key": "ticktock.log.${spring.cloud.application.guid}"
324+
"spring.cloud.stream.bindings.input.group": "ticktock"
325+
"log.name": "mylogger"
326+
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
327+
"spring.cloud.dataflow.stream.name": "ticktock"
328+
"spring.cloud.dataflow.stream.app.type": "sink"
329+
"foo2": "bar2" <1>
330+
"spring.cloud.stream.bindings.input.destination": "ticktock.time"
331+
"foo3": "bar4" <1>
332+
"deploymentProperties":
333+
"spring.cloud.deployer.count": "1"
334+
"spring.cloud.deployer.group": "ticktock"
335+
----
336+
337+
<1> The property `foo3` is replaced with the new value` bar4` and the existing property `foo2=bar2` remains.
338+
99339
=== Stream History
100340

101341
The history of the stream can be viewed by running the `stream history` command, as shown (with its output), in the following example:

0 commit comments

Comments
 (0)