meow
cc0ca68498
* Fix issue that causes a new image store to be created at every start of ucloud-api. * VM Migration API call now takes hostname instead of host key. * StorageHandler Classes are introduced. They transparently handles things related to importing of image, make vm out of image, resize vm image, delete vm image etc. * Loggers added to __init__.py of every ucloud component's subpackage. * Non-Trivial Timeout Events are no longer logged. * Fix issue that prevents removal of stopped VMs (i.e VMs that are successfully migrated). * Improved unit handling added. e.g MB, Mb, mB, mb are all Mega Bytes. * VM migration is now possible on IPv6 host. * Destination VM (receiving side of migration of a vm) now correctly expects incoming data on free ephemeral port. * Traceback is no longer output to screen, instead it goes to log file. * All sanity checks are put into a single file. These checks are run by ucloud.py before running any of ucloud component.
494 lines
No EOL
37 KiB
XML
494 lines
No EOL
37 KiB
XML
<svg id="mermaid-1574275690792" width="1620.699951171875" xmlns="http://www.w3.org/2000/svg" height="882.2000122070312" viewBox="0 0 1620.699951171875 882.2000122070312"><style>
|
|
|
|
|
|
|
|
#mermaid-1574275690792 .label {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
color: #333; }
|
|
|
|
#mermaid-1574275690792 .label text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .node rect,
|
|
#mermaid-1574275690792 .node circle,
|
|
#mermaid-1574275690792 .node ellipse,
|
|
#mermaid-1574275690792 .node polygon {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1574275690792 .node .label {
|
|
text-align: center; }
|
|
|
|
#mermaid-1574275690792 .node.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1574275690792 .arrowheadPath {
|
|
fill: #333333; }
|
|
|
|
#mermaid-1574275690792 .edgePath .path {
|
|
stroke: #333333;
|
|
stroke-width: 1.5px; }
|
|
|
|
#mermaid-1574275690792 .edgeLabel {
|
|
background-color: #e8e8e8;
|
|
text-align: center; }
|
|
|
|
#mermaid-1574275690792 .cluster rect {
|
|
fill: #ffffde;
|
|
stroke: #aaaa33;
|
|
stroke-width: 1px; }
|
|
|
|
#mermaid-1574275690792 .cluster text {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 div.mermaidTooltip {
|
|
position: absolute;
|
|
text-align: center;
|
|
max-width: 200px;
|
|
padding: 2px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 12px;
|
|
background: #ffffde;
|
|
border: 1px solid #aaaa33;
|
|
border-radius: 2px;
|
|
pointer-events: none;
|
|
z-index: 100; }
|
|
|
|
#mermaid-1574275690792 .actor {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1574275690792 text.actor {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1574275690792 .actor-line {
|
|
stroke: grey; }
|
|
|
|
#mermaid-1574275690792 .messageLine0 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1574275690792 .messageLine1 {
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #333; }
|
|
|
|
#mermaid-1574275690792 #arrowhead {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .sequenceNumber {
|
|
fill: white; }
|
|
|
|
#mermaid-1574275690792 #sequencenumber {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 #crosshead path {
|
|
fill: #333 !important;
|
|
stroke: #333 !important; }
|
|
|
|
#mermaid-1574275690792 .messageText {
|
|
fill: #333;
|
|
stroke: none; }
|
|
|
|
#mermaid-1574275690792 .labelBox {
|
|
stroke: #CCCCFF;
|
|
fill: #ECECFF; }
|
|
|
|
#mermaid-1574275690792 .labelText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1574275690792 .loopText {
|
|
fill: black;
|
|
stroke: none; }
|
|
|
|
#mermaid-1574275690792 .loopLine {
|
|
stroke-width: 2;
|
|
stroke-dasharray: '2 2';
|
|
stroke: #CCCCFF; }
|
|
|
|
#mermaid-1574275690792 .note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
|
|
#mermaid-1574275690792 .noteText {
|
|
fill: black;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 14px; }
|
|
|
|
#mermaid-1574275690792 .activation0 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1574275690792 .activation1 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
#mermaid-1574275690792 .activation2 {
|
|
fill: #f4f4f4;
|
|
stroke: #666; }
|
|
|
|
|
|
#mermaid-1574275690792 .mermaid-main-font {
|
|
font-family: "trebuchet ms", verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .section {
|
|
stroke: none;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1574275690792 .section0 {
|
|
fill: rgba(102, 102, 255, 0.49); }
|
|
|
|
#mermaid-1574275690792 .section2 {
|
|
fill: #fff400; }
|
|
|
|
#mermaid-1574275690792 .section1,
|
|
#mermaid-1574275690792 .section3 {
|
|
fill: white;
|
|
opacity: 0.2; }
|
|
|
|
#mermaid-1574275690792 .sectionTitle0 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .sectionTitle1 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .sectionTitle2 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .sectionTitle3 {
|
|
fill: #333; }
|
|
|
|
#mermaid-1574275690792 .sectionTitle {
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
text-height: 14px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
|
|
#mermaid-1574275690792 .grid .tick {
|
|
stroke: lightgrey;
|
|
opacity: 0.3;
|
|
shape-rendering: crispEdges; }
|
|
#mermaid-1574275690792 .grid .tick text {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .grid path {
|
|
stroke-width: 0; }
|
|
|
|
|
|
#mermaid-1574275690792 .today {
|
|
fill: none;
|
|
stroke: red;
|
|
stroke-width: 2px; }
|
|
|
|
|
|
|
|
#mermaid-1574275690792 .task {
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1574275690792 .taskText {
|
|
text-anchor: middle;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .taskText:not([font-size]) {
|
|
font-size: 11px; }
|
|
|
|
#mermaid-1574275690792 .taskTextOutsideRight {
|
|
fill: black;
|
|
text-anchor: start;
|
|
font-size: 11px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .taskTextOutsideLeft {
|
|
fill: black;
|
|
text-anchor: end;
|
|
font-size: 11px; }
|
|
|
|
|
|
#mermaid-1574275690792 .task.clickable {
|
|
cursor: pointer; }
|
|
|
|
#mermaid-1574275690792 .taskText.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1574275690792 .taskTextOutsideLeft.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
#mermaid-1574275690792 .taskTextOutsideRight.clickable {
|
|
cursor: pointer;
|
|
fill: #003163 !important;
|
|
font-weight: bold; }
|
|
|
|
|
|
#mermaid-1574275690792 .taskText0,
|
|
#mermaid-1574275690792 .taskText1,
|
|
#mermaid-1574275690792 .taskText2,
|
|
#mermaid-1574275690792 .taskText3 {
|
|
fill: white; }
|
|
|
|
#mermaid-1574275690792 .task0,
|
|
#mermaid-1574275690792 .task1,
|
|
#mermaid-1574275690792 .task2,
|
|
#mermaid-1574275690792 .task3 {
|
|
fill: #8a90dd;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1574275690792 .taskTextOutside0,
|
|
#mermaid-1574275690792 .taskTextOutside2 {
|
|
fill: black; }
|
|
|
|
#mermaid-1574275690792 .taskTextOutside1,
|
|
#mermaid-1574275690792 .taskTextOutside3 {
|
|
fill: black; }
|
|
|
|
|
|
#mermaid-1574275690792 .active0,
|
|
#mermaid-1574275690792 .active1,
|
|
#mermaid-1574275690792 .active2,
|
|
#mermaid-1574275690792 .active3 {
|
|
fill: #bfc7ff;
|
|
stroke: #534fbc; }
|
|
|
|
#mermaid-1574275690792 .activeText0,
|
|
#mermaid-1574275690792 .activeText1,
|
|
#mermaid-1574275690792 .activeText2,
|
|
#mermaid-1574275690792 .activeText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1574275690792 .done0,
|
|
#mermaid-1574275690792 .done1,
|
|
#mermaid-1574275690792 .done2,
|
|
#mermaid-1574275690792 .done3 {
|
|
stroke: grey;
|
|
fill: lightgrey;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1574275690792 .doneText0,
|
|
#mermaid-1574275690792 .doneText1,
|
|
#mermaid-1574275690792 .doneText2,
|
|
#mermaid-1574275690792 .doneText3 {
|
|
fill: black !important; }
|
|
|
|
|
|
#mermaid-1574275690792 .crit0,
|
|
#mermaid-1574275690792 .crit1,
|
|
#mermaid-1574275690792 .crit2,
|
|
#mermaid-1574275690792 .crit3 {
|
|
stroke: #ff8888;
|
|
fill: red;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1574275690792 .activeCrit0,
|
|
#mermaid-1574275690792 .activeCrit1,
|
|
#mermaid-1574275690792 .activeCrit2,
|
|
#mermaid-1574275690792 .activeCrit3 {
|
|
stroke: #ff8888;
|
|
fill: #bfc7ff;
|
|
stroke-width: 2; }
|
|
|
|
#mermaid-1574275690792 .doneCrit0,
|
|
#mermaid-1574275690792 .doneCrit1,
|
|
#mermaid-1574275690792 .doneCrit2,
|
|
#mermaid-1574275690792 .doneCrit3 {
|
|
stroke: #ff8888;
|
|
fill: lightgrey;
|
|
stroke-width: 2;
|
|
cursor: pointer;
|
|
shape-rendering: crispEdges; }
|
|
|
|
#mermaid-1574275690792 .milestone {
|
|
transform: rotate(45deg) scale(0.8, 0.8); }
|
|
|
|
#mermaid-1574275690792 .milestoneText {
|
|
font-style: italic; }
|
|
|
|
#mermaid-1574275690792 .doneCritText0,
|
|
#mermaid-1574275690792 .doneCritText1,
|
|
#mermaid-1574275690792 .doneCritText2,
|
|
#mermaid-1574275690792 .doneCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1574275690792 .activeCritText0,
|
|
#mermaid-1574275690792 .activeCritText1,
|
|
#mermaid-1574275690792 .activeCritText2,
|
|
#mermaid-1574275690792 .activeCritText3 {
|
|
fill: black !important; }
|
|
|
|
#mermaid-1574275690792 .titleText {
|
|
text-anchor: middle;
|
|
font-size: 18px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 g.classGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family);
|
|
font-size: 10px; }
|
|
#mermaid-1574275690792 g.classGroup text .title {
|
|
font-weight: bolder; }
|
|
|
|
#mermaid-1574275690792 g.classGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1574275690792 g.classGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 .classLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1574275690792 .classLabel .label {
|
|
fill: #9370DB;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1574275690792 .relation {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1574275690792 #compositionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #compositionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #aggregationStart {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #aggregationEnd {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #dependencyStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #dependencyEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #extensionStart {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 #extensionEnd {
|
|
fill: #9370DB;
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 .commit-id,
|
|
#mermaid-1574275690792 .commit-msg,
|
|
#mermaid-1574275690792 .branch-label {
|
|
fill: lightgrey;
|
|
color: lightgrey;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .pieTitleText {
|
|
text-anchor: middle;
|
|
font-size: 25px;
|
|
fill: black;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 .slice {
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
#mermaid-1574275690792 g.stateGroup text {
|
|
fill: #9370DB;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1574275690792 g.stateGroup .state-title {
|
|
font-weight: bolder;
|
|
fill: black; }
|
|
|
|
#mermaid-1574275690792 g.stateGroup rect {
|
|
fill: #ECECFF;
|
|
stroke: #9370DB; }
|
|
|
|
#mermaid-1574275690792 g.stateGroup line {
|
|
stroke: #9370DB;
|
|
stroke-width: 1; }
|
|
|
|
#mermaid-1574275690792 .transition {
|
|
stroke: #9370DB;
|
|
stroke-width: 1;
|
|
fill: none; }
|
|
|
|
#mermaid-1574275690792 .stateGroup .composit {
|
|
fill: white;
|
|
border-bottom: 1px; }
|
|
|
|
#mermaid-1574275690792 .state-note {
|
|
stroke: #aaaa33;
|
|
fill: #fff5ad; }
|
|
#mermaid-1574275690792 .state-note text {
|
|
fill: black;
|
|
stroke: none;
|
|
font-size: 10px; }
|
|
|
|
#mermaid-1574275690792 .stateLabel .box {
|
|
stroke: none;
|
|
stroke-width: 0;
|
|
fill: #ECECFF;
|
|
opacity: 0.5; }
|
|
|
|
#mermaid-1574275690792 .stateLabel text {
|
|
fill: black;
|
|
font-size: 10px;
|
|
font-weight: bold;
|
|
font-family: 'trebuchet ms', verdana, arial;
|
|
font-family: var(--mermaid-font-family); }
|
|
|
|
:root {
|
|
--mermaid-font-family: '"trebuchet ms", verdana, arial';
|
|
--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive; }
|
|
|
|
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style><style>#mermaid-1574275690792 {
|
|
color: rgba(0, 0, 0, 0.65);
|
|
font: ;
|
|
}</style><g transform="translate(0, 0)"><g class="output"><g class="clusters"><g class="cluster" id="ucloud" style="opacity: 1;" transform="translate(810.3499984741211,441.0999984741211)"><rect style="fill:#FFD2FC;" width="1604.6999969482422" height="866.1999969482422" x="-802.3499984741211" y="-433.0999984741211"></rect><g class="label" transform="translate(0, -419.1000061035156)" id="mermaid-1574275690792Text"><g transform="translate(-21,-10.5)"><foreignObject width="42" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">ucloud</div></foreignObject></g></g></g><g class="cluster" id="cron" style="opacity: 1;" transform="translate(434.5,732.6999969482422)"><rect style="fill:#FFF696;" width="167" height="243" x="-83.5" y="-121.5"></rect><g class="label" transform="translate(0, -107.5)" id="mermaid-1574275690792Text"><g transform="translate(-32.5,-10.5)"><foreignObject width="65" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Cron Jobs</div></foreignObject></g></g></g><g class="cluster" id="infrastructure" style="opacity: 1;" transform="translate(811.3499984741211,520.2124967575073)"><rect style="fill:#BDF0FF;" width="486.6999969482422" height="537.0249996185303" x="-243.3499984741211" y="-268.51249980926514"></rect><g class="label" transform="translate(0, -254.51251220703125)" id="mermaid-1574275690792Text"><g transform="translate(-42.5,-10.5)"><foreignObject width="85" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Infrastructure</div></foreignObject></g></g></g><g class="cluster" id="virtual-machine" style="opacity: 1;" transform="translate(1256.1999969482422,220.81249809265137)"><rect width="303" height="248.27499771118164" x="-151.5" y="-124.13749885559082"></rect><g class="label" transform="translate(0, -110.13749694824219)" id="mermaid-1574275690792Text"><g transform="translate(-49,-10.5)"><foreignObject width="98" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Virtual Machine</div></foreignObject></g></g></g><g class="cluster" id="metadata-group" style="opacity: 1;" transform="translate(1522.6999969482422,217.39999771118164)"><rect width="130" height="113.25" x="-65" y="-56.625"></rect><g class="label" transform="translate(0, -42.625)" id="mermaid-1574275690792Text"><g transform="translate(-53,-10.5)"><foreignObject width="106" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Metadata Server</div></foreignObject></g></g></g></g><g class="edgePaths"><g class="edgePath" style="opacity: 1;"><path class="path" d="M75,383.27499771118164L100,383.27499771118164L125,383.27499771118164" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154722)" style="fill:none"></path><defs><marker id="arrowhead154722" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M166.72527472527472,362.77499771118164L192,337.77499771118164L217,337.77499771118164" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154723)" style="fill:none"></path><defs><marker id="arrowhead154723" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M149.32715886932493,403.77499771118164L192,666.6999969482422L259,666.6999969482422L326,666.6999969482422L351,666.6999969482422L376,666.6999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154724)" style="fill:none"></path><defs><marker id="arrowhead154724" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M149.09840645548806,362.77499771118164L192,78.92499923706055L259,78.92499923706055L326,78.92499923706055L351,78.92499923706055L410,114.90793282971411" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154725)" style="fill:none"></path><defs><marker id="arrowhead154725" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M301,337.77499771118164L326,337.77499771118164L351,337.77499771118164L426.26746419968293,150.3499984741211" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154726)" style="fill:none"></path><defs><marker id="arrowhead154726" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M459,129.8499984741211L518,129.8499984741211L543,129.8499984741211L568,129.8499984741211L593.5000015258788,130.34999847412107" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154727)" style="fill:none"></path><defs><marker id="arrowhead154727" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M718.4104923158679,179.13950768413193L818.1999969482422,307.1999969482422L880.6999969482422,307.1999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154728)" style="fill:none"></path><defs><marker id="arrowhead154728" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M755.1326208282069,142.4173791717932L818.1999969482422,152.17499923706055L949.6999969482422,152.17499923706055L1054.6999969482422,152.17499923706055L1079.6999969482422,152.17499923706055L1104.6999969482422,152.17499923706055L1162.7467182805472,198.02499771118164" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154729)" style="fill:none"></path><defs><marker id="arrowhead154729" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M707.1887250133067,190.3612749866932L818.1999969482422,439.1999969482422L921.6999969482422,439.1999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154730)" style="fill:none"></path><defs><marker id="arrowhead154730" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1018.6999969482422,307.1999969482422L1054.6999969482422,307.1999969482422L1079.6999969482422,307.1999969482422L1104.6999969482422,307.1999969482422L1169.2807692649526,239.02499771118164" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154731)" style="fill:none"></path><defs><marker id="arrowhead154731" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M921.8737674400454,327.6999969482422L880.6999969482422,358.0333302815755L880.6999969482422,365.6166636149089L949.6999969482422,373.1999969482422L1018.6999969482422,365.6166636149089L1018.6999969482422,358.0333302815755L977.526226456439,327.6999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154732)" style="fill:none"></path><defs><marker id="arrowhead154732" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M414.3360655737705,778.1999969482422L384.5,808.5333302815756L384.5,816.1166636149088L434.5,823.6999969482422L484.5,816.1166636149088L484.5,808.5333302815756L454.6639344262295,778.1999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154733)" style="fill:none"></path><defs><marker id="arrowhead154733" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M493,666.6999969482422L518,666.6999969482422L543,666.6999969482422L568,666.6999969482422L617.7999999999995,667.1999969482421" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154734)" style="fill:none"></path><defs><marker id="arrowhead154734" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M727.4198514867899,651.7198499609111L818.1999969482422,621.1999969482422L920.6999969482422,621.1999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154735)" style="fill:none"></path><defs><marker id="arrowhead154735" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M727.419852635038,682.6801443132046L818.1999969482422,712.1999969482422L902.6999969482422,712.1999969482422" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154736)" style="fill:none"></path><defs><marker id="arrowhead154736" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1247.6999969482422,218.52499771118164L1272.6999969482422,218.52499771118164L1297.6999969482422,218.52499771118164" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154737)" style="fill:none"></path><defs><marker id="arrowhead154737" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1482.6999969482422,229.44807463425857L1457.6999969482422,236.27499771118164L1432.6999969482422,236.27499771118164L1407.6999969482422,236.27499771118164L1382.6999969482422,229.70092363710756" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154738)" style="fill:none"></path><defs><marker id="arrowhead154738" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g><g class="edgePath" style="opacity: 1;"><path class="path" d="M1382.6999969482422,212.22870141488534L1407.6999969482422,208.52499771118164L1432.6999969482422,208.52499771118164L1457.6999969482422,208.52499771118164L1482.6999969482422,212.37115155733548" marker-end="url(https://mermaidjs.github.io/mermaid-live-editor/#arrowhead154739)" style="fill:none"></path><defs><marker id="arrowhead154739" viewBox="0 0 10 10" refX="9" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="6" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowheadPath" style="stroke-width: 1px; stroke-dasharray: 1px, 0px;"></path></marker></defs></g></g><g class="edgeLabels"><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(818.1999969482422,307.1999969482422)"><g transform="translate(-11.5,-10.5)" class="label"><foreignObject width="23" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">Yes</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(949.6999969482422,152.17499923706055)"><g transform="translate(-9,-10.5)" class="label"><foreignObject width="18" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">No</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(818.1999969482422,439.1999969482422)"><g transform="translate(-26.5,-10.5)" class="label"><foreignObject width="53" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">SLAAC?</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(949.6999969482422,373.1999969482422)"><g transform="translate(-80,-10.5)" class="label"><foreignObject width="160" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">Create Networks Devices</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(434.5,823.6999969482422)"><g transform="translate(-49,-10.5)" class="label"><foreignObject width="98" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">Track User files</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(818.1999969482422,621.1999969482422)"><g transform="translate(-19,-10.5)" class="label"><foreignObject width="38" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">CEPH</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform="translate(818.1999969482422,712.1999969482422)"><g transform="translate(-15,-10.5)" class="label"><foreignObject width="30" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel">FILE</span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" style="opacity: 1;" transform=""><g transform="translate(0,0)" class="label"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node" style="opacity: 1;" id="ucloud-api" transform="translate(146,383.27499771118164)"><rect rx="0" ry="0" x="-21" y="-20.5" width="42" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-11,-10.5)"><foreignObject width="22" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">API</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-cli" transform="translate(54,383.27499771118164)"><rect rx="0" ry="0" x="-21" y="-20.5" width="42" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-11,-10.5)"><foreignObject width="22" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">CLI</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-scheduler" transform="translate(259,337.77499771118164)"><rect rx="0" ry="0" x="-42" y="-20.5" width="84" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-32,-10.5)"><foreignObject width="64" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Scheduler</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-imagescanner" transform="translate(434.5,666.6999969482422)"><rect rx="0" ry="0" x="-58.5" y="-20.5" width="117" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-48.5,-10.5)"><foreignObject width="97" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Image Scanner</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-host" transform="translate(434.5,129.8499984741211)"><rect rx="0" ry="0" x="-24.5" y="-20.5" width="49" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-14.5,-10.5)"><foreignObject width="29" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Host</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="need-networking" transform="translate(679.8499984741211,129.8499984741211)"><polygon points="86.85000000000001,0 173.70000000000002,-86.85000000000001 86.85000000000001,-173.70000000000002 0,-86.85000000000001" transform="translate(-86.85000000000001,86.85000000000001)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-66,-10.5)"><foreignObject width="132" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">VM need Networking</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="networking-scripts" transform="translate(949.6999969482422,307.1999969482422)"><rect rx="0" ry="0" x="-69" y="-20.5" width="138" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-59,-10.5)"><foreignObject width="118" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Networking Scripts</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="VM" transform="translate(1188.6999969482422,218.52499771118164)"><rect rx="0" ry="0" x="-59" y="-20.5" width="118" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-49,-10.5)"><foreignObject width="98" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Virtual Machine</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="radvd" transform="translate(949.6999969482422,439.1999969482422)"><rect rx="0" ry="0" x="-28" y="-20.5" width="56" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-18,-10.5)"><foreignObject width="36" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">radvd</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-init" transform="translate(1340.1999969482422,218.52499771118164)"><rect rx="0" ry="0" x="-42.5" y="-20.5" width="85" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-32.5,-10.5)"><foreignObject width="65" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">ucloud-init</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="metadata" transform="translate(1522.6999969482422,218.52499771118164)"><rect rx="0" ry="0" x="-40" y="-20.5" width="80" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-30,-10.5)"><foreignObject width="60" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">metadata</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="etcd" transform="translate(949.6999969482422,530.1999969482422)"><rect rx="0" ry="0" x="-23.5" y="-20.5" width="47" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-13.5,-10.5)"><foreignObject width="27" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">etcd</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="image-store" transform="translate(679.8499984741211,666.6999969482422)"><polygon points="62.550000000000004,0 125.10000000000001,-62.550000000000004 62.550000000000004,-125.10000000000001 0,-62.550000000000004" transform="translate(-62.550000000000004,62.550000000000004)" class="label-container"></polygon><g class="label" transform="translate(0,0)"><g transform="translate(-39,-10.5)"><foreignObject width="78" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">Image Store</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ceph" transform="translate(949.6999969482422,621.1999969482422)"><rect rx="0" ry="0" x="-29" y="-20.5" width="58" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-19,-10.5)"><foreignObject width="38" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">CEPH</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="file-system" transform="translate(949.6999969482422,712.1999969482422)"><rect rx="0" ry="0" x="-47" y="-20.5" width="94" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-37,-10.5)"><foreignObject width="74" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">File System</div></foreignObject></g></g></g><g class="node" style="opacity: 1;" id="ucloud-filescanner" transform="translate(434.5,757.6999969482422)"><rect rx="0" ry="0" x="-50" y="-20.5" width="100" height="41" class="label-container"></rect><g class="label" transform="translate(0,0)"><g transform="translate(-40,-10.5)"><foreignObject width="80" height="21"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; white-space: nowrap;">File Scanner</div></foreignObject></g></g></g></g></g></g></svg> |