Compare commits
17 commits
main
...
common-3.0
| Author | SHA1 | Date | |
|---|---|---|---|
| f20e61d57c | |||
| b0b6d6723e | |||
| d6a0cc6220 | |||
| 9180323618 | |||
| 08f4a818da | |||
| bab0db48d1 | |||
| 85d9278e2e | |||
| ebead17193 | |||
| fefd2737f3 | |||
| a4bd129252 | |||
| 4617d8d3ba | |||
| 6c250d4656 | |||
| 2403f5db64 | |||
| c66e304de4 | |||
| 2cb8c90357 | |||
| 837ee043aa | |||
| a20602f671 |
11 changed files with 76 additions and 53 deletions
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
|
|
@ -18,10 +18,9 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
ref: main
|
|
||||||
- name: Install graphviz
|
- name: Install graphviz
|
||||||
run: sudo apt-get install graphviz
|
run: sudo apt-get install graphviz
|
||||||
- name: Install podman
|
- name: Install podman
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
// Apply the common versioning conventions.
|
||||||
|
// Put this at the start, because accessing project.version before
|
||||||
|
// this is applied makes things fail.
|
||||||
|
id 'org.jdrupes.vmoperator.versioning-conventions'
|
||||||
|
|
||||||
// Apply the java Plugin to add support for Java.
|
// Apply the java Plugin to add support for Java.
|
||||||
id 'java'
|
id 'java'
|
||||||
|
|
||||||
|
|
@ -13,9 +18,6 @@ plugins {
|
||||||
|
|
||||||
// Access to git information
|
// Access to git information
|
||||||
id 'org.ajoberstar.grgit'
|
id 'org.ajoberstar.grgit'
|
||||||
|
|
||||||
// Apply the common versioning conventions.
|
|
||||||
id 'org.jdrupes.vmoperator.versioning-conventions'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,13 @@ scmVersion {
|
||||||
}
|
}
|
||||||
var p = shortened.replace('.', '-') + "-"
|
var p = shortened.replace('.', '-') + "-"
|
||||||
if (grgit.branch.current.name != "main"
|
if (grgit.branch.current.name != "main"
|
||||||
&& !grgit.branch.current.name.startsWith("release")) {
|
&& grgit.branch.current.name != "HEAD"
|
||||||
|
&& !grgit.branch.current.name.startsWith("release")
|
||||||
|
&& !grgit.branch.current.name.startsWith("develop")) {
|
||||||
p = p + grgit.branch.current.name.replace('/', '-') + "-"
|
p = p + grgit.branch.current.name.replace('/', '-') + "-"
|
||||||
}
|
}
|
||||||
prefix = p
|
prefix = p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
version = scmVersion.version
|
project.version = scmVersion.version
|
||||||
ext.isSnapshot = version.endsWith('-SNAPSHOT')
|
ext.isSnapshot = version.endsWith('-SNAPSHOT')
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
body {
|
body {
|
||||||
background-color:#ffffff;
|
background-color:#ffffff;
|
||||||
color:#353833;
|
color:#353833;
|
||||||
font: normal 16px/1.5 "DejaVu Serif", serif;
|
font: normal 16px/1.5 "DejaVu Sans", Arial, Helvetica, sans-serif;
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:0;
|
padding:0;
|
||||||
height:100%;
|
height:100%;
|
||||||
|
|
@ -71,37 +71,33 @@ a[name] {
|
||||||
color:#353833;
|
color:#353833;
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
font-family: "DejaVu Sans Mono", monospace;
|
font-family:'DejaVu Sans Mono', monospace;
|
||||||
}
|
}
|
||||||
h1 {
|
h1 {
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:20px;
|
font-size:20px;
|
||||||
}
|
}
|
||||||
h2 {
|
h2 {
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:18px;
|
font-size:18px;
|
||||||
}
|
}
|
||||||
h3 {
|
h3 {
|
||||||
font-family: "DejaVu Sans", sans;
|
font-size:17px;
|
||||||
font-size:16px;
|
|
||||||
}
|
}
|
||||||
h4 {
|
h4 {
|
||||||
font-family: "DejaVu Sans", sans;
|
font-size:16px;
|
||||||
font-size:15px;
|
margin-top: 1rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
h5 {
|
h5 {
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
}
|
}
|
||||||
h6 {
|
h6 {
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:13px;
|
font-size:13px;
|
||||||
}
|
}
|
||||||
ul {
|
ul {
|
||||||
list-style-type:disc;
|
list-style-type:disc;
|
||||||
}
|
}
|
||||||
code, tt {
|
code, tt {
|
||||||
font-family: "DejaVu Sans Mono", monospace;
|
font-family:'DejaVu Sans Mono', monospace;
|
||||||
}
|
}
|
||||||
:not(h1, h2, h3, h4, h5, h6) > code,
|
:not(h1, h2, h3, h4, h5, h6) > code,
|
||||||
:not(h1, h2, h3, h4, h5, h6) > tt {
|
:not(h1, h2, h3, h4, h5, h6) > tt {
|
||||||
|
|
@ -111,12 +107,12 @@ code, tt {
|
||||||
line-height:1.4em;
|
line-height:1.4em;
|
||||||
}
|
}
|
||||||
dt code {
|
dt code {
|
||||||
font-family: "DejaVu Sans Mono", monospace;
|
font-family:'DejaVu Sans Mono', monospace;
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
padding-top:4px;
|
padding-top:4px;
|
||||||
}
|
}
|
||||||
.summary-table dt code {
|
.summary-table dt code {
|
||||||
font-family: "DejaVu Sans Mono", monospace;
|
font-family:'DejaVu Sans Mono', monospace;
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
vertical-align:top;
|
vertical-align:top;
|
||||||
padding-top:4px;
|
padding-top:4px;
|
||||||
|
|
@ -124,7 +120,9 @@ dt code {
|
||||||
sup {
|
sup {
|
||||||
font-size:8px;
|
font-size:8px;
|
||||||
}
|
}
|
||||||
|
button {
|
||||||
|
font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Styles for HTML generated by javadoc.
|
* Styles for HTML generated by javadoc.
|
||||||
*
|
*
|
||||||
|
|
@ -185,7 +183,6 @@ sup {
|
||||||
min-height:2.8em;
|
min-height:2.8em;
|
||||||
padding-top:10px;
|
padding-top:10px;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:80%;
|
font-size:80%;
|
||||||
}
|
}
|
||||||
.sub-nav {
|
.sub-nav {
|
||||||
|
|
@ -193,7 +190,6 @@ sup {
|
||||||
float:left;
|
float:left;
|
||||||
width:100%;
|
width:100%;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-size:80%;
|
font-size:80%;
|
||||||
}
|
}
|
||||||
.sub-nav div {
|
.sub-nav div {
|
||||||
|
|
@ -311,13 +307,16 @@ main {
|
||||||
position:relative;
|
position:relative;
|
||||||
}
|
}
|
||||||
dl.notes > dt {
|
dl.notes > dt {
|
||||||
font-family: "DejaVu Sans", sans;
|
font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
|
||||||
|
/* font-size:12px; */
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
margin:10px 0 0 0;
|
margin:10px 0 0 0;
|
||||||
color:#4E4E4E;
|
color:#4E4E4E;
|
||||||
}
|
}
|
||||||
dl.notes > dd {
|
dl.notes > dd {
|
||||||
margin:5px 10px 10px 0;
|
margin:5px 10px 0 0;
|
||||||
|
/* font-size:14px; */
|
||||||
|
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
|
||||||
}
|
}
|
||||||
dl.name-value > dt {
|
dl.name-value > dt {
|
||||||
margin-left:1px;
|
margin-left:1px;
|
||||||
|
|
@ -389,6 +388,11 @@ ul.see-list-long li:not(:last-child):after {
|
||||||
border-bottom:1px solid #EEE;
|
border-bottom:1px solid #EEE;
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.summary-table .col-first {
|
||||||
|
font-family: "DejaVu Sans Mono", monospace;
|
||||||
|
}
|
||||||
|
|
||||||
.caption {
|
.caption {
|
||||||
position:relative;
|
position:relative;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
|
|
@ -402,7 +406,6 @@ ul.see-list-long li:not(:last-child):after {
|
||||||
padding-left:1px;
|
padding-left:1px;
|
||||||
margin:0;
|
margin:0;
|
||||||
white-space:pre;
|
white-space:pre;
|
||||||
font-family: 'DejaVu Sans';
|
|
||||||
}
|
}
|
||||||
.caption a:link, .caption a:visited {
|
.caption a:link, .caption a:visited {
|
||||||
color:#1f389c;
|
color:#1f389c;
|
||||||
|
|
@ -450,9 +453,6 @@ div.table-tabs > button.table-tab {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
|
grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto);
|
||||||
}
|
}
|
||||||
#method-summary-table .three-column-summary {
|
|
||||||
grid-template-columns: minmax(10%, 20%) minmax(15%, max-content) minmax(15%, auto);
|
|
||||||
}
|
|
||||||
.four-column-summary {
|
.four-column-summary {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
|
grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto);
|
||||||
|
|
@ -490,7 +490,6 @@ div.table-tabs > button.table-tab {
|
||||||
}
|
}
|
||||||
.table-header {
|
.table-header {
|
||||||
background:#dee3e9;
|
background:#dee3e9;
|
||||||
font-family: 'DejaVu Sans';
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -508,7 +507,6 @@ div.table-tabs > button.table-tab {
|
||||||
.col-last {
|
.col-last {
|
||||||
white-space:normal;
|
white-space:normal;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
.col-first a:link, .col-first a:visited,
|
.col-first a:link, .col-first a:visited,
|
||||||
.col-second a:link, .col-second a:visited,
|
.col-second a:link, .col-second a:visited,
|
||||||
.col-first a:link, .col-first a:visited,
|
.col-first a:link, .col-first a:visited,
|
||||||
|
|
@ -520,7 +518,6 @@ div.table-tabs > button.table-tab {
|
||||||
.all-packages-container a:link, .all-packages-container a:visited {
|
.all-packages-container a:link, .all-packages-container a:visited {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
.table-sub-heading-color {
|
.table-sub-heading-color {
|
||||||
background-color:#EEEEFF;
|
background-color:#EEEEFF;
|
||||||
}
|
}
|
||||||
|
|
@ -537,12 +534,9 @@ div.table-tabs > button.table-tab {
|
||||||
margin:0;
|
margin:0;
|
||||||
padding:10px 0;
|
padding:10px 0;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
div.block {
|
div.block {
|
||||||
font-size:14px;
|
|
||||||
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
|
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
.col-last div {
|
.col-last div {
|
||||||
padding-top:0;
|
padding-top:0;
|
||||||
}
|
}
|
||||||
|
|
@ -553,8 +547,7 @@ div.block {
|
||||||
.package-signature,
|
.package-signature,
|
||||||
.type-signature,
|
.type-signature,
|
||||||
.member-signature {
|
.member-signature {
|
||||||
font-family: "DejaVu Sans Mono", monospace;
|
font-family:'DejaVu Sans Mono', monospace;
|
||||||
/* font-size:14px; */
|
|
||||||
margin:14px 0;
|
margin:14px 0;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
|
|
@ -593,13 +586,8 @@ h1.hidden {
|
||||||
.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
|
.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link,
|
||||||
.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
|
.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type,
|
||||||
.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
|
.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
.sub-title, .inheritance, .all-packages-table-tab1.col-first,
|
|
||||||
.summary-table .col-first {
|
|
||||||
font-family: "DejaVu Sans", sans;
|
|
||||||
}
|
|
||||||
.deprecation-comment, .help-footnote, .preview-comment {
|
.deprecation-comment, .help-footnote, .preview-comment {
|
||||||
font-style:italic;
|
font-style:italic;
|
||||||
}
|
}
|
||||||
|
|
@ -658,6 +646,7 @@ main, nav, header, footer, section {
|
||||||
ul.ui-autocomplete {
|
ul.ui-autocomplete {
|
||||||
position:fixed;
|
position:fixed;
|
||||||
z-index:999999;
|
z-index:999999;
|
||||||
|
background-color: #FFFFFF;
|
||||||
}
|
}
|
||||||
ul.ui-autocomplete li {
|
ul.ui-autocomplete li {
|
||||||
float:left;
|
float:left;
|
||||||
|
|
@ -667,6 +656,9 @@ ul.ui-autocomplete li {
|
||||||
.result-highlight {
|
.result-highlight {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
}
|
}
|
||||||
|
.ui-autocomplete .result-item {
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
#search-input {
|
#search-input {
|
||||||
background-image:url('resources/glass.png');
|
background-image:url('resources/glass.png');
|
||||||
background-size:13px;
|
background-size:13px;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import static org.jdrupes.vmoperator.common.Constants.APP_NAME;
|
import static org.jdrupes.vmoperator.common.Constants.APP_NAME;
|
||||||
|
|
@ -180,7 +181,8 @@ public class DisplaySecretMonitor
|
||||||
// Check validity
|
// Check validity
|
||||||
var model = stub.model().get();
|
var model = stub.model().get();
|
||||||
@SuppressWarnings("PMD.StringInstantiation")
|
@SuppressWarnings("PMD.StringInstantiation")
|
||||||
var expiry = new String(model.getData().get(DATA_PASSWORD_EXPIRY));
|
var expiry = Optional.ofNullable(model.getData()
|
||||||
|
.get(DATA_PASSWORD_EXPIRY)).map(b -> new String(b)).orElse(null);
|
||||||
if (model.getData().get(DATA_DISPLAY_PASSWORD) != null
|
if (model.getData().get(DATA_DISPLAY_PASSWORD) != null
|
||||||
&& stillValid(expiry)) {
|
&& stillValid(expiry)) {
|
||||||
event.setResult(
|
event.setResult(
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ import org.jose4j.base64url.Base64;
|
||||||
var display = GsonPtr.to(event.vmDefinition().data()).to("spec", "vm",
|
var display = GsonPtr.to(event.vmDefinition().data()).to("spec", "vm",
|
||||||
"display");
|
"display");
|
||||||
if (!display.get(JsonPrimitive.class, "spice", "generateSecret")
|
if (!display.get(JsonPrimitive.class, "spice", "generateSecret")
|
||||||
.map(JsonPrimitive::getAsBoolean).orElse(false)) {
|
.map(JsonPrimitive::getAsBoolean).orElse(true)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Developers may also be interested in the usage of channels
|
* Developers may also be interested in the usage of channels
|
||||||
* by the application's component:
|
* by the application's components:
|
||||||
*
|
*
|
||||||
* 
|
* 
|
||||||
*
|
*
|
||||||
|
|
@ -74,6 +74,8 @@
|
||||||
*
|
*
|
||||||
* Component NioDispatcher as NioDispatcher <<internal>>
|
* Component NioDispatcher as NioDispatcher <<internal>>
|
||||||
* [Manager] *-up- [NioDispatcher]
|
* [Manager] *-up- [NioDispatcher]
|
||||||
|
* Component HttpConnector as HttpConnector <<internal>>
|
||||||
|
* [Manager] *-up- [HttpConnector]
|
||||||
* Component FileSystemWatcher as FileSystemWatcher <<internal>>
|
* Component FileSystemWatcher as FileSystemWatcher <<internal>>
|
||||||
* [Manager] *-up- [FileSystemWatcher]
|
* [Manager] *-up- [FileSystemWatcher]
|
||||||
* Component YamlConfigurationStore as YamlConfigurationStore <<internal>>
|
* Component YamlConfigurationStore as YamlConfigurationStore <<internal>>
|
||||||
|
|
@ -119,6 +121,7 @@
|
||||||
* [WebConsole] *-- [RoleConfigurator]
|
* [WebConsole] *-- [RoleConfigurator]
|
||||||
* [WebConsole] *-- [RoleConletFilter]
|
* [WebConsole] *-- [RoleConletFilter]
|
||||||
* [WebConsole] *-left- [LoginConlet]
|
* [WebConsole] *-left- [LoginConlet]
|
||||||
|
* [WebConsole] *-right- [OidcClient]
|
||||||
*
|
*
|
||||||
* Component "ComponentCollector\nfor page resources" as cpr <<internal>>
|
* Component "ComponentCollector\nfor page resources" as cpr <<internal>>
|
||||||
* [WebConsole] *-- [cpr]
|
* [WebConsole] *-- [cpr]
|
||||||
|
|
@ -147,21 +150,35 @@
|
||||||
* () "guiTransport" as hT
|
* () "guiTransport" as hT
|
||||||
* hT .up. [GuiSocketServer:8080]
|
* hT .up. [GuiSocketServer:8080]
|
||||||
* hT .down. [GuiHttpServer]
|
* hT .down. [GuiHttpServer]
|
||||||
|
* hT .right[hidden]. [HttpConnector]
|
||||||
*
|
*
|
||||||
* [YamlConfigurationStore] -right[hidden]- hT
|
* [YamlConfigurationStore] -right[hidden]- hT
|
||||||
*
|
*
|
||||||
* () "guiHttp" as http
|
* () "guiHttp" as http
|
||||||
* http .up. [GuiHttpServer]
|
* http .up. [GuiHttpServer]
|
||||||
|
* http .up. [HttpConnector]
|
||||||
|
* note top of [HttpConnector]: transport layer com-\nponents omitted
|
||||||
*
|
*
|
||||||
* [PreferencesStore] .right. http
|
* [PreferencesStore] .. http
|
||||||
|
* [OidcClient] .up. http
|
||||||
|
* [LanguageSelector] .left. http
|
||||||
* [InMemorySessionManager] .up. http
|
* [InMemorySessionManager] .up. http
|
||||||
* [LanguageSelector] .up. http
|
|
||||||
*
|
*
|
||||||
* package "Conceptual WebConsole" {
|
* package "Conceptual WebConsole" {
|
||||||
* [ConsoleWeblet] .left. http
|
* [ConsoleWeblet] .right. http
|
||||||
* [ConsoleWeblet] *-down- [WebConsole]
|
* [ConsoleWeblet] *-down- [WebConsole]
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
|
* [Controller] .down[hidden]. [ConsoleWeblet]
|
||||||
|
*
|
||||||
|
* () "console" as console
|
||||||
|
* console .. WebConsole
|
||||||
|
*
|
||||||
|
* [OidcClient] .. console
|
||||||
|
* [LoginConlet] .right. console
|
||||||
|
*
|
||||||
|
* note right of console: More conlets\nconnect here
|
||||||
|
*
|
||||||
* @enduml
|
* @enduml
|
||||||
*/
|
*/
|
||||||
package org.jdrupes.vmoperator.manager;
|
package org.jdrupes.vmoperator.manager;
|
||||||
|
|
|
||||||
|
|
@ -52,12 +52,14 @@
|
||||||
v-html="controller.breakBeforeDots(entry[key])"></span>
|
v-html="controller.breakBeforeDots(entry[key])"></span>
|
||||||
</td>
|
</td>
|
||||||
<td class="jdrupes-vmoperator-vmconlet-view-action-list">
|
<td class="jdrupes-vmoperator-vmconlet-view-action-list">
|
||||||
<span role="button" v-if="entry.spec.vm.state != 'Running'"
|
<span role="button"
|
||||||
|
v-if="entry.spec.vm.state != 'Running' && !entry['running']"
|
||||||
tabindex="0" class="fa fa-play" :title="localize('Start VM')"
|
tabindex="0" class="fa fa-play" :title="localize('Start VM')"
|
||||||
v-on:click="vmAction(entry.name, 'start')"></span>
|
v-on:click="vmAction(entry.name, 'start')"></span>
|
||||||
<span role="button" v-else class="fa fa-play"
|
<span role="button" v-else class="fa fa-play"
|
||||||
aria-disabled="true" :title="localize('Start VM')"></span>
|
aria-disabled="true" :title="localize('Start VM')"></span>
|
||||||
<span role="button" v-if="entry.spec.vm.state != 'Stopped'"
|
<span role="button"
|
||||||
|
v-if="entry.spec.vm.state != 'Stopped' && entry['running']"
|
||||||
tabindex="0" class="fa fa-stop" :title="localize('Stop VM')"
|
tabindex="0" class="fa fa-stop" :title="localize('Stop VM')"
|
||||||
v-on:click="vmAction(entry.name, 'stop')"></span>
|
v-on:click="vmAction(entry.name, 'stop')"></span>
|
||||||
<span role="button" v-else class="fa fa-stop"
|
<span role="button" v-else class="fa fa-stop"
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ import org.jgrapes.webconsole.base.events.UpdateConletType;
|
||||||
import org.jgrapes.webconsole.base.freemarker.FreeMarkerConlet;
|
import org.jgrapes.webconsole.base.freemarker.FreeMarkerConlet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class VmConlet.
|
* The Class VmViewer.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({ "PMD.DataflowAnomalyAnalysis", "PMD.ExcessiveImports",
|
@SuppressWarnings({ "PMD.DataflowAnomalyAnalysis", "PMD.ExcessiveImports",
|
||||||
"PMD.CouplingBetweenObjects", "PMD.GodClass" })
|
"PMD.CouplingBetweenObjects", "PMD.GodClass" })
|
||||||
|
|
|
||||||
|
|
@ -92,13 +92,15 @@ window.orgJDrupesVmOperatorVmViewer.initPreview = (previewDom: HTMLElement,
|
||||||
:title="localize('Open console')"></td>
|
:title="localize('Open console')"></td>
|
||||||
<td v-if="vmDef.spec"
|
<td v-if="vmDef.spec"
|
||||||
class="jdrupes-vmoperator-vmviewer-preview-action-list">
|
class="jdrupes-vmoperator-vmviewer-preview-action-list">
|
||||||
<span role="button" v-if="vmDef.spec.vm.state != 'Running'"
|
<span role="button"
|
||||||
|
v-if="vmDef.spec.vm.state != 'Running' && !vmDef.running"
|
||||||
:aria-disabled="!vmDef.userPermissions.includes('start')"
|
:aria-disabled="!vmDef.userPermissions.includes('start')"
|
||||||
tabindex="0" class="fa fa-play" :title="localize('Start VM')"
|
tabindex="0" class="fa fa-play" :title="localize('Start VM')"
|
||||||
v-on:click="vmAction(vmDef.name, 'start')"></span>
|
v-on:click="vmAction(vmDef.name, 'start')"></span>
|
||||||
<span role="button" v-else class="fa fa-play"
|
<span role="button" v-else class="fa fa-play"
|
||||||
aria-disabled="true" :title="localize('Start VM')"></span>
|
aria-disabled="true" :title="localize('Start VM')"></span>
|
||||||
<span role="button" v-if="vmDef.spec.vm.state != 'Stopped'"
|
<span role="button"
|
||||||
|
v-if="vmDef.spec.vm.state != 'Stopped' && vmDef.running"
|
||||||
:aria-disabled="!vmDef.userPermissions.includes('stop')"
|
:aria-disabled="!vmDef.userPermissions.includes('stop')"
|
||||||
tabindex="0" class="fa fa-stop" :title="localize('Stop VM')"
|
tabindex="0" class="fa fa-stop" :title="localize('Stop VM')"
|
||||||
v-on:click="vmAction(vmDef.name, 'stop')"></span>
|
v-on:click="vmAction(vmDef.name, 'stop')"></span>
|
||||||
|
|
|
||||||
|
|
@ -43,3 +43,8 @@
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.jdrupes-vmoperator-vmviewer-edit {
|
||||||
|
select {
|
||||||
|
width: 15em;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue