sigs.k8s.io/cluster-api-provider-aws@v1.5.5/docs/proposal/20200506-single-controller-multitenancy-flow.svg (about)

     1  <?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="1167px" preserveAspectRatio="none" style="width:1085px;height:1167px;" version="1.1" viewBox="0 0 1085 1167" width="1085px" zoomAndPan="magnify"><defs><filter height="300%" id="f1cwptt09zntpe" 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><ellipse cx="534.75" cy="20" fill="#000000" filter="url(#f1cwptt09zntpe)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="479.25" y="50"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="489.25" y="71.1387">AWS controller</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="211" x="429.25" y="103.9688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="187" x="439.25" y="125.1074">enqueue AWSCluster/Machine</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="105" x="482.25" y="139.0762">for reconciliation</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="471.25" y="171.9063"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="107" x="481.25" y="193.0449">fetch AWSCluster</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="439.75,225.875,629.75,225.875,641.75,237.875,629.75,249.875,439.75,249.875,427.75,237.875,439.75,225.875" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="439.75" y="241.6831">AWSCluster has spec.identityRef?</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="406.75" y="235.0449">yes</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="641.75" y="235.0449">no</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="137.5,259.875,368.5,259.875,380.5,271.875,368.5,283.875,137.5,283.875,125.5,271.875,137.5,259.875" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="231" x="137.5" y="275.6831">Referenced object is cluster scoped CRD</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="104.5" y="269.0449">yes</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="380.5" y="269.0449">no</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="209" x="11" y="293.875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="189" x="21" y="315.0137">fetch cluster scoped resource</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="204" x="288.5" y="293.875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="180" x="298.5" y="315.0137">fetch referenced resource in</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="335" y="328.9824">same namespace</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="253,347.8125,265,359.8125,253,371.8125,241,359.8125,253,347.8125" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="61.9063" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="219" x="143.5" y="406.8125"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="162" x="170" y="427.9512">set or append referenced</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="199" x="153.5" y="441.9199">resource as OwnerReference to</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="114" x="196" y="455.8887">AWSCluster object</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="163" y="537.7031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="173" y="558.8418">construct new credential</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="227.5" y="572.8105">provider</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="194" x="156" y="654.625"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="170" x="166" y="675.7637">store credential provider in</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="38" x="234" y="689.7324">cache</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="137.5,605.6406,368.5,605.6406,380.5,617.6406,368.5,629.6406,137.5,629.6406,125.5,617.6406,137.5,605.6406" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="257" y="640.7793">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="231" x="137.5" y="621.4487">cache contains value for provider.Hash()</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="253,722.5625,265,734.5625,253,746.5625,241,734.5625,253,722.5625" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="166.5" y="766.5625"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="176.5" y="787.7012">fetch cached credential</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="227.5" y="801.6699">provider</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="235.5,488.7188,270.5,488.7188,282.5,500.7188,270.5,512.7188,235.5,512.7188,223.5,500.7188,235.5,488.7188" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="257" y="523.8574">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="235.5" y="504.5269">error?</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="282.5" y="497.8887">yes</text><ellipse cx="325.5" cy="500.7188" fill="#FFFFFF" filter="url(#f1cwptt09zntpe)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="325.5" cy="500.7188" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="198" x="717.5" y="259.875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="734" y="281.0137">default spec.identityRef to</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="178" x="727.5" y="294.9824">AWSClusterControllerIdentity</text><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="648.5,342.8125,984.5,342.8125,996.5,354.8125,984.5,366.8125,648.5,366.8125,636.5,354.8125,648.5,342.8125" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="336" x="648.5" y="358.6206">AWSCluster namespace matches with allowedNamespaces</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="615.5" y="351.9824">yes</text><text fill="#666666" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="16" x="996.5" y="351.9824">no</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="532.5" y="376.8125"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="164" x="542.5" y="397.9512">use controller's credential</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="597.5" y="411.9199">providers</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="945" y="376.8125"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="103" x="955" y="397.9512">return with error</text><ellipse cx="1006.5" cy="456.7813" fill="#FFFFFF" filter="url(#f1cwptt09zntpe)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1006.5" cy="456.7813" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1cwptt09zntpe)" points="534.75,824.5,546.75,836.5,534.75,848.5,522.75,836.5,534.75,824.5" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="117.7813" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="212" x="428.75" y="868.5"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="173" x="448.25" y="889.6387">call STS::GetCallerIdentity():</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="187" x="439.25" y="903.6074">if (awscluster.AccountID != nil</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="177" x="444.25" y="917.5762">&amp;&amp; awscluster.AccountID !=</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="192" x="438.75" y="931.5449">GetCallerIdentity?) then (error)</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="28" x="524.75" y="945.5137">stop</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="31" x="519.25" y="959.4824">endif</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="187" x="441.25" y="973.4512">:update awscluster.accountID</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="183" x="443.25" y="1006.2813"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="163" x="453.25" y="1027.4199">create new service clients</text><rect fill="#FEFECE" filter="url(#f1cwptt09zntpe)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="173" x="448.25" y="1060.25"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="458.25" y="1081.3887">reconcile AWSCluster or</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="495.25" y="1095.3574">AWSMachine</text><ellipse cx="534.75" cy="1139.1875" fill="#FFFFFF" filter="url(#f1cwptt09zntpe)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="534.75" cy="1139.1875" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="30" y2="50"/><polygon fill="#666666" points="530.75,40,534.75,50,538.75,40,534.75,44" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="83.9688" y2="103.9688"/><polygon fill="#666666" points="530.75,93.9688,534.75,103.9688,538.75,93.9688,534.75,97.9688" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="151.9063" y2="171.9063"/><polygon fill="#666666" points="530.75,161.9063,534.75,171.9063,538.75,161.9063,534.75,165.9063" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="125.5" x2="115.5" y1="271.875" y2="271.875"/><line style="stroke: #666666; stroke-width: 1.5;" x1="115.5" x2="115.5" y1="271.875" y2="293.875"/><polygon fill="#666666" points="111.5,283.875,115.5,293.875,119.5,283.875,115.5,287.875" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="380.5" x2="390.5" y1="271.875" y2="271.875"/><line style="stroke: #666666; stroke-width: 1.5;" x1="390.5" x2="390.5" y1="271.875" y2="293.875"/><polygon fill="#666666" points="386.5,283.875,390.5,293.875,394.5,283.875,390.5,287.875" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="115.5" x2="115.5" y1="327.8438" y2="359.8125"/><line style="stroke: #666666; stroke-width: 1.5;" x1="115.5" x2="241" y1="359.8125" y2="359.8125"/><polygon fill="#666666" points="231,355.8125,241,359.8125,231,363.8125,235,359.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="390.5" x2="390.5" y1="341.8125" y2="359.8125"/><line style="stroke: #666666; stroke-width: 1.5;" x1="390.5" x2="265" y1="359.8125" y2="359.8125"/><polygon fill="#666666" points="275,355.8125,265,359.8125,275,363.8125,271,359.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="371.8125" y2="406.8125"/><polygon fill="#666666" points="249,396.8125,253,406.8125,257,396.8125,253,400.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="629.6406" y2="654.625"/><polygon fill="#666666" points="249,644.625,253,654.625,257,644.625,253,648.625" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="380.5" x2="392.5" y1="617.6406" y2="617.6406"/><polygon fill="#666666" points="388.5,668.5938,392.5,678.5938,396.5,668.5938,392.5,672.5938" style="stroke: #666666; stroke-width: 1.5;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="392.5" x2="392.5" y1="617.6406" y2="734.5625"/><line style="stroke: #666666; stroke-width: 1.5;" x1="392.5" x2="265" y1="734.5625" y2="734.5625"/><polygon fill="#666666" points="275,730.5625,265,734.5625,275,738.5625,271,734.5625" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="702.5625" y2="722.5625"/><polygon fill="#666666" points="249,712.5625,253,722.5625,257,712.5625,253,716.5625" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="585.6406" y2="605.6406"/><polygon fill="#666666" points="249,595.6406,253,605.6406,257,595.6406,253,599.6406" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="746.5625" y2="766.5625"/><polygon fill="#666666" points="249,756.5625,253,766.5625,257,756.5625,253,760.5625" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="512.7188" y2="537.7031"/><polygon fill="#666666" points="249,527.7031,253,537.7031,257,527.7031,253,531.7031" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="282.5" x2="314.5" y1="500.7188" y2="500.7188"/><polygon fill="#666666" points="304.5,496.7188,314.5,500.7188,304.5,504.7188,308.5,500.7188" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="814.5" y2="836.5"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="522.75" y1="836.5" y2="836.5"/><polygon fill="#666666" points="512.75,832.5,522.75,836.5,512.75,840.5,516.75,836.5" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="468.7188" y2="488.7188"/><polygon fill="#666666" points="249,478.7188,253,488.7188,257,478.7188,253,482.7188" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="1006.5" x2="1006.5" y1="410.7813" y2="445.7813"/><polygon fill="#666666" points="1002.5,435.7813,1006.5,445.7813,1010.5,435.7813,1006.5,439.7813" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="636.5" x2="626.5" y1="354.8125" y2="354.8125"/><line style="stroke: #666666; stroke-width: 1.5;" x1="626.5" x2="626.5" y1="354.8125" y2="376.8125"/><polygon fill="#666666" points="622.5,366.8125,626.5,376.8125,630.5,366.8125,626.5,370.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="996.5" x2="1006.5" y1="354.8125" y2="354.8125"/><line style="stroke: #666666; stroke-width: 1.5;" x1="1006.5" x2="1006.5" y1="354.8125" y2="376.8125"/><polygon fill="#666666" points="1002.5,366.8125,1006.5,376.8125,1010.5,366.8125,1006.5,370.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="626.5" x2="626.5" y1="424.75" y2="836.5"/><line style="stroke: #666666; stroke-width: 1.5;" x1="626.5" x2="546.75" y1="836.5" y2="836.5"/><polygon fill="#666666" points="556.75,832.5,546.75,836.5,556.75,840.5,552.75,836.5" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="816.5" x2="816.5" y1="307.8125" y2="342.8125"/><polygon fill="#666666" points="812.5,332.8125,816.5,342.8125,820.5,332.8125,816.5,336.8125" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="427.75" x2="253" y1="237.875" y2="237.875"/><line style="stroke: #666666; stroke-width: 1.5;" x1="253" x2="253" y1="237.875" y2="259.875"/><polygon fill="#666666" points="249,249.875,253,259.875,257,249.875,253,253.875" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="641.75" x2="816.5" y1="237.875" y2="237.875"/><line style="stroke: #666666; stroke-width: 1.5;" x1="816.5" x2="816.5" y1="237.875" y2="259.875"/><polygon fill="#666666" points="812.5,249.875,816.5,259.875,820.5,249.875,816.5,253.875" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="205.875" y2="225.875"/><polygon fill="#666666" points="530.75,215.875,534.75,225.875,538.75,215.875,534.75,219.875" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="848.5" y2="868.5"/><polygon fill="#666666" points="530.75,858.5,534.75,868.5,538.75,858.5,534.75,862.5" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="986.2813" y2="1006.2813"/><polygon fill="#666666" points="530.75,996.2813,534.75,1006.2813,538.75,996.2813,534.75,1000.2813" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="1040.25" y2="1060.25"/><polygon fill="#666666" points="530.75,1050.25,534.75,1060.25,538.75,1050.25,534.75,1054.25" style="stroke: #666666; stroke-width: 1.0;"/><line style="stroke: #666666; stroke-width: 1.5;" x1="534.75" x2="534.75" y1="1108.1875" y2="1128.1875"/><polygon fill="#666666" points="530.75,1118.1875,534.75,1128.1875,538.75,1118.1875,534.75,1122.1875" style="stroke: #666666; stroke-width: 1.0;"/><!--MD5=[1909c1ebedcd2f59042db9e57e40b367]
     2  @startuml 20200506-single-controller-multitenancy-flow
     3  !includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/release/1-0/C4_Container.puml
     4  
     5  start
     6  :AWS controller;
     7  :enqueue AWSCluster/Machine for reconciliation;
     8  :fetch AWSCluster;
     9  if (AWSCluster has spec.identityRef?) then (yes)
    10    if (Referenced object is cluster scoped CRD) then (yes)
    11      :fetch cluster scoped resource;
    12    else (no)
    13      :fetch referenced resource in same namespace;
    14    endif
    15    :set or append referenced resource as OwnerReference to AWSCluster object;
    16    if (error?) then (yes)
    17      stop
    18    else (no)
    19      :construct new credential provider;
    20      if (cache contains value for provider.Hash()) then (no)
    21        :store credential provider in cache;
    22      endif
    23      :fetch cached credential provider;
    24    endif
    25  else (no)
    26    : default spec.identityRef to AWSClusterControllerIdentity;
    27    if (AWSCluster namespace matches with allowedNamespaces) then (yes)
    28      :use controller's credential providers;
    29    else (no)
    30      :return with error;
    31      stop
    32    endif
    33  endif
    34  :call STS::GetCallerIdentity():
    35  if (awscluster.AccountID != nil && awscluster.AccountID != GetCallerIdentity?) then (error)
    36    stop
    37  endif
    38  :update awscluster.accountID;
    39  :create new service clients;
    40  :reconcile AWSCluster or AWSMachine;
    41  stop
    42  
    43  @enduml
    44  
    45  @startuml 20200506-single-controller-multitenancy-flow
    46  
    47  
    48  
    49  
    50  
    51  skinparam defaultTextAlignment center
    52  
    53  skinparam wrapWidth 200
    54  skinparam maxMessageSize 150
    55  
    56  skinparam rectangle {
    57      StereotypeFontSize 12
    58      shadowing false
    59  }
    60  
    61  skinparam database {
    62      StereotypeFontSize 12
    63      shadowing false
    64  }
    65  
    66  skinparam Arrow {
    67      Color #666666
    68      FontColor #666666
    69      FontSize 12
    70  }
    71  
    72  skinparam rectangle<<boundary>> {
    73      Shadowing false
    74      StereotypeFontSize 0
    75      FontColor #444444
    76      BorderColor #444444
    77      BorderStyle dashed
    78  }
    79  
    80  
    81  
    82  
    83  
    84  
    85  
    86  
    87  
    88  
    89  
    90  
    91  
    92  
    93  
    94  
    95  
    96  
    97  
    98  
    99  
   100  
   101  skinparam rectangle<<person>> {
   102      StereotypeFontColor #FFFFFF
   103      FontColor #FFFFFF
   104      BackgroundColor #08427B
   105      BorderColor #073B6F
   106  }
   107  
   108  skinparam rectangle<<external_person>> {
   109      StereotypeFontColor #FFFFFF
   110      FontColor #FFFFFF
   111      BackgroundColor #686868
   112      BorderColor #8A8A8A
   113  }
   114  
   115  skinparam rectangle<<system>> {
   116      StereotypeFontColor #FFFFFF
   117      FontColor #FFFFFF
   118      BackgroundColor #1168BD
   119      BorderColor #3C7FC0
   120  }
   121  
   122  skinparam rectangle<<external_system>> {
   123      StereotypeFontColor #FFFFFF
   124      FontColor #FFFFFF
   125      BackgroundColor #999999
   126      BorderColor #8A8A8A
   127  }
   128  
   129  skinparam database<<system>> {
   130      StereotypeFontColor #FFFFFF
   131      FontColor #FFFFFF
   132      BackgroundColor #1168BD
   133      BorderColor #3C7FC0
   134  }
   135  
   136  skinparam database<<external_system>> {
   137      StereotypeFontColor #FFFFFF
   138      FontColor #FFFFFF
   139      BackgroundColor #999999
   140      BorderColor #8A8A8A
   141  }
   142  
   143  
   144  
   145  
   146  
   147  
   148  
   149  
   150  
   151  
   152  
   153  
   154  
   155  
   156  
   157  
   158  skinparam rectangle<<container>> {
   159      StereotypeFontColor #FFFFFF
   160      FontColor #FFFFFF
   161      BackgroundColor #438DD5
   162      BorderColor #3C7FC0
   163  }
   164  
   165  skinparam database<<container>> {
   166      StereotypeFontColor #FFFFFF
   167      FontColor #FFFFFF
   168      BackgroundColor #438DD5
   169      BorderColor #3C7FC0
   170  }
   171  
   172  
   173  
   174  
   175  
   176  
   177  
   178  
   179  start
   180  :AWS controller;
   181  :enqueue AWSCluster/Machine for reconciliation;
   182  :fetch AWSCluster;
   183  if (AWSCluster has spec.identityRef?) then (yes)
   184    if (Referenced object is cluster scoped CRD) then (yes)
   185      :fetch cluster scoped resource;
   186    else (no)
   187      :fetch referenced resource in same namespace;
   188    endif
   189    :set or append referenced resource as OwnerReference to AWSCluster object;
   190    if (error?) then (yes)
   191      stop
   192    else (no)
   193      :construct new credential provider;
   194      if (cache contains value for provider.Hash()) then (no)
   195        :store credential provider in cache;
   196      endif
   197      :fetch cached credential provider;
   198    endif
   199  else (no)
   200    : default spec.identityRef to AWSClusterControllerIdentity;
   201    if (AWSCluster namespace matches with allowedNamespaces) then (yes)
   202      :use controller's credential providers;
   203    else (no)
   204      :return with error;
   205      stop
   206    endif
   207  endif
   208  :call STS::GetCallerIdentity():
   209  if (awscluster.AccountID != nil && awscluster.AccountID != GetCallerIdentity?) then (error)
   210    stop
   211  endif
   212  :update awscluster.accountID;
   213  :create new service clients;
   214  :reconcile AWSCluster or AWSMachine;
   215  stop
   216  
   217  @enduml
   218  
   219  PlantUML version 1.2020.16(Sun Aug 23 20:20:43 UTC 2020)
   220  (GPL source distribution)
   221  Java Runtime: OpenJDK Runtime Environment
   222  JVM: OpenJDK 64-Bit Server VM
   223  Default Encoding: UTF-8
   224  Language: en
   225  Country: null
   226  --></g></svg>