diff --git a/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/ArtifactInterfaces.kt b/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/ArtifactInterfaces.kt index c96e36c11d..6799a9c9cb 100644 --- a/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/ArtifactInterfaces.kt +++ b/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/ArtifactInterfaces.kt @@ -13,6 +13,7 @@ interface ArtifactProvider { val artifactName: String? val artifactType: ArtifactType? + @JvmDefault fun completeArtifactOrNull() = if (artifactName != null && artifactType != null) { CompleteArtifact(artifactName!!, artifactType!!) @@ -28,6 +29,7 @@ interface ArtifactProvider { interface VersionedArtifactProvider : ArtifactProvider { val artifactVersion: String? + @JvmDefault fun completeVersionedArtifactOrNull() = if (artifactName != null && artifactType != null && artifactVersion != null) { CompleteVersionedArtifact(artifactName!!, artifactType!!, artifactVersion!!) @@ -44,6 +46,7 @@ interface ArtifactReferenceProvider { val artifactReference: String? val artifactType: ArtifactType? + @JvmDefault fun completeArtifactReferenceOrNull() = if (artifactReference != null && artifactType != null) { CompleteArtifactReference(artifactReference!!, artifactType!!) diff --git a/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/Resource.kt b/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/Resource.kt index 02eebe15c1..3a6fcdd8bb 100644 --- a/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/Resource.kt +++ b/keel-api/src/main/kotlin/com/netflix/spinnaker/keel/api/Resource.kt @@ -26,19 +26,18 @@ data class Resource( * Attempts to find an artifact in the delivery config based on information in this resource's spec. */ fun findAssociatedArtifact(deliveryConfig: DeliveryConfig) = - if (spec is ComputeResourceSpec) { - // prefer reference-based artifact info - spec.completeArtifactReferenceOrNull() - ?.let { ref -> - deliveryConfig.matchingArtifactByReference(ref.artifactReference) - } - // if not found, then try old-style image provider info - ?: spec.completeArtifactOrNull() + when (spec) { + is ArtifactReferenceProvider -> + spec.completeArtifactReferenceOrNull() + ?.let { ref -> + deliveryConfig.matchingArtifactByReference(ref.artifactReference) + } + is ArtifactProvider -> + spec.completeArtifactOrNull() ?.let { art -> deliveryConfig.matchingArtifactByName(art.artifactName, art.artifactType) } - } else { - null + else -> null } // TODO: this is kinda dirty, but because we add uid to the metadata when persisting we don't really want to consider it in equality checks