From efa6e4acf2bb023411ee7ab213c4a84d346e2662 Mon Sep 17 00:00:00 2001
From: chen21019 <19357113+chen21019@users.noreply.github.com>
Date: Thu, 5 Nov 2026 10:32:42 +0800
Subject: [PATCH] Add Host metadata and readable workloads with Catalog launch
binding
---
.github/workflows/security-release-gate.yml | 70 +-
COMPATIBILITY.md | 33 +
Dockerfile | 20 +-
Dockerfile.dapper | 20 +-
README.md | 15 +-
code/framework/api-pub-sub-jetty/pom.xml | 2 +-
code/framework/api-pub-sub/pom.xml | 2 +-
code/framework/api/pom.xml | 2 +-
code/framework/archaius/pom.xml | 2 +-
code/framework/async/pom.xml | 2 +-
code/framework/auditing/pom.xml | 2 +-
.../iaas/api/auditing/AuditServiceImpl.java | 3 +-
.../auditing/AiServiceUpgradeAuditTest.java | 9 +-
code/framework/db-loader/pom.xml | 2 +-
code/framework/deferred/pom.xml | 2 +-
code/framework/encryption/pom.xml | 2 +-
code/framework/engine/pom.xml | 2 +-
code/framework/eventing/pom.xml | 2 +-
code/framework/events/pom.xml | 2 +-
code/framework/extension-spring/pom.xml | 2 +-
code/framework/extension/pom.xml | 2 +-
code/framework/java-server/pom.xml | 2 +-
code/framework/jmx/pom.xml | 2 +-
code/framework/jooq/pom.xml | 2 +-
code/framework/json/pom.xml | 2 +-
code/framework/launcher/pom.xml | 2 +-
code/framework/lock/pom.xml | 2 +-
code/framework/logback/pom.xml | 2 +-
code/framework/managed-context/pom.xml | 2 +-
code/framework/metrics/pom.xml | 2 +-
code/framework/module/pom.xml | 2 +-
code/framework/object/pom.xml | 2 +-
.../object/impl/AbstractObjectManager.java | 15 +-
code/framework/pool/pom.xml | 2 +-
code/framework/resource-monitor/pom.xml | 2 +-
code/framework/schema/pom.xml | 2 +-
code/framework/server/pom.xml | 2 +-
code/framework/spring/pom.xml | 2 +-
code/framework/system-task/pom.xml | 2 +-
code/framework/token/pom.xml | 2 +-
code/framework/utils/pom.xml | 2 +-
code/iaas/agent-instance/pom.xml | 2 +-
code/iaas/agent-server/pom.xml | 2 +-
code/iaas/agent/pom.xml | 2 +-
code/iaas/allocator/pom.xml | 2 +-
code/iaas/api-logic/pom.xml | 2 +-
code/iaas/archaius-management/pom.xml | 2 +-
code/iaas/auth-logic/pom.xml | 2 +-
.../auth/ai/view/AiResourceViewService.java | 109 +-
.../api/auth/change/AiHostMetadataChange.java | 28 +
.../change/AiResourceChangeDescriptor.java | 1 +
.../auth/change/AiResourceChangeDomain.java | 9 +-
.../core/dao/impl/HostWorkloadDaoTest.java | 67 +
.../core/dao/impl/UsageServiceDaoTest.java | 87 +
.../auth/ai/view/AiHostWorkloadViewTest.java | 205 ++
.../ai/view/AiUsageServiceStackViewTest.java | 112 +
.../auth/change/AiHostMetadataChangeTest.java | 201 ++
code/iaas/bootstrap/pom.xml | 2 +-
code/iaas/config-item/api/pom.xml | 2 +-
code/iaas/config-item/common/pom.xml | 2 +-
code/iaas/config-item/server/pom.xml | 2 +-
code/iaas/engine-jooq/pom.xml | 2 +-
code/iaas/events/pom.xml | 2 +-
code/iaas/external-handler/pom.xml | 2 +-
code/iaas/ha/pom.xml | 2 +-
code/iaas/healthcheck/pom.xml | 2 +-
code/iaas/labels/pom.xml | 2 +-
code/iaas/logic-common/pom.xml | 2 +-
code/iaas/logic/pom.xml | 2 +-
code/iaas/metadata/pom.xml | 2 +-
code/iaas/model/pom.xml | 2 +-
.../io/cattle/platform/core/dao/HostDao.java | 5 +
.../cattle/platform/core/dao/ServiceDao.java | 5 +
.../platform/core/dao/impl/HostDaoImpl.java | 27 +
.../core/dao/impl/ServiceDaoImpl.java | 40 +-
code/iaas/resource-pool/pom.xml | 2 +-
code/iaas/service-discovery/api/pom.xml | 2 +-
code/iaas/service-discovery/server/pom.xml | 2 +-
code/iaas/ssh-common/pom.xml | 2 +-
code/iaas/storage-service/pom.xml | 2 +-
code/iaas/task-jooq/pom.xml | 2 +-
code/implementation/activity-log/pom.xml | 2 +-
.../agent-instance-impl/pom.xml | 2 +-
code/implementation/docker/api/pom.xml | 2 +-
code/implementation/docker/common/pom.xml | 2 +-
code/implementation/docker/compute/pom.xml | 2 +-
code/implementation/docker/machine/pom.xml | 2 +-
code/implementation/docker/storage/pom.xml | 6 +-
code/implementation/extension-api/pom.xml | 2 +-
code/implementation/hazelcast/common/pom.xml | 2 +-
.../implementation/hazelcast/eventing/pom.xml | 2 +-
code/implementation/hazelcast/lock/pom.xml | 2 +-
code/implementation/host-api/pom.xml | 2 +-
code/implementation/host-stats/pom.xml | 2 +-
code/implementation/register/pom.xml | 2 +-
code/implementation/sample-setup/pom.xml | 2 +-
code/implementation/settings-api/pom.xml | 2 +-
.../simulator/agent-connection/pom.xml | 2 +-
code/implementation/simulator/storage/pom.xml | 2 +-
code/implementation/system-stack/pom.xml | 2 +-
code/implementation/vm/pom.xml | 2 +-
code/meta-parent/pom.xml | 2 +-
code/packaging/app-config/pom.xml | 2 +-
.../platform/app/SystemServicesConfig.java | 4 +-
...atalogLaunchObjectLifecycleWiringTest.java | 202 ++
.../TypedResourceAuditContractTest.java | 94 +
code/packaging/app/pom.xml | 2 +-
code/packaging/bundle/pom.xml | 2 +-
code/packaging/dev/pom.xml | 2 +-
code/packaging/meta/pom.xml | 2 +-
code/parent/pom.xml | 2 +-
.../orchestration-engine-0.183.370.md | 44 +
pom.xml | 2 +-
.../schema/base/aiResourceChangePlan.json | 2 +-
resources/pom.xml | 2 +-
scripts/api-key-operation-contract.json | 2244 +++++++++--------
scripts/api-key-operation-inventory.json | 509 ++--
.../api-key-operation-review-0.183.370.json | 119 +
scripts/build | 2 +-
scripts/check-apt-fixed-vex.py | 197 ++
scripts/check-cattle-jdk25-standalone | 2 +-
scripts/check-pasturestack-source | 15 +-
scripts/check-release-artifact | 2 +-
scripts/test-apt-fixed-vex.py | 161 ++
scripts/test-apt-security-bootstrap.py | 122 +
scripts/test-maven-distribution-download.py | 194 ++
security/ubuntu-apt-fixed.openvex.json | 24 +
security/ubuntu-apt-fixed.sha256 | 19 +
ubuntu-security-packages.lock | 3 +
129 files changed, 3823 insertions(+), 1399 deletions(-)
create mode 100644 code/iaas/auth-logic/src/main/java/io/cattle/platform/iaas/api/auth/change/AiHostMetadataChange.java
create mode 100644 code/iaas/auth-logic/src/test/java/io/cattle/platform/core/dao/impl/HostWorkloadDaoTest.java
create mode 100644 code/iaas/auth-logic/src/test/java/io/cattle/platform/core/dao/impl/UsageServiceDaoTest.java
create mode 100644 code/iaas/auth-logic/src/test/java/io/cattle/platform/iaas/api/auth/ai/view/AiHostWorkloadViewTest.java
create mode 100644 code/iaas/auth-logic/src/test/java/io/cattle/platform/iaas/api/auth/ai/view/AiUsageServiceStackViewTest.java
create mode 100644 code/iaas/auth-logic/src/test/java/io/cattle/platform/iaas/api/auth/change/AiHostMetadataChangeTest.java
create mode 100644 code/packaging/app-config/src/test/java/io/cattle/platform/app/AiCatalogLaunchObjectLifecycleWiringTest.java
create mode 100644 code/packaging/app-config/src/test/java/io/cattle/platform/iaas/api/auditing/TypedResourceAuditContractTest.java
create mode 100644 docs/releases/orchestration-engine-0.183.370.md
create mode 100644 scripts/api-key-operation-review-0.183.370.json
create mode 100644 scripts/check-apt-fixed-vex.py
create mode 100644 scripts/test-apt-fixed-vex.py
create mode 100644 scripts/test-apt-security-bootstrap.py
create mode 100644 scripts/test-maven-distribution-download.py
create mode 100644 security/ubuntu-apt-fixed.openvex.json
create mode 100644 security/ubuntu-apt-fixed.sha256
diff --git a/.github/workflows/security-release-gate.yml b/.github/workflows/security-release-gate.yml
index 3595f61a4d..606dd4de42 100644
--- a/.github/workflows/security-release-gate.yml
+++ b/.github/workflows/security-release-gate.yml
@@ -266,6 +266,44 @@ jobs:
'nativeSqlBoundsRelationshipCandidatesBeforeMaterializationIncludingStoppedContainers',
'nativeSqlExcludesEveryForeignRemovedAndNonContainerRelationshipWithoutWrites',
},
+ 'io.cattle.platform.iaas.api.auth.change.AiHostMetadataChangeTest': {
+ 'onlyMetadataIntentAndFieldsAreAccepted',
+ 'nativePutUsesRealRevisionGuardAndRestoresContext',
+ 'nativeMethodFieldAndCrossProjectCeilingsRejectBeforeMutation',
+ 'durableSnapshotAndSummaryExcludeMaterialAndObserveExactMetadata',
+ 'boundPlanRequiresHumanApprovalAndExactOnceObservedCompletion',
+ 'casAndLiveWriteRevocationNeverClaimOrDispatch',
+ 'actualHostTableLockRequiresTransactionAndReloadsTheMetadataSnapshot',
+ },
+ 'io.cattle.platform.iaas.api.auditing.TypedResourceAuditContractTest': {
+ 'everyRegisteredTypedDomainHasRealClosedMetadataAuditAllowAndDeny',
+ },
+ 'io.cattle.platform.core.dao.impl.HostWorkloadDaoTest': {
+ 'boundsNativeHostMappingsBeforeMaterializationAndKeepsStoppedContainers',
+ 'bindsExactHostAndAllTenantOwnersAndRechecksMovedOrRemovedMappings',
+ },
+ 'io.cattle.platform.core.dao.impl.UsageServiceDaoTest': {
+ 'nativeSemUsesTwoDistinctServiceSentinelAndBindsAllOwnersIncludingLegacyNullStack',
+ 'finalNativeQueryRequiresCapturedUniqueSemServiceStackAndOptionalExactHostMapping',
+ 'latePersistedStackAssignmentInvalidatesCapturedNullSemFallbackForHostAndVolume',
+ },
+ 'io.cattle.platform.iaas.api.auth.ai.view.AiHostWorkloadViewTest': {
+ 'sameNameRunningAndStoppedChildrenUseFreshContainerAndStackOwnersWithoutDtoAugmentation',
+ 'boundUnknownSnapshotsExcludeMovedForeignRemovedAndUnreadableChildrenOrStackNames',
+ 'realScopedKeyNativePredicateHidesChildrenAndTheirAuditIdentitiesButDirectTargetStillDenies',
+ 'parentRbacAndKeyRevocationFailClosedBeforeRelationshipOutputAndRestoreContext',
+ 'cookieFullAndLegacyHostMetadataMatchesActualNativeWrappingAndHostsFilter',
+ },
+ 'io.cattle.platform.iaas.api.auth.ai.view.AiUsageServiceStackViewTest': {
+ 'realNativeNullInstanceStackAndNoStackFieldUsesReadableSemServiceStackForHostAndVolume',
+ 'hiddenTransformedNonNullDirectOrMultipleSemRelationsNeverBypassReadableSchemaOrLeakNames',
+ 'exactCapturedSemAndStackRaceDropsFormerNameWhileChangedKeyAbortsTheWholeRead',
+ },
+ 'io.cattle.platform.app.AiCatalogLaunchObjectLifecycleWiringTest': {
+ 'actualSpringFactoryLazilyBindsNativeStackBeforeCreateProcessScheduling',
+ 'emptyHandlersAndLegacyListOverrideRemainValidWithoutEagerDependencyCycles',
+ 'nativeCreateBindsExactlyOnceAndNestedFailureRestoresThreadLocalEnvelope',
+ },
}
suites = []
observed = {}
@@ -393,8 +431,38 @@ jobs:
"$TRIVY_IMAGE" image \
--offline-scan --scanners vuln --list-all-pkgs --format json --output /work/evidence/dapper-image-vulnerabilities.raw.json \
"$DAPPER_IMAGE"
- python3 tools/pip-security-overlay/filter-pip-vendor-findings.py \
+ cp security/ubuntu-apt-fixed.openvex.json evidence/dapper-apt-fixed.openvex.json
+ cp security/ubuntu-apt-fixed.sha256 evidence/dapper-apt-official-elf.sha256
+ docker run --rm --network none --entrypoint sha256sum "$DAPPER_IMAGE" \
+ /usr/bin/apt /usr/bin/apt-cache /usr/bin/apt-cdrom /usr/bin/apt-config \
+ /usr/bin/apt-get /usr/bin/apt-mark /usr/lib/apt/apt-extracttemplates /usr/lib/apt/apt-helper \
+ /usr/lib/apt/methods/cdrom /usr/lib/apt/methods/copy /usr/lib/apt/methods/file /usr/lib/apt/methods/gpgv \
+ /usr/lib/apt/methods/http /usr/lib/apt/methods/mirror /usr/lib/apt/methods/rred /usr/lib/apt/methods/store \
+ /usr/lib/apt/solvers/dump /usr/lib/x86_64-linux-gnu/libapt-pkg.so.7.0.0 /usr/lib/x86_64-linux-gnu/libapt-private.so.0.0.0 > evidence/dapper-apt-installed-elf.sha256
+ python3 scripts/check-apt-fixed-vex.py \
+ --dpkg evidence/dapper-dpkg.tsv --inspect evidence/dapper-image-inspect.json \
--raw evidence/dapper-image-vulnerabilities.raw.json \
+ --installed evidence/dapper-apt-installed-elf.sha256 \
+ --vex evidence/dapper-apt-fixed.openvex.json --inputs-only
+ docker run --rm --network none \
+ -v /var/run/docker.sock:/var/run/docker.sock \
+ -v "$PWD:/work" -w /work \
+ -v "$trivy_cache:/root/.cache/trivy" \
+ "$TRIVY_IMAGE" image \
+ --offline-scan --scanners vuln --list-all-pkgs \
+ --skip-db-update --skip-java-db-update --skip-vex-repo-update \
+ --vex /work/evidence/dapper-apt-fixed.openvex.json \
+ --format json --output /work/evidence/dapper-image-vulnerabilities.apt-fixed.json \
+ "$DAPPER_IMAGE"
+ python3 scripts/check-apt-fixed-vex.py \
+ --dpkg evidence/dapper-dpkg.tsv --inspect evidence/dapper-image-inspect.json \
+ --raw evidence/dapper-image-vulnerabilities.raw.json \
+ --installed evidence/dapper-apt-installed-elf.sha256 \
+ --vex evidence/dapper-apt-fixed.openvex.json \
+ --native evidence/dapper-image-vulnerabilities.apt-fixed.json \
+ --proof evidence/dapper-apt-fixed-vex-proof.json
+ python3 tools/pip-security-overlay/filter-pip-vendor-findings.py \
+ --raw evidence/dapper-image-vulnerabilities.apt-fixed.json \
--proof evidence/dapper-pip-vendor-proof.json \
--output evidence/dapper-image-vulnerabilities.json \
--vex evidence/dapper-pip-vendor.vex.json \
diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md
index 12614dbc1e..6239d605db 100644
--- a/COMPATIBILITY.md
+++ b/COMPATIBILITY.md
@@ -1,5 +1,38 @@
# Compatibility Contract
+## Engine 0.183.370 candidate — not published
+
+Host metadata is limited to name/description through the existing native PUT
+owner and human approval. Bounded Host workload references and the Volume
+serviceIds-to-Stack fallback independently recheck current object, role and Key
+visibility; ambiguous or moved relations remain unknown. The native Catalog
+Stack lifecycle binding now runs before CREATE scheduling through lazy,
+memoized generic-handler composition. Ordinary creates and output filters stay
+unchanged. No Host lifecycle, labels, new tool or permission grant is added.
+
+The release registry preserves all 142 prior identities and adds 24 exact methods
+(166 total). C03 binds 458 real source inputs and retains all 1396 tuples with
+zero HTTP semantic, admission or native-role grant delta. The only typed plan
+schema change adds Host to the existing resourceType enum. Existing sixteen
+frozen v1 serialized schemas are byte-identical. Necessary full CI, artifact
+qualification, matching Web 1.6.209 / Bridge 0.2.11, a new Server assembly and
+native acceptance remain pending. See the [candidate note](docs/releases/orchestration-engine-0.183.370.md).
+
+Both builders download the same SHA512-pinned Maven 3.9.16 bytes from Apache's
+official CDN, with the original Apache archive as a bounded transport fallback.
+The existing TLS, checksum and installed-library checks remain; checksum failure
+is terminal and does not select another origin.
+The same pinned Guava JAR now uses HTTP-status-aware bounded curl downloads
+instead of remote ADD, followed by the unchanged SHA256 check.
+Both builders install the two exact Ubuntu USN-8996-1 APT 3.2.1ubuntu0.1
+packages before the first APT operation. Official package SHA256, metadata and
+installed-version checks remain mandatory; release vulnerability gates are unchanged.
+A narrow native OpenVEX fixed statement covers only these two exact Ubuntu
+amd64 package PURLs while the scanner vendor data lags the official fix. CI
+verifies all nineteen installed package-owned ELF hashes and the native package
+pair on the same image, preserves the original raw report, and rejects any
+unrelated finding removal. The existing pip overlay and release thresholds remain.
+
## Engine 0.183.369 published
Volume detail gains a read-only projection of at most fifty currently readable
diff --git a/Dockerfile b/Dockerfile
index 6c4b823b68..fb77146e79 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -34,6 +34,10 @@ ADD --checksum=sha256:bedeef1cf3268f90338c411cdb0a45b224d0660fd2240f310f380316c8
ADD --checksum=sha256:44ebbeb6493eacffbc460ca71446959ba86a00b2e23515e4cfb1a5cc317d6672 https://security.ubuntu.com/ubuntu/pool/main/p/pcre2/libpcre2-8-0_10.46-1ubuntu0.1_amd64.deb /tmp/libpcre2-8-0.deb
ADD --checksum=sha256:44605ea665673a359927d014f4a027c50fe6472af8bc956bd1b1c43ddc07a1cd https://security.ubuntu.com/ubuntu/pool/main/p/pcre2/libpcre2-posix3_10.46-1ubuntu0.1_amd64.deb /tmp/libpcre2-posix3.deb
+# USN-8996-1: replace vulnerable APT before its first package operation.
+ADD --checksum=sha256:0de729b8fe0e1c67c04e8e8d5bd6e0420dbd47f75b93f0b71c8e740edc2d5ffc https://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_3.2.1ubuntu0.1_amd64.deb /tmp/apt.deb
+ADD --checksum=sha256:94e5d41303265b66af0f8c70ade18bfb77260ad286edee6c8045faddef82b94c https://security.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg7.0_3.2.1ubuntu0.1_amd64.deb /tmp/libapt-pkg7.0.deb
+
ENV DEBIAN_FRONTEND=noninteractive
ARG TEMURIN_JDK25_URL="https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jdk_x64_linux_hotspot_25.0.5_8.tar.gz"
ARG TEMURIN_JDK25_SHA256=68982529869257d0ee6b824ec5aa270ff8b118bb438670da0b97ebdab178d7fb
@@ -52,6 +56,16 @@ LABEL org.opencontainers.image.source="https://github.com/PastureStack/orchestra
org.opencontainers.image.licenses="Apache-2.0"
RUN set -eux; \
+ for package in apt libapt-pkg7.0; do \
+ test "$(dpkg-query -W -f='${db:Status-Status}' "${package}")" = installed; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Package)" = "${package}"; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Version)" = 3.2.1ubuntu0.1; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Architecture)" = amd64; \
+ done; \
+ dpkg -i /tmp/libapt-pkg7.0.deb /tmp/apt.deb; \
+ for package in apt libapt-pkg7.0; do \
+ test "$(dpkg-query -W -f='${Version}' "${package}")" = 3.2.1ubuntu0.1; \
+ done; \
. /licenses/ubuntu-apt.lock; \
rm -f /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; \
rm -rf /tmp/ca-bootstrap; \
@@ -134,7 +148,8 @@ RUN set -eux; \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/bin/pebble
COPY --from=docker-cli-build /go/src/github.com/docker/cli/build/docker-linux-amd64 /usr/bin/docker
-ADD --checksum=sha256:b530942257fb935f8b2cfaa5f8eb5bd59c555fd8e8d01b8ce98912e077ea606c https://repo.maven.apache.org/maven2/com/google/guava/guava/33.7.2-jre/guava-33.7.2-jre.jar /tmp/guava-33.7.2-jre.jar
+RUN curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/guava-33.7.2-jre.jar "https://repo.maven.apache.org/maven2/com/google/guava/guava/33.7.2-jre/guava-33.7.2-jre.jar" && \
+ echo 'b530942257fb935f8b2cfaa5f8eb5bd59c555fd8e8d01b8ce98912e077ea606c /tmp/guava-33.7.2-jre.jar' | sha256sum -c -
RUN mkdir -p ${JAVA_HOME} /usr/lib/jvm && \
curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 600 -o /tmp/temurin-jdk25.tar.gz "${TEMURIN_JDK25_URL}" && \
@@ -142,7 +157,8 @@ RUN mkdir -p ${JAVA_HOME} /usr/lib/jvm && \
tar -xzf /tmp/temurin-jdk25.tar.gz -C ${JAVA_HOME} --strip-components=1 && \
rm -f /tmp/temurin-jdk25.tar.gz && \
ln -sfn ${JAVA_HOME} /usr/lib/jvm/temurin-25-amd64 && \
- curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" && \
+ (curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" || \
+ curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz") && \
echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - && \
mkdir -p ${MAVEN_HOME} && \
tar -xzf /tmp/apache-maven.tar.gz -C ${MAVEN_HOME} --strip-components=1 && \
diff --git a/Dockerfile.dapper b/Dockerfile.dapper
index 601c8e3a32..4c361adb8d 100644
--- a/Dockerfile.dapper
+++ b/Dockerfile.dapper
@@ -35,6 +35,10 @@ ADD --checksum=sha256:bedeef1cf3268f90338c411cdb0a45b224d0660fd2240f310f380316c8
ADD --checksum=sha256:44ebbeb6493eacffbc460ca71446959ba86a00b2e23515e4cfb1a5cc317d6672 https://security.ubuntu.com/ubuntu/pool/main/p/pcre2/libpcre2-8-0_10.46-1ubuntu0.1_amd64.deb /tmp/libpcre2-8-0.deb
ADD --checksum=sha256:44605ea665673a359927d014f4a027c50fe6472af8bc956bd1b1c43ddc07a1cd https://security.ubuntu.com/ubuntu/pool/main/p/pcre2/libpcre2-posix3_10.46-1ubuntu0.1_amd64.deb /tmp/libpcre2-posix3.deb
+# USN-8996-1: replace vulnerable APT before its first package operation.
+ADD --checksum=sha256:0de729b8fe0e1c67c04e8e8d5bd6e0420dbd47f75b93f0b71c8e740edc2d5ffc https://security.ubuntu.com/ubuntu/pool/main/a/apt/apt_3.2.1ubuntu0.1_amd64.deb /tmp/apt.deb
+ADD --checksum=sha256:94e5d41303265b66af0f8c70ade18bfb77260ad286edee6c8045faddef82b94c https://security.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg7.0_3.2.1ubuntu0.1_amd64.deb /tmp/libapt-pkg7.0.deb
+
ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ARG TEMURIN_JDK25_URL="https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jdk_x64_linux_hotspot_25.0.5_8.tar.gz"
@@ -70,6 +74,16 @@ ENV PGUSER=cattle
ENV PGDATABASE=cattle
RUN set -eux; \
+ for package in apt libapt-pkg7.0; do \
+ test "$(dpkg-query -W -f='${db:Status-Status}' "${package}")" = installed; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Package)" = "${package}"; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Version)" = 3.2.1ubuntu0.1; \
+ test "$(dpkg-deb -f "/tmp/${package}.deb" Architecture)" = amd64; \
+ done; \
+ dpkg -i /tmp/libapt-pkg7.0.deb /tmp/apt.deb; \
+ for package in apt libapt-pkg7.0; do \
+ test "$(dpkg-query -W -f='${Version}' "${package}")" = 3.2.1ubuntu0.1; \
+ done; \
. /licenses/ubuntu-apt.lock; \
rm -f /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; \
rm -rf /tmp/ca-bootstrap; \
@@ -152,7 +166,8 @@ RUN set -eux; \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/bin/pebble
COPY --from=docker-cli-build /go/src/github.com/docker/cli/build/docker-linux-amd64 /usr/bin/docker
-ADD --checksum=sha256:b530942257fb935f8b2cfaa5f8eb5bd59c555fd8e8d01b8ce98912e077ea606c https://repo.maven.apache.org/maven2/com/google/guava/guava/33.7.2-jre/guava-33.7.2-jre.jar /tmp/guava-33.7.2-jre.jar
+RUN curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/guava-33.7.2-jre.jar "https://repo.maven.apache.org/maven2/com/google/guava/guava/33.7.2-jre/guava-33.7.2-jre.jar" && \
+ echo 'b530942257fb935f8b2cfaa5f8eb5bd59c555fd8e8d01b8ce98912e077ea606c /tmp/guava-33.7.2-jre.jar' | sha256sum -c -
RUN mkdir -p ${JAVA_HOME} /usr/lib/jvm && \
curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 600 -o /tmp/temurin-jdk25.tar.gz "${TEMURIN_JDK25_URL}" && \
@@ -160,7 +175,8 @@ RUN mkdir -p ${JAVA_HOME} /usr/lib/jvm && \
tar -xzf /tmp/temurin-jdk25.tar.gz -C ${JAVA_HOME} --strip-components=1 && \
rm -f /tmp/temurin-jdk25.tar.gz && \
ln -sfn ${JAVA_HOME} /usr/lib/jvm/temurin-25-amd64 && \
- curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" && \
+ (curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" || \
+ curl -fsSL --retry 5 --retry-all-errors --retry-delay 2 --connect-timeout 10 --max-time 300 -o /tmp/apache-maven.tar.gz "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz") && \
echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - && \
mkdir -p ${MAVEN_HOME} && \
tar -xzf /tmp/apache-maven.tar.gz -C ${MAVEN_HOME} --strip-components=1 && \
diff --git a/README.md b/README.md
index 3f76b8af92..a40ad69720 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,12 @@ Rancher 1.6 ecosystem. It is not affiliated with Rancher Labs or SUSE.
This fork of [`rancher/cattle`](https://github.com/rancher/cattle) preserves
upstream history, authorship, licenses, and dependency notices.
+## Next candidate: Engine 0.183.370
+
+Host name/description review, bounded readable workload references and the
+native Catalog launch binding fix are in [source/CI preparation](docs/releases/orchestration-engine-0.183.370.md).
+Publication and native acceptance remain pending; use the published release below.
+
## Latest published release: Engine 0.183.369
[Engine 0.183.369](https://github.com/PastureStack/orchestration-engine/releases/tag/v0.183.369)
@@ -30,10 +36,9 @@ Original CI, source/artifact qualification, immutable release verification and
public checksums are recorded in the
[published release note](docs/releases/orchestration-engine-0.183.369.md).
Existing lower security findings remain disclosed; publication is not a claim
-of zero vulnerabilities. Server 1.6.567 still includes Engine 0.183.368.
-Matching Web 1.6.208 / bridge0.2.10, a new Server assembly and designated native
-Volume/reference/role/Key/layout acceptance remain separate. Full frontend
-coverage is in progress.
+of zero vulnerabilities. Server 1.6.568 includes Engine 0.183.369 with Web
+1.6.208 / Bridge 0.2.10. Component publication does not complete all native
+business acceptance or the 243 frontend groups.
Four independent AI opt-ins remain default-off. The
[release note](docs/releases/orchestration-engine-0.183.368.md) mirrors the immutable
@@ -179,7 +184,7 @@ Before publishing an Engine artifact, run the complete package gate:
```sh
bash scripts/check-cattle-jdk25-full-package
-ENGINE_VERSION=0.183.369 bash scripts/build --release
+ENGINE_VERSION=0.183.370 bash scripts/build --release
bash scripts/check-release-artifact dist/artifacts/cattle.jar
```
diff --git a/code/framework/api-pub-sub-jetty/pom.xml b/code/framework/api-pub-sub-jetty/pom.xml
index ef32e38c60..ca5a0d5a69 100644
--- a/code/framework/api-pub-sub-jetty/pom.xml
+++ b/code/framework/api-pub-sub-jetty/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/api-pub-sub/pom.xml b/code/framework/api-pub-sub/pom.xml
index 882100e841..e97f965522 100644
--- a/code/framework/api-pub-sub/pom.xml
+++ b/code/framework/api-pub-sub/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/api/pom.xml b/code/framework/api/pom.xml
index 42bb78aff3..de7f78f7db 100644
--- a/code/framework/api/pom.xml
+++ b/code/framework/api/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/archaius/pom.xml b/code/framework/archaius/pom.xml
index 6292c7f365..69a015e5c3 100644
--- a/code/framework/archaius/pom.xml
+++ b/code/framework/archaius/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-meta-parent
- 0.183.369
+ 0.183.370
../../meta-parent/pom.xml
diff --git a/code/framework/async/pom.xml b/code/framework/async/pom.xml
index 6154f76eb3..16be4ad8d2 100644
--- a/code/framework/async/pom.xml
+++ b/code/framework/async/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/auditing/pom.xml b/code/framework/auditing/pom.xml
index a35a6c3406..d28991f238 100644
--- a/code/framework/auditing/pom.xml
+++ b/code/framework/auditing/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/auditing/src/main/java/io/cattle/platform/iaas/api/auditing/AuditServiceImpl.java b/code/framework/auditing/src/main/java/io/cattle/platform/iaas/api/auditing/AuditServiceImpl.java
index 1b214d53ad..8baf734b46 100644
--- a/code/framework/auditing/src/main/java/io/cattle/platform/iaas/api/auditing/AuditServiceImpl.java
+++ b/code/framework/auditing/src/main/java/io/cattle/platform/iaas/api/auditing/AuditServiceImpl.java
@@ -374,7 +374,8 @@ private void recordServiceDecision(ApiRequest request, Policy policy, String act
@Override
public void recordResourceChangeDecision(ApiRequest request, Policy policy, String action, String receiptId,
String resourceType, Long resourceId, boolean allowed, String reason) {
- if (!Set.of("stack", "service", "container", "externalService", "dnsService", "certificate", "aiResourceChangePlan").contains(resourceType))
+ if (!Set.of("stack", "service", "container", "externalService", "dnsService", "certificate", "host", "aiResourceChangePlan")
+ .contains(resourceType))
throw new IllegalArgumentException("Invalid resource-change audit target");
recordTypedResourceDecision(request, policy, action, receiptId, "aichange", resourceType, resourceId,
allowed, reason, "api.aiResourceChangePlan." + action, "ResourceChangeDenied");
diff --git a/code/framework/auditing/src/test/java/io/cattle/platform/iaas/api/auditing/AiServiceUpgradeAuditTest.java b/code/framework/auditing/src/test/java/io/cattle/platform/iaas/api/auditing/AiServiceUpgradeAuditTest.java
index a95dc4e529..fb457757dc 100644
--- a/code/framework/auditing/src/test/java/io/cattle/platform/iaas/api/auditing/AiServiceUpgradeAuditTest.java
+++ b/code/framework/auditing/src/test/java/io/cattle/platform/iaas/api/auditing/AiServiceUpgradeAuditTest.java
@@ -109,11 +109,12 @@ public class AiServiceUpgradeAuditTest {
AuditServiceImpl service = service(delivered, envelopes); ApiRequest request = new ApiRequest(null, null);
request.setType("aiResourceChangePlan"); request.setMethod("POST");
request.setRequestObject(Map.of("hostname", "PRIVATE-HOST", "externalIpAddresses", List.of("PRIVATE-IP"),
- "certificate", "PRIVATE-PEM", "key", "PRIVATE-KEY", "targetServices", List.of("PRIVATE-TARGET")));
+ "certificate", "PRIVATE-PEM", "key", "PRIVATE-KEY", "targetServices", List.of("PRIVATE-TARGET"),
+ "name", "PRIVATE-NAME", "description", "PRIVATE-DESCRIPTION"));
request.setAttribute("apiKey.audit.keyId", "1c8"); request.setAttribute("apiKey.audit.policyRevision", 3L);
request.setAttribute("apiKey.audit.verifiedPrincipalAccountId", 42L);
String receipt = "aichange-11111111-1111-1111-1111-111111111111";
- for (String type : List.of("externalService", "dnsService", "certificate")) {
+ for (String type : List.of("externalService", "dnsService", "certificate", "host")) {
for (boolean allowed : List.of(true, false)) {
service.recordResourceChangeDecision(request, policy(), "preview", receipt, type, 10L, allowed,
allowed ? "ResourceChangePreviewCreated" : "KeyScopeDenied");
@@ -128,12 +129,12 @@ public class AiServiceUpgradeAuditTest {
assertFalse(data.toString().contains("PRIVATE")); assertFalse(data.containsKey("targetServices"));
}
}
- assertEquals(6, delivered.size());
+ assertEquals(8, delivered.size());
for (String unsupported : List.of("unregistered", "ExternalService", "secret", "certificate/key")) {
assertThrows(IllegalArgumentException.class, () -> service.recordResourceChangeDecision(request, policy(),
"preview", receipt, unsupported, 10L, true, "ResourceChangePreviewCreated"));
}
- assertEquals(6, delivered.size());
+ assertEquals(8, delivered.size());
}
@Test public void bothAllowAndDenyUseDurableMetadataOnlyAudit() throws Exception {
diff --git a/code/framework/db-loader/pom.xml b/code/framework/db-loader/pom.xml
index 418945bb62..3cb1bac916 100644
--- a/code/framework/db-loader/pom.xml
+++ b/code/framework/db-loader/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/deferred/pom.xml b/code/framework/deferred/pom.xml
index f431676b79..e774b792fe 100644
--- a/code/framework/deferred/pom.xml
+++ b/code/framework/deferred/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/encryption/pom.xml b/code/framework/encryption/pom.xml
index 1083826ad1..85ab9bd9a9 100644
--- a/code/framework/encryption/pom.xml
+++ b/code/framework/encryption/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/engine/pom.xml b/code/framework/engine/pom.xml
index cd716e1534..018b5c480d 100644
--- a/code/framework/engine/pom.xml
+++ b/code/framework/engine/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/eventing/pom.xml b/code/framework/eventing/pom.xml
index 0ebbcf801c..6cc25af202 100644
--- a/code/framework/eventing/pom.xml
+++ b/code/framework/eventing/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/events/pom.xml b/code/framework/events/pom.xml
index 740483596a..6611570858 100644
--- a/code/framework/events/pom.xml
+++ b/code/framework/events/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/extension-spring/pom.xml b/code/framework/extension-spring/pom.xml
index fc390c500a..64965df28e 100644
--- a/code/framework/extension-spring/pom.xml
+++ b/code/framework/extension-spring/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/extension/pom.xml b/code/framework/extension/pom.xml
index af2460c68e..fc55059518 100644
--- a/code/framework/extension/pom.xml
+++ b/code/framework/extension/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/java-server/pom.xml b/code/framework/java-server/pom.xml
index 34fdb69cbf..1868e1655b 100644
--- a/code/framework/java-server/pom.xml
+++ b/code/framework/java-server/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/jmx/pom.xml b/code/framework/jmx/pom.xml
index 1845ba2261..90493aa6b7 100644
--- a/code/framework/jmx/pom.xml
+++ b/code/framework/jmx/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/jooq/pom.xml b/code/framework/jooq/pom.xml
index eb18fb5776..4d22214a24 100644
--- a/code/framework/jooq/pom.xml
+++ b/code/framework/jooq/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/json/pom.xml b/code/framework/json/pom.xml
index 0ceb07876b..ac79a49611 100644
--- a/code/framework/json/pom.xml
+++ b/code/framework/json/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/launcher/pom.xml b/code/framework/launcher/pom.xml
index 55dc54b965..8c0694f9db 100644
--- a/code/framework/launcher/pom.xml
+++ b/code/framework/launcher/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/lock/pom.xml b/code/framework/lock/pom.xml
index db0e5f3ab7..b2500aa5d4 100644
--- a/code/framework/lock/pom.xml
+++ b/code/framework/lock/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/logback/pom.xml b/code/framework/logback/pom.xml
index 7b43645b15..f21f68f7f0 100644
--- a/code/framework/logback/pom.xml
+++ b/code/framework/logback/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-meta-parent
- 0.183.369
+ 0.183.370
../../meta-parent/pom.xml
diff --git a/code/framework/managed-context/pom.xml b/code/framework/managed-context/pom.xml
index 0d71500f99..845af59bd4 100644
--- a/code/framework/managed-context/pom.xml
+++ b/code/framework/managed-context/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/metrics/pom.xml b/code/framework/metrics/pom.xml
index e12bccccb7..3ca8e59fee 100644
--- a/code/framework/metrics/pom.xml
+++ b/code/framework/metrics/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/module/pom.xml b/code/framework/module/pom.xml
index fad83c50d0..027bb42925 100644
--- a/code/framework/module/pom.xml
+++ b/code/framework/module/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/object/pom.xml b/code/framework/object/pom.xml
index fe56c00d63..6ffd58cbd6 100644
--- a/code/framework/object/pom.xml
+++ b/code/framework/object/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/object/src/main/java/io/cattle/platform/object/impl/AbstractObjectManager.java b/code/framework/object/src/main/java/io/cattle/platform/object/impl/AbstractObjectManager.java
index ffd11ab96c..ad3a863b25 100644
--- a/code/framework/object/src/main/java/io/cattle/platform/object/impl/AbstractObjectManager.java
+++ b/code/framework/object/src/main/java/io/cattle/platform/object/impl/AbstractObjectManager.java
@@ -26,6 +26,7 @@ public abstract class AbstractObjectManager implements ObjectManager {
SchemaFactory schemaFactory;
List postInitHandlers;
List lifeCycleHandlers;
+ private java.util.function.Supplier> lifeCycleHandlerSupplier;
ObjectMetaDataManager metaDataManager;
@Override
@@ -82,11 +83,12 @@ protected T construct(Class clz, Map properties) {
}
protected T callLifeCycleHandlers(LifeCycleEvent event, T instance, Class> clz, Map properties) {
- if (lifeCycleHandlers == null) {
+ List handlers = getLifeCycleHandlers();
+ if (handlers == null) {
return instance;
}
- for (ObjectLifeCycleHandler handler : lifeCycleHandlers) {
+ for (ObjectLifeCycleHandler handler : handlers) {
instance = handler.onEvent(event, instance, clz, properties);
}
return instance;
@@ -240,11 +242,18 @@ public void setPostInitHandlers(List postInitHan
}
public List getLifeCycleHandlers() {
- return lifeCycleHandlers;
+ return lifeCycleHandlerSupplier == null ? lifeCycleHandlers : lifeCycleHandlerSupplier.get();
}
+ /** An explicit legacy list (including null) replaces any lazy supplier. */
public void setLifeCycleHandlers(List lifeCycleHandlers) {
this.lifeCycleHandlers = lifeCycleHandlers;
+ this.lifeCycleHandlerSupplier = null;
+ }
+
+ /** Replaces the legacy list on use, after dependent beans can finish construction. */
+ public void setLifeCycleHandlerSupplier(java.util.function.Supplier> supplier) {
+ this.lifeCycleHandlerSupplier = java.util.Objects.requireNonNull(supplier);
}
public ObjectMetaDataManager getMetaDataManager() {
diff --git a/code/framework/pool/pom.xml b/code/framework/pool/pom.xml
index 4f444e77c1..8a56ad90ae 100644
--- a/code/framework/pool/pom.xml
+++ b/code/framework/pool/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/resource-monitor/pom.xml b/code/framework/resource-monitor/pom.xml
index 15cd336924..e1251af43e 100644
--- a/code/framework/resource-monitor/pom.xml
+++ b/code/framework/resource-monitor/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/schema/pom.xml b/code/framework/schema/pom.xml
index 94044d2a1d..764f3fbba5 100644
--- a/code/framework/schema/pom.xml
+++ b/code/framework/schema/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/server/pom.xml b/code/framework/server/pom.xml
index bf9b5a1de8..83948d75a9 100644
--- a/code/framework/server/pom.xml
+++ b/code/framework/server/pom.xml
@@ -4,7 +4,7 @@
cattle-meta-parent
io.cattle
- 0.183.369
+ 0.183.370
../../meta-parent/pom.xml
diff --git a/code/framework/spring/pom.xml b/code/framework/spring/pom.xml
index a55aac8a8e..1721c6b2cd 100644
--- a/code/framework/spring/pom.xml
+++ b/code/framework/spring/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/system-task/pom.xml b/code/framework/system-task/pom.xml
index 478a735931..d95516883f 100644
--- a/code/framework/system-task/pom.xml
+++ b/code/framework/system-task/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/token/pom.xml b/code/framework/token/pom.xml
index 18df61d5e3..b6f496036d 100644
--- a/code/framework/token/pom.xml
+++ b/code/framework/token/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/framework/utils/pom.xml b/code/framework/utils/pom.xml
index 58ea1e8635..c2aedff318 100644
--- a/code/framework/utils/pom.xml
+++ b/code/framework/utils/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/agent-instance/pom.xml b/code/iaas/agent-instance/pom.xml
index e2bc11401b..8c360e8430 100644
--- a/code/iaas/agent-instance/pom.xml
+++ b/code/iaas/agent-instance/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/agent-server/pom.xml b/code/iaas/agent-server/pom.xml
index bc333c81ab..22e1b768cb 100644
--- a/code/iaas/agent-server/pom.xml
+++ b/code/iaas/agent-server/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/agent/pom.xml b/code/iaas/agent/pom.xml
index d68113ba2e..90b1147525 100644
--- a/code/iaas/agent/pom.xml
+++ b/code/iaas/agent/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/allocator/pom.xml b/code/iaas/allocator/pom.xml
index e3e32d0e57..d678223c6a 100644
--- a/code/iaas/allocator/pom.xml
+++ b/code/iaas/allocator/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/api-logic/pom.xml b/code/iaas/api-logic/pom.xml
index 9b7c54189c..48c15b90c3 100644
--- a/code/iaas/api-logic/pom.xml
+++ b/code/iaas/api-logic/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/archaius-management/pom.xml b/code/iaas/archaius-management/pom.xml
index 996d640041..0cd7129c8a 100644
--- a/code/iaas/archaius-management/pom.xml
+++ b/code/iaas/archaius-management/pom.xml
@@ -4,7 +4,7 @@
io.cattle
cattle-parent
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/auth-logic/pom.xml b/code/iaas/auth-logic/pom.xml
index 189d0951ef..5995405f27 100644
--- a/code/iaas/auth-logic/pom.xml
+++ b/code/iaas/auth-logic/pom.xml
@@ -4,7 +4,7 @@
cattle-parent
io.cattle
- 0.183.369
+ 0.183.370
../../parent/pom.xml
diff --git a/code/iaas/auth-logic/src/main/java/io/cattle/platform/iaas/api/auth/ai/view/AiResourceViewService.java b/code/iaas/auth-logic/src/main/java/io/cattle/platform/iaas/api/auth/ai/view/AiResourceViewService.java
index 2d3f85be53..759587cd9b 100644
--- a/code/iaas/auth-logic/src/main/java/io/cattle/platform/iaas/api/auth/ai/view/AiResourceViewService.java
+++ b/code/iaas/auth-logic/src/main/java/io/cattle/platform/iaas/api/auth/ai/view/AiResourceViewService.java
@@ -8,6 +8,11 @@
import io.cattle.platform.iaas.api.auth.apikey.ApiKeyAiBridgeGuard;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.dao.VolumeDao;
+import io.cattle.platform.core.dao.HostDao;
+import io.cattle.platform.core.dao.ServiceDao;
+import io.cattle.platform.core.model.Host;
+import io.cattle.platform.core.model.InstanceHostMap;
+import io.cattle.platform.core.model.Service;
import io.cattle.platform.core.model.Mount;
import io.cattle.platform.core.model.Volume;
import io.cattle.platform.core.model.Instance;
@@ -43,6 +48,7 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HexFormat;
+import org.apache.commons.lang3.StringUtils;
/**
* Metadata is projected on the server before it reaches a dedicated AI Key.
@@ -71,7 +77,8 @@ public class AiResourceViewService {
Map.entry("dnsService", List.of("stackId", "archived")), Map.entry("externalService", List.of("stackId", "archived")),
Map.entry("container", List.of("imageUuid", "memory", "cpuShares", "startCount", "networkMode")),
Map.entry("virtualMachine", List.of("imageUuid", "memory", "cpuShares")),
- Map.entry("host", List.of("hostname", "agentIpAddress", "dockerVersion", "memTotal", "cpuCount")),
+ Map.entry("host", List.of("hostname", "agentIpAddress", "dockerVersion", "memTotal", "cpuCount",
+ "agentState", "memory", "milliCpu", "localStorageMb")),
Map.entry("volume", List.of("driver", "accessMode", "size")),
Map.entry("certificate", List.of("cn", "expiresAt", "issuedAt")),
Map.entry("registry", List.of()), Map.entry("registryCredential", List.of()),
@@ -91,6 +98,10 @@ public class AiResourceViewService {
@Inject ObjectManager objects;
@Inject io.cattle.platform.iaas.api.auth.change.AiResourceChangeDomain resourceChanges;
@Inject VolumeDao volumes;
+ @Inject HostDao hosts;
+ @Inject ServiceDao services;
+
+ private record AuthorizedTarget(Resource resource, boolean serviceIdsReadable, boolean missingPersistedStack, String instanceUuid) { }
public Map read(ApiRequest request) {
Map input = input(request);
@@ -181,7 +192,7 @@ protected Map fetch(ApiRequest domain, Map input
}
List