diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3e6b3c9..e99ee03 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,10 +18,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - ref: main - name: Install graphviz run: sudo apt-get install graphviz - name: Install podman diff --git a/buildSrc/src/org.jdrupes.vmoperator.java-common-conventions.gradle b/buildSrc/src/org.jdrupes.vmoperator.java-common-conventions.gradle index e09814c..5185041 100644 --- a/buildSrc/src/org.jdrupes.vmoperator.java-common-conventions.gradle +++ b/buildSrc/src/org.jdrupes.vmoperator.java-common-conventions.gradle @@ -5,6 +5,11 @@ */ 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. id 'java' @@ -13,9 +18,6 @@ plugins { // Access to git information id 'org.ajoberstar.grgit' - - // Apply the common versioning conventions. - id 'org.jdrupes.vmoperator.versioning-conventions' } repositories { diff --git a/buildSrc/src/org.jdrupes.vmoperator.versioning-conventions.gradle b/buildSrc/src/org.jdrupes.vmoperator.versioning-conventions.gradle index 114db51..40ced48 100644 --- a/buildSrc/src/org.jdrupes.vmoperator.versioning-conventions.gradle +++ b/buildSrc/src/org.jdrupes.vmoperator.versioning-conventions.gradle @@ -21,11 +21,13 @@ scmVersion { } var p = shortened.replace('.', '-') + "-" 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('/', '-') + "-" } prefix = p } } -version = scmVersion.version +project.version = scmVersion.version ext.isSnapshot = version.endsWith('-SNAPSHOT') diff --git a/misc/stylesheet.css b/misc/stylesheet.css index e21b9b2..625b5ae 100644 --- a/misc/stylesheet.css +++ b/misc/stylesheet.css @@ -45,7 +45,7 @@ body { background-color:#ffffff; color:#353833; - font: normal 16px/1.5 "DejaVu Serif", serif; + font: normal 16px/1.5 "DejaVu Sans", Arial, Helvetica, sans-serif; margin:0; padding:0; height:100%; @@ -71,37 +71,33 @@ a[name] { color:#353833; } pre { - font-family: "DejaVu Sans Mono", monospace; + font-family:'DejaVu Sans Mono', monospace; } h1 { - font-family: "DejaVu Sans", sans; font-size:20px; } h2 { - font-family: "DejaVu Sans", sans; font-size:18px; } h3 { - font-family: "DejaVu Sans", sans; - font-size:16px; + font-size:17px; } h4 { - font-family: "DejaVu Sans", sans; - font-size:15px; + font-size:16px; + margin-top: 1rem; + margin-bottom: 1rem; } h5 { - font-family: "DejaVu Sans", sans; font-size:14px; } h6 { - font-family: "DejaVu Sans", sans; font-size:13px; } ul { list-style-type:disc; } 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) > tt { @@ -111,12 +107,12 @@ code, tt { line-height:1.4em; } dt code { - font-family: "DejaVu Sans Mono", monospace; + font-family:'DejaVu Sans Mono', monospace; font-size:14px; padding-top:4px; } .summary-table dt code { - font-family: "DejaVu Sans Mono", monospace; + font-family:'DejaVu Sans Mono', monospace; font-size:14px; vertical-align:top; padding-top:4px; @@ -124,7 +120,9 @@ dt code { sup { font-size:8px; } - +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; +} /* * Styles for HTML generated by javadoc. * @@ -185,7 +183,6 @@ sup { min-height:2.8em; padding-top:10px; overflow:hidden; - font-family: "DejaVu Sans", sans; font-size:80%; } .sub-nav { @@ -193,7 +190,6 @@ sup { float:left; width:100%; overflow:hidden; - font-family: "DejaVu Sans", sans; font-size:80%; } .sub-nav div { @@ -311,13 +307,16 @@ main { position:relative; } dl.notes > dt { - font-family: "DejaVu Sans", sans; + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + /* font-size:12px; */ font-weight:bold; margin:10px 0 0 0; color:#4E4E4E; } 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 { margin-left:1px; @@ -389,6 +388,11 @@ ul.see-list-long li:not(:last-child):after { border-bottom:1px solid #EEE; padding:0; } + +.summary-table .col-first { + font-family: "DejaVu Sans Mono", monospace; +} + .caption { position:relative; text-align:left; @@ -402,7 +406,6 @@ ul.see-list-long li:not(:last-child):after { padding-left:1px; margin:0; white-space:pre; - font-family: 'DejaVu Sans'; } .caption a:link, .caption a:visited { color:#1f389c; @@ -450,9 +453,6 @@ div.table-tabs > button.table-tab { display: grid; 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 { display: grid; 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 { background:#dee3e9; - font-family: 'DejaVu Sans'; font-weight: bold; } /* @@ -508,7 +507,6 @@ div.table-tabs > button.table-tab { .col-last { white-space:normal; } -/* .col-first a:link, .col-first a:visited, .col-second a:link, .col-second 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 { font-weight:bold; } -*/ .table-sub-heading-color { background-color:#EEEEFF; } @@ -537,12 +534,9 @@ div.table-tabs > button.table-tab { margin:0; padding:10px 0; } -/* div.block { - font-size:14px; font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; } -*/ .col-last div { padding-top:0; } @@ -553,8 +547,7 @@ div.block { .package-signature, .type-signature, .member-signature { - font-family: "DejaVu Sans Mono", monospace; - /* font-size:14px; */ + font-family:'DejaVu Sans Mono', monospace; margin:14px 0; white-space: pre-wrap; } @@ -593,13 +586,8 @@ h1.hidden { .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, .package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { - font-family: "DejaVu Sans", sans; 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 { font-style:italic; } @@ -658,6 +646,7 @@ main, nav, header, footer, section { ul.ui-autocomplete { position:fixed; z-index:999999; + background-color: #FFFFFF; } ul.ui-autocomplete li { float:left; @@ -667,6 +656,9 @@ ul.ui-autocomplete li { .result-highlight { font-weight:bold; } +.ui-autocomplete .result-item { + font-size: inherit; +} #search-input { background-image:url('resources/glass.png'); background-size:13px; diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretMonitor.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretMonitor.java index 8bc1db0..1ea766c 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretMonitor.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretMonitor.java @@ -33,6 +33,7 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Scanner; import java.util.logging.Level; import static org.jdrupes.vmoperator.common.Constants.APP_NAME; @@ -180,7 +181,8 @@ public class DisplaySecretMonitor // Check validity var model = stub.model().get(); @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 && stillValid(expiry)) { event.setResult( diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretReconciler.java index 14b8890..17456aa 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretReconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/DisplaySecretReconciler.java @@ -64,7 +64,7 @@ import org.jose4j.base64url.Base64; var display = GsonPtr.to(event.vmDefinition().data()).to("spec", "vm", "display"); if (!display.get(JsonPrimitive.class, "spice", "generateSecret") - .map(JsonPrimitive::getAsBoolean).orElse(false)) { + .map(JsonPrimitive::getAsBoolean).orElse(true)) { return; } diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/package-info.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/package-info.java index 54d4efe..337b5e3 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/package-info.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/package-info.java @@ -57,7 +57,7 @@ * ``` * * Developers may also be interested in the usage of channels - * by the application's component: + * by the application's components: * * ![Main channels](app-channels.svg) * @@ -74,6 +74,8 @@ * * Component NioDispatcher as NioDispatcher <> * [Manager] *-up- [NioDispatcher] + * Component HttpConnector as HttpConnector <> + * [Manager] *-up- [HttpConnector] * Component FileSystemWatcher as FileSystemWatcher <> * [Manager] *-up- [FileSystemWatcher] * Component YamlConfigurationStore as YamlConfigurationStore <> @@ -119,6 +121,7 @@ * [WebConsole] *-- [RoleConfigurator] * [WebConsole] *-- [RoleConletFilter] * [WebConsole] *-left- [LoginConlet] + * [WebConsole] *-right- [OidcClient] * * Component "ComponentCollector\nfor page resources" as cpr <> * [WebConsole] *-- [cpr] @@ -147,21 +150,35 @@ * () "guiTransport" as hT * hT .up. [GuiSocketServer:8080] * hT .down. [GuiHttpServer] + * hT .right[hidden]. [HttpConnector] * * [YamlConfigurationStore] -right[hidden]- hT * * () "guiHttp" as http * 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 - * [LanguageSelector] .up. http * * package "Conceptual WebConsole" { - * [ConsoleWeblet] .left. http + * [ConsoleWeblet] .right. http * [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 */ package org.jdrupes.vmoperator.manager; diff --git a/org.jdrupes.vmoperator.vmconlet/resources/org/jdrupes/vmoperator/vmconlet/VmConlet-view.ftl.html b/org.jdrupes.vmoperator.vmconlet/resources/org/jdrupes/vmoperator/vmconlet/VmConlet-view.ftl.html index 913f45d..708a1a3 100644 --- a/org.jdrupes.vmoperator.vmconlet/resources/org/jdrupes/vmoperator/vmconlet/VmConlet-view.ftl.html +++ b/org.jdrupes.vmoperator.vmconlet/resources/org/jdrupes/vmoperator/vmconlet/VmConlet-view.ftl.html @@ -52,12 +52,14 @@ v-html="controller.breakBeforeDots(entry[key])"> - - - - diff --git a/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/browser/VmViewer-style.scss b/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/browser/VmViewer-style.scss index 83e92a5..8ef8b66 100644 --- a/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/browser/VmViewer-style.scss +++ b/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/browser/VmViewer-style.scss @@ -43,3 +43,8 @@ white-space: nowrap; } +.jdrupes-vmoperator-vmviewer-edit { + select { + width: 15em; + } +} \ No newline at end of file