pulumi/developer-docs/architecture/replace.svg
Pat Gavlin 98f73cf1ed
Start in on developer documentation. (#7839)
Developer documentation is written in Markdown and can be built into
HTML, PDF, etc. using Sphinx. Diagrams are written in PlantUML and
rendered as SVGs. All developer docs live in the `developer-docs` folder
under the root of the repository.
2021-08-25 15:18:13 -07:00

40 lines
16 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="644px" preserveAspectRatio="none" style="width:1393px;height:644px;background:#FFFFFF;" version="1.1" viewBox="0 0 1393 644" width="1393px" zoomAndPan="magnify"><defs><filter height="300%" id="fqymxxka9icp1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#DDDDDD" height="632.2109" style="stroke:#A80036;stroke-width:1.0;" width="752" x="352.5" y="6"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="47" x="705" y="18.5684">Engine</text><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="318.416" style="stroke:#A80036;stroke-width:1.0;" width="10" x="421" y="92.1094"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="159.208" style="stroke:#A80036;stroke-width:1.0;" width="10" x="773" y="121.4199"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="100.5869" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1039" y="280.6279"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="67.6211" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1039" y="523.1016"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="150.7305"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="209.3516"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="322.5938"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="552.4121"/><line style="stroke:#A80036;stroke-width:1.0;" x1="63" x2="63" y1="60.7988" y2="418.5254"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="63" x2="63" y1="418.5254" y2="459.4805"/><line style="stroke:#A80036;stroke-width:1.0;" x1="63" x2="63" y1="459.4805" y2="599.7227"/><line style="stroke:#A80036;stroke-width:1.0;" x1="425.5" x2="425.5" y1="60.7988" y2="418.5254"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="425.5" x2="425.5" y1="418.5254" y2="459.4805"/><line style="stroke:#A80036;stroke-width:1.0;" x1="425.5" x2="425.5" y1="459.4805" y2="599.7227"/><line style="stroke:#A80036;stroke-width:1.0;" x1="777.5" x2="777.5" y1="60.7988" y2="418.5254"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="777.5" x2="777.5" y1="418.5254" y2="459.4805"/><line style="stroke:#A80036;stroke-width:1.0;" x1="777.5" x2="777.5" y1="459.4805" y2="599.7227"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1043.5" x2="1043.5" y1="60.7988" y2="418.5254"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="1043.5" x2="1043.5" y1="418.5254" y2="459.4805"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1043.5" x2="1043.5" y1="459.4805" y2="599.7227"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1312" x2="1312" y1="60.7988" y2="418.5254"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:1.0,4.0;" x1="1312" x2="1312" y1="418.5254" y2="459.4805"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1312" x2="1312" y1="459.4805" y2="599.7227"/><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="112" x="5" y="25.3105"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="12" y="45.8457">Language SDK</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="112" x="5" y="598.7227"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="12" y="619.2578">Language SDK</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="135" x="356.5" y="25.3105"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121" x="363.5" y="45.8457">Resource Monitor</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="135" x="356.5" y="598.7227"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121" x="363.5" y="619.2578">Resource Monitor</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="117" x="717.5" y="25.3105"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103" x="724.5" y="45.8457">Step Generator</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="117" x="717.5" y="598.7227"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="103" x="724.5" y="619.2578">Step Generator</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="109" x="987.5" y="25.3105"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95" x="994.5" y="45.8457">Step Executor</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="109" x="987.5" y="598.7227"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95" x="994.5" y="619.2578">Step Executor</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="138" x="1241" y="25.3105"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="1248" y="45.8457">Resource Provider</text><rect fill="#FEFECE" filter="url(#fqymxxka9icp1)" height="30.4883" style="stroke:#A80036;stroke-width:1.5;" width="138" x="1241" y="598.7227"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="1248" y="619.2578">Resource Provider</text><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="318.416" style="stroke:#A80036;stroke-width:1.0;" width="10" x="421" y="92.1094"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="159.208" style="stroke:#A80036;stroke-width:1.0;" width="10" x="773" y="121.4199"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="100.5869" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1039" y="280.6279"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="67.6211" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1039" y="523.1016"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="150.7305"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="209.3516"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="322.5938"/><rect fill="#FFFFFF" filter="url(#fqymxxka9icp1)" height="29.3105" style="stroke:#A80036;stroke-width:1.0;" width="10" x="1307" y="552.4121"/><polygon fill="#A80036" points="409,88.1094,419,92.1094,409,96.1094,413,92.1094" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="63" x2="415" y1="92.1094" y2="92.1094"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="339" x="70" y="87.3672">RegisterResourceRequest(type, name, inputs, options)</text><polygon fill="#A80036" points="761,117.4199,771,121.4199,761,125.4199,765,121.4199" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="431" x2="767" y1="121.4199" y2="121.4199"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="323" x="438" y="116.6777">RegisterResourceEvent(type, name, inputs, options)</text><polygon fill="#A80036" points="1295,146.7305,1305,150.7305,1295,154.7305,1299,150.7305" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="783" x2="1301" y1="150.7305" y2="150.7305"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="244" x="790" y="145.9883">CheckRequest(type, inputs, old inputs)</text><polygon fill="#A80036" points="794,176.041,784,180.041,794,184.041,790,180.041" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="788" x2="1311" y1="180.041" y2="180.041"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="205" x="800" y="175.2988">CheckResponse(inputs', failures)</text><polygon fill="#A80036" points="1295,205.3516,1305,209.3516,1295,213.3516,1299,209.3516" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="783" x2="1301" y1="209.3516" y2="209.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="279" x="790" y="204.6094">DiffRequest(type, inputs', old state, options)</text><polygon fill="#A80036" points="794,234.6621,784,238.6621,794,242.6621,790,238.6621" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="788" x2="1311" y1="238.6621" y2="238.6621"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121" x="800" y="233.9199">DiffResponse(diffs)</text><polygon fill="#A80036" points="1027,276.6279,1037,280.6279,1027,284.6279,1031,280.6279" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="778" x2="1033" y1="280.6279" y2="280.6279"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="237" x="785" y="275.8857">CreateStep(inputs', old state, options)</text><path d="M375,251.6621 L375,291.6621 L764,291.6621 L764,261.6621 L754,251.6621 L375,251.6621 " fill="#FBFB77" filter="url(#fqymxxka9icp1)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M754,251.6621 L754,261.6621 L764,261.6621 L754,251.6621 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="357" x="381" y="269.2305">This is fire-and-forget on the part of the step generator.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="368" x="381" y="284.541">The step will run in parallel with steps for other resources.</text><polygon fill="#A80036" points="1295,318.5938,1305,322.5938,1295,326.5938,1299,322.5938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1049" x2="1301" y1="322.5938" y2="322.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="239" x="1056" y="317.8516">CreateRequest(type, inputs', old state)</text><polygon fill="#A80036" points="1060,347.9043,1050,351.9043,1060,355.9043,1056,351.9043" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1054" x2="1311" y1="351.9043" y2="351.9043"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="168" x="1066" y="347.1621">CreateResponse(new state)</text><polygon fill="#A80036" points="442,377.2148,432,381.2148,442,385.2148,438,381.2148" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="436" x2="1043" y1="381.2148" y2="381.2148"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="99" x="448" y="376.4727">done(new state)</text><polygon fill="#A80036" points="74,406.5254,64,410.5254,74,414.5254,70,410.5254" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="68" x2="425" y1="410.5254" y2="410.5254"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="287" x="80" y="405.7832">RegisterResourceResponse(urn, ID, new state)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="115" x="630" y="443.1602">Pulumi program exits</text><line style="stroke:#A80036;stroke-width:1.0;" x1="778" x2="820" y1="480.791" y2="480.791"/><line style="stroke:#A80036;stroke-width:1.0;" x1="820" x2="820" y1="480.791" y2="493.791"/><line style="stroke:#A80036;stroke-width:1.0;" x1="779" x2="820" y1="493.791" y2="493.791"/><polygon fill="#A80036" points="789,489.791,779,493.791,789,497.791,785,493.791" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="135" x="785" y="476.0488">Generate delete steps</text><polygon fill="#A80036" points="1027,519.1016,1037,523.1016,1027,527.1016,1031,523.1016" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="778" x2="1033" y1="523.1016" y2="523.1016"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="130" x="785" y="518.3594">DeleteStep(old state)</text><polygon fill="#A80036" points="1295,548.4121,1305,552.4121,1295,556.4121,1299,552.4121" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1049" x2="1301" y1="552.4121" y2="552.4121"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="188" x="1056" y="547.6699">DeleteRequest(type, old state)</text><polygon fill="#A80036" points="1060,577.7227,1050,581.7227,1060,585.7227,1056,581.7227" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="1054" x2="1311" y1="581.7227" y2="581.7227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="108" x="1066" y="576.9805">DeleteResponse()</text><!--MD5=[ba5761f693f15dd3d1d66420805f703c]
@startuml
participant "Language SDK" order 10
box "Engine"
participant "Resource Monitor" order 15
participant "Step Generator" order 20
participant "Step Executor" order 25
end box
participant "Resource Provider" order 30
"Language SDK" -> "Resource Monitor" ++ : RegisterResourceRequest(type, name, inputs, options)
"Resource Monitor" -> "Step Generator" ++ : RegisterResourceEvent(type, name, inputs, options)
"Step Generator" -> "Resource Provider" ++ : CheckRequest(type, inputs, old inputs)
"Step Generator" <- "Resource Provider" - - : CheckResponse(inputs', failures)
"Step Generator" -> "Resource Provider" ++ : DiffRequest(type, inputs', old state, options)
"Step Generator" <- "Resource Provider" - - : DiffResponse(diffs)
"Step Generator" -> "Step Executor" - -++ : CreateStep(inputs', old state, options)
note left
This is fire-and-forget on the part of the step generator.
The step will run in parallel with steps for other resources.
end note
"Step Executor" -> "Resource Provider" ++ : CreateRequest(type, inputs', old state)
"Step Executor" <- "Resource Provider" - - : CreateResponse(new state)
"Resource Monitor" <- "Step Executor" - - : done(new state)
"Language SDK" <- "Resource Monitor" - - : RegisterResourceResponse(urn, ID, new state)
...Pulumi program exits...
"Step Generator" -> "Step Generator": Generate delete steps
"Step Generator" -> "Step Executor" ++ : DeleteStep(old state)
"Step Executor" -> "Resource Provider" ++ : DeleteRequest(type, old state)
"Step Executor" <- "Resource Provider" - - : DeleteResponse()
@enduml
PlantUML version 1.2021.9(Sun Jul 25 03:13:56 PDT 2021)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>