Browse Source

Merge pull request #605 from smiclea/kubervirt-ts

Add Kubevirt provider support
Nashwan Azhari 5 năm trước cách đây
mục cha
commit
b2422a3b08

+ 1 - 0
config.ts

@@ -91,6 +91,7 @@ const conf: Config = {
     vmware_vsphere: 1,
     azure: 2,
     'hyper-v': 2,
+    kubevirt: 2,
     scvmm: 2,
     oci: 3,
     opc: 3,

+ 52 - 0
server/api/resources/providerLogos/kubevirt-128-disabled.svg

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg  width="192px" height="128px"  viewBox="0 0 158 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Symbols" stroke="#B0B5BE" stroke-width="0.2" fill="none" fill-rule="evenodd">
+        <g id="header-default" transform="translate(-40.000000, -30.000000)">
+            <g id="Group-16">
+                <g transform="translate(40.000000, 30.000000)">
+                  <g id="both" transform="scale(1.1) translate(-8 -4)">
+                    <g transform="scale(0.7) translate(17 68)" id="text">
+                        <g id="svg10488">
+                            <path d="M61.14,9.7 C60.54,10.34 59.88,11.06 59.14,11.86 C58.4,12.66 57.62,13.46 56.8,14.3 C56,15.12 55.2,15.94 54.4,16.74 C53.6,17.54 52.84,18.28 52.14,18.98 C53.06,19.62 53.92,20.34 54.74,21.1 C55.66,21.94 56.56,22.84 57.42,23.78 C58.3,24.74 59.12,25.7 59.9,26.7 C60.6,27.6 61.26,28.54 61.82,29.54 L58.56,29.54 C57.96,28.6 57.3,27.7 56.58,26.84 C55.84,25.94 55.04,25.06 54.22,24.24 C53.4,23.42 52.56,22.64 51.7,21.94 C50.92,21.28 50.1,20.68 49.22,20.14 L49.22,29.54 L46.44,29.54 L46.44,9.7 L49.22,9.7 L49.22,18.46 C49.88,17.84 50.62,17.12 51.42,16.32 C52.22,15.52 53.02,14.74 53.8,13.94 C54.58,13.14 55.32,12.38 56.02,11.64 C56.72,10.9 57.3,10.26 57.78,9.7 L61.14,9.7 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M75.58,29.1 C74.96,29.26 74.16,29.42 73.16,29.58 C72.02,29.76 70.84,29.84 69.68,29.84 C68.7,29.86 67.72,29.7 66.8,29.34 C66.06,29.04 65.4,28.56 64.92,27.92 C64.42,27.28 64.08,26.54 63.9,25.76 C63.68,24.86 63.58,23.92 63.58,23 L63.58,14.66 L66.24,14.66 L66.24,22.44 C66.24,24.26 66.52,25.54 67.1,26.34 C67.68,27.12 68.64,27.52 69.98,27.52 C70.26,27.52 70.56,27.52 70.86,27.5 C71.16,27.48 71.46,27.46 71.72,27.42 C71.98,27.4 72.24,27.36 72.44,27.34 C72.6,27.32 72.76,27.3 72.92,27.24 L72.92,14.66 L75.58,14.66 L75.58,29.1 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M82.64,15.32 C83.1,15.04 83.6,14.82 84.12,14.66 C84.86,14.42 85.62,14.3 86.4,14.32 C87.38,14.3 88.36,14.5 89.24,14.9 C90.06,15.26 90.78,15.82 91.34,16.5 C91.94,17.22 92.38,18.06 92.64,18.96 C92.94,19.98 93.1,21.04 93.08,22.1 C93.1,23.2 92.92,24.3 92.56,25.34 C92.24,26.26 91.72,27.08 91.06,27.78 C90.4,28.46 89.6,28.98 88.72,29.32 C87.74,29.7 86.68,29.88 85.64,29.86 C84.54,29.88 83.44,29.78 82.34,29.6 C81.38,29.42 80.6,29.26 80,29.08 L80,7.8 L82.66,7.34 L82.64,15.32 Z M82.64,27.22 C83.02,27.32 83.38,27.38 83.76,27.44 C84.36,27.52 84.96,27.54 85.58,27.54 C87.02,27.54 88.16,27.06 89.02,26.12 C89.88,25.18 90.3,23.84 90.3,22.1 C90.3,21.38 90.22,20.66 90.08,19.96 C89.94,19.34 89.7,18.76 89.34,18.22 C89,17.74 88.54,17.34 88.02,17.08 C87.4,16.78 86.74,16.64 86.06,16.66 C85.38,16.66 84.7,16.78 84.06,17.04 C83.56,17.22 83.08,17.48 82.66,17.82 L82.64,27.22 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M95.84,22.12 C95.82,20.94 96,19.78 96.4,18.68 C96.74,17.78 97.26,16.94 97.92,16.24 C98.54,15.6 99.28,15.1 100.1,14.78 C100.9,14.46 101.76,14.3 102.62,14.3 C104.62,14.3 106.16,14.92 107.22,16.18 C108.28,17.42 108.82,19.34 108.82,21.88 L108.82,22.32 C108.82,22.48 108.82,22.64 108.82,22.82 L98.62,22.82 C98.74,24.36 99.18,25.54 99.96,26.34 C100.74,27.14 101.96,27.54 103.62,27.54 C104.42,27.56 105.2,27.48 105.98,27.3 C106.48,27.18 106.96,27.02 107.42,26.82 L107.8,29.04 C107.26,29.28 106.68,29.46 106.1,29.58 C105.2,29.78 104.26,29.88 103.34,29.86 C102.2,29.88 101.06,29.68 99.98,29.28 C99.1,28.92 98.3,28.38 97.66,27.66 C97.04,26.96 96.58,26.12 96.3,25.22 C95.96,24.22 95.82,23.16 95.84,22.12 Z M106.04,20.66 C106.06,19.46 105.76,18.48 105.14,17.7 C104.52,16.92 103.66,16.54 102.58,16.54 C102.02,16.52 101.46,16.66 100.96,16.9 C100.5,17.12 100.1,17.44 99.78,17.84 C99.46,18.22 99.2,18.68 99.02,19.16 C98.84,19.64 98.72,20.16 98.66,20.68 L106.04,20.66 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M128.66,9.7 C127.94,11.8 127.24,13.74 126.6,15.52 C125.94,17.3 125.3,19 124.66,20.6 C124.04,22.2 123.4,23.74 122.78,25.2 C122.16,26.66 121.52,28.12 120.88,29.54 L118.28,29.54 C117.64,28.1 117,26.66 116.38,25.2 C115.76,23.74 115.14,22.2 114.5,20.6 C113.86,19 113.2,17.3 112.54,15.52 C111.88,13.74 111.18,11.8 110.48,9.7 L113.54,9.7 C114.56,12.72 115.58,15.62 116.58,18.4 C117.58,21.18 118.6,23.8 119.64,26.24 C120.68,23.82 121.7,21.22 122.7,18.42 C123.7,15.62 124.7,12.72 125.7,9.72 L128.66,9.7 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M132.38,11.96 C131.92,11.96 131.5,11.8 131.16,11.48 C130.82,11.14 130.64,10.68 130.66,10.2 C130.64,9.72 130.82,9.26 131.16,8.92 C131.84,8.28 132.9,8.28 133.6,8.92 C133.94,9.26 134.12,9.72 134.1,10.2 C134.12,10.68 133.94,11.14 133.6,11.48 C133.28,11.8 132.84,11.98 132.38,11.96 Z M133.72,29.52 L131.06,29.52 L131.06,14.66 L133.72,14.66 L133.72,29.52 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M143.62,14.34 C143.84,14.34 144.12,14.36 144.4,14.38 C144.7,14.4 144.98,14.44 145.28,14.5 C145.56,14.54 145.82,14.6 146.06,14.64 C146.24,14.68 146.42,14.72 146.6,14.76 L146.14,17.08 C145.2,16.78 144.22,16.62 143.22,16.66 C142.72,16.66 142.24,16.72 141.74,16.82 C141.26,16.92 140.94,17 140.78,17.04 L140.78,29.54 L138.12,29.54 L138.12,15.28 C138.88,15.02 139.68,14.8 140.46,14.64 C141.52,14.44 142.56,14.34 143.62,14.34 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                            <path d="M151.5,14.66 L157.14,14.66 L157.14,16.9 L151.5,16.9 L151.5,23.76 C151.48,24.38 151.54,25 151.68,25.6 C151.76,26.02 151.94,26.4 152.2,26.74 C152.42,27.02 152.72,27.22 153.06,27.32 C153.44,27.44 153.86,27.5 154.26,27.5 C154.92,27.52 155.56,27.44 156.2,27.22 C156.68,27.04 157.02,26.92 157.22,26.84 L157.74,29.04 C157.28,29.24 156.82,29.4 156.34,29.54 C155.6,29.76 154.82,29.86 154.06,29.84 C153.2,29.86 152.36,29.74 151.56,29.46 C150.94,29.22 150.38,28.82 149.98,28.3 C149.56,27.74 149.26,27.08 149.14,26.4 C148.96,25.54 148.88,24.66 148.9,23.78 L148.9,10.5 L151.56,10.04 L151.5,14.66 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                        </g>
+                    </g>
+                    <g transform="scale(1.8) translate(27 -15)" id="symbol">
+                    <path d="M0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.58 Z" id="Shape"></path>
+                    <path d="M0.85,22.82 C0.8,22.6276923 0.8,22.4738462 0.8,22.32 C0.8,22.4738462 0.8,22.6276923 0.85,22.82 Z" id="Shape"></path>
+                    <path d="M11.56,35.24 C11.3835294,35.19 11.2364706,35.14 11.06,35.04 C11.2364706,35.09 11.3835294,35.19 11.56,35.24 Z" id="Shape"></path>
+                    <path d="M18.8,1.02 C18.9538462,1.07 19.1461538,1.07 19.3,1.12 C19.1461538,1.07 18.9538462,1.07 18.8,1.02 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 C31.9304762,7.24285714 32.0971429,7.42142857 32.24,7.6 C32.0971429,7.42142857 31.9304762,7.24285714 31.74,7.1 Z" id="Shape"></path>
+                    <path d="M36.09,22.78 C36.09,22.88 36.04,22.98 36.04,23.08 C36.04,22.98 36.04,22.88 36.09,22.78 Z" id="Shape"></path>
+                    <path d="M19.04,1.06 C19.1938462,1.11 19.3861538,1.16 19.54,1.26 C19.3861538,1.21 19.2323077,1.11 19.04,1.06 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.34,1.16 19.38,1.18 19.42,1.2 L31.74,7.1 Z" id="Shape"></path>
+                    <path d="M18.8,1.05 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.1 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.05 Z" id="Shape"></path>
+                    <path d="M17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 C4.8,7.18 4.94,7.1 5.08,7.02 L17.4,1.08 Z" id="Shape"></path>
+                    <path d="M18.46,35.2 L11.66,35.2 C11.58,35.2 11.48,35.2 11.4,35.15 C11.48,35.2 11.58,35.2 11.66,35.2 L25.24,35.2 C25.4,35.2 25.58,35.15 25.74,35.1 C25.58,35.15 25.4,35.2 25.24,35.2 L18.46,35.2 Z" id="Shape"></path>
+                    <path d="M36.12,21.8 L33.04,8.6 C33.02,8.52 32.98,8.44 32.96,8.36 C33,8.44 33.02,8.52 33.04,8.6 L36.12,21.8 Z" id="Shape"></path>
+                    <path d="M33.46,26.42 L35.62,23.74 C35.72,23.6 35.8,23.46 35.88,23.3 C35.8,23.46 35.72,23.6 35.62,23.74 L33.46,26.42 Z" id="Shape"></path>
+                    <path d="M3.88,8.52 L0.84,21.8 L3.88,8.52 C3.98,8.04 4.26,7.62 4.64,7.3 L4.66,7.28 C4.26,7.58 3.98,8.02 3.88,8.52 Z" id="Shape"></path>
+                    <path d="M11.02,20.16 L6.22,10.36 L14.32,10.36 L17.56,16.34 L16.44,18.4 L16.4,18.42 L13.12,12.34 L9.54,12.34 L15.18,24.3 L15.98,22.78 C16.24,22.3 16.84,22.1 17.34,22.36 C17.82,22.62 18.02,23.22 17.76,23.72 L16.3,26.46 L15.18,28.54 L18.46,35.12 L21.56,29 C21.24,29.44 20.6,29.54 20.16,29.22 C19.76,28.94 19.64,28.4 19.86,27.98 L20.58,26.54 C20.86,26.06 21.46,25.9 21.94,26.18 C22.36,26.42 22.54,26.94 22.38,27.4 L23.84,24.52 C23.52,24.96 22.88,25.06 22.44,24.72 C22.06,24.44 21.92,23.92 22.14,23.48 L23.58,20.62 C23.82,20.12 24.42,19.92 24.92,20.18 C25.42,20.44 25.62,21.02 25.36,21.52 L25,22.22 L26.84,18.58 C26.52,19.04 25.9,19.16 25.46,18.84 C25.04,18.56 24.9,18.02 25.12,17.58 L26.54,14.72 C26.78,14.22 27.38,14.02 27.88,14.28 C28.38,14.52 28.58,15.12 28.32,15.62 L27.52,17.24 L29.8,12.74 C29.52,13.22 28.92,13.4 28.44,13.12 C28.2,12.98 28.02,12.74 27.96,12.46 L26.76,12.46 C26.2,12.46 25.76,12.02 25.76,11.46 C25.76,10.9 26.2,10.46 26.76,10.46 L30.94,10.46 L29.94,12.44 L32.4,7.58 C32.32,7.5 32.24,7.44 32.16,7.38 C32.02,7.28 31.88,7.18 31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.22,1.1 19.14,1.08 19.04,1.06 C18.96,1.04 18.88,1.02 18.8,1.02 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.04 C17.58,1.06 17.5,1.06 17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 L4.64,7.3 L11.02,20.16 Z M21.04,13.66 L22.8,10.3 L23.44,10.3 C23.6,10.3 23.76,10.34 23.9,10.42 C24.38,10.68 24.58,11.28 24.32,11.78 C24.32,11.78 24.32,11.78 24.32,11.78 L22.8,14.6 C22.54,15.08 21.94,15.28 21.44,15.02 C20.96,14.76 20.78,14.16 21.04,13.66 Z M17.96,19.5 L19.46,16.68 C19.72,16.2 20.32,16 20.82,16.26 C21.32,16.52 21.5,17.12 21.24,17.62 L19.74,20.44 C19.48,20.92 18.88,21.12 18.38,20.86 C17.88,20.6 17.7,19.98 17.96,19.5 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                    <path d="M3.08,8.34 L0.06,21.62 L0.06,21.64 L0.06,21.66 C-0.1,22.56 0.12,23.46 0.64,24.2 L0.66,24.22 L0.68,24.24 L9.18,34.8 L9.2,34.84 L9.24,34.86 C9.88,35.5 10.72,35.88 11.62,35.94 L25.24,35.94 C26.3,35.94 27.18,35.52 27.74,34.78 L36.26,24.24 L36.28,24.22 L36.3,24.2 C36.82,23.48 37.04,22.58 36.92,21.7 L36.9,21.62 L33.82,8.4 L33.82,8.36 L33.82,8.34 C33.54,7.5 32.94,6.78 32.14,6.38 L32.12,6.38 L32.1,6.38 L19.78,0.48 C19.36,0.28 18.88,0.18 18.42,0.2 C18.02,0.18 17.62,0.22 17.22,0.3 L17.14,0.32 L17.06,0.36 L4.74,6.3 C3.9,6.68 3.3,7.44 3.08,8.34 Z M5.1,7.02 L17.4,1.08 C17.48,1.06 17.56,1.04 17.64,1.04 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.02 C18.88,1.04 18.98,1.04 19.06,1.06 C19.14,1.08 19.24,1.1 19.32,1.14 C19.36,1.16 19.4,1.18 19.44,1.2 L31.76,7.1 C31.92,7.18 32.06,7.28 32.18,7.38 C32.26,7.44 32.34,7.5 32.42,7.58 C32.64,7.8 32.84,8.06 32.96,8.34 C33,8.42 33.02,8.5 33.04,8.58 L36.12,21.8 C36.16,22.12 36.14,22.46 36.06,22.78 C36.06,22.82 36.04,22.86 36.04,22.9 C35.96,23.2 35.82,23.5 35.64,23.76 L33.48,26.44 L27.12,34.3 C26.8,34.74 26.3,35.02 25.76,35.1 C25.6,35.12 25.42,35.14 25.26,35.14 L11.66,35.14 C11.58,35.14 11.48,35.12 11.4,35.12 C11.28,35.1 11.18,35.08 11.06,35.04 C10.58,34.9 10.14,34.64 9.78,34.3 L6.94,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.56 C0.8,22.48 0.8,22.4 0.8,22.32 C0.8,22.14 0.8,21.98 0.84,21.8 L3.88,8.52 C4,8.02 4.28,7.6 4.68,7.28 C4.8,7.18 4.94,7.08 5.1,7.02 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                    <path d="M18.46,35.14 L15.18,28.56 L15.14,28.62 L11.02,20.16 L4.62,7.3 C4.24,7.6 3.96,8.04 3.86,8.52 L0.84,21.8 C0.8,21.98 0.8,22.14 0.8,22.32 C0.8,22.4 0.8,22.48 0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.8 L9.8,34.28 C10.16,34.64 10.6,34.88 11.06,35.02 C11.16,35.06 11.28,35.08 11.4,35.1 C11.48,35.12 11.58,35.12 11.66,35.12 L18.46,35.12 L18.46,35.14 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                    <path d="M29.82,12.7 L27.54,17.2 L26.92,18.44 C26.9,18.48 26.88,18.52 26.86,18.54 L25.02,22.16 L23.94,24.32 C23.92,24.36 23.88,24.42 23.86,24.46 L22.4,27.36 C22.4,27.38 22.4,27.38 22.38,27.4 L21.66,28.84 C21.64,28.88 21.6,28.94 21.58,28.98 L18.48,35.1 L25.26,35.1 C25.42,35.1 25.6,35.08 25.76,35.06 C26.3,34.98 26.78,34.7 27.12,34.26 L33.48,26.4 L35.64,23.72 C35.82,23.46 35.96,23.18 36.04,22.86 C36.06,22.82 36.06,22.78 36.06,22.74 C36.14,22.42 36.16,22.1 36.12,21.76 L33.06,8.56 C33.04,8.48 33,8.4 32.98,8.32 C32.86,8.04 32.66,7.78 32.44,7.56 L29.98,12.4 L29.82,12.7 Z" id="Shape" fill="#B0B5BE" fill-rule="nonzero"></path>
+                    <path d="M18.36,20.84 C18.84,21.1 19.46,20.92 19.72,20.42 C19.72,20.42 19.72,20.42 19.72,20.42 L21.22,17.6 C21.48,17.12 21.3,16.5 20.8,16.24 C20.32,15.98 19.7,16.16 19.44,16.66 L17.94,19.48 C17.7,19.98 17.88,20.58 18.36,20.84 C18.36,20.84 18.36,20.84 18.36,20.84 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M22.38,27.42 C22.38,27.4 22.38,27.4 22.4,27.38 C22.6,26.86 22.34,26.28 21.82,26.1 C21.36,25.92 20.84,26.12 20.6,26.54 L19.88,27.98 C19.64,28.48 19.84,29.08 20.34,29.32 C20.84,29.56 21.42,29.36 21.68,28.88 L22.38,27.42 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M15.18,28.56 L16.3,26.48 L17.76,23.74 C18.02,23.26 17.84,22.64 17.34,22.38 C16.86,22.12 16.24,22.3 15.98,22.8 L15.18,24.32 L9.54,12.34 L13.12,12.34 L16.4,18.42 L16.44,18.4 L17.54,16.34 L14.3,10.34 L6.2,10.34 L11,20.14 L15.16,28.6 L15.18,28.56 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M29.96,12.44 L30.96,10.46 L26.78,10.46 C26.22,10.46 25.78,10.9 25.78,11.46 C25.78,12.02 26.22,12.46 26.78,12.46 L27.98,12.46 C28.1,13 28.64,13.34 29.18,13.22 C29.46,13.16 29.7,12.98 29.84,12.74 L29.86,12.72 L29.96,12.44 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M27.54,17.22 L28.34,15.6 C28.6,15.1 28.4,14.5 27.9,14.26 C27.4,14.02 26.8,14.2 26.56,14.7 C26.56,14.7 26.56,14.7 26.56,14.72 L25.14,17.58 C24.9,18.08 25.1,18.68 25.6,18.92 C26.1,19.16 26.68,18.96 26.94,18.48 L27.54,17.22 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M25.02,22.2 L25.38,21.5 C25.62,21 25.42,20.4 24.94,20.16 C24.46,19.92 23.84,20.12 23.6,20.6 L22.18,23.46 C21.94,23.96 22.14,24.56 22.64,24.8 C23.14,25.04 23.72,24.84 23.98,24.36 L25.02,22.2 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M21.46,15.02 C21.94,15.28 22.54,15.1 22.8,14.6 L24.3,11.78 C24.56,11.3 24.38,10.68 23.88,10.42 C23.88,10.42 23.88,10.42 23.88,10.42 C23.74,10.34 23.58,10.3 23.42,10.3 L22.8,10.3 L21.04,13.66 C20.8,14.16 20.98,14.74 21.46,15.02 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 52 - 0
server/api/resources/providerLogos/kubevirt-128.svg

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg  width="192px" height="128px"  viewBox="0 0 158 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="header-default" transform="translate(-40.000000, -30.000000)">
+            <g id="Group-16">
+                <g transform="translate(40.000000, 30.000000)">
+                  <g id="both" transform="scale(1.1) translate(-8 -5)">
+                    <g transform="scale(0.7) translate(17 68)" id="text">
+                        <g id="svg10488">
+                            <path d="M61.14,9.7 C60.54,10.34 59.88,11.06 59.14,11.86 C58.4,12.66 57.62,13.46 56.8,14.3 C56,15.12 55.2,15.94 54.4,16.74 C53.6,17.54 52.84,18.28 52.14,18.98 C53.06,19.62 53.92,20.34 54.74,21.1 C55.66,21.94 56.56,22.84 57.42,23.78 C58.3,24.74 59.12,25.7 59.9,26.7 C60.6,27.6 61.26,28.54 61.82,29.54 L58.56,29.54 C57.96,28.6 57.3,27.7 56.58,26.84 C55.84,25.94 55.04,25.06 54.22,24.24 C53.4,23.42 52.56,22.64 51.7,21.94 C50.92,21.28 50.1,20.68 49.22,20.14 L49.22,29.54 L46.44,29.54 L46.44,9.7 L49.22,9.7 L49.22,18.46 C49.88,17.84 50.62,17.12 51.42,16.32 C52.22,15.52 53.02,14.74 53.8,13.94 C54.58,13.14 55.32,12.38 56.02,11.64 C56.72,10.9 57.3,10.26 57.78,9.7 L61.14,9.7 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M75.58,29.1 C74.96,29.26 74.16,29.42 73.16,29.58 C72.02,29.76 70.84,29.84 69.68,29.84 C68.7,29.86 67.72,29.7 66.8,29.34 C66.06,29.04 65.4,28.56 64.92,27.92 C64.42,27.28 64.08,26.54 63.9,25.76 C63.68,24.86 63.58,23.92 63.58,23 L63.58,14.66 L66.24,14.66 L66.24,22.44 C66.24,24.26 66.52,25.54 67.1,26.34 C67.68,27.12 68.64,27.52 69.98,27.52 C70.26,27.52 70.56,27.52 70.86,27.5 C71.16,27.48 71.46,27.46 71.72,27.42 C71.98,27.4 72.24,27.36 72.44,27.34 C72.6,27.32 72.76,27.3 72.92,27.24 L72.92,14.66 L75.58,14.66 L75.58,29.1 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M82.64,15.32 C83.1,15.04 83.6,14.82 84.12,14.66 C84.86,14.42 85.62,14.3 86.4,14.32 C87.38,14.3 88.36,14.5 89.24,14.9 C90.06,15.26 90.78,15.82 91.34,16.5 C91.94,17.22 92.38,18.06 92.64,18.96 C92.94,19.98 93.1,21.04 93.08,22.1 C93.1,23.2 92.92,24.3 92.56,25.34 C92.24,26.26 91.72,27.08 91.06,27.78 C90.4,28.46 89.6,28.98 88.72,29.32 C87.74,29.7 86.68,29.88 85.64,29.86 C84.54,29.88 83.44,29.78 82.34,29.6 C81.38,29.42 80.6,29.26 80,29.08 L80,7.8 L82.66,7.34 L82.64,15.32 Z M82.64,27.22 C83.02,27.32 83.38,27.38 83.76,27.44 C84.36,27.52 84.96,27.54 85.58,27.54 C87.02,27.54 88.16,27.06 89.02,26.12 C89.88,25.18 90.3,23.84 90.3,22.1 C90.3,21.38 90.22,20.66 90.08,19.96 C89.94,19.34 89.7,18.76 89.34,18.22 C89,17.74 88.54,17.34 88.02,17.08 C87.4,16.78 86.74,16.64 86.06,16.66 C85.38,16.66 84.7,16.78 84.06,17.04 C83.56,17.22 83.08,17.48 82.66,17.82 L82.64,27.22 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M95.84,22.12 C95.82,20.94 96,19.78 96.4,18.68 C96.74,17.78 97.26,16.94 97.92,16.24 C98.54,15.6 99.28,15.1 100.1,14.78 C100.9,14.46 101.76,14.3 102.62,14.3 C104.62,14.3 106.16,14.92 107.22,16.18 C108.28,17.42 108.82,19.34 108.82,21.88 L108.82,22.32 C108.82,22.48 108.82,22.64 108.82,22.82 L98.62,22.82 C98.74,24.36 99.18,25.54 99.96,26.34 C100.74,27.14 101.96,27.54 103.62,27.54 C104.42,27.56 105.2,27.48 105.98,27.3 C106.48,27.18 106.96,27.02 107.42,26.82 L107.8,29.04 C107.26,29.28 106.68,29.46 106.1,29.58 C105.2,29.78 104.26,29.88 103.34,29.86 C102.2,29.88 101.06,29.68 99.98,29.28 C99.1,28.92 98.3,28.38 97.66,27.66 C97.04,26.96 96.58,26.12 96.3,25.22 C95.96,24.22 95.82,23.16 95.84,22.12 Z M106.04,20.66 C106.06,19.46 105.76,18.48 105.14,17.7 C104.52,16.92 103.66,16.54 102.58,16.54 C102.02,16.52 101.46,16.66 100.96,16.9 C100.5,17.12 100.1,17.44 99.78,17.84 C99.46,18.22 99.2,18.68 99.02,19.16 C98.84,19.64 98.72,20.16 98.66,20.68 L106.04,20.66 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M128.66,9.7 C127.94,11.8 127.24,13.74 126.6,15.52 C125.94,17.3 125.3,19 124.66,20.6 C124.04,22.2 123.4,23.74 122.78,25.2 C122.16,26.66 121.52,28.12 120.88,29.54 L118.28,29.54 C117.64,28.1 117,26.66 116.38,25.2 C115.76,23.74 115.14,22.2 114.5,20.6 C113.86,19 113.2,17.3 112.54,15.52 C111.88,13.74 111.18,11.8 110.48,9.7 L113.54,9.7 C114.56,12.72 115.58,15.62 116.58,18.4 C117.58,21.18 118.6,23.8 119.64,26.24 C120.68,23.82 121.7,21.22 122.7,18.42 C123.7,15.62 124.7,12.72 125.7,9.72 L128.66,9.7 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M132.38,11.96 C131.92,11.96 131.5,11.8 131.16,11.48 C130.82,11.14 130.64,10.68 130.66,10.2 C130.64,9.72 130.82,9.26 131.16,8.92 C131.84,8.28 132.9,8.28 133.6,8.92 C133.94,9.26 134.12,9.72 134.1,10.2 C134.12,10.68 133.94,11.14 133.6,11.48 C133.28,11.8 132.84,11.98 132.38,11.96 Z M133.72,29.52 L131.06,29.52 L131.06,14.66 L133.72,14.66 L133.72,29.52 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M143.62,14.34 C143.84,14.34 144.12,14.36 144.4,14.38 C144.7,14.4 144.98,14.44 145.28,14.5 C145.56,14.54 145.82,14.6 146.06,14.64 C146.24,14.68 146.42,14.72 146.6,14.76 L146.14,17.08 C145.2,16.78 144.22,16.62 143.22,16.66 C142.72,16.66 142.24,16.72 141.74,16.82 C141.26,16.92 140.94,17 140.78,17.04 L140.78,29.54 L138.12,29.54 L138.12,15.28 C138.88,15.02 139.68,14.8 140.46,14.64 C141.52,14.44 142.56,14.34 143.62,14.34 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M151.5,14.66 L157.14,14.66 L157.14,16.9 L151.5,16.9 L151.5,23.76 C151.48,24.38 151.54,25 151.68,25.6 C151.76,26.02 151.94,26.4 152.2,26.74 C152.42,27.02 152.72,27.22 153.06,27.32 C153.44,27.44 153.86,27.5 154.26,27.5 C154.92,27.52 155.56,27.44 156.2,27.22 C156.68,27.04 157.02,26.92 157.22,26.84 L157.74,29.04 C157.28,29.24 156.82,29.4 156.34,29.54 C155.6,29.76 154.82,29.86 154.06,29.84 C153.2,29.86 152.36,29.74 151.56,29.46 C150.94,29.22 150.38,28.82 149.98,28.3 C149.56,27.74 149.26,27.08 149.14,26.4 C148.96,25.54 148.88,24.66 148.9,23.78 L148.9,10.5 L151.56,10.04 L151.5,14.66 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                        </g>
+                    </g>
+                    <g transform="scale(1.8) translate(27 -15)" id="symbol">
+                    <path d="M0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.58 Z" id="Shape"></path>
+                    <path d="M0.85,22.82 C0.8,22.6276923 0.8,22.4738462 0.8,22.32 C0.8,22.4738462 0.8,22.6276923 0.85,22.82 Z" id="Shape"></path>
+                    <path d="M11.56,35.24 C11.3835294,35.19 11.2364706,35.14 11.06,35.04 C11.2364706,35.09 11.3835294,35.19 11.56,35.24 Z" id="Shape"></path>
+                    <path d="M18.8,1.02 C18.9538462,1.07 19.1461538,1.07 19.3,1.12 C19.1461538,1.07 18.9538462,1.07 18.8,1.02 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 C31.9304762,7.24285714 32.0971429,7.42142857 32.24,7.6 C32.0971429,7.42142857 31.9304762,7.24285714 31.74,7.1 Z" id="Shape"></path>
+                    <path d="M36.09,22.78 C36.09,22.88 36.04,22.98 36.04,23.08 C36.04,22.98 36.04,22.88 36.09,22.78 Z" id="Shape"></path>
+                    <path d="M19.04,1.06 C19.1938462,1.11 19.3861538,1.16 19.54,1.26 C19.3861538,1.21 19.2323077,1.11 19.04,1.06 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.34,1.16 19.38,1.18 19.42,1.2 L31.74,7.1 Z" id="Shape"></path>
+                    <path d="M18.8,1.05 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.1 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.05 Z" id="Shape"></path>
+                    <path d="M17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 C4.8,7.18 4.94,7.1 5.08,7.02 L17.4,1.08 Z" id="Shape"></path>
+                    <path d="M18.46,35.2 L11.66,35.2 C11.58,35.2 11.48,35.2 11.4,35.15 C11.48,35.2 11.58,35.2 11.66,35.2 L25.24,35.2 C25.4,35.2 25.58,35.15 25.74,35.1 C25.58,35.15 25.4,35.2 25.24,35.2 L18.46,35.2 Z" id="Shape"></path>
+                    <path d="M36.12,21.8 L33.04,8.6 C33.02,8.52 32.98,8.44 32.96,8.36 C33,8.44 33.02,8.52 33.04,8.6 L36.12,21.8 Z" id="Shape"></path>
+                    <path d="M33.46,26.42 L35.62,23.74 C35.72,23.6 35.8,23.46 35.88,23.3 C35.8,23.46 35.72,23.6 35.62,23.74 L33.46,26.42 Z" id="Shape"></path>
+                    <path d="M3.88,8.52 L0.84,21.8 L3.88,8.52 C3.98,8.04 4.26,7.62 4.64,7.3 L4.66,7.28 C4.26,7.58 3.98,8.02 3.88,8.52 Z" id="Shape"></path>
+                    <path d="M11.02,20.16 L6.22,10.36 L14.32,10.36 L17.56,16.34 L16.44,18.4 L16.4,18.42 L13.12,12.34 L9.54,12.34 L15.18,24.3 L15.98,22.78 C16.24,22.3 16.84,22.1 17.34,22.36 C17.82,22.62 18.02,23.22 17.76,23.72 L16.3,26.46 L15.18,28.54 L18.46,35.12 L21.56,29 C21.24,29.44 20.6,29.54 20.16,29.22 C19.76,28.94 19.64,28.4 19.86,27.98 L20.58,26.54 C20.86,26.06 21.46,25.9 21.94,26.18 C22.36,26.42 22.54,26.94 22.38,27.4 L23.84,24.52 C23.52,24.96 22.88,25.06 22.44,24.72 C22.06,24.44 21.92,23.92 22.14,23.48 L23.58,20.62 C23.82,20.12 24.42,19.92 24.92,20.18 C25.42,20.44 25.62,21.02 25.36,21.52 L25,22.22 L26.84,18.58 C26.52,19.04 25.9,19.16 25.46,18.84 C25.04,18.56 24.9,18.02 25.12,17.58 L26.54,14.72 C26.78,14.22 27.38,14.02 27.88,14.28 C28.38,14.52 28.58,15.12 28.32,15.62 L27.52,17.24 L29.8,12.74 C29.52,13.22 28.92,13.4 28.44,13.12 C28.2,12.98 28.02,12.74 27.96,12.46 L26.76,12.46 C26.2,12.46 25.76,12.02 25.76,11.46 C25.76,10.9 26.2,10.46 26.76,10.46 L30.94,10.46 L29.94,12.44 L32.4,7.58 C32.32,7.5 32.24,7.44 32.16,7.38 C32.02,7.28 31.88,7.18 31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.22,1.1 19.14,1.08 19.04,1.06 C18.96,1.04 18.88,1.02 18.8,1.02 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.04 C17.58,1.06 17.5,1.06 17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 L4.64,7.3 L11.02,20.16 Z M21.04,13.66 L22.8,10.3 L23.44,10.3 C23.6,10.3 23.76,10.34 23.9,10.42 C24.38,10.68 24.58,11.28 24.32,11.78 C24.32,11.78 24.32,11.78 24.32,11.78 L22.8,14.6 C22.54,15.08 21.94,15.28 21.44,15.02 C20.96,14.76 20.78,14.16 21.04,13.66 Z M17.96,19.5 L19.46,16.68 C19.72,16.2 20.32,16 20.82,16.26 C21.32,16.52 21.5,17.12 21.24,17.62 L19.74,20.44 C19.48,20.92 18.88,21.12 18.38,20.86 C17.88,20.6 17.7,19.98 17.96,19.5 Z" id="Shape" fill="#00AAB2" fill-rule="nonzero"></path>
+                    <path d="M3.08,8.34 L0.06,21.62 L0.06,21.64 L0.06,21.66 C-0.1,22.56 0.12,23.46 0.64,24.2 L0.66,24.22 L0.68,24.24 L9.18,34.8 L9.2,34.84 L9.24,34.86 C9.88,35.5 10.72,35.88 11.62,35.94 L25.24,35.94 C26.3,35.94 27.18,35.52 27.74,34.78 L36.26,24.24 L36.28,24.22 L36.3,24.2 C36.82,23.48 37.04,22.58 36.92,21.7 L36.9,21.62 L33.82,8.4 L33.82,8.36 L33.82,8.34 C33.54,7.5 32.94,6.78 32.14,6.38 L32.12,6.38 L32.1,6.38 L19.78,0.48 C19.36,0.28 18.88,0.18 18.42,0.2 C18.02,0.18 17.62,0.22 17.22,0.3 L17.14,0.32 L17.06,0.36 L4.74,6.3 C3.9,6.68 3.3,7.44 3.08,8.34 Z M5.1,7.02 L17.4,1.08 C17.48,1.06 17.56,1.04 17.64,1.04 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.02 C18.88,1.04 18.98,1.04 19.06,1.06 C19.14,1.08 19.24,1.1 19.32,1.14 C19.36,1.16 19.4,1.18 19.44,1.2 L31.76,7.1 C31.92,7.18 32.06,7.28 32.18,7.38 C32.26,7.44 32.34,7.5 32.42,7.58 C32.64,7.8 32.84,8.06 32.96,8.34 C33,8.42 33.02,8.5 33.04,8.58 L36.12,21.8 C36.16,22.12 36.14,22.46 36.06,22.78 C36.06,22.82 36.04,22.86 36.04,22.9 C35.96,23.2 35.82,23.5 35.64,23.76 L33.48,26.44 L27.12,34.3 C26.8,34.74 26.3,35.02 25.76,35.1 C25.6,35.12 25.42,35.14 25.26,35.14 L11.66,35.14 C11.58,35.14 11.48,35.12 11.4,35.12 C11.28,35.1 11.18,35.08 11.06,35.04 C10.58,34.9 10.14,34.64 9.78,34.3 L6.94,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.56 C0.8,22.48 0.8,22.4 0.8,22.32 C0.8,22.14 0.8,21.98 0.84,21.8 L3.88,8.52 C4,8.02 4.28,7.6 4.68,7.28 C4.8,7.18 4.94,7.08 5.1,7.02 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M18.46,35.14 L15.18,28.56 L15.14,28.62 L11.02,20.16 L4.62,7.3 C4.24,7.6 3.96,8.04 3.86,8.52 L0.84,21.8 C0.8,21.98 0.8,22.14 0.8,22.32 C0.8,22.4 0.8,22.48 0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.8 L9.8,34.28 C10.16,34.64 10.6,34.88 11.06,35.02 C11.16,35.06 11.28,35.08 11.4,35.1 C11.48,35.12 11.58,35.12 11.66,35.12 L18.46,35.12 L18.46,35.14 Z" id="Shape" fill="#00797F" fill-rule="nonzero"></path>
+                    <path d="M29.82,12.7 L27.54,17.2 L26.92,18.44 C26.9,18.48 26.88,18.52 26.86,18.54 L25.02,22.16 L23.94,24.32 C23.92,24.36 23.88,24.42 23.86,24.46 L22.4,27.36 C22.4,27.38 22.4,27.38 22.38,27.4 L21.66,28.84 C21.64,28.88 21.6,28.94 21.58,28.98 L18.48,35.1 L25.26,35.1 C25.42,35.1 25.6,35.08 25.76,35.06 C26.3,34.98 26.78,34.7 27.12,34.26 L33.48,26.4 L35.64,23.72 C35.82,23.46 35.96,23.18 36.04,22.86 C36.06,22.82 36.06,22.78 36.06,22.74 C36.14,22.42 36.16,22.1 36.12,21.76 L33.06,8.56 C33.04,8.48 33,8.4 32.98,8.32 C32.86,8.04 32.66,7.78 32.44,7.56 L29.98,12.4 L29.82,12.7 Z" id="Shape" fill="#3ACCC5" fill-rule="nonzero"></path>
+                    <path d="M18.36,20.84 C18.84,21.1 19.46,20.92 19.72,20.42 C19.72,20.42 19.72,20.42 19.72,20.42 L21.22,17.6 C21.48,17.12 21.3,16.5 20.8,16.24 C20.32,15.98 19.7,16.16 19.44,16.66 L17.94,19.48 C17.7,19.98 17.88,20.58 18.36,20.84 C18.36,20.84 18.36,20.84 18.36,20.84 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M22.38,27.42 C22.38,27.4 22.38,27.4 22.4,27.38 C22.6,26.86 22.34,26.28 21.82,26.1 C21.36,25.92 20.84,26.12 20.6,26.54 L19.88,27.98 C19.64,28.48 19.84,29.08 20.34,29.32 C20.84,29.56 21.42,29.36 21.68,28.88 L22.38,27.42 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M15.18,28.56 L16.3,26.48 L17.76,23.74 C18.02,23.26 17.84,22.64 17.34,22.38 C16.86,22.12 16.24,22.3 15.98,22.8 L15.18,24.32 L9.54,12.34 L13.12,12.34 L16.4,18.42 L16.44,18.4 L17.54,16.34 L14.3,10.34 L6.2,10.34 L11,20.14 L15.16,28.6 L15.18,28.56 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M29.96,12.44 L30.96,10.46 L26.78,10.46 C26.22,10.46 25.78,10.9 25.78,11.46 C25.78,12.02 26.22,12.46 26.78,12.46 L27.98,12.46 C28.1,13 28.64,13.34 29.18,13.22 C29.46,13.16 29.7,12.98 29.84,12.74 L29.86,12.72 L29.96,12.44 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M27.54,17.22 L28.34,15.6 C28.6,15.1 28.4,14.5 27.9,14.26 C27.4,14.02 26.8,14.2 26.56,14.7 C26.56,14.7 26.56,14.7 26.56,14.72 L25.14,17.58 C24.9,18.08 25.1,18.68 25.6,18.92 C26.1,19.16 26.68,18.96 26.94,18.48 L27.54,17.22 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M25.02,22.2 L25.38,21.5 C25.62,21 25.42,20.4 24.94,20.16 C24.46,19.92 23.84,20.12 23.6,20.6 L22.18,23.46 C21.94,23.96 22.14,24.56 22.64,24.8 C23.14,25.04 23.72,24.84 23.98,24.36 L25.02,22.2 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M21.46,15.02 C21.94,15.28 22.54,15.1 22.8,14.6 L24.3,11.78 C24.56,11.3 24.38,10.68 23.88,10.42 C23.88,10.42 23.88,10.42 23.88,10.42 C23.74,10.34 23.58,10.3 23.42,10.3 L22.8,10.3 L21.04,13.66 C20.8,14.16 20.98,14.74 21.46,15.02 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 30 - 0
server/api/resources/providerLogos/kubevirt-32-white.svg

@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 784.48 170.69">
+    <g id="Layer_2" data-name="Layer 2">
+        <g id="svg10488" fill="white">
+            <path d="M301.72,43.54q-4.43,4.86-10,10.8T280.05,66.5Q274,72.72,268,78.72t-11.3,11.15a127.55,127.55,0,0,1,13,10.58q6.86,6.29,13.44,13.44t12.37,14.59a123.12,123.12,0,0,1,9.65,14.16h-16.3A140.78,140.78,0,0,0,279,129.13q-5.58-6.79-11.8-13T254.6,104.61a110.77,110.77,0,0,0-12.37-9v47H228.36V43.54h13.87V87.3q5-4.72,11-10.65t11.87-11.94q5.86-6,11.08-11.51T285,43.54Z" />
+            <path d="M373.93,140.5q-4.58,1.15-12.08,2.43a103.92,103.92,0,0,1-17.37,1.29,36.84,36.84,0,0,1-14.44-2.5,23.28,23.28,0,0,1-9.44-7.08,28.71,28.71,0,0,1-5.15-10.8,56.18,56.18,0,0,1-1.57-13.8V68.28h13.3v38.9q0,13.59,4.29,19.45t14.44,5.86q2.14,0,4.43-.14t4.29-.36q2-.22,3.65-.43a10.68,10.68,0,0,0,2.36-.5V68.28h13.3Z" />
+            <path d="M409.25,71.57a36,36,0,0,1,7.36-3.29A34.56,34.56,0,0,1,428,66.57a33.72,33.72,0,0,1,14.23,2.86,29.59,29.59,0,0,1,10.51,8,35.3,35.3,0,0,1,6.51,12.3,53,53,0,0,1,2.22,15.73,46.93,46.93,0,0,1-2.65,16.23,34.15,34.15,0,0,1-7.51,12.23,33.06,33.06,0,0,1-11.73,7.72,41.7,41.7,0,0,1-15.44,2.72,93.57,93.57,0,0,1-16.45-1.29q-7.15-1.29-11.73-2.57V34l13.3-2.29Zm0,59.49a42.8,42.8,0,0,0,5.65,1.07,68.31,68.31,0,0,0,9.08.5q10.73,0,17.16-7.08t6.44-20.09a48.13,48.13,0,0,0-1.14-10.73,24.19,24.19,0,0,0-3.72-8.65,18,18,0,0,0-6.65-5.72,21.41,21.41,0,0,0-9.8-2.07,26.38,26.38,0,0,0-10,1.86,27.38,27.38,0,0,0-7,3.86Z" />
+            <path d="M475.17,105.61A47.44,47.44,0,0,1,478,88.37a36,36,0,0,1,7.58-12.23,30.81,30.81,0,0,1,10.87-7.29,34,34,0,0,1,12.58-2.43q15,0,23,9.37t8,28.53v2.22A20.53,20.53,0,0,1,540,109H489q.86,11.58,6.72,17.59t18.3,6a48.73,48.73,0,0,0,11.8-1.22,42.34,42.34,0,0,0,7.22-2.36l1.86,11.15a39.55,39.55,0,0,1-8.51,2.72,60.56,60.56,0,0,1-13.8,1.43,43.79,43.79,0,0,1-16.8-2.93,31.32,31.32,0,0,1-11.65-8.08,32.93,32.93,0,0,1-6.79-12.23A51.65,51.65,0,0,1,475.17,105.61Zm51.05-7.29q.14-9-4.5-14.8t-12.8-5.79a17.55,17.55,0,0,0-8.08,1.79,19.06,19.06,0,0,0-5.93,4.65,21.39,21.39,0,0,0-3.79,6.58,32.4,32.4,0,0,0-1.79,7.58Z" />
+            <path d="M639.34,43.54Q633.9,59.28,629,72.65T619.32,98q-4.72,12-9.37,23t-9.51,21.66h-13q-4.86-10.73-9.51-21.66t-9.44-23q-4.79-12-9.8-25.38t-10.3-29.1h15.3q7.72,22.6,15.16,43.47t15.3,39.18Q602,108,609.45,87.09t15-43.54Z" />
+            <path d="M657.93,54.84a8.53,8.53,0,0,1-6.08-2.36,8.33,8.33,0,0,1-2.5-6.36,8.33,8.33,0,0,1,2.5-6.36,9,9,0,0,1,12.16,0,8.34,8.34,0,0,1,2.5,6.36,8.33,8.33,0,0,1-2.5,6.36A8.54,8.54,0,0,1,657.93,54.84Zm6.72,87.8h-13.3V68.28h13.3Z" />
+            <path d="M714.12,66.71q1.72,0,3.93.21t4.36.57q2.14.36,3.93.71a24.47,24.47,0,0,1,2.65.64l-2.29,11.58a45.24,45.24,0,0,0-5.22-1.36,45.9,45.9,0,0,0-9.37-.79,35,35,0,0,0-7.36.79q-3.65.79-4.79,1.07v62.49h-13.3V71.43a90.25,90.25,0,0,1,11.73-3.22A75.32,75.32,0,0,1,714.12,66.71Z" />
+            <path d="M753.45,68.28h28.17V79.44H753.45v34.32a41.24,41.24,0,0,0,.86,9.22,13.83,13.83,0,0,0,2.57,5.72,9.25,9.25,0,0,0,4.29,2.93,19,19,0,0,0,6,.86,28.21,28.21,0,0,0,9.65-1.36q3.65-1.36,5.08-1.93l2.57,11a49.4,49.4,0,0,1-7,2.5,39.86,39.86,0,0,1-11.44,1.5,34.67,34.67,0,0,1-12.51-1.93,18.22,18.22,0,0,1-7.94-5.79,23.16,23.16,0,0,1-4.22-9.51,62.6,62.6,0,0,1-1.22-13.08V47.55l13.3-2.29Z" />
+            <path class="cls-1" d="M158.05,32.94l-.21-.22.21.22Z" />
+            <path class="cls-1" d="M159.5,34.62a13,13,0,0,0-1.45-1.68h0A13,13,0,0,1,159.5,34.62Z" />
+            <path class="cls-1" d="M154.73,30.5,93.12,1q-.3-.15-.61-.28.31.12.61.28Z" />
+            <path class="cls-1" d="M83,.4,21.41,30.1a11.25,11.25,0,0,0-2.11,1.28,11.25,11.25,0,0,1,2.11-1.28Z" />
+            <path class="cls-1" d="M90,.11A15.6,15.6,0,0,0,88.07,0a28.84,28.84,0,0,0-3.81.17A28.89,28.89,0,0,1,88.07,0,15.6,15.6,0,0,1,90,.11Z" />
+            <path class="cls-1" d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,11.55,11.55,0,0,1,1,2.3Z" />
+            <path class="cls-1" d="M90,.11a11.44,11.44,0,0,1,1.29.23A11.44,11.44,0,0,0,90,.11Z" />
+            <path class="cls-1" d="M91.24.34a9.26,9.26,0,0,1,1.27.4A9.26,9.26,0,0,0,91.24.34Z" />
+            <path class="cls-1" d="M163.28,127.14l10.84-13.41a13.44,13.44,0,0,0,1.29-2.23,13.44,13.44,0,0,1-1.29,2.23Z" />
+            <path class="cls-1" d="M54.33,170.69h0a12.93,12.93,0,0,1-1.29-.14A12.92,12.92,0,0,0,54.33,170.69Z" />
+            <path class="cls-1" d="M154.73,30.5a14.72,14.72,0,0,1,2.15,1.4A14.72,14.72,0,0,0,154.73,30.5Z" />
+            <path class="cls-1" d="M176.28,108.9c0,.19-.1.38-.15.57C176.19,109.28,176.24,109.09,176.28,108.9Z" />
+            <path class="cls-1" d="M19.3,31.38l-.15.13h0Z" />
+            <path class="cls-1" d="M19.14,31.51h0a10.85,10.85,0,0,0-3.8,6.06L.2,104,15.35,37.57A10.85,10.85,0,0,1,19.14,31.51Z" />
+            <path class="cls-1" d="M.1,107.86a12.87,12.87,0,0,0,2.32,5.86l28.42,35.15L2.42,113.73A12.87,12.87,0,0,1,.1,107.86Z" />
+            <path d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,12.2,12.2,0,0,0-.68-1.05,13,13,0,0,0-1.45-1.68l-.21-.22q-.46-.43-1-.83a14.72,14.72,0,0,0-2.15-1.4L93.12,1q-.3-.15-.61-.28a9.26,9.26,0,0,0-1.27-.4A11.44,11.44,0,0,0,90,.11,15.6,15.6,0,0,0,88.07,0a28.89,28.89,0,0,0-3.81.17A11.32,11.32,0,0,0,83,.4L21.41,30.1a11.25,11.25,0,0,0-2.11,1.28l-.15.13a10.85,10.85,0,0,0-3.8,6.06L.2,104a12.73,12.73,0,0,0,2.22,9.7l28.42,35.15L45,166.45a14.86,14.86,0,0,0,8,4.1,12.93,12.93,0,0,0,1.29.14h67.87q.68,0,1.35-.06a10.6,10.6,0,0,0,7.94-4.18l31.78-39.31,10.84-13.41a13,13,0,0,0,2-4.26c.05-.19.1-.38.15-.57a14,14,0,0,0,.34-2.3A14.56,14.56,0,0,0,176.55,104ZM101.19,65.29,110,48.49h3.21v0a5,5,0,0,1,2.27.56,5,5,0,0,1,2.08,6.76L110,70a5,5,0,1,1-8.84-4.68ZM84.76,115.69,77.5,129.4,71.8,140,27,48.71h40.5l16.2,29.92L78.22,89l-.21.11L61.58,58.71H43.67l28.25,59.85,4-7.56a5,5,0,1,1,8.84,4.68Zm5.41-13.89a5,5,0,0,1-4.42-7.34l7.49-14.14A5,5,0,1,1,102.08,85L94.59,99.14A5,5,0,0,1,90.17,101.8Zm17.7,32.34-3.61,7.23a5,5,0,0,1-8.95-4.47l3.61-7.23a5,5,0,0,1,8.95,4.46Zm15-29.64-7.14,14.32a5,5,0,0,1-8.95-4.46L113.87,100a5,5,0,0,1,8.95,4.47ZM137.72,75l-7.14,14.32a5,5,0,0,1-8.95-4.47l7.14-14.32A5,5,0,0,1,137.72,75Zm7.39-14.46a5,5,0,0,1-9.3-1.27h-6a5,5,0,0,1,0-10h20.88Z" />
+        </g>
+    </g>
+</svg>

+ 30 - 0
server/api/resources/providerLogos/kubevirt-32.svg

@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 784.48 170.69">
+    <g id="Layer_2" data-name="Layer 2">
+        <g id="svg10488" fill="#616870">
+            <path d="M301.72,43.54q-4.43,4.86-10,10.8T280.05,66.5Q274,72.72,268,78.72t-11.3,11.15a127.55,127.55,0,0,1,13,10.58q6.86,6.29,13.44,13.44t12.37,14.59a123.12,123.12,0,0,1,9.65,14.16h-16.3A140.78,140.78,0,0,0,279,129.13q-5.58-6.79-11.8-13T254.6,104.61a110.77,110.77,0,0,0-12.37-9v47H228.36V43.54h13.87V87.3q5-4.72,11-10.65t11.87-11.94q5.86-6,11.08-11.51T285,43.54Z" />
+            <path d="M373.93,140.5q-4.58,1.15-12.08,2.43a103.92,103.92,0,0,1-17.37,1.29,36.84,36.84,0,0,1-14.44-2.5,23.28,23.28,0,0,1-9.44-7.08,28.71,28.71,0,0,1-5.15-10.8,56.18,56.18,0,0,1-1.57-13.8V68.28h13.3v38.9q0,13.59,4.29,19.45t14.44,5.86q2.14,0,4.43-.14t4.29-.36q2-.22,3.65-.43a10.68,10.68,0,0,0,2.36-.5V68.28h13.3Z" />
+            <path d="M409.25,71.57a36,36,0,0,1,7.36-3.29A34.56,34.56,0,0,1,428,66.57a33.72,33.72,0,0,1,14.23,2.86,29.59,29.59,0,0,1,10.51,8,35.3,35.3,0,0,1,6.51,12.3,53,53,0,0,1,2.22,15.73,46.93,46.93,0,0,1-2.65,16.23,34.15,34.15,0,0,1-7.51,12.23,33.06,33.06,0,0,1-11.73,7.72,41.7,41.7,0,0,1-15.44,2.72,93.57,93.57,0,0,1-16.45-1.29q-7.15-1.29-11.73-2.57V34l13.3-2.29Zm0,59.49a42.8,42.8,0,0,0,5.65,1.07,68.31,68.31,0,0,0,9.08.5q10.73,0,17.16-7.08t6.44-20.09a48.13,48.13,0,0,0-1.14-10.73,24.19,24.19,0,0,0-3.72-8.65,18,18,0,0,0-6.65-5.72,21.41,21.41,0,0,0-9.8-2.07,26.38,26.38,0,0,0-10,1.86,27.38,27.38,0,0,0-7,3.86Z" />
+            <path d="M475.17,105.61A47.44,47.44,0,0,1,478,88.37a36,36,0,0,1,7.58-12.23,30.81,30.81,0,0,1,10.87-7.29,34,34,0,0,1,12.58-2.43q15,0,23,9.37t8,28.53v2.22A20.53,20.53,0,0,1,540,109H489q.86,11.58,6.72,17.59t18.3,6a48.73,48.73,0,0,0,11.8-1.22,42.34,42.34,0,0,0,7.22-2.36l1.86,11.15a39.55,39.55,0,0,1-8.51,2.72,60.56,60.56,0,0,1-13.8,1.43,43.79,43.79,0,0,1-16.8-2.93,31.32,31.32,0,0,1-11.65-8.08,32.93,32.93,0,0,1-6.79-12.23A51.65,51.65,0,0,1,475.17,105.61Zm51.05-7.29q.14-9-4.5-14.8t-12.8-5.79a17.55,17.55,0,0,0-8.08,1.79,19.06,19.06,0,0,0-5.93,4.65,21.39,21.39,0,0,0-3.79,6.58,32.4,32.4,0,0,0-1.79,7.58Z" />
+            <path d="M639.34,43.54Q633.9,59.28,629,72.65T619.32,98q-4.72,12-9.37,23t-9.51,21.66h-13q-4.86-10.73-9.51-21.66t-9.44-23q-4.79-12-9.8-25.38t-10.3-29.1h15.3q7.72,22.6,15.16,43.47t15.3,39.18Q602,108,609.45,87.09t15-43.54Z" />
+            <path d="M657.93,54.84a8.53,8.53,0,0,1-6.08-2.36,8.33,8.33,0,0,1-2.5-6.36,8.33,8.33,0,0,1,2.5-6.36,9,9,0,0,1,12.16,0,8.34,8.34,0,0,1,2.5,6.36,8.33,8.33,0,0,1-2.5,6.36A8.54,8.54,0,0,1,657.93,54.84Zm6.72,87.8h-13.3V68.28h13.3Z" />
+            <path d="M714.12,66.71q1.72,0,3.93.21t4.36.57q2.14.36,3.93.71a24.47,24.47,0,0,1,2.65.64l-2.29,11.58a45.24,45.24,0,0,0-5.22-1.36,45.9,45.9,0,0,0-9.37-.79,35,35,0,0,0-7.36.79q-3.65.79-4.79,1.07v62.49h-13.3V71.43a90.25,90.25,0,0,1,11.73-3.22A75.32,75.32,0,0,1,714.12,66.71Z" />
+            <path d="M753.45,68.28h28.17V79.44H753.45v34.32a41.24,41.24,0,0,0,.86,9.22,13.83,13.83,0,0,0,2.57,5.72,9.25,9.25,0,0,0,4.29,2.93,19,19,0,0,0,6,.86,28.21,28.21,0,0,0,9.65-1.36q3.65-1.36,5.08-1.93l2.57,11a49.4,49.4,0,0,1-7,2.5,39.86,39.86,0,0,1-11.44,1.5,34.67,34.67,0,0,1-12.51-1.93,18.22,18.22,0,0,1-7.94-5.79,23.16,23.16,0,0,1-4.22-9.51,62.6,62.6,0,0,1-1.22-13.08V47.55l13.3-2.29Z" />
+            <path class="cls-1" d="M158.05,32.94l-.21-.22.21.22Z" />
+            <path class="cls-1" d="M159.5,34.62a13,13,0,0,0-1.45-1.68h0A13,13,0,0,1,159.5,34.62Z" />
+            <path class="cls-1" d="M154.73,30.5,93.12,1q-.3-.15-.61-.28.31.12.61.28Z" />
+            <path class="cls-1" d="M83,.4,21.41,30.1a11.25,11.25,0,0,0-2.11,1.28,11.25,11.25,0,0,1,2.11-1.28Z" />
+            <path class="cls-1" d="M90,.11A15.6,15.6,0,0,0,88.07,0a28.84,28.84,0,0,0-3.81.17A28.89,28.89,0,0,1,88.07,0,15.6,15.6,0,0,1,90,.11Z" />
+            <path class="cls-1" d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,11.55,11.55,0,0,1,1,2.3Z" />
+            <path class="cls-1" d="M90,.11a11.44,11.44,0,0,1,1.29.23A11.44,11.44,0,0,0,90,.11Z" />
+            <path class="cls-1" d="M91.24.34a9.26,9.26,0,0,1,1.27.4A9.26,9.26,0,0,0,91.24.34Z" />
+            <path class="cls-1" d="M163.28,127.14l10.84-13.41a13.44,13.44,0,0,0,1.29-2.23,13.44,13.44,0,0,1-1.29,2.23Z" />
+            <path class="cls-1" d="M54.33,170.69h0a12.93,12.93,0,0,1-1.29-.14A12.92,12.92,0,0,0,54.33,170.69Z" />
+            <path class="cls-1" d="M154.73,30.5a14.72,14.72,0,0,1,2.15,1.4A14.72,14.72,0,0,0,154.73,30.5Z" />
+            <path class="cls-1" d="M176.28,108.9c0,.19-.1.38-.15.57C176.19,109.28,176.24,109.09,176.28,108.9Z" />
+            <path class="cls-1" d="M19.3,31.38l-.15.13h0Z" />
+            <path class="cls-1" d="M19.14,31.51h0a10.85,10.85,0,0,0-3.8,6.06L.2,104,15.35,37.57A10.85,10.85,0,0,1,19.14,31.51Z" />
+            <path class="cls-1" d="M.1,107.86a12.87,12.87,0,0,0,2.32,5.86l28.42,35.15L2.42,113.73A12.87,12.87,0,0,1,.1,107.86Z" />
+            <path d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,12.2,12.2,0,0,0-.68-1.05,13,13,0,0,0-1.45-1.68l-.21-.22q-.46-.43-1-.83a14.72,14.72,0,0,0-2.15-1.4L93.12,1q-.3-.15-.61-.28a9.26,9.26,0,0,0-1.27-.4A11.44,11.44,0,0,0,90,.11,15.6,15.6,0,0,0,88.07,0a28.89,28.89,0,0,0-3.81.17A11.32,11.32,0,0,0,83,.4L21.41,30.1a11.25,11.25,0,0,0-2.11,1.28l-.15.13a10.85,10.85,0,0,0-3.8,6.06L.2,104a12.73,12.73,0,0,0,2.22,9.7l28.42,35.15L45,166.45a14.86,14.86,0,0,0,8,4.1,12.93,12.93,0,0,0,1.29.14h67.87q.68,0,1.35-.06a10.6,10.6,0,0,0,7.94-4.18l31.78-39.31,10.84-13.41a13,13,0,0,0,2-4.26c.05-.19.1-.38.15-.57a14,14,0,0,0,.34-2.3A14.56,14.56,0,0,0,176.55,104ZM101.19,65.29,110,48.49h3.21v0a5,5,0,0,1,2.27.56,5,5,0,0,1,2.08,6.76L110,70a5,5,0,1,1-8.84-4.68ZM84.76,115.69,77.5,129.4,71.8,140,27,48.71h40.5l16.2,29.92L78.22,89l-.21.11L61.58,58.71H43.67l28.25,59.85,4-7.56a5,5,0,1,1,8.84,4.68Zm5.41-13.89a5,5,0,0,1-4.42-7.34l7.49-14.14A5,5,0,1,1,102.08,85L94.59,99.14A5,5,0,0,1,90.17,101.8Zm17.7,32.34-3.61,7.23a5,5,0,0,1-8.95-4.47l3.61-7.23a5,5,0,0,1,8.95,4.46Zm15-29.64-7.14,14.32a5,5,0,0,1-8.95-4.46L113.87,100a5,5,0,0,1,8.95,4.47ZM137.72,75l-7.14,14.32a5,5,0,0,1-8.95-4.47l7.14-14.32A5,5,0,0,1,137.72,75Zm7.39-14.46a5,5,0,0,1-9.3-1.27h-6a5,5,0,0,1,0-10h20.88Z" />
+        </g>
+    </g>
+</svg>

+ 30 - 0
server/api/resources/providerLogos/kubevirt-42.svg

@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 784.48 170.69">
+    <g id="Layer_2" data-name="Layer 2">
+        <g id="svg10488" fill="#616870">
+            <path d="M301.72,43.54q-4.43,4.86-10,10.8T280.05,66.5Q274,72.72,268,78.72t-11.3,11.15a127.55,127.55,0,0,1,13,10.58q6.86,6.29,13.44,13.44t12.37,14.59a123.12,123.12,0,0,1,9.65,14.16h-16.3A140.78,140.78,0,0,0,279,129.13q-5.58-6.79-11.8-13T254.6,104.61a110.77,110.77,0,0,0-12.37-9v47H228.36V43.54h13.87V87.3q5-4.72,11-10.65t11.87-11.94q5.86-6,11.08-11.51T285,43.54Z" />
+            <path d="M373.93,140.5q-4.58,1.15-12.08,2.43a103.92,103.92,0,0,1-17.37,1.29,36.84,36.84,0,0,1-14.44-2.5,23.28,23.28,0,0,1-9.44-7.08,28.71,28.71,0,0,1-5.15-10.8,56.18,56.18,0,0,1-1.57-13.8V68.28h13.3v38.9q0,13.59,4.29,19.45t14.44,5.86q2.14,0,4.43-.14t4.29-.36q2-.22,3.65-.43a10.68,10.68,0,0,0,2.36-.5V68.28h13.3Z" />
+            <path d="M409.25,71.57a36,36,0,0,1,7.36-3.29A34.56,34.56,0,0,1,428,66.57a33.72,33.72,0,0,1,14.23,2.86,29.59,29.59,0,0,1,10.51,8,35.3,35.3,0,0,1,6.51,12.3,53,53,0,0,1,2.22,15.73,46.93,46.93,0,0,1-2.65,16.23,34.15,34.15,0,0,1-7.51,12.23,33.06,33.06,0,0,1-11.73,7.72,41.7,41.7,0,0,1-15.44,2.72,93.57,93.57,0,0,1-16.45-1.29q-7.15-1.29-11.73-2.57V34l13.3-2.29Zm0,59.49a42.8,42.8,0,0,0,5.65,1.07,68.31,68.31,0,0,0,9.08.5q10.73,0,17.16-7.08t6.44-20.09a48.13,48.13,0,0,0-1.14-10.73,24.19,24.19,0,0,0-3.72-8.65,18,18,0,0,0-6.65-5.72,21.41,21.41,0,0,0-9.8-2.07,26.38,26.38,0,0,0-10,1.86,27.38,27.38,0,0,0-7,3.86Z" />
+            <path d="M475.17,105.61A47.44,47.44,0,0,1,478,88.37a36,36,0,0,1,7.58-12.23,30.81,30.81,0,0,1,10.87-7.29,34,34,0,0,1,12.58-2.43q15,0,23,9.37t8,28.53v2.22A20.53,20.53,0,0,1,540,109H489q.86,11.58,6.72,17.59t18.3,6a48.73,48.73,0,0,0,11.8-1.22,42.34,42.34,0,0,0,7.22-2.36l1.86,11.15a39.55,39.55,0,0,1-8.51,2.72,60.56,60.56,0,0,1-13.8,1.43,43.79,43.79,0,0,1-16.8-2.93,31.32,31.32,0,0,1-11.65-8.08,32.93,32.93,0,0,1-6.79-12.23A51.65,51.65,0,0,1,475.17,105.61Zm51.05-7.29q.14-9-4.5-14.8t-12.8-5.79a17.55,17.55,0,0,0-8.08,1.79,19.06,19.06,0,0,0-5.93,4.65,21.39,21.39,0,0,0-3.79,6.58,32.4,32.4,0,0,0-1.79,7.58Z" />
+            <path d="M639.34,43.54Q633.9,59.28,629,72.65T619.32,98q-4.72,12-9.37,23t-9.51,21.66h-13q-4.86-10.73-9.51-21.66t-9.44-23q-4.79-12-9.8-25.38t-10.3-29.1h15.3q7.72,22.6,15.16,43.47t15.3,39.18Q602,108,609.45,87.09t15-43.54Z" />
+            <path d="M657.93,54.84a8.53,8.53,0,0,1-6.08-2.36,8.33,8.33,0,0,1-2.5-6.36,8.33,8.33,0,0,1,2.5-6.36,9,9,0,0,1,12.16,0,8.34,8.34,0,0,1,2.5,6.36,8.33,8.33,0,0,1-2.5,6.36A8.54,8.54,0,0,1,657.93,54.84Zm6.72,87.8h-13.3V68.28h13.3Z" />
+            <path d="M714.12,66.71q1.72,0,3.93.21t4.36.57q2.14.36,3.93.71a24.47,24.47,0,0,1,2.65.64l-2.29,11.58a45.24,45.24,0,0,0-5.22-1.36,45.9,45.9,0,0,0-9.37-.79,35,35,0,0,0-7.36.79q-3.65.79-4.79,1.07v62.49h-13.3V71.43a90.25,90.25,0,0,1,11.73-3.22A75.32,75.32,0,0,1,714.12,66.71Z" />
+            <path d="M753.45,68.28h28.17V79.44H753.45v34.32a41.24,41.24,0,0,0,.86,9.22,13.83,13.83,0,0,0,2.57,5.72,9.25,9.25,0,0,0,4.29,2.93,19,19,0,0,0,6,.86,28.21,28.21,0,0,0,9.65-1.36q3.65-1.36,5.08-1.93l2.57,11a49.4,49.4,0,0,1-7,2.5,39.86,39.86,0,0,1-11.44,1.5,34.67,34.67,0,0,1-12.51-1.93,18.22,18.22,0,0,1-7.94-5.79,23.16,23.16,0,0,1-4.22-9.51,62.6,62.6,0,0,1-1.22-13.08V47.55l13.3-2.29Z" />
+            <path class="cls-1" d="M158.05,32.94l-.21-.22.21.22Z" />
+            <path class="cls-1" d="M159.5,34.62a13,13,0,0,0-1.45-1.68h0A13,13,0,0,1,159.5,34.62Z" />
+            <path class="cls-1" d="M154.73,30.5,93.12,1q-.3-.15-.61-.28.31.12.61.28Z" />
+            <path class="cls-1" d="M83,.4,21.41,30.1a11.25,11.25,0,0,0-2.11,1.28,11.25,11.25,0,0,1,2.11-1.28Z" />
+            <path class="cls-1" d="M90,.11A15.6,15.6,0,0,0,88.07,0a28.84,28.84,0,0,0-3.81.17A28.89,28.89,0,0,1,88.07,0,15.6,15.6,0,0,1,90,.11Z" />
+            <path class="cls-1" d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,11.55,11.55,0,0,1,1,2.3Z" />
+            <path class="cls-1" d="M90,.11a11.44,11.44,0,0,1,1.29.23A11.44,11.44,0,0,0,90,.11Z" />
+            <path class="cls-1" d="M91.24.34a9.26,9.26,0,0,1,1.27.4A9.26,9.26,0,0,0,91.24.34Z" />
+            <path class="cls-1" d="M163.28,127.14l10.84-13.41a13.44,13.44,0,0,0,1.29-2.23,13.44,13.44,0,0,1-1.29,2.23Z" />
+            <path class="cls-1" d="M54.33,170.69h0a12.93,12.93,0,0,1-1.29-.14A12.92,12.92,0,0,0,54.33,170.69Z" />
+            <path class="cls-1" d="M154.73,30.5a14.72,14.72,0,0,1,2.15,1.4A14.72,14.72,0,0,0,154.73,30.5Z" />
+            <path class="cls-1" d="M176.28,108.9c0,.19-.1.38-.15.57C176.19,109.28,176.24,109.09,176.28,108.9Z" />
+            <path class="cls-1" d="M19.3,31.38l-.15.13h0Z" />
+            <path class="cls-1" d="M19.14,31.51h0a10.85,10.85,0,0,0-3.8,6.06L.2,104,15.35,37.57A10.85,10.85,0,0,1,19.14,31.51Z" />
+            <path class="cls-1" d="M.1,107.86a12.87,12.87,0,0,0,2.32,5.86l28.42,35.15L2.42,113.73A12.87,12.87,0,0,1,.1,107.86Z" />
+            <path d="M176.55,104,161.19,38a11.55,11.55,0,0,0-1-2.3,12.2,12.2,0,0,0-.68-1.05,13,13,0,0,0-1.45-1.68l-.21-.22q-.46-.43-1-.83a14.72,14.72,0,0,0-2.15-1.4L93.12,1q-.3-.15-.61-.28a9.26,9.26,0,0,0-1.27-.4A11.44,11.44,0,0,0,90,.11,15.6,15.6,0,0,0,88.07,0a28.89,28.89,0,0,0-3.81.17A11.32,11.32,0,0,0,83,.4L21.41,30.1a11.25,11.25,0,0,0-2.11,1.28l-.15.13a10.85,10.85,0,0,0-3.8,6.06L.2,104a12.73,12.73,0,0,0,2.22,9.7l28.42,35.15L45,166.45a14.86,14.86,0,0,0,8,4.1,12.93,12.93,0,0,0,1.29.14h67.87q.68,0,1.35-.06a10.6,10.6,0,0,0,7.94-4.18l31.78-39.31,10.84-13.41a13,13,0,0,0,2-4.26c.05-.19.1-.38.15-.57a14,14,0,0,0,.34-2.3A14.56,14.56,0,0,0,176.55,104ZM101.19,65.29,110,48.49h3.21v0a5,5,0,0,1,2.27.56,5,5,0,0,1,2.08,6.76L110,70a5,5,0,1,1-8.84-4.68ZM84.76,115.69,77.5,129.4,71.8,140,27,48.71h40.5l16.2,29.92L78.22,89l-.21.11L61.58,58.71H43.67l28.25,59.85,4-7.56a5,5,0,1,1,8.84,4.68Zm5.41-13.89a5,5,0,0,1-4.42-7.34l7.49-14.14A5,5,0,1,1,102.08,85L94.59,99.14A5,5,0,0,1,90.17,101.8Zm17.7,32.34-3.61,7.23a5,5,0,0,1-8.95-4.47l3.61-7.23a5,5,0,0,1,8.95,4.46Zm15-29.64-7.14,14.32a5,5,0,0,1-8.95-4.46L113.87,100a5,5,0,0,1,8.95,4.47ZM137.72,75l-7.14,14.32a5,5,0,0,1-8.95-4.47l7.14-14.32A5,5,0,0,1,137.72,75Zm7.39-14.46a5,5,0,0,1-9.3-1.27h-6a5,5,0,0,1,0-10h20.88Z" />
+        </g>
+    </g>
+</svg>

+ 52 - 0
server/api/resources/providerLogos/kubevirt-64.svg

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="192px" height="64px" viewBox="0 0 158 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
+    <title>KubeVirt_logo_color</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="header-default" transform="translate(-40.000000, -30.000000)">
+            <g id="Group-16">
+                <g id="KubeVirt_logo_color" transform="translate(40.000000, 30.000000)">
+                    <g id="Layer_2_1_">
+                        <g id="svg10488">
+                            <path d="M61.14,9.7 C60.54,10.34 59.88,11.06 59.14,11.86 C58.4,12.66 57.62,13.46 56.8,14.3 C56,15.12 55.2,15.94 54.4,16.74 C53.6,17.54 52.84,18.28 52.14,18.98 C53.06,19.62 53.92,20.34 54.74,21.1 C55.66,21.94 56.56,22.84 57.42,23.78 C58.3,24.74 59.12,25.7 59.9,26.7 C60.6,27.6 61.26,28.54 61.82,29.54 L58.56,29.54 C57.96,28.6 57.3,27.7 56.58,26.84 C55.84,25.94 55.04,25.06 54.22,24.24 C53.4,23.42 52.56,22.64 51.7,21.94 C50.92,21.28 50.1,20.68 49.22,20.14 L49.22,29.54 L46.44,29.54 L46.44,9.7 L49.22,9.7 L49.22,18.46 C49.88,17.84 50.62,17.12 51.42,16.32 C52.22,15.52 53.02,14.74 53.8,13.94 C54.58,13.14 55.32,12.38 56.02,11.64 C56.72,10.9 57.3,10.26 57.78,9.7 L61.14,9.7 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M75.58,29.1 C74.96,29.26 74.16,29.42 73.16,29.58 C72.02,29.76 70.84,29.84 69.68,29.84 C68.7,29.86 67.72,29.7 66.8,29.34 C66.06,29.04 65.4,28.56 64.92,27.92 C64.42,27.28 64.08,26.54 63.9,25.76 C63.68,24.86 63.58,23.92 63.58,23 L63.58,14.66 L66.24,14.66 L66.24,22.44 C66.24,24.26 66.52,25.54 67.1,26.34 C67.68,27.12 68.64,27.52 69.98,27.52 C70.26,27.52 70.56,27.52 70.86,27.5 C71.16,27.48 71.46,27.46 71.72,27.42 C71.98,27.4 72.24,27.36 72.44,27.34 C72.6,27.32 72.76,27.3 72.92,27.24 L72.92,14.66 L75.58,14.66 L75.58,29.1 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M82.64,15.32 C83.1,15.04 83.6,14.82 84.12,14.66 C84.86,14.42 85.62,14.3 86.4,14.32 C87.38,14.3 88.36,14.5 89.24,14.9 C90.06,15.26 90.78,15.82 91.34,16.5 C91.94,17.22 92.38,18.06 92.64,18.96 C92.94,19.98 93.1,21.04 93.08,22.1 C93.1,23.2 92.92,24.3 92.56,25.34 C92.24,26.26 91.72,27.08 91.06,27.78 C90.4,28.46 89.6,28.98 88.72,29.32 C87.74,29.7 86.68,29.88 85.64,29.86 C84.54,29.88 83.44,29.78 82.34,29.6 C81.38,29.42 80.6,29.26 80,29.08 L80,7.8 L82.66,7.34 L82.64,15.32 Z M82.64,27.22 C83.02,27.32 83.38,27.38 83.76,27.44 C84.36,27.52 84.96,27.54 85.58,27.54 C87.02,27.54 88.16,27.06 89.02,26.12 C89.88,25.18 90.3,23.84 90.3,22.1 C90.3,21.38 90.22,20.66 90.08,19.96 C89.94,19.34 89.7,18.76 89.34,18.22 C89,17.74 88.54,17.34 88.02,17.08 C87.4,16.78 86.74,16.64 86.06,16.66 C85.38,16.66 84.7,16.78 84.06,17.04 C83.56,17.22 83.08,17.48 82.66,17.82 L82.64,27.22 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M95.84,22.12 C95.82,20.94 96,19.78 96.4,18.68 C96.74,17.78 97.26,16.94 97.92,16.24 C98.54,15.6 99.28,15.1 100.1,14.78 C100.9,14.46 101.76,14.3 102.62,14.3 C104.62,14.3 106.16,14.92 107.22,16.18 C108.28,17.42 108.82,19.34 108.82,21.88 L108.82,22.32 C108.82,22.48 108.82,22.64 108.82,22.82 L98.62,22.82 C98.74,24.36 99.18,25.54 99.96,26.34 C100.74,27.14 101.96,27.54 103.62,27.54 C104.42,27.56 105.2,27.48 105.98,27.3 C106.48,27.18 106.96,27.02 107.42,26.82 L107.8,29.04 C107.26,29.28 106.68,29.46 106.1,29.58 C105.2,29.78 104.26,29.88 103.34,29.86 C102.2,29.88 101.06,29.68 99.98,29.28 C99.1,28.92 98.3,28.38 97.66,27.66 C97.04,26.96 96.58,26.12 96.3,25.22 C95.96,24.22 95.82,23.16 95.84,22.12 Z M106.04,20.66 C106.06,19.46 105.76,18.48 105.14,17.7 C104.52,16.92 103.66,16.54 102.58,16.54 C102.02,16.52 101.46,16.66 100.96,16.9 C100.5,17.12 100.1,17.44 99.78,17.84 C99.46,18.22 99.2,18.68 99.02,19.16 C98.84,19.64 98.72,20.16 98.66,20.68 L106.04,20.66 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M128.66,9.7 C127.94,11.8 127.24,13.74 126.6,15.52 C125.94,17.3 125.3,19 124.66,20.6 C124.04,22.2 123.4,23.74 122.78,25.2 C122.16,26.66 121.52,28.12 120.88,29.54 L118.28,29.54 C117.64,28.1 117,26.66 116.38,25.2 C115.76,23.74 115.14,22.2 114.5,20.6 C113.86,19 113.2,17.3 112.54,15.52 C111.88,13.74 111.18,11.8 110.48,9.7 L113.54,9.7 C114.56,12.72 115.58,15.62 116.58,18.4 C117.58,21.18 118.6,23.8 119.64,26.24 C120.68,23.82 121.7,21.22 122.7,18.42 C123.7,15.62 124.7,12.72 125.7,9.72 L128.66,9.7 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M132.38,11.96 C131.92,11.96 131.5,11.8 131.16,11.48 C130.82,11.14 130.64,10.68 130.66,10.2 C130.64,9.72 130.82,9.26 131.16,8.92 C131.84,8.28 132.9,8.28 133.6,8.92 C133.94,9.26 134.12,9.72 134.1,10.2 C134.12,10.68 133.94,11.14 133.6,11.48 C133.28,11.8 132.84,11.98 132.38,11.96 Z M133.72,29.52 L131.06,29.52 L131.06,14.66 L133.72,14.66 L133.72,29.52 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M143.62,14.34 C143.84,14.34 144.12,14.36 144.4,14.38 C144.7,14.4 144.98,14.44 145.28,14.5 C145.56,14.54 145.82,14.6 146.06,14.64 C146.24,14.68 146.42,14.72 146.6,14.76 L146.14,17.08 C145.2,16.78 144.22,16.62 143.22,16.66 C142.72,16.66 142.24,16.72 141.74,16.82 C141.26,16.92 140.94,17 140.78,17.04 L140.78,29.54 L138.12,29.54 L138.12,15.28 C138.88,15.02 139.68,14.8 140.46,14.64 C141.52,14.44 142.56,14.34 143.62,14.34 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                            <path d="M151.5,14.66 L157.14,14.66 L157.14,16.9 L151.5,16.9 L151.5,23.76 C151.48,24.38 151.54,25 151.68,25.6 C151.76,26.02 151.94,26.4 152.2,26.74 C152.42,27.02 152.72,27.22 153.06,27.32 C153.44,27.44 153.86,27.5 154.26,27.5 C154.92,27.52 155.56,27.44 156.2,27.22 C156.68,27.04 157.02,26.92 157.22,26.84 L157.74,29.04 C157.28,29.24 156.82,29.4 156.34,29.54 C155.6,29.76 154.82,29.86 154.06,29.84 C153.2,29.86 152.36,29.74 151.56,29.46 C150.94,29.22 150.38,28.82 149.98,28.3 C149.56,27.74 149.26,27.08 149.14,26.4 C148.96,25.54 148.88,24.66 148.9,23.78 L148.9,10.5 L151.56,10.04 L151.5,14.66 Z" id="Shape" fill="black" fill-rule="nonzero"></path>
+                        </g>
+                    </g>
+                    <path d="M0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.58 Z" id="Shape"></path>
+                    <path d="M0.85,22.82 C0.8,22.6276923 0.8,22.4738462 0.8,22.32 C0.8,22.4738462 0.8,22.6276923 0.85,22.82 Z" id="Shape"></path>
+                    <path d="M11.56,35.24 C11.3835294,35.19 11.2364706,35.14 11.06,35.04 C11.2364706,35.09 11.3835294,35.19 11.56,35.24 Z" id="Shape"></path>
+                    <path d="M18.8,1.02 C18.9538462,1.07 19.1461538,1.07 19.3,1.12 C19.1461538,1.07 18.9538462,1.07 18.8,1.02 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 C31.9304762,7.24285714 32.0971429,7.42142857 32.24,7.6 C32.0971429,7.42142857 31.9304762,7.24285714 31.74,7.1 Z" id="Shape"></path>
+                    <path d="M36.09,22.78 C36.09,22.88 36.04,22.98 36.04,23.08 C36.04,22.98 36.04,22.88 36.09,22.78 Z" id="Shape"></path>
+                    <path d="M19.04,1.06 C19.1938462,1.11 19.3861538,1.16 19.54,1.26 C19.3861538,1.21 19.2323077,1.11 19.04,1.06 Z" id="Shape"></path>
+                    <path d="M31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.34,1.16 19.38,1.18 19.42,1.2 L31.74,7.1 Z" id="Shape"></path>
+                    <path d="M18.8,1.05 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.1 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.05 Z" id="Shape"></path>
+                    <path d="M17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 C4.8,7.18 4.94,7.1 5.08,7.02 L17.4,1.08 Z" id="Shape"></path>
+                    <path d="M18.46,35.2 L11.66,35.2 C11.58,35.2 11.48,35.2 11.4,35.15 C11.48,35.2 11.58,35.2 11.66,35.2 L25.24,35.2 C25.4,35.2 25.58,35.15 25.74,35.1 C25.58,35.15 25.4,35.2 25.24,35.2 L18.46,35.2 Z" id="Shape"></path>
+                    <path d="M36.12,21.8 L33.04,8.6 C33.02,8.52 32.98,8.44 32.96,8.36 C33,8.44 33.02,8.52 33.04,8.6 L36.12,21.8 Z" id="Shape"></path>
+                    <path d="M33.46,26.42 L35.62,23.74 C35.72,23.6 35.8,23.46 35.88,23.3 C35.8,23.46 35.72,23.6 35.62,23.74 L33.46,26.42 Z" id="Shape"></path>
+                    <path d="M3.88,8.52 L0.84,21.8 L3.88,8.52 C3.98,8.04 4.26,7.62 4.64,7.3 L4.66,7.28 C4.26,7.58 3.98,8.02 3.88,8.52 Z" id="Shape"></path>
+                    <path d="M11.02,20.16 L6.22,10.36 L14.32,10.36 L17.56,16.34 L16.44,18.4 L16.4,18.42 L13.12,12.34 L9.54,12.34 L15.18,24.3 L15.98,22.78 C16.24,22.3 16.84,22.1 17.34,22.36 C17.82,22.62 18.02,23.22 17.76,23.72 L16.3,26.46 L15.18,28.54 L18.46,35.12 L21.56,29 C21.24,29.44 20.6,29.54 20.16,29.22 C19.76,28.94 19.64,28.4 19.86,27.98 L20.58,26.54 C20.86,26.06 21.46,25.9 21.94,26.18 C22.36,26.42 22.54,26.94 22.38,27.4 L23.84,24.52 C23.52,24.96 22.88,25.06 22.44,24.72 C22.06,24.44 21.92,23.92 22.14,23.48 L23.58,20.62 C23.82,20.12 24.42,19.92 24.92,20.18 C25.42,20.44 25.62,21.02 25.36,21.52 L25,22.22 L26.84,18.58 C26.52,19.04 25.9,19.16 25.46,18.84 C25.04,18.56 24.9,18.02 25.12,17.58 L26.54,14.72 C26.78,14.22 27.38,14.02 27.88,14.28 C28.38,14.52 28.58,15.12 28.32,15.62 L27.52,17.24 L29.8,12.74 C29.52,13.22 28.92,13.4 28.44,13.12 C28.2,12.98 28.02,12.74 27.96,12.46 L26.76,12.46 C26.2,12.46 25.76,12.02 25.76,11.46 C25.76,10.9 26.2,10.46 26.76,10.46 L30.94,10.46 L29.94,12.44 L32.4,7.58 C32.32,7.5 32.24,7.44 32.16,7.38 C32.02,7.28 31.88,7.18 31.74,7.1 L19.42,1.2 C19.38,1.18 19.34,1.16 19.3,1.14 C19.22,1.1 19.14,1.08 19.04,1.06 C18.96,1.04 18.88,1.02 18.8,1.02 C18.68,1 18.54,1 18.42,1 C18.16,1 17.92,1 17.66,1.04 C17.58,1.06 17.5,1.06 17.4,1.08 L5.08,7.02 C4.94,7.08 4.78,7.18 4.66,7.28 L4.64,7.3 L11.02,20.16 Z M21.04,13.66 L22.8,10.3 L23.44,10.3 C23.6,10.3 23.76,10.34 23.9,10.42 C24.38,10.68 24.58,11.28 24.32,11.78 C24.32,11.78 24.32,11.78 24.32,11.78 L22.8,14.6 C22.54,15.08 21.94,15.28 21.44,15.02 C20.96,14.76 20.78,14.16 21.04,13.66 Z M17.96,19.5 L19.46,16.68 C19.72,16.2 20.32,16 20.82,16.26 C21.32,16.52 21.5,17.12 21.24,17.62 L19.74,20.44 C19.48,20.92 18.88,21.12 18.38,20.86 C17.88,20.6 17.7,19.98 17.96,19.5 Z" id="Shape" fill="#00AAB2" fill-rule="nonzero"></path>
+                    <path d="M3.08,8.34 L0.06,21.62 L0.06,21.64 L0.06,21.66 C-0.1,22.56 0.12,23.46 0.64,24.2 L0.66,24.22 L0.68,24.24 L9.18,34.8 L9.2,34.84 L9.24,34.86 C9.88,35.5 10.72,35.88 11.62,35.94 L25.24,35.94 C26.3,35.94 27.18,35.52 27.74,34.78 L36.26,24.24 L36.28,24.22 L36.3,24.2 C36.82,23.48 37.04,22.58 36.92,21.7 L36.9,21.62 L33.82,8.4 L33.82,8.36 L33.82,8.34 C33.54,7.5 32.94,6.78 32.14,6.38 L32.12,6.38 L32.1,6.38 L19.78,0.48 C19.36,0.28 18.88,0.18 18.42,0.2 C18.02,0.18 17.62,0.22 17.22,0.3 L17.14,0.32 L17.06,0.36 L4.74,6.3 C3.9,6.68 3.3,7.44 3.08,8.34 Z M5.1,7.02 L17.4,1.08 C17.48,1.06 17.56,1.04 17.64,1.04 C17.9,1 18.16,1 18.42,1 C18.54,1 18.68,1 18.8,1.02 C18.88,1.04 18.98,1.04 19.06,1.06 C19.14,1.08 19.24,1.1 19.32,1.14 C19.36,1.16 19.4,1.18 19.44,1.2 L31.76,7.1 C31.92,7.18 32.06,7.28 32.18,7.38 C32.26,7.44 32.34,7.5 32.42,7.58 C32.64,7.8 32.84,8.06 32.96,8.34 C33,8.42 33.02,8.5 33.04,8.58 L36.12,21.8 C36.16,22.12 36.14,22.46 36.06,22.78 C36.06,22.82 36.04,22.86 36.04,22.9 C35.96,23.2 35.82,23.5 35.64,23.76 L33.48,26.44 L27.12,34.3 C26.8,34.74 26.3,35.02 25.76,35.1 C25.6,35.12 25.42,35.14 25.26,35.14 L11.66,35.14 C11.58,35.14 11.48,35.12 11.4,35.12 C11.28,35.1 11.18,35.08 11.06,35.04 C10.58,34.9 10.14,34.64 9.78,34.3 L6.94,30.78 L1.28,23.74 C1.04,23.4 0.88,23 0.82,22.56 C0.8,22.48 0.8,22.4 0.8,22.32 C0.8,22.14 0.8,21.98 0.84,21.8 L3.88,8.52 C4,8.02 4.28,7.6 4.68,7.28 C4.8,7.18 4.94,7.08 5.1,7.02 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M18.46,35.14 L15.18,28.56 L15.14,28.62 L11.02,20.16 L4.62,7.3 C4.24,7.6 3.96,8.04 3.86,8.52 L0.84,21.8 C0.8,21.98 0.8,22.14 0.8,22.32 C0.8,22.4 0.8,22.48 0.82,22.58 C0.88,23 1.04,23.4 1.28,23.76 L6.96,30.8 L9.8,34.28 C10.16,34.64 10.6,34.88 11.06,35.02 C11.16,35.06 11.28,35.08 11.4,35.1 C11.48,35.12 11.58,35.12 11.66,35.12 L18.46,35.12 L18.46,35.14 Z" id="Shape" fill="#00797F" fill-rule="nonzero"></path>
+                    <path d="M29.82,12.7 L27.54,17.2 L26.92,18.44 C26.9,18.48 26.88,18.52 26.86,18.54 L25.02,22.16 L23.94,24.32 C23.92,24.36 23.88,24.42 23.86,24.46 L22.4,27.36 C22.4,27.38 22.4,27.38 22.38,27.4 L21.66,28.84 C21.64,28.88 21.6,28.94 21.58,28.98 L18.48,35.1 L25.26,35.1 C25.42,35.1 25.6,35.08 25.76,35.06 C26.3,34.98 26.78,34.7 27.12,34.26 L33.48,26.4 L35.64,23.72 C35.82,23.46 35.96,23.18 36.04,22.86 C36.06,22.82 36.06,22.78 36.06,22.74 C36.14,22.42 36.16,22.1 36.12,21.76 L33.06,8.56 C33.04,8.48 33,8.4 32.98,8.32 C32.86,8.04 32.66,7.78 32.44,7.56 L29.98,12.4 L29.82,12.7 Z" id="Shape" fill="#3ACCC5" fill-rule="nonzero"></path>
+                    <path d="M18.36,20.84 C18.84,21.1 19.46,20.92 19.72,20.42 C19.72,20.42 19.72,20.42 19.72,20.42 L21.22,17.6 C21.48,17.12 21.3,16.5 20.8,16.24 C20.32,15.98 19.7,16.16 19.44,16.66 L17.94,19.48 C17.7,19.98 17.88,20.58 18.36,20.84 C18.36,20.84 18.36,20.84 18.36,20.84 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M22.38,27.42 C22.38,27.4 22.38,27.4 22.4,27.38 C22.6,26.86 22.34,26.28 21.82,26.1 C21.36,25.92 20.84,26.12 20.6,26.54 L19.88,27.98 C19.64,28.48 19.84,29.08 20.34,29.32 C20.84,29.56 21.42,29.36 21.68,28.88 L22.38,27.42 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M15.18,28.56 L16.3,26.48 L17.76,23.74 C18.02,23.26 17.84,22.64 17.34,22.38 C16.86,22.12 16.24,22.3 15.98,22.8 L15.18,24.32 L9.54,12.34 L13.12,12.34 L16.4,18.42 L16.44,18.4 L17.54,16.34 L14.3,10.34 L6.2,10.34 L11,20.14 L15.16,28.6 L15.18,28.56 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M29.96,12.44 L30.96,10.46 L26.78,10.46 C26.22,10.46 25.78,10.9 25.78,11.46 C25.78,12.02 26.22,12.46 26.78,12.46 L27.98,12.46 C28.1,13 28.64,13.34 29.18,13.22 C29.46,13.16 29.7,12.98 29.84,12.74 L29.86,12.72 L29.96,12.44 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M27.54,17.22 L28.34,15.6 C28.6,15.1 28.4,14.5 27.9,14.26 C27.4,14.02 26.8,14.2 26.56,14.7 C26.56,14.7 26.56,14.7 26.56,14.72 L25.14,17.58 C24.9,18.08 25.1,18.68 25.6,18.92 C26.1,19.16 26.68,18.96 26.94,18.48 L27.54,17.22 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M25.02,22.2 L25.38,21.5 C25.62,21 25.42,20.4 24.94,20.16 C24.46,19.92 23.84,20.12 23.6,20.6 L22.18,23.46 C21.94,23.96 22.14,24.56 22.64,24.8 C23.14,25.04 23.72,24.84 23.98,24.36 L25.02,22.2 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                    <path d="M21.46,15.02 C21.94,15.28 22.54,15.1 22.8,14.6 L24.3,11.78 C24.56,11.3 24.38,10.68 23.88,10.42 C23.88,10.42 23.88,10.42 23.88,10.42 C23.74,10.34 23.58,10.3 23.42,10.3 L22.8,10.3 L21.04,13.66 C20.8,14.16 20.98,14.74 21.46,15.02 Z" id="Shape" fill="#FFFFFF" fill-rule="nonzero"></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 1 - 0
src/@types/Field.ts

@@ -48,6 +48,7 @@ export type Field = {
   properties?: Field[],
   required?: boolean,
   useTextArea?: boolean,
+  useFile?: boolean,
   readOnly?: boolean,
   title?: string,
   description?: string,

+ 3 - 3
src/components/atoms/EndpointLogos/EndpointLogos.tsx

@@ -31,11 +31,11 @@ const Logo = styled.div<any>`
 const widthHeights = [
   { w: 80, h: 32 },
   { w: 105, h: 42 },
-  { w: 192, h: 128 },
-  { w: 192, h: 64 },
+  { w: 185, h: 128 },
+  { w: 185, h: 64 },
 ]
 const PROVIDER_LOGOS = [
-  'azure', 'openstack', 'opc', 'oracle_vm', 'vmware_vsphere', 'aws', 'oci', 'hyper-v', 'scvmm',
+  'azure', 'openstack', 'opc', 'oracle_vm', 'vmware_vsphere', 'aws', 'oci', 'hyper-v', 'scvmm', 'kubevirt',
 ]
 type Props = {
   endpoint?: string | null,

+ 155 - 0
src/components/atoms/FileInput/FileInput.tsx

@@ -0,0 +1,155 @@
+/*
+Copyright (C) 2021  Cloudbase Solutions SRL
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+You should have received a copy of the GNU Affero General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import React from 'react'
+import { observer } from 'mobx-react'
+import styled, { css } from 'styled-components'
+import Palette from '../../styleUtils/Palette'
+import StyleProps from '../../styleUtils/StyleProps'
+
+import requiredImage from './images/required.svg'
+import FileUtils from '../../../utils/FileUtils'
+
+const getInputWidth = (props: any) => {
+  if (props.width) {
+    return typeof props.width === 'number' ? `${props.width - 8}px` : props.width
+  }
+
+  if (props.large) {
+    return `${StyleProps.inputSizes.large.width - 8}px`
+  }
+
+  return `${StyleProps.inputSizes.regular.width - 8}px`
+}
+
+const Wrapper = styled.div<any>`
+  position: relative;
+  ${props => StyleProps.exactWidth(getInputWidth(props))}
+  height: ${props => props.height || `${StyleProps.inputSizes.regular.height}px`};
+  border-radius: ${StyleProps.borderRadius};
+  border: 1px solid ${props => (props.highlight ? Palette.alert : 'transparent')};
+  ${props => (props.highlight ? css`padding-left: 8px;` : '')}
+`
+const Required = styled.div<any>`
+  position: absolute;
+  width: 8px;
+  height: 8px;
+  right: ${props => (props.highlight ? -15 : -22)}px;
+  top: 11px;
+  background: url('${requiredImage}') center no-repeat;
+`
+const Prompt = styled.div<any>`
+  color: ${Palette.primary};
+  flex-shrink: 0;
+  margin-right: 4px;
+  ${props => (!props.disabled ? css`
+    cursor: pointer;
+    :hover {
+      text-decoration: underline;
+    }
+  ` : '')}
+`
+const FileName = styled.div<any>`
+  max-width: 124px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  margin-right: 16px;
+  white-space: nowrap;
+`
+const Content = styled.div<any>`
+  display: flex;
+  height: 100%;
+  align-items: center;
+  ${props => (props.disabledLoading
+    ? StyleProps.animations.disabledLoading
+    : props.disabled ? css`opacity: 0.6;` : '')}
+`
+const FakeFileInput = styled.input`
+  position: absolute;
+  opacity: 0;
+  top: -99999px;
+`
+type Props = {
+  required?: boolean,
+  disabledLoading?: boolean,
+  disabled?: boolean,
+  width?: string | number,
+  large?: boolean,
+  style?: any,
+  className?: string,
+  highlight?: boolean,
+  onUpload?: (content: string | null) => void,
+}
+type State = {
+  fileName: string | null
+}
+@observer
+class FileInput extends React.Component<Props, State> {
+  state = {
+    fileName: null,
+  }
+
+  inputRef: HTMLElement | null | undefined
+
+  handleFileInputClick() {
+    if (this.props.disabled || this.props.disabledLoading || !this.inputRef) {
+      return
+    }
+    this.inputRef.click()
+  }
+
+  async handleFileUpload(files: FileList | null) {
+    if (!files?.length) {
+      return
+    }
+    const fileName = files[0].name
+    const content = await FileUtils.readTextFromFirstFile(files)
+    this.setState({ fileName })
+    if (this.props.onUpload) {
+      this.props.onUpload(content)
+    }
+  }
+
+  render() {
+    return (
+      <Wrapper
+        width={this.props.width}
+        large={this.props.large}
+        style={this.props.style}
+        className={this.props.className}
+        highlight={this.props.highlight}
+      >
+        <Content
+          disabledLoading={this.props.disabledLoading}
+          disabled={this.props.disabled}
+        >
+          {this.state.fileName ? <FileName>{this.state.fileName}</FileName> : null}
+          <Prompt
+            onClick={() => { this.handleFileInputClick() }}
+            disabled={this.props.disabled || this.props.disabledLoading}
+          >Choose File ...
+          </Prompt>
+        </Content>
+        <FakeFileInput
+          type="file"
+          ref={r => { this.inputRef = r }}
+          onChange={e => { this.handleFileUpload(e.target.files) }}
+        />
+        {this.props.required ? <Required highlight={this.props.highlight} /> : null}
+      </Wrapper>
+    )
+  }
+}
+
+export default FileInput

+ 17 - 0
src/components/atoms/FileInput/images/required.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="8px" height="10px" viewBox="0 0 8 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>Icon-Star</title>
+    <desc>Created with Sketch.</desc>
+    <g id="Coriolis-Migrations" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
+        <g id="EP/New-Endpoint/OpenStack/01-Copy-7" transform="translate(-304.000000, -523.000000)" stroke="#0044CA" stroke-width="1.5">
+            <g id="Form/Input-with-label-Copy-4" transform="translate(304.000000, 495.000000)">
+                <g id="Icon/Asterisk/Blue" transform="translate(0.000000, 29.000000)">
+                    <path d="M4,0.666666667 L4,7.33333333" id="Line"></path>
+                    <path d="M1.11324865,2.33333333 L6.88675135,5.66666667" id="Line"></path>
+                    <path d="M1.11324865,2.33333333 L6.88675135,5.66666667" id="Line" transform="translate(4.000000, 4.000000) scale(-1, 1) translate(-4.000000, -4.000000) "></path>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 6 - 0
src/components/atoms/FileInput/package.json

@@ -0,0 +1,6 @@
+{
+  "name": "FileInput",
+  "version": "0.0.0",
+  "private": true,
+  "main": "./FileInput.tsx"
+}

+ 25 - 7
src/components/molecules/FieldInput/FieldInput.tsx

@@ -35,6 +35,7 @@ import StyleProps from '../../styleUtils/StyleProps'
 import Palette from '../../styleUtils/Palette'
 
 import asteriskImage from './images/asterisk.svg'
+import FileInput from '../../atoms/FileInput/FileInput'
 
 const Wrapper = styled.div<any>`
   ${props => (props.layout === 'page' ? css`
@@ -43,12 +44,7 @@ const Wrapper = styled.div<any>`
     ${props.inline ? '' : css`justify-content: center;`}
   ` : '')}
 `
-
-const Label = styled.div<any>`
-  ${props => (props.width ? `width: ${props.width}px;` : '')}
-  font-weight: ${StyleProps.fontWeights.medium};
-  flex-grow: 1;
-  ${props => (props.layout === 'page' ? css`
+const labelLayout = (props: any) => (props.layout === 'page' ? css`
     margin-bottom: 8px;
   ` : css`
     margin-bottom: 2px;
@@ -57,7 +53,12 @@ const Label = styled.div<any>`
     text-transform: uppercase;
     display: flex;
     align-items: center;
-  `)}
+  `)
+const Label = styled.div<any>`
+  ${props => (props.width ? `width: ${props.width}px;` : '')}
+  font-weight: ${StyleProps.fontWeights.medium};
+  flex-grow: 1;
+  ${labelLayout}
   ${props => (props.disabledLoading ? StyleProps.animations.disabledLoading : '')}
   ${props => (props.disabled ? css`
     opacity: 0.5;
@@ -92,6 +93,7 @@ type Props = {
   disabledLoading?: boolean,
   items?: any[],
   useTextArea?: boolean,
+  useFile?: boolean,
   noSelectionMessage?: string,
   noItemsMessage?: string,
   layout?: 'modal' | 'page',
@@ -218,6 +220,19 @@ class FieldInput extends React.Component<Props> {
     )
   }
 
+  renderFileInput() {
+    return (
+      <FileInput
+        width={this.props.width}
+        disabled={this.props.disabled}
+        disabledLoading={this.props.disabledLoading}
+        required={this.props.layout === 'page' ? false : this.props.required}
+        highlight={this.props.highlight}
+        onUpload={c => { if (this.props.onChange) this.props.onChange(c) }}
+      />
+    )
+  }
+
   renderEnumDropdown(enumItems: EnumItem[]) {
     const useDictionary = LabelDictionary.enumFields.find(f => f === this.props.name)
     let items = enumItems.map(e => {
@@ -355,6 +370,9 @@ class FieldInput extends React.Component<Props> {
         if (this.props.useTextArea) {
           return this.renderTextArea()
         }
+        if (this.props.useFile) {
+          return this.renderFileInput()
+        }
         return this.renderTextInput()
       case 'integer':
         return this.renderIntInput()

+ 12 - 2
src/components/organisms/ChooseProvider/ChooseProvider.tsx

@@ -34,14 +34,23 @@ import MultipleUploadedEndpoints from './MultipleUploadedEndpoints'
 import { ProviderTypes } from '../../../@types/Providers'
 
 const Wrapper = styled.div<any>`
+  display: flex;
   min-height: 0;
   padding: 22px 0 32px 0;
   text-align: center;
 `
-const Providers = styled.div<any>``
+const Providers = styled.div`
+  min-height: 0;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+`
 const Logos = styled.div<any>`
   display: flex;
   flex-wrap: wrap;
+  overflow: auto;
+  min-height: 0;
+  flex-grow: 1;
 `
 const Upload = styled.div<any>`
   border: 1px dashed ${props => (props.highlight ? Palette.primary : 'white')};
@@ -73,6 +82,7 @@ const LoadingWrapper = styled.div<any>`
   flex-direction: column;
   align-items: center;
   margin: 32px 0;
+  flex-grow: 1;
 `
 const LoadingText = styled.div<any>`
   font-size: 18px;
@@ -173,7 +183,7 @@ class ChooseProvider extends React.Component<Props, State> {
     if (!endpoint.name || !endpoint.type || !this.props.providers.find(p => p === endpoint.type)) {
       throw new Error()
     }
-    delete endpoint.id
+    delete (endpoint as any).id
     return endpoint
   }
 

+ 33 - 4
src/components/organisms/EndpointDetailsContent/EndpointDetailsContent.tsx

@@ -32,6 +32,8 @@ import LabelDictionary from '../../../utils/LabelDictionary'
 import configLoader from '../../../utils/Config'
 import { Region } from '../../../@types/Region'
 import { MigrationItem, ReplicaItem, TransferItem } from '../../../@types/MainItem'
+import { Field as FieldType } from '../../../@types/Field'
+import DomUtils from '../../../utils/DomUtils'
 
 const Wrapper = styled.div<any>`
   ${StyleProps.exactWidth(StyleProps.contentWidth)}
@@ -76,12 +78,22 @@ const LinkStyled = styled(Link)`
   cursor: pointer;
 `
 
+const DownloadLink = styled.div`
+  display: inline-block;
+  color: ${Palette.primary};
+  cursor: pointer;
+  :hover {
+    text-decoration: underline;
+  }
+`
+
 type Props = {
   item: Endpoint | null,
   regions: Region[],
   connectionInfo: Endpoint['connection_info'] | null,
   loading: boolean,
   usage: { migrations: MigrationItem[], replicas: ReplicaItem[] },
+  connectionInfoSchema: FieldType[],
   onDeleteClick: () => void,
   onValidateClick: () => void,
 }
@@ -89,6 +101,20 @@ type Props = {
 class EndpointDetailsContent extends React.Component<Props> {
   renderedKeys!: { [prop: string]: boolean }
 
+  renderDownloadValue(value: string, fieldName: string) {
+    const endpoint = this.props.item
+    if (!endpoint) {
+      return null
+    }
+    return (
+      <DownloadLink onClick={() => {
+        DomUtils.download(value, fieldName)
+      }}
+      >Download
+      </DownloadLink>
+    )
+  }
+
   renderConnectionInfoLoading() {
     if (!this.props.loading) {
       return null
@@ -131,18 +157,21 @@ class EndpointDetailsContent extends React.Component<Props> {
         value = '-'
       }
 
-      let valueClass = null
+      let valueElement = null
+      const schemaField = this.props.connectionInfoSchema.find(f => f.name === key)
 
       if (configLoader.config.passwordFields.find(fn => fn === key) || key.indexOf('password') > -1) {
-        valueClass = <PasswordValue value={value} data-test-id="edContent-connPassword" />
+        valueElement = <PasswordValue value={value} data-test-id="edContent-connPassword" />
+      } else if (schemaField?.useFile) {
+        valueElement = this.renderDownloadValue(value, key)
       } else {
-        valueClass = this.renderValue(value, `connValue-${key}`)
+        valueElement = this.renderValue(value, `connValue-${key}`)
       }
 
       return (
         <Field key={key}>
           <Label>{LabelDictionary.get(key)}</Label>
-          {valueClass}
+          {valueElement}
         </Field>
       )
     })

+ 13 - 3
src/components/pages/EndpointDetailsPage/EndpointDetailsPage.tsx

@@ -39,6 +39,7 @@ import Palette from '../../styleUtils/Palette'
 import endpointImage from './images/endpoint.svg'
 import regionStore from '../../../stores/RegionStore'
 import { MigrationItem, ReplicaItem } from '../../../@types/MainItem'
+import providerStore from '../../../stores/ProviderStore'
 
 const Wrapper = styled.div<any>``
 
@@ -153,6 +154,9 @@ class EndpointDetailsPage extends React.Component<Props, State> {
 
   handleCloseEndpointModal() {
     this.setState({ showEndpointModal: false })
+    if (this.endpoint) {
+      providerStore.getConnectionInfoSchema(this.endpoint.type)
+    }
   }
 
   handleCloseEndpointInUseModal() {
@@ -205,9 +209,13 @@ class EndpointDetailsPage extends React.Component<Props, State> {
     await endpointStore.getEndpoints()
     const endpoint = this.endpoint
 
-    if (endpoint && endpoint.connection_info && endpoint.connection_info.secret_ref) {
+    if (endpoint?.type) {
+      providerStore.getConnectionInfoSchema(endpoint.type)
+    }
+
+    if (endpoint?.connection_info?.secret_ref) {
       endpointStore.getConnectionInfo(endpoint)
-    } else if (endpoint && endpoint.connection_info) {
+    } else if (endpoint?.connection_info) {
       endpointStore.setConnectionInfo(endpoint.connection_info)
     }
   }
@@ -259,8 +267,10 @@ class EndpointDetailsPage extends React.Component<Props, State> {
               item={endpoint}
               regions={regionStore.regions}
               usage={this.state.endpointUsage}
-              loading={endpointStore.connectionInfoLoading || endpointStore.loading}
+              loading={endpointStore.connectionInfoLoading || endpointStore.loading
+                || providerStore.connectionSchemaLoading}
               connectionInfo={endpointStore.connectionInfo}
+              connectionInfoSchema={providerStore.connectionInfoSchema}
               onDeleteClick={() => { this.handleDeleteEndpointClick() }}
               onValidateClick={() => { this.handleValidateClick() }}
             />

+ 3 - 0
src/plugins/endpoint/index.ts

@@ -16,6 +16,8 @@ import DefaultConnectionSchemaPlugin from './default/ConnectionSchemaPlugin'
 import AzureConnectionSchemaPlugin from './azure/ConnectionSchemaPlugin'
 import OpenstackConnectionSchemaPlugin from './openstack/ConnectionSchemaPlugin'
 import OciConnectionSchemaPlugin from './oci/ConnectionSchemaPlugin'
+import KubevirtConnectionSchemaPlugin from './kubevirt/ConnectionSchemaPlugin'
+
 import DefaultContentPlugin from './default/ContentPlugin'
 import AzureContentPlugin from './azure/ContentPlugin'
 import OpenstackContentPlugin from './openstack/ContentPlugin'
@@ -37,6 +39,7 @@ export const ConnectionSchemaPlugin = {
       azure: AzureConnectionSchemaPlugin,
       openstack: OpenstackConnectionSchemaPlugin,
       oci: OciConnectionSchemaPlugin,
+      kubevirt: KubevirtConnectionSchemaPlugin,
     }
     if (hasKey(map, provider)) {
       return map[provider]

+ 40 - 0
src/plugins/endpoint/kubevirt/ConnectionSchemaPlugin.ts

@@ -0,0 +1,40 @@
+/*
+Copyright (C) 2020  Cloudbase Solutions SRL
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+You should have received a copy of the GNU Affero General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import type { Schema } from '../../../@types/Schema'
+import type { Field } from '../../../@types/Field'
+
+import DefaultConnectionSchemaParser from '../default/ConnectionSchemaPlugin'
+import { Endpoint } from '../../../@types/Endpoint'
+
+export default class ConnectionSchemaParser {
+  static parseSchemaToFields(schema: Schema): Field[] {
+    const fields = DefaultConnectionSchemaParser.parseSchemaToFields(schema)
+    const kubeConfigField = fields.find(f => f.name === 'kube_config')
+    if (kubeConfigField) {
+      kubeConfigField.useFile = true
+    }
+
+    return fields
+  }
+
+  static parseConnectionInfoToPayload(data: { [prop: string]: any }, schema: Schema) {
+    const payload = DefaultConnectionSchemaParser.parseConnectionInfoToPayload(data, schema)
+    return payload
+  }
+
+  static parseConnectionResponse(endpoint: Endpoint) {
+    return endpoint
+  }
+}