CompareResultCategory::Verified, self::VerifiedDriftDetected => CompareResultCategory::DriftDetected, self::IdentityRequired, self::UnresolvedDuplicateCandidates, self::UnresolvedLowTrustMatch, self::UnresolvedAmbiguousIdentity => CompareResultCategory::ActionRequired, self::MissingLocalEvidence => CompareResultCategory::MissingEvidence, self::MissingProviderResource => CompareResultCategory::MissingProviderResource, self::UnsupportedResourceClass, self::CompareNotSupported => CompareResultCategory::Unsupported, self::FoundationInventoryOnly, self::FoundationIdentityOnly, self::FoundationCanonicalOnly, self::AcceptedLimitation => CompareResultCategory::Limitation, self::ExcludedNonGoverned => CompareResultCategory::Excluded, self::CompareFailed => CompareResultCategory::Failed, self::ResolvedActiveBinding, self::ResolvedCanonicalIdentity, self::ResolvedProviderIdentity => CompareResultCategory::Verified, }; } public function actionability(): CompareResultActionability { return match ($this) { self::VerifiedNoDrift, self::VerifiedDriftDetected, self::ResolvedActiveBinding, self::ResolvedCanonicalIdentity, self::ResolvedProviderIdentity => CompareResultActionability::None, self::IdentityRequired, self::UnresolvedDuplicateCandidates, self::UnresolvedLowTrustMatch, self::UnresolvedAmbiguousIdentity => CompareResultActionability::BindingRequired, self::MissingLocalEvidence => CompareResultActionability::ProviderDataRefreshRequired, self::MissingProviderResource => CompareResultActionability::OperatorActionRequired, self::UnsupportedResourceClass, self::CompareNotSupported => CompareResultActionability::ImplementationGap, self::FoundationInventoryOnly, self::FoundationIdentityOnly, self::FoundationCanonicalOnly, self::AcceptedLimitation => CompareResultActionability::Accepted, self::ExcludedNonGoverned => CompareResultActionability::Excluded, self::CompareFailed => CompareResultActionability::ImplementationGap, }; } public function readinessImpact(): CompareResultReadinessImpact { return match ($this) { self::VerifiedNoDrift, self::VerifiedDriftDetected, self::ResolvedActiveBinding, self::ResolvedCanonicalIdentity, self::ResolvedProviderIdentity, self::ExcludedNonGoverned => CompareResultReadinessImpact::NoImpact, self::FoundationInventoryOnly, self::FoundationIdentityOnly, self::FoundationCanonicalOnly, self::AcceptedLimitation => CompareResultReadinessImpact::CustomerLimitation, self::IdentityRequired, self::UnresolvedDuplicateCandidates, self::UnresolvedLowTrustMatch, self::UnresolvedAmbiguousIdentity, self::MissingLocalEvidence, self::MissingProviderResource => CompareResultReadinessImpact::CustomerBlocker, self::UnsupportedResourceClass, self::CompareNotSupported => CompareResultReadinessImpact::InternalLimitation, self::CompareFailed => CompareResultReadinessImpact::InternalBlocker, }; } public function coverageStatus(): CompareResultCoverageStatus { return match ($this) { self::VerifiedNoDrift, self::VerifiedDriftDetected, self::ResolvedActiveBinding, self::ResolvedCanonicalIdentity, self::ResolvedProviderIdentity => CompareResultCoverageStatus::FullyVerified, self::MissingLocalEvidence, self::IdentityRequired, self::UnresolvedDuplicateCandidates, self::UnresolvedLowTrustMatch, self::UnresolvedAmbiguousIdentity, self::CompareFailed => CompareResultCoverageStatus::MissingLocalEvidence, self::MissingProviderResource => CompareResultCoverageStatus::MissingProviderResource, self::UnsupportedResourceClass, self::CompareNotSupported => CompareResultCoverageStatus::Unsupported, self::FoundationInventoryOnly => CompareResultCoverageStatus::InventoryOnly, self::FoundationIdentityOnly => CompareResultCoverageStatus::IdentityOnly, self::FoundationCanonicalOnly => CompareResultCoverageStatus::CanonicalOnly, self::AcceptedLimitation => CompareResultCoverageStatus::AcceptedLimitation, self::ExcludedNonGoverned => CompareResultCoverageStatus::Excluded, }; } public function defaultTrustLevel(): CompareResultTrustLevel { return match ($this) { self::VerifiedNoDrift, self::VerifiedDriftDetected, self::ResolvedActiveBinding => CompareResultTrustLevel::High, self::ResolvedCanonicalIdentity, self::ResolvedProviderIdentity, self::FoundationInventoryOnly, self::FoundationIdentityOnly, self::FoundationCanonicalOnly, self::AcceptedLimitation => CompareResultTrustLevel::Medium, self::IdentityRequired, self::UnresolvedDuplicateCandidates, self::UnresolvedLowTrustMatch, self::UnresolvedAmbiguousIdentity, self::MissingLocalEvidence, self::MissingProviderResource, self::UnsupportedResourceClass, self::CompareNotSupported => CompareResultTrustLevel::Untrusted, self::ExcludedNonGoverned => CompareResultTrustLevel::NotApplicable, self::CompareFailed => CompareResultTrustLevel::Failed, }; } }