pulumi/developer-docs/architecture/pulumi-cli.svg

68 lines
11 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="379px" preserveAspectRatio="none" style="width:837px;height:379px;background:#FFFFFF;" version="1.1" viewBox="0 0 837 379" width="837px" zoomAndPan="magnify"><defs><filter height="300%" id="f19xh40rheasqw" 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><!--MD5=[6ad7c0b688d9e902153dd4de2b6da276]
cluster plugin--><polygon fill="#FFFFFF" filter="url(#f19xh40rheasqw)" points="274,16,284,6,533,6,533,110,523,120,274,120,274,16" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="523" x2="533" y1="16" y2="6"/><line style="stroke:#000000;stroke-width:1.5;" x1="274" x2="523" y1="16" y2="16"/><line style="stroke:#000000;stroke-width:1.5;" x1="523" x2="523" y1="16" y2="120"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="119" x="340" y="32.5352">Language Plugin</text><!--MD5=[e3a89b72019d8d69b73b0a9ebb84eda6]
cluster cli--><polygon fill="#FFFFFF" filter="url(#f19xh40rheasqw)" points="143,154,153,144,820,144,820,236,810,246,143,246,143,154" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="810" x2="820" y1="154" y2="144"/><line style="stroke:#000000;stroke-width:1.5;" x1="143" x2="810" y1="154" y2="154"/><line style="stroke:#000000;stroke-width:1.5;" x1="810" x2="810" y1="154" y2="246"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="79" x="438" y="170.5352">Pulumi CLI</text><!--MD5=[37555286e97c6ca40d22b1bfaf1e2f78]
cluster providers--><polygon fill="#FFFFFF" filter="url(#f19xh40rheasqw)" points="16,280,26,270,718,270,718,362,708,372,16,372,16,280" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="708" x2="718" y1="280" y2="270"/><line style="stroke:#000000;stroke-width:1.5;" x1="16" x2="708" y1="280" y2="280"/><line style="stroke:#000000;stroke-width:1.5;" x1="708" x2="708" y1="280" y2="372"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="138" x="294" y="296.5352">Resource Providers</text><!--MD5=[bd28a176169e8702965fc6459f094f8d]
entity langhost--><ellipse cx="490" cy="75" fill="#FEFECE" filter="url(#f19xh40rheasqw)" rx="8" ry="8" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="36" x="472" y="105.5352">gRPC</text><!--MD5=[1344c822e198f17c7a138ae37b519ce9]
entity sdk--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="138" x="290" y="52"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="408" y="57"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="406" y="59"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="406" y="63"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98" x="305" y="85.5352">Language SDK</text><!--MD5=[f50d41480d2572d7a33322ea46f73a65]
entity resmon--><ellipse cx="359" cy="207" fill="#FEFECE" filter="url(#f19xh40rheasqw)" rx="8" ry="8" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="36" x="341" y="237.5352">gRPC</text><!--MD5=[cb028c5091c687ec367cd0cbfd70389f]
entity engine--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="173" x="403.5" y="184"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="556.5" y="189"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="554.5" y="191"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="554.5" y="195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133" x="418.5" y="217.5352">Deployment engine</text><!--MD5=[4e8ecd94af36cce41665c9f079adf9fd]
entity backend--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="192" x="612" y="184"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="784" y="189"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="782" y="191"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="782" y="195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="152" x="627" y="217.5352">State storage backend</text><!--MD5=[97c4ad735e832b0a87d5a2aef4ec1b90]
entity codegen--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="155" x="159.5" y="184"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="294.5" y="189"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="292.5" y="191"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="292.5" y="195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="174.5" y="217.5352">Code generators</text><!--MD5=[62cc4166db310ca44a141886713fd6cd]
entity provider--><ellipse cx="506" cy="333" fill="#FEFECE" filter="url(#f19xh40rheasqw)" rx="8" ry="8" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="36" x="488" y="363.5352">gRPC</text><!--MD5=[f50278905982483810086d91fb8fa489]
entity schemas--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="159" x="32.5" y="310"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="171.5" y="315"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="169.5" y="317"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="169.5" y="321"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119" x="47.5" y="343.5352">Package schemas</text><!--MD5=[af3cd302a2b94eb7b444b626445d5884]
entity mlcs--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="235" x="226.5" y="310"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="441.5" y="315"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="439.5" y="317"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="439.5" y="321"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="195" x="241.5" y="343.5352">Multi-language components</text><!--MD5=[20621550007b0095ffa57af918ba4be8]
entity resources--><rect fill="#FEFECE" filter="url(#f19xh40rheasqw)" height="46.4883" style="stroke:#A80036;stroke-width:1.5;" width="152" x="550" y="310"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="682" y="315"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="680" y="317"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="680" y="321"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="112" x="565" y="343.5352">Cloud resources</text><!--MD5=[c83b99234783bf3a067a09561fd85385]
link resmon to engine--><path d="M368.21,207 C379.95,207 391.68,207 403.42,207 " fill="none" id="resmon-engine" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[98cdd689628792af5a8a660ccc4dffbf]
link sdk to resmon--><path d="M359,98.05 C359,125.17 359,170.32 359,192.66 " fill="none" id="sdk-to-resmon" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="359,197.82,363,188.82,359,192.82,355,188.82,359,197.82" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[d52cf39a665d43a4a7d453d21ffdc651]
reverse link langhost to engine--><path d="M490,89.29 C490,111.61 490,156.83 490,183.97 " fill="none" id="langhost-backto-engine" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="490,84.13,486,93.13,490,89.13,494,93.13,490,84.13" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[e20dc6a04c5d42d30c66420d5b1444cb]
link engine to backend--><path d="M576.86,207 C586.82,207 596.78,207 606.74,207 " fill="none" id="engine-to-backend" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="611.95,207,602.95,203,606.95,207,602.95,211,611.95,207" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[042dc1ddbbd8cfb6e2feb7f3a04ccb5f]
link provider to mlcs--><path d="M496.66,333 C485.01,333 473.35,333 461.7,333 " fill="none" id="provider-mlcs" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[aebd7ec848a828c3343ccead83a346e8]
link provider to resources--><path d="M515.38,333 C526.9,333 538.42,333 549.95,333 " fill="none" id="provider-resources" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[3853d8b64fd7062d32cb72c7d7ab69e6]
link engine to provider--><path d="M492.86,230.17 C496.18,255.88 501.54,297.43 504.27,318.63 " fill="none" id="engine-to-provider" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="504.94,323.8,507.7493,314.3603,504.297,318.8415,499.8158,315.3892,504.94,323.8" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[dbb39786d704e74d101b7253a3f8c0d1]
reverse link resmon to mlcs--><path d="M357.39,221.29 C354.83,242.44 349.81,283.98 346.69,309.72 " fill="none" id="resmon-backto-mlcs" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="358.02,216.14,352.9675,224.5941,357.4192,221.1038,360.9096,225.5554,358.02,216.14" style="stroke:#A80036;stroke-width:1.0;"/><!--MD5=[fb8092344ec2ce39b6aa9e0be2593080]
@startuml
node "Language Plugin" as plugin {
interface gRPC as langhost
component "Language SDK" as sdk
}
node "Pulumi CLI" as cli {
interface gRPC as resmon
component "Deployment engine" as engine
component "State storage backend" as backend
component "Code generators" as codegen
resmon - engine
sdk -down-> resmon
engine -up-> langhost
engine -right-> backend
}
node "Resource Providers" as providers {
interface gRPC as provider
component "Package schemas" as schemas
component "Multi-language components" as mlcs
component "Cloud resources" as resources
provider - mlcs
provider - resources
engine -down-> provider
mlcs -up-> resmon
}
@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>