diff --git a/bundle/package.json b/bundle/package.json index a00ea351..72628ce9 100644 --- a/bundle/package.json +++ b/bundle/package.json @@ -10,7 +10,7 @@ "dependencies": { "apr-main": "^4.0.2", "brule": "^3.1.0", - "cloudapi-gql": "^4.3.1", + "cloudapi-gql": "^4.5.0", "hapi": "^17.2.0", "inert": "^5.1.0", "joyent-navigation": "^1.0.0", diff --git a/packages/my-joy-beta/src/app.js b/packages/my-joy-beta/src/app.js index d8b47f10..6f6cbad4 100644 --- a/packages/my-joy-beta/src/app.js +++ b/packages/my-joy-beta/src/app.js @@ -39,9 +39,10 @@ const fullTheme = { } }, spacing: { - 0.5: remcalc(4), 0: remcalc(0), + 0.5: remcalc(3), 1: remcalc(6), + 1.5: remcalc(9), 2: remcalc(12), 3: remcalc(18), 4: remcalc(24), diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap new file mode 100644 index 00000000..f5e29824 --- /dev/null +++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/firewall.spec.js.snap @@ -0,0 +1,7233 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ` +Array [ + .c0 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +

+ Default firewall rules +

, + .c0 { + margin-top: 1rem; +} + +
, +] +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c0 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +

+ Default firewall rules +

, + .c1 { + margin-bottom: 0.5rem; +} + +.c7 { + margin-right: undefined; +} + +.c11 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c14 { + margin-left: undefined; +} + +.c15 { + margin-right: 0; + margin-bottom: 0; +} + +.c0 { + margin-top: 1rem; +} + +.c3 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c9 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c8 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c4 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c5 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c12 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c16 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c17 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c10 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c2 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; +} + +.c13 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c5 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c12 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ 8:0 +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp6 +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +.c0 { + margin-bottom: 2rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +
+
+
+
+ +
+
+
+
+`; + +exports[`renders without throwing 1`] = ` +Array [ + .c8 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-right: undefined; +} + +.c18 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c7 { + margin-top: 1rem; +} + +.c0 { + margin-bottom: 2rem; +} + +.c10 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c16 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c15 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c23 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c23 + p, +.c23 + small, +.c23 + h1, +.c23 + h2, +.c23 + label, +.c23 + h3, +.c23 + h4, +.c23 + h5, +.c23 + div, +.c23 + span { + padding-bottom: 2.25rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c11 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c22 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c12 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c19 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c6 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c21 { + background-color: rgb(216,216,216); + margin: 0; + background-color: transparent; + height: 0.75rem; +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +.c17 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c9 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; +} + +.c20 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c12 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c19 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+ +
+
+
+
+ +
+
+
+

+ Default firewall rules +

+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ 8:0 +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp6 +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+

+ *Other firewall rules may apply as defined by wildcard(s), IP(s), subnet(s), tag(s) or VM(s). Please see + + + firewall rule list + + + for more details. +

+
+, + .c0 { + margin-bottom: 2rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +
+
+
+
+ +
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +.c12 { + margin-bottom: 0.5rem; +} + +.c7 { + margin-top: 1rem; +} + +.c0 { + margin-bottom: 2rem; +} + +.c8 { + margin-top: 4rem; +} + +.c10 { + padding: 8rem; +} + +.c11 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c15 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c15 + p, +.c15 + small, +.c15 + h1, +.c15 + h2, +.c15 + label, +.c15 + h3, +.c15 + h4, +.c15 + h5, +.c15 + div, +.c15 + span { + padding-bottom: 2.25rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c6 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c14 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c14 + p, +.c14 + small, +.c14 + h1, +.c14 + h2, +.c14 + label, +.c14 + h3, +.c14 + h4, +.c14 + h5, +.c14 + div, +.c14 + span { + margin-top: 1.5rem; +} + +.c9 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +.c13 { + color: rgb(151,151,151); +} + +
+
+
+
+ +
+
+
+
+ +
+
+
+

+ Default firewall rules +

+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
+

+ *Other firewall rules may apply as defined by wildcard(s), IP(s), subnet(s), tag(s) or VM(s). Please see + + + firewall rule list + + + for more details. +

+
+ +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c8 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-right: undefined; +} + +.c18 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c19 { + margin-left: undefined; +} + +.c20 { + margin-right: 0; + margin-bottom: 0; +} + +.c7 { + margin-top: 1rem; +} + +.c0 { + margin-bottom: 2rem; +} + +.c10 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c16 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c15 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c26 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c26 + p, +.c26 + small, +.c26 + h1, +.c26 + h2, +.c26 + label, +.c26 + h3, +.c26 + h4, +.c26 + h5, +.c26 + div, +.c26 + span { + padding-bottom: 2.25rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c11 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c25 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c12 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c23 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c6 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c24 { + background-color: rgb(216,216,216); + margin: 0; + background-color: transparent; + height: 0.75rem; +} + +.c21 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +.c22 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c17 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c9 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c12 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c23 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+ +
+
+
+
+ +
+
+
+

+ Default firewall rules +

+
+

+ Firewall rules from instance tags +

+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+

+ *Other firewall rules may apply as defined by wildcard(s), IP(s), subnet(s), tag(s) or VM(s). Please see + + + firewall rule list + + + for more details. +

+
+, + .c0 { + margin-bottom: 2rem; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c1 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +
+
+
+
+ +
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c0 { + margin-bottom: 0.5rem; +} + +.c6 { + margin-right: undefined; +} + +.c10 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c2 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c7 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c3 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c4 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c11 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c9 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c1 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; +} + +@media only screen and (min-width:0em) { + .c4 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c11 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ 8:0 +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
, + .c0 { + margin-bottom: 0.5rem; +} + +.c6 { + margin-right: undefined; +} + +.c10 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c2 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c7 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c3 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c4 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c11 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c9 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c1 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; +} + +@media only screen and (min-width:0em) { + .c4 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c11 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp6 +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
, + .c0 { + margin-bottom: 0.5rem; +} + +.c6 { + margin-right: undefined; +} + +.c10 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c2 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c7 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c3 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c4 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c11 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c9 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c1 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c4 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c11 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
, + .c0 { + margin-bottom: 0.5rem; +} + +.c6 { + margin-right: undefined; +} + +.c10 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c2 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c7 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c3 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c4 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c11 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c9 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c1 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c4 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c11 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
, + .c0 { + margin-bottom: 0.5rem; +} + +.c6 { + margin-right: undefined; +} + +.c10 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c11 { + margin-left: undefined; +} + +.c12 { + margin-right: 0; + margin-bottom: 0; +} + +.c2 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c7 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c3 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c4 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c15 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c14 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c9 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c1 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c4 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c15 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = `null`; + +exports[`renders without throwing 1`] = ` +Array [ + .c0 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +

+ Firewall rules from instance tags +

, + .c0 { + margin-top: 1rem; +} + +
, +] +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c0 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +

+ Firewall rules from instance tags +

, + .c1 { + margin-bottom: 0.5rem; +} + +.c7 { + margin-right: undefined; +} + +.c11 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c14 { + margin-left: undefined; +} + +.c15 { + margin-right: 0; + margin-bottom: 0; +} + +.c0 { + margin-top: 1rem; +} + +.c3 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c9 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c8 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c4 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c5 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c12 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c16 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c17 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c10 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c2 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; +} + +.c13 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:0em) { + .c5 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c12 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ 8:0 +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ icmp6 +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    + + All VMs in DC + +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +.c1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c2 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c3 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c4 { + display: none; +} + +.c4:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:checked + label:active { + box-shadow: none; +} + +.c5 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c5::selection { + background: none; +} + +.c5:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c5:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c5:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c5:after, +.c5:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c5:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c5:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c5:before { + display: none; +} + +
+
+
+ +
+ +
+
+
+
+`; + +exports[`renders without throwing 1`] = ` +.c1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c2 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c6 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; + color: rgb(216,216,216); +} + +.c0 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c3 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c4 { + display: none; +} + +.c4:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:checked + label:active { + box-shadow: none; +} + +.c5 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; + cursor: not-allowed; +} + +.c5::selection { + background: none; +} + +.c5:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c5:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c5:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c5:after, +.c5:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c5:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c5:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c5:before { + display: none; +} + +.c5:active { + box-shadow: none; +} + +.c5:active:after { + padding-right: 0; +} + +.c5:before { + cursor: not-allowed; +} + +.c5:after { + cursor: not-allowed; + background: rgb(230,230,230); +} + +.c5:hover { + border: 0.0625rem solid rgb(216,216,216); +} + +.c5:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +
+
+
+ +
+ +
+
+
+
+`; + +exports[`renders without throwing 1`] = ` +.c1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c5 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c2 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c3 { + display: none; +} + +.c3:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c3:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c3:checked + label:active { + box-shadow: none; +} + +.c4 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c4::selection { + background: none; +} + +.c4:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c4:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c4:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c4:after, +.c4:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c4:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c4:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c4:before { + display: none; +} + +
+
+
+
+ +
+
+
+
+`; diff --git a/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap b/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap index 7e959b10..ea55e4ce 100644 --- a/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap +++ b/packages/my-joy-beta/src/components/__tests__/__snapshots__/tags.spec.js.snap @@ -2082,7 +2082,7 @@ exports[`renders without throwing 1`] = ` border-radius: 0.1875rem; font-size: 0.8125rem; line-height: 1.125rem; - padding: 0.375rem 0.75rem; + padding: 0.3125rem 0.75rem; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -2138,7 +2138,7 @@ exports[`renders without throwing 1`] = ` border-radius: 0.1875rem; font-size: 0.8125rem; line-height: 1.125rem; - padding: 0.375rem 0.75rem; + padding: 0.3125rem 0.75rem; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; diff --git a/packages/my-joy-beta/src/components/__tests__/firewall.spec.js b/packages/my-joy-beta/src/components/__tests__/firewall.spec.js new file mode 100644 index 00000000..1b808291 --- /dev/null +++ b/packages/my-joy-beta/src/components/__tests__/firewall.spec.js @@ -0,0 +1,275 @@ +import React, { Fragment } from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import Firewall, { Rules, TagRules, DefaultRules, ToggleFirewallForm, ToggleInactiveForm } from '../firewall'; +import Theme from '@mocks/theme'; + +const rules = [ + { + id: '3473327e-6d0c-4747-97c5-ced1260a7e42', + enabled: true, + rule_str: 'FROM any TO all vms ALLOW icmp TYPE 8 CODE 0', + rule_obj: { + from: [['wildcard', 'any']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'icmp', + targets: ['8:0'] + }, + isWildcard: true, + tags: [] + }, + global: true, + description: null + }, + { + id: '24d55d2f-12ba-4935-9de9-ac305b8a40a5', + enabled: true, + rule_str: 'FROM any TO all vms ALLOW icmp6 TYPE all', + rule_obj: { + from: [['wildcard', 'any']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'icmp6', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: true, + description: 'allow all ICMPv6 types' + }, + { + id: '4bd8b2e2-981b-474b-9b8b-0b53fecb4b71', + enabled: false, + rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'vmall']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: null, + description: null + }, + { + id: 'af549024-b3b1-43bf-8a66-49c2b2dc5640', + enabled: false, + rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'vmall']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: null, + description: null + }, + { + id: '9e5a152a-582b-4525-909e-f9c55deb7f03', + enabled: false, + rule_str: 'FROM any TO tag "wat" ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'any']], + to: [['tag', 'wat']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: false, + tags: ['wat'] + }, + global: null, + description: null + } +]; + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + !rule_obj.tags.length + )} + enabled + /> + !rule_obj.tags.length + )} + /> + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + rule_obj.tags.length)} + enabled + /> + rule_obj.tags.length)} + /> + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); diff --git a/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap b/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap index 51b97bd1..4744d741 100644 --- a/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap +++ b/packages/my-joy-beta/src/components/create-instance/__tests__/__snapshots__/package.spec.js.snap @@ -1923,7 +1923,6 @@ exports[`renders without throwing 1`] = ` className="c10" > No packages were found
@@ -2369,7 +2368,6 @@ exports[`renders without throwing 1`] = ` className="c10" > No packages were found
@@ -2815,7 +2813,6 @@ exports[`renders without throwing 1`] = ` className="c10" > No packages were found
@@ -3594,7 +3591,6 @@ exports[`renders without throwing 1`] = ` className="c10" > No packages were found
diff --git a/packages/my-joy-beta/src/components/create-instance/package.js b/packages/my-joy-beta/src/components/create-instance/package.js index 8a2987fb..eaab3434 100644 --- a/packages/my-joy-beta/src/components/create-instance/package.js +++ b/packages/my-joy-beta/src/components/create-instance/package.js @@ -26,7 +26,7 @@ import { MemoryIcon } from 'joyent-ui-toolkit'; -import Empty from './empty'; +import Empty from '@components/empty'; const GroupIcons = { MEMORY: , diff --git a/packages/my-joy-beta/src/components/create-instance/empty.js b/packages/my-joy-beta/src/components/empty.js similarity index 89% rename from packages/my-joy-beta/src/components/create-instance/empty.js rename to packages/my-joy-beta/src/components/empty.js index 9c5beb2d..3ff358f7 100644 --- a/packages/my-joy-beta/src/components/create-instance/empty.js +++ b/packages/my-joy-beta/src/components/empty.js @@ -15,7 +15,7 @@ export default ({ children }) => ( - No packages were found + {children} diff --git a/packages/my-joy-beta/src/components/create-instance/firewall.js b/packages/my-joy-beta/src/components/firewall.js similarity index 73% rename from packages/my-joy-beta/src/components/create-instance/firewall.js rename to packages/my-joy-beta/src/components/firewall.js index 374fd6ed..c6c66c15 100644 --- a/packages/my-joy-beta/src/components/create-instance/firewall.js +++ b/packages/my-joy-beta/src/components/firewall.js @@ -9,6 +9,7 @@ import is from 'styled-is'; import { H3, FormGroup, + FormLabel, Toggle, Divider, Row, @@ -18,7 +19,7 @@ import { } from 'joyent-ui-toolkit'; import Tag from '@components/tags'; -import Empty from './empty'; +import Empty from '@components/empty'; const capitalizeFirstLetter = string => string.charAt(0).toUpperCase() + string.slice(1); @@ -41,7 +42,11 @@ const Wildcards = { const parsePartial = (p, index) => { if (p[0] === 'wildcard') { - return {Wildcards[p[1]]}; + return ( + + {Wildcards[p[1]]} + + ); } if (p[0] === 'tag') { @@ -64,7 +69,7 @@ const Rule = ({ enabled, rule_obj }) => { return ( - + @@ -126,6 +131,55 @@ const Rule = ({ enabled, rule_obj }) => { ); }; +export const Rules = ({ rules = [] }) => ( + + {rules.map(rule => ( + + + + ))} + +); + +export const DefaultRules = ({ rules = [] }) => ( + +

Default firewall rules

+ + + +
+); + +export const TagRules = ({ rules = [] }) => ( + +

Firewall rules from instance tags

+ + + +
+); + +export const ToggleFirewallForm = ({ handleSubmit, submitting }) => ( +
setTimeout(() => handleSubmit(...args), 16)}> + + + Enable Firewall + + + +
+); + +export const ToggleInactiveForm = () => ( +
+ + + Show inactive rules + + +
+); + export default ({ defaultRules = [], tagRules = [], @@ -143,38 +197,16 @@ export default ({ ) : null} - {enabled && defaultRules.length ? ( - -

Default firewall rules

- - {defaultRules.map(rule => ( - - - - ))} - -
- ) : null} - {enabled && !defaultRules.length ? ( - + {enabled ? : null} + {enabled && !tagRules.length && !defaultRules.length ? ( + Sorry, but we weren’t able to find any firewall rules. ) : null} {enabled && tagRules.length && defaultRules.length ? ( ) : null} - {enabled && tagRules.length ? ( - -

Firewall rules from instance tags

- - {tagRules.map(rule => ( - - - - ))} - -
- ) : null} + {enabled && tagRules.length ? : null} {enabled && (tagRules.length || defaultRules.length) ? ( ) : null} diff --git a/packages/my-joy-beta/src/containers/create-instance/firewall.js b/packages/my-joy-beta/src/containers/create-instance/firewall.js index b0b721d3..fe106af9 100644 --- a/packages/my-joy-beta/src/containers/create-instance/firewall.js +++ b/packages/my-joy-beta/src/containers/create-instance/firewall.js @@ -13,7 +13,7 @@ import { StatusLoader, FirewallIcon, H3, Button } from 'joyent-ui-toolkit'; import Title from '@components/create-instance/title'; import Description from '@components/description'; -import FirewallForm from '@components/create-instance/firewall'; +import FirewallForm from '@components/firewall'; import ListFwRules from '@graphql/list-fw-rules.gql'; const FORM_NAME = 'CREATE-INSTANCE-FIREWALL'; @@ -132,20 +132,13 @@ export default compose( refetch } = data; - const rules = forceArray(firewall_rules_create_machine) - .filter(({ enabled }) => enabled || showInactive) - .map(({ rule_obj, ...rule }) => ({ - ...rule, - rule_obj: { - ...rule_obj, - from: forceArray(rule_obj.from).map(f => forceArray(f)), - to: forceArray(rule_obj.to).map(t => forceArray(t)) - } - })); + const rules = forceArray(firewall_rules_create_machine).filter( + ({ enabled }) => enabled || showInactive + ); return { - defaultRules: rules.filter(({ tag }) => !tag), - tagRules: rules.filter(({ tag }) => tag), + defaultRules: rules.filter(({ rule_obj = {} }) => rule_obj.isWildcard), + tagRules: rules.filter(({ rule_obj = {} }) => rule_obj.tags.length), loading, error, refetch diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap index ed8d51d4..f4fe0d5c 100644 --- a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap +++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/cns.spec.js.snap @@ -3864,7 +3864,7 @@ exports[`renders without throwing 1`] = ` border-radius: 0.1875rem; font-size: 0.8125rem; line-height: 1.125rem; - padding: 0.375rem 0.75rem; + padding: 0.3125rem 0.75rem; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -5871,7 +5871,7 @@ exports[`renders without throwing 1`] = ` border-radius: 0.1875rem; font-size: 0.8125rem; line-height: 1.125rem; - padding: 0.375rem 0.75rem; + padding: 0.3125rem 0.75rem; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap new file mode 100644 index 00000000..ec2e4693 --- /dev/null +++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/firewall.spec.js.snap @@ -0,0 +1,6770 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders without throwing 1`] = ` +Array [ + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c14 { + margin-top: 4rem; +} + +.c18 { + margin-bottom: 0.5rem; +} + +.c16 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c20 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c20 + p, +.c20 + small, +.c20 + h1, +.c20 + h2, +.c20 + label, +.c20 + h3, +.c20 + h4, +.c20 + h5, +.c20 + div, +.c20 + span { + margin-top: 1.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c15 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c19 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c15 { + margin-top: 4rem; +} + +.c19 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-top: 2rem; +} + +.c17 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c21 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c21 + p, +.c21 + small, +.c21 + h1, +.c21 + h2, +.c21 + label, +.c21 + h3, +.c21 + h4, +.c21 + h5, +.c21 + div, +.c21 + span { + margin-top: 1.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c16 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c18 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c20 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c14 { + margin-top: 4rem; +} + +.c18 { + margin-bottom: 0.5rem; +} + +.c16 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c20 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c20 + p, +.c20 + small, +.c20 + h1, +.c20 + h2, +.c20 + label, +.c20 + h3, +.c20 + h4, +.c20 + h5, +.c20 + div, +.c20 + span { + margin-top: 1.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c15 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c19 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c15 { + margin-top: 4rem; +} + +.c19 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-top: 2rem; +} + +.c17 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c21 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c21 + p, +.c21 + small, +.c21 + h1, +.c21 + h2, +.c21 + label, +.c21 + h3, +.c21 + h4, +.c21 + h5, +.c21 + div, +.c21 + span { + margin-top: 1.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c16 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c18 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c20 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +Array [ + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c7 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; +} + +.c8 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; + -webkit-animation-delay: 0.5s; + animation-delay: 0.5s; +} + +.c9 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; + -webkit-animation-delay: 1s; + animation-delay: 1s; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c10 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + text-align: center; + margin-bottom: 0; + margin-left: 0.375rem; +} + +.c10 + p, +.c10 + small, +.c10 + h1, +.c10 + h2, +.c10 + label, +.c10 + h3, +.c10 + h4, +.c10 + h5, +.c10 + div, +.c10 + span { + padding-bottom: 2.25rem; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: 1.25rem; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+ + + + + +

+ Loading... +

+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c7 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; +} + +.c8 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; + -webkit-animation-delay: 0.5s; + animation-delay: 0.5s; +} + +.c9 { + fill: rgb(59,70,204); + stroke: rgb(59,70,204); + -webkit-animation: iCqDak 1.5s ease-out 0s infinite; + animation: iCqDak 1.5s ease-out 0s infinite; + -webkit-animation-delay: 1s; + animation-delay: 1s; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c10 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; + text-align: center; + margin-bottom: 0; + margin-left: 0.375rem; +} + +.c10 + p, +.c10 + small, +.c10 + h1, +.c10 + h2, +.c10 + label, +.c10 + h3, +.c10 + h4, +.c10 + h5, +.c10 + div, +.c10 + span { + padding-bottom: 2.25rem; +} + +.c6 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-content: center; + -ms-flex-line-pack: center; + align-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: 1.25rem; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+ + + + + +

+ Loading... +

+
+
, +] +`; + +exports[`renders without throwing 1`] = ` +.c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c11 { + margin-bottom: undefined; +} + +.c19 { + margin-top: 4rem; +} + +.c23 { + margin-bottom: 0.5rem; +} + +.c21 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c14 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c25 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c25 + p, +.c25 + small, +.c25 + h1, +.c25 + h2, +.c25 + label, +.c25 + h3, +.c25 + h4, +.c25 + h5, +.c25 + div, +.c25 + span { + margin-top: 1.5rem; +} + +.c9 { + color: rgba(73,73,73,1); + font-weight: 600; + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c9 + p, +.c9 + small, +.c9 + h1, +.c9 + h2, +.c9 + label, +.c9 + h3, +.c9 + h4, +.c9 + h5, +.c9 + div, +.c9 + span { + margin-top: 0.75rem; +} + +.c18 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c20 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c12 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c15 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c16 { + display: none; +} + +.c16:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c16:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c16:checked + label:active { + box-shadow: none; +} + +.c17 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c17::selection { + background: none; +} + +.c17:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c17:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c17:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c17:after, +.c17:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c17:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c17:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c17:before { + display: none; +} + +.c6 { + position: relative; + margin-bottom: 0.75rem; + background-color: rgb(255,255,255); + box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05); + border: 0.0625rem solid rgb(216,216,216); + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.c7 { + min-width: 2.25rem; + margin-right: 1.125rem; + min-height: 100%; + background-color: rgb(0,152,88); + background-color: rgb(210,67,58); +} + +.c8 { + padding: 0.75rem 0 0.84375rem 0; +} + +.c10 { + position: absolute; + right: 0.1875rem; + margin: 0; +} + +.c13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c22 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c24 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+

+ Ooops! +

+

+ An error occurred while loading your firewall rules +

+
+ + + +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
+`; + +exports[`renders without throwing 1`] = ` +.c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c11 { + margin-bottom: undefined; +} + +.c19 { + margin-top: 4rem; +} + +.c23 { + margin-bottom: 0.5rem; +} + +.c21 { + padding: 8rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c14 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c25 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c25 + p, +.c25 + small, +.c25 + h1, +.c25 + h2, +.c25 + label, +.c25 + h3, +.c25 + h4, +.c25 + h5, +.c25 + div, +.c25 + span { + margin-top: 1.5rem; +} + +.c9 { + color: rgba(73,73,73,1); + font-weight: 600; + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c9 + p, +.c9 + small, +.c9 + h1, +.c9 + h2, +.c9 + label, +.c9 + h3, +.c9 + h4, +.c9 + h5, +.c9 + div, +.c9 + span { + margin-top: 0.75rem; +} + +.c18 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c20 { + box-sizing: content-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + border-width: 0.0625rem; + border-style: solid; + -webkit-transition: all 300ms ease; + transition: all 300ms ease; + color: rgba(73,73,73,1); + background-color: rgb(255,255,255); + border-color: rgb(216,216,216); +} + +.c12 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c15 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c16 { + display: none; +} + +.c16:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c16:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c16:checked + label:active { + box-shadow: none; +} + +.c17 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c17::selection { + background: none; +} + +.c17:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c17:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c17:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c17:after, +.c17:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c17:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c17:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c17:before { + display: none; +} + +.c6 { + position: relative; + margin-bottom: 0.75rem; + background-color: rgb(255,255,255); + box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05); + border: 0.0625rem solid rgb(216,216,216); + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.c7 { + min-width: 2.25rem; + margin-right: 1.125rem; + min-height: 100%; + background-color: rgb(0,152,88); + background-color: rgb(210,67,58); +} + +.c8 { + padding: 0.75rem 0 0.84375rem 0; +} + +.c10 { + position: absolute; + right: 0.1875rem; + margin: 0; +} + +.c13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c22 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c24 { + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+

+ Ooops! +

+

+ error +

+
+ + + +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+

+ Sorry, but we weren’t able to find any firewall rules. +

+
+
+
+
+
+`; + +exports[`renders without throwing 1`] = ` +Array [ + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c18 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-top: 2rem; +} + +.c15 { + margin-top: undefined; +} + +.c17 { + margin-top: 1rem; +} + +.c24 { + margin-right: undefined; +} + +.c27 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c28 { + margin-left: undefined; +} + +.c29 { + margin-right: 0; + margin-bottom: 0; +} + +.c20 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c21 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c22 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c32 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c16 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c30 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c25 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c31 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c26 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c19 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c22 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c32 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+

+ Firewall rules from instance tags +

+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
, +] +`; + +exports[`renders without throwing 2`] = ` +Array [ + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
, + .c1 { + margin-bottom: 0.25rem; +} + +.c4 { + margin-bottom: 1rem; +} + +.c6 { + margin-bottom: undefined; +} + +.c15 { + margin-top: 4rem; +} + +.c18 { + margin-bottom: 0.5rem; +} + +.c14 { + margin-top: 2rem; +} + +.c17 { + margin-top: 1rem; +} + +.c24 { + margin-right: undefined; +} + +.c27 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} + +.c28 { + margin-left: undefined; +} + +.c29 { + margin-right: 0; + margin-bottom: 0; +} + +.c20 { + padding-top: undefined; + padding-right: 1rem; + padding-bottom: undefined; + padding-left: 1rem; +} + +.c5 { + color: rgba(73,73,73,1); + line-height: 1.5rem; + font-size: 0.9375rem; + margin: 0; +} + +.c5 + p, +.c5 + small, +.c5 + h1, +.c5 + h2, +.c5 + label, +.c5 + h3, +.c5 + h4, +.c5 + h5, +.c5 + div, +.c5 + span { + padding-bottom: 2.25rem; +} + +.c9 { + font-size: 0.9375rem; + font-style: normal; + font-stretch: normal; + display: block; + color: rgb(70,70,70); + text-align: left; + margin-right: 0.75rem; + font-weight: bold; + white-space: pre; + font-size: 0.8125rem; +} + +.c0 { + margin-right: auto; + margin-left: auto; + box-sizing: border-box; + width: 100%; + max-width: 62.5rem; + padding-bottom: 1.125rem; +} + +.c2 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.c21 { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -0.5rem; + margin-left: -0.5rem; + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.c3 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c22 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c32 { + box-sizing: border-box; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.c16 { + color: rgba(73,73,73,1); + font-weight: normal; + line-height: 1.625rem; + font-size: 1.3125rem; + margin: 0; +} + +.c13 { + background-color: rgb(216,216,216); + margin: 0; + height: 0.0625rem; +} + +.c30 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c7 { + display: inline-block; + margin: 0; + padding: 0; + border: none; + overflow: hidden; + height: auto; + -webkit-margin-start: 0; + -webkit-margin-end: 0; + -webkit-padding-before: 0; + -webkit-padding-start: 0; + -webkit-padding-end: 0; + -webkit-padding-after: 0; +} + +.c10 { + position: relative; + vertical-align: text-bottom; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c11 { + display: none; +} + +.c11:checked + label { + background: #3B46CC; + border: 0.0625rem solid rgb(59,70,204); +} + +.c11:checked + label:after { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c11:checked + label:active { + box-shadow: none; +} + +.c12 { + outline: 0; + display: block; + width: 2.875rem; + height: 1.5rem; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + background: rgb(250,250,250); + border-radius: 1.4375rem; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border: 0.0625rem solid rgb(216,216,216); + margin-right: 0.375rem; +} + +.c12::selection { + background: none; +} + +.c12:active { + box-shadow: inset 0 0 0 1.5rem rgb(216,216,216); +} + +.c12:hover { + border: 0.0625rem solid rgb(59,70,204); +} + +.c12:hover:after { + box-shadow: 0 0 0 0.0625rem rgb(59,70,204); +} + +.c12:after, +.c12:before { + position: relative; + display: block; + content: ''; + width: 50%; + height: 100%; +} + +.c12:after { + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + border-radius: 50%; + background: rgb(255,255,255); + -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + -webkit-transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + transition: transform 0.3s cubic-bezier(0.175,0.885,0.32,1.275); + box-shadow: 0 0 0 0.0625rem rgb(216,216,216); +} + +.c12:active { + box-shadow: inset 0 0 0 2em rgb(216,216,216); +} + +.c12:before { + display: none; +} + +.c25 { + -webkit-order: 0; + -ms-flex-order: 0; + order: 0; + -webkit-flex-basis: auto; + -ms-flex-preferred-size: auto; + flex-basis: auto; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -webkit-flex-shrink: 1; + -ms-flex-negative: 1; + flex-shrink: 1; +} + +.c31 { + border: 0.0625rem solid rgb(216,216,216); + box-sizing: border-box; + border-radius: 0.1875rem; + font-size: 0.8125rem; + line-height: 1.125rem; + padding: 0.3125rem 0.75rem; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.c26 { + margin: 0; + padding: 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + list-style: none; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.c8 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.c23 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-wrap: nowrap; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-align-content: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + height: 100%; + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} + +.c19 { + display: inline-block; + background-color: rgb(255,255,255); + border: 0.0625rem solid rgb(216,216,216); + min-width: 100%; + color: rgb(151,151,151); +} + +@media only screen and (min-width:48em) { + .c0 { + width: 46rem; + } +} + +@media only screen and (min-width:64em) { + .c0 { + width: 61rem; + } +} + +@media only screen and (min-width:75em) { + .c0 { + width: 76rem; + } +} + +@media only screen and (max-width:47.9375rem) { + .c0 { + padding-left: 0.375rem; + padding-right: 0.375rem; + } +} + +@media only screen and (min-width:0em) { + .c3 { + -webkit-flex-basis: 100%; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + max-width: 100%; + display: block; + } +} + +@media only screen and (min-width:48em) { + .c3 { + -webkit-flex-basis: 66.66666666666667%; + -ms-flex-preferred-size: 66.66666666666667%; + flex-basis: 66.66666666666667%; + max-width: 66.66666666666667%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c22 { + -webkit-flex-basis: 25%; + -ms-flex-preferred-size: 25%; + flex-basis: 25%; + max-width: 25%; + display: block; + } +} + +@media only screen and (min-width:0em) { + .c32 { + -webkit-flex-basis: 16.666666666666668%; + -ms-flex-preferred-size: 16.666666666666668%; + flex-basis: 16.666666666666668%; + max-width: 16.666666666666668%; + display: block; + } +} + +
+
+
+
+
+

+ Cloud Firewall rules control traffic across instances. Enabling the firewall adds a default set of rules and rules defined by your chosen tags. + + + Read the docs + +

+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+

+ Default firewall rules +

+
+
+
+
+
+
+
+
+
+ + From: + +
+
+
+
    +
    + + Any + +
    +
+
+
+
+
+
+
+
+ + To: + +
+
+
+
    +
    +
    +
    +
  • + wat: +
  • +
    +
    +
    +
+
+
+
+
+
+
+
+ + Protocol: + +
+
+
+ tcp +
+
+
+
+
+
+
+ + Ports: + +
+
+
+ all +
+
+
+
+
+
+
+ + Action: + +
+
+
+ Allow +
+
+
+
+
+
+
+
+
+
, +] +`; diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap index bad19e95..bfe4af06 100644 --- a/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap +++ b/packages/my-joy-beta/src/containers/instances/__tests__/__snapshots__/tags.spec.js.snap @@ -7059,7 +7059,7 @@ exports[`renders without throwing 1`] = ` border-radius: 0.1875rem; font-size: 0.8125rem; line-height: 1.125rem; - padding: 0.375rem 0.75rem; + padding: 0.3125rem 0.75rem; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js b/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js index 16254732..b35d37f2 100644 --- a/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js +++ b/packages/my-joy-beta/src/containers/instances/__tests__/cns.spec.js @@ -5,13 +5,6 @@ import 'jest-styled-components'; import { Cns } from '../cns'; import Theme from '@mocks/theme'; -// services = [], -// hostnames = [], -// disabled = false, -// loading = false, -// mutationError = false, -// loadingError = null - it('renders without throwing', () => { expect( renderer diff --git a/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js b/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js new file mode 100644 index 00000000..3f2f485e --- /dev/null +++ b/packages/my-joy-beta/src/containers/instances/__tests__/firewall.spec.js @@ -0,0 +1,224 @@ +import React, { Fragment } from 'react'; +import renderer from 'react-test-renderer'; +import 'jest-styled-components'; + +import { Firewall } from '../firewall'; +import Theme from '@mocks/theme'; + +const rules = [ + { + id: '3473327e-6d0c-4747-97c5-ced1260a7e42', + enabled: true, + rule_str: 'FROM any TO all vms ALLOW icmp TYPE 8 CODE 0', + rule_obj: { + from: [['wildcard', 'any']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'icmp', + targets: ['8:0'] + }, + isWildcard: true, + tags: [] + }, + global: true, + description: null + }, + { + id: '24d55d2f-12ba-4935-9de9-ac305b8a40a5', + enabled: true, + rule_str: 'FROM any TO all vms ALLOW icmp6 TYPE all', + rule_obj: { + from: [['wildcard', 'any']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'icmp6', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: true, + description: 'allow all ICMPv6 types' + }, + { + id: '4bd8b2e2-981b-474b-9b8b-0b53fecb4b71', + enabled: false, + rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'vmall']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: null, + description: null + }, + { + id: 'af549024-b3b1-43bf-8a66-49c2b2dc5640', + enabled: false, + rule_str: 'FROM all vms TO all vms ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'vmall']], + to: [['wildcard', 'vmall']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: true, + tags: [] + }, + global: null, + description: null + }, + { + id: '9e5a152a-582b-4525-909e-f9c55deb7f03', + enabled: false, + rule_str: 'FROM any TO tag "wat" ALLOW tcp PORT all', + rule_obj: { + from: [['wildcard', 'any']], + to: [['tag', 'wat']], + action: 'allow', + protocol: { + name: 'tcp', + targets: ['all'] + }, + isWildcard: false, + tags: ['wat'] + }, + global: null, + description: null + } +]; + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + rule_obj.tags.length)} + /> + rule_obj.tags.length)} + inactive + /> + rule_obj.tags.length)} + enabled + inactive + /> + + + ) + .toJSON() + ).toMatchSnapshot(); +}); + +it('renders without throwing', () => { + expect( + renderer + .create( + + + rule_obj.tags.length + )} + /> + rule_obj.tags.length + )} + inactive + /> + rule_obj.tags.length + )} + enabled + inactive + /> + + + ) + .toJSON() + ).toMatchSnapshot(); +}); diff --git a/packages/my-joy-beta/src/containers/instances/cns.js b/packages/my-joy-beta/src/containers/instances/cns.js index effcbcf0..8de605e7 100644 --- a/packages/my-joy-beta/src/containers/instances/cns.js +++ b/packages/my-joy-beta/src/containers/instances/cns.js @@ -26,7 +26,7 @@ import UpdateTags from '@graphql/update-tags.gql'; import GetTags from '@graphql/list-tags.gql'; import parseError from '@state/parse-error'; -const CNS_FORM = 'cns-new-service'; +const FORM_NAME = 'cns-new-service'; const CnsContainer = ({ services = [], @@ -79,7 +79,7 @@ const CnsContainer = ({ } > handleAddService(val, services)} @@ -155,7 +155,7 @@ export default compose( let disabled = JSON.parse(cnsDisable.value || 'false'); let services = (cnsServices.value || '').split(/,/gi).filter(Boolean); - const adding = get(form, `${CNS_FORM}.submitting`, false); + const adding = get(form, `${FORM_NAME}.submitting`, false); const toggling = get(values, `cns-${instance.id}-toggling`, false); const removing = get(values, `cns-${instance.id}-removing`, false); const enabled = get(values, `cns-${instance.id}-enabled`, undefined); @@ -343,7 +343,7 @@ export default compose( }); } - return dispatch(destroy(CNS_FORM)); + return dispatch(destroy(FORM_NAME)); } }) ) diff --git a/packages/my-joy-beta/src/containers/instances/firewall.js b/packages/my-joy-beta/src/containers/instances/firewall.js index 4a33eb9c..6ec4034a 100644 --- a/packages/my-joy-beta/src/containers/instances/firewall.js +++ b/packages/my-joy-beta/src/containers/instances/firewall.js @@ -1,104 +1,192 @@ -import React from 'react'; +import React, { Fragment } from 'react'; +import intercept from 'apr-intercept'; +import { connect } from 'react-redux'; +import { compose, graphql } from 'react-apollo'; +import ReduxForm from 'declarative-redux-form'; +import { SubmissionError } from 'redux-form'; +import { Margin } from 'styled-components-spacing'; +import remcalc from 'remcalc'; +import find from 'lodash.find'; +import get from 'lodash.get'; -export default () =>

firewalls

; +import { + ViewContainer, + Message, + MessageTitle, + MessageDescription, + StatusLoader, + Divider +} from 'joyent-ui-toolkit'; -// -// import PropTypes from 'prop-types'; -// import forceArray from 'force-array'; -// import { compose, graphql } from 'react-apollo'; -// import find from 'lodash.find'; -// import get from 'lodash.get'; -// -// import { -// ViewContainer, -// StatusLoader, -// Message, -// MessageDescription, -// MessageTitle, -// Table, -// TableThead, -// TableTr, -// TableTh, -// TableTbody, -// P -// } from 'joyent-ui-toolkit'; -// -// import GetFirewallRules from '@graphql/list-firewall-rules.gql'; -// import { FirewallRule as InstanceFirewallRule } from '@components/instances'; -// -// const Firewall = ({ -// // eslint-disable-next-line camelcase -// firewallEnabled = false, -// firewallRules = [], -// loading, -// error -// }) => { -// const values = forceArray(firewallRules); -// const _loading = !(loading && !values.length) ? null : ; -// -// const _firewall = -// _loading && !values.length ? null : ( -// -// -// -// -//

Rule

-//
-// -//

Global

-//
-// -//

Enabled

-//
-//
-//
-// -// {values.map(network => ( -// -// ))} -// -//
-// ); -// -// const _error = -// error && !values.length && !_loading ? ( -// -// Ooops! -// -// An error occurred while loading your instance firewall rules -// -// -// ) : null; -// -// return ( -// -// {_loading} -// {_error} -// {_firewall} -// -// ); -// }; -// -// Firewall.propTypes = { -// loading: PropTypes.bool -// }; -// -// export default compose( -// graphql(GetFirewallRules, { -// options: ({ match }) => ({ -// pollInterval: 1000, -// variables: { -// name: get(match, 'params.instance') -// } -// }), -// props: ({ data: { loading, error, variables, ...rest } }) => { -// const machine = find(get(rest, 'machines', []), ['name', variables.name]); -// // eslint-disable-next-line camelcase -// const firewallEnabled = get(machine, 'firewall_enabled', false); -// const firewallRules = get(machine, 'firewall_rules', []); -// -// // eslint-disable-next-line camelcase -// return { firewallEnabled, firewallRules, loading, error }; -// } -// }) -// )(Firewall); +import { + ToggleFirewallForm, + ToggleInactiveForm, + DefaultRules, + TagRules +} from '@components/firewall'; + +import Description from '@components/description'; +import Empty from '@components/empty'; +import GetFirewallRules from '@graphql/list-instance-fw-rules.gql'; +import EnableFirewall from '@graphql/enable-instance-fw.gql'; +import DisableFirewall from '@graphql/disable-instance-fw.gql'; +import parseError from '@state/parse-error'; + +export const Firewall = ({ + defaultRules = [], + tagRules = [], + enabled = false, + inactive = false, + loading = false, + loadingError = null, + mutationError = null, + handleEnabledToggle +}) => ( + + + + Cloud Firewall rules control traffic across instances. Enabling the + firewall adds a default set of rules and rules defined by your chosen + tags.{' '} + + Read the docs + + + + {loading ? : null} + {!loading && loadingError ? ( + + Ooops! + + An error occurred while loading your firewall rules + + + ) : null} + {!loading && mutationError ? ( + + Ooops! + {mutationError} + + ) : null} + + {props => + loading ? null : ( + + + + + + + ) + } + + + {props => + !enabled || loading ? null : ( + + + + ) + } + + {!loading && !defaultRules.length && !tagRules.length ? ( + + Sorry, but we weren’t able to find any firewall rules. + + ) : null} + {!loading && enabled && defaultRules.length ? ( + + + + ) : null} + {!loading && enabled && tagRules.length ? ( + + + + ) : null} + +); + +export default compose( + graphql(EnableFirewall, { name: 'enableFirewall' }), + graphql(DisableFirewall, { name: 'disableFirewall' }), + graphql(GetFirewallRules, { + options: ({ match }) => ({ + variables: { + fetchPolicy: 'network-only', + name: get(match, 'params.instance') + } + }), + props: ({ data }) => { + const { loading, error, variables, refetch, ...rest } = data; + const { name } = variables; + + const instance = find(get(rest, 'machines', []), ['name', name]); + const enabled = get(instance, 'firewall_enabled', false); + const rules = get(instance, 'firewall_rules', []); + + return { + enabled, + defaultRules: rules.filter(({ rule_obj = {} }) => rule_obj.isWildcard), + tagRules: rules.filter(({ rule_obj = {} }) => rule_obj.tags.length), + instance, + loading, + loadingError: error + }; + } + }), + connect( + (state, ownProps) => { + const { form } = state; + const { enabled, defaultRules, tagRules } = ownProps; + + const inactive = get(form, `fw-inactive.values.inactive`, false); + + return { + inactive, + mutationError: get(form, `fw-enabled.error`, null), + enabled: get(form, `fw-enabled.values.enabled`, enabled), + defaultRules: defaultRules.filter(({ enabled }) => enabled || inactive), + tagRules: tagRules.filter(({ enabled }) => enabled || inactive) + }; + }, + (dispatch, ownProps) => { + const { instance, enableFirewall, disableFirewall } = ownProps; + + return { + handleEnabledToggle: async ({ enabled }) => { + const mutation = enabled ? enableFirewall : disableFirewall; + + const [err] = await intercept( + mutation({ + variables: { + id: instance.id + } + }) + ); + + if (err) { + throw new SubmissionError({ + _error: parseError(err) + }); + } + } + }; + } + ) +)(Firewall); diff --git a/packages/my-joy-beta/src/graphql/disable-instance-fw.gql b/packages/my-joy-beta/src/graphql/disable-instance-fw.gql index 8d70aa7b..2480df31 100644 --- a/packages/my-joy-beta/src/graphql/disable-instance-fw.gql +++ b/packages/my-joy-beta/src/graphql/disable-instance-fw.gql @@ -1,3 +1,5 @@ mutation disableMachineFirewall($id: ID!) { - disableMachineFirewall(id: $id) + disableMachineFirewall(id: $id) { + id + } } diff --git a/packages/my-joy-beta/src/graphql/enable-instance-fw.gql b/packages/my-joy-beta/src/graphql/enable-instance-fw.gql index 7e2f60b9..dabe0c83 100644 --- a/packages/my-joy-beta/src/graphql/enable-instance-fw.gql +++ b/packages/my-joy-beta/src/graphql/enable-instance-fw.gql @@ -1,3 +1,5 @@ mutation enableMachineFirewall($id: ID!) { - enableMachineFirewall(id: $id) + enableMachineFirewall(id: $id) { + id + } } diff --git a/packages/my-joy-beta/src/graphql/list-firewall-rules.gql b/packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql similarity index 85% rename from packages/my-joy-beta/src/graphql/list-firewall-rules.gql rename to packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql index d7ff260d..c28b21c9 100644 --- a/packages/my-joy-beta/src/graphql/list-firewall-rules.gql +++ b/packages/my-joy-beta/src/graphql/list-instance-fw-rules.gql @@ -6,9 +6,10 @@ query instance($name: String!) { firewall_rules { id enabled + rule_str + rule_obj global description - rule } } } diff --git a/packages/my-joy-beta/src/state/store.js b/packages/my-joy-beta/src/state/store.js index 403bcc24..9d44aad0 100644 --- a/packages/my-joy-beta/src/state/store.js +++ b/packages/my-joy-beta/src/state/store.js @@ -29,7 +29,8 @@ const initialState = { 'Snapshots', 'Tags', 'Metadata', - 'Networks' + 'Networks', + 'Firewall' ].map(name => ({ pathname: paramCase(name), name diff --git a/packages/ui-toolkit/src/tags/item.js b/packages/ui-toolkit/src/tags/item.js index 446df782..b3ab7641 100644 --- a/packages/ui-toolkit/src/tags/item.js +++ b/packages/ui-toolkit/src/tags/item.js @@ -25,7 +25,7 @@ const Tag = styled.li` border-radius: ${remcalc(3)}; font-size: ${remcalc(13)}; line-height: ${remcalc(18)}; - padding: ${remcalc(6)} ${remcalc(12)}; + padding: ${remcalc(5)} ${remcalc(12)}; display: flex; align-items: center; flex-grow: 1; diff --git a/yarn.lock b/yarn.lock index c945766f..7c8af0c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -296,11 +296,11 @@ ammo@3.x.x: boom "6.x.x" hoek "5.x.x" -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" dependencies: - string-width "^1.0.1" + string-width "^2.0.0" ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: version "1.4.0" @@ -1878,19 +1878,17 @@ bounce@1.2.x, bounce@1.x.x, bounce@^1.2.0: boom "7.x.x" hoek "5.x.x" -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.8" @@ -2158,7 +2156,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0, camelcase@^2.1.0: +camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2166,7 +2164,7 @@ camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" -camelcase@^4.1.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -2427,9 +2425,9 @@ clone@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" -cloudapi-gql@^4.3.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cloudapi-gql/-/cloudapi-gql-4.4.0.tgz#285233dd48c92d7d760e74c4b46b11f54c1a8f00" +cloudapi-gql@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/cloudapi-gql/-/cloudapi-gql-4.5.0.tgz#af2d6c49d108256049c63e761eb5af74390011e2" dependencies: apr-map "^1.0.5" boom "^7.1.1" @@ -2440,6 +2438,8 @@ cloudapi-gql@^4.3.1: graphi "^5.2.0" graphql-tools "^2.6.1" hasha "^3.0.0" + lodash.isundefined "^3.0.1" + lodash.uniq "^4.5.0" random-int "^1.0.0" reach "^1.0.0" sentiment "^4.2.0" @@ -2617,19 +2617,16 @@ concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" +configstore@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" dependencies: - dot-prop "^3.0.0" + dot-prop "^4.1.0" graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" connect-history-api-fallback@^1.3.0: version "1.5.0" @@ -2909,7 +2906,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-error-class@^3.0.0, create-error-class@^3.0.1: +create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" dependencies: @@ -2999,6 +2996,10 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" @@ -3507,6 +3508,12 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + dotenv-expand@4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.0.1.tgz#68fddc1561814e0a10964111057ff138ced7d7a8" @@ -3521,12 +3528,6 @@ drip@1.1.0: dependencies: tea-concat "0.1.0" -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -4385,10 +4386,6 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - fillers@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/fillers/-/fillers-1.1.2.tgz#f57387731e716c3e9f37027952574d211955406a" @@ -4773,6 +4770,12 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -4837,26 +4840,6 @@ glogg@^1.0.0: dependencies: sparkles "^1.0.0" -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -5355,6 +5338,10 @@ immutability-helper@^2.1.2: dependencies: invariant "^2.2.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + import-local@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/import-local/-/import-local-0.1.1.tgz#b1179572aacdc11c6a91009fb430dbcab5f668a8" @@ -5678,6 +5665,13 @@ is-in-browser@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + is-nil@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-nil/-/is-nil-1.0.1.tgz#2daba29e0b585063875e7b539d071f5b15937969" @@ -6425,11 +6419,11 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" dependencies: - package-json "^2.0.0" + package-json "^4.0.0" lazy-cache@^1.0.3: version "1.0.4" @@ -6441,10 +6435,6 @@ lazy-cache@^2.0.2: dependencies: set-getter "^0.1.0" -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -7085,8 +7075,8 @@ minio-proto-auth@^1.1.0: wreck "14.0.x" mississippi@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" + version "1.3.1" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e" dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -7106,7 +7096,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -7315,10 +7305,6 @@ node-pre-gyp@^0.6.36, node-pre-gyp@^0.6.39: tar "^2.2.1" tar-pack "^3.4.0" -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - node-uuid@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.2.0.tgz#81a9fe32934719852499b58b2523d2cd5fdfd65b" @@ -7574,7 +7560,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@^0.1.0, osenv@^0.1.4: +osenv@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" dependencies: @@ -7617,16 +7603,7 @@ p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -package-json@^4.0.1: +package-json@^4.0.0, package-json@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" dependencies: @@ -7687,7 +7664,7 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.1.0, parse-json@^2.2.0: +parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: @@ -8829,13 +8806,6 @@ react@16.2.0, react@^0.14.0, react@^15.5.4, react@^16.2.0: object-assign "^4.1.1" prop-types "^15.6.0" -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -8904,7 +8874,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -9801,7 +9771,7 @@ slice-ansi@1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" -slide@^1.1.5, slide@~1.1.3: +slide@~1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -10340,8 +10310,8 @@ sw-precache-webpack-plugin@0.11.4, sw-precache-webpack-plugin@^0.11.4: uglify-js "^3.0.13" sw-precache@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.0.tgz#eb6225ce580ceaae148194578a0ad01ab7ea199c" + version "5.2.1" + resolved "https://registry.yarnpkg.com/sw-precache/-/sw-precache-5.2.1.tgz#06134f319eec68f3b9583ce9a7036b1c119f7179" dependencies: dom-urls "^1.1.0" es6-promise "^4.0.5" @@ -10352,7 +10322,7 @@ sw-precache@^5.1.1: mkdirp "^0.5.1" pretty-bytes "^4.0.2" sw-toolbox "^3.4.0" - update-notifier "^1.0.3" + update-notifier "^2.3.0" sw-toolbox@^3.4.0: version "3.6.0" @@ -10459,6 +10429,12 @@ tempfile@^1.1.1: os-tmpdir "^1.0.0" uuid "^2.0.1" +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + test-exclude@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" @@ -10516,17 +10492,13 @@ time-stamp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" timers-browserify@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.5.tgz#04878fb12a155a159c9d1e59faa1f77bf4ecc44c" + version "2.0.6" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" dependencies: setimmediate "^1.0.4" @@ -10827,6 +10799,12 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + unist-util-is@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b" @@ -10888,26 +10866,23 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -update-notifier@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" +update-notifier@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-installed-globally "^0.1.0" is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" + latest-version "^3.0.0" semver-diff "^2.0.0" - xdg-basedir "^2.0.0" + xdg-basedir "^3.0.0" upper-case-first@^1.1.0: version "1.1.2" @@ -11381,11 +11356,11 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2" -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" dependencies: - string-width "^1.0.1" + string-width "^2.1.1" window-size@0.1.0: version "0.1.0" @@ -11428,14 +11403,6 @@ wreck@14.0.x, wreck@14.x.x, wreck@^14.0.2: boom "7.x.x" hoek "5.x.x" -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -11476,11 +11443,9 @@ x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" xml-char-classes@^1.0.0: version "1.0.0"