Adjust the runtime state and keep disabling unattended package migrations simple (#10486)
* Clean up and changes to backoffice for the nuget only packages * temp commit of package logic removal * Lots of package code cleanup and removal * Removes old package data from the test package xml * Updates packaging code to take in XDocument instead of a file since we'll not be dealing with files, starts creating expressions for the package migrations scripting. * fixing tests * Fixes runtime state and boot failed middleware so that it actually runs. Separates out unattended install/upgrade into notification handlers. * Gets unattended package migrations working and running * Gets embedded package.xml resources able to install from package migration. * Implements automatic package migrations for package that just declare an xml data manifest. * fix build * small cleanups * fix build * adds some tests * Fix export test * Fix newlines in test for linux * Typo * removes old todos and updates AutomaticPackgeMigrationPlan to use getter with backing field. * Update dictionary package data to use GUID * Ensures macros are packaged and used with their GUID * Ensures the GUID for doc types and media types remains consistent for package installation based on what is in the xml. * fix automatic migrations to not validate initial state, fixes packaging GUIDs for multiple entities. * Added guids to embedded test packages (Some tests are still failing) * Fix one more test * Fixes up Key vs Id, moves tests to correct namespace, fix tests * Fixes Dictionary packaging to ensure an xml hierarchy * Fixes tests * fixes package xml * Removes the runtime PackageMigrations state, the state is just run if unattended migrations are disabled. * change log level * Small clean up and reuse of attribute Co-authored-by: Bjarke Berg <mail@bergmania.dk>
This commit is contained in:
@@ -8,6 +8,7 @@ using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.Linq;
|
||||
using System.Xml.XPath;
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Xml;
|
||||
|
||||
namespace Umbraco.Extensions
|
||||
@@ -238,7 +239,7 @@ namespace Umbraco.Extensions
|
||||
{
|
||||
if (xml == null)
|
||||
{
|
||||
throw new ArgumentNullException("xml");
|
||||
throw new ArgumentNullException(nameof(xml));
|
||||
}
|
||||
|
||||
if (xml.HasAttributes == false)
|
||||
@@ -246,19 +247,19 @@ namespace Umbraco.Extensions
|
||||
throw new InvalidOperationException($"{attributeName} not found in xml");
|
||||
}
|
||||
|
||||
if (xml.Attribute(attributeName) == null)
|
||||
XAttribute attribute = xml.Attribute(attributeName);
|
||||
if (attribute is null)
|
||||
{
|
||||
throw new InvalidOperationException($"{attributeName} not found in xml");
|
||||
}
|
||||
|
||||
var val = xml.Attribute(attributeName).Value;
|
||||
var result = val.TryConvertTo<T>();
|
||||
Attempt<T> result = attribute.Value.TryConvertTo<T>();
|
||||
if (result.Success)
|
||||
{
|
||||
return result.Result;
|
||||
}
|
||||
|
||||
throw new InvalidOperationException($"{val} attribute value cannot be converted to {typeof(T)}");
|
||||
throw new InvalidOperationException($"{attribute.Value} attribute value cannot be converted to {typeof(T)}");
|
||||
}
|
||||
|
||||
public static T AttributeValue<T>(this XElement xml, string attributeName)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Umbraco.Cms.Core
|
||||
namespace Umbraco.Cms.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Describes the levels in which the runtime can run.
|
||||
@@ -32,11 +32,6 @@
|
||||
/// </summary>
|
||||
Upgrade = 3,
|
||||
|
||||
/// <summary>
|
||||
/// The runtime has detected that Package Migrations need to be executed.
|
||||
/// </summary>
|
||||
PackageMigrations = 4,
|
||||
|
||||
/// <summary>
|
||||
/// The runtime has detected an up-to-date Umbraco install and is running.
|
||||
/// </summary>
|
||||
|
||||
@@ -144,9 +144,20 @@ namespace Umbraco.Cms.Infrastructure.Runtime
|
||||
break;
|
||||
case UmbracoDatabaseState.NeedsPackageMigration:
|
||||
|
||||
_logger.LogDebug("Package migrations need to execute.");
|
||||
Level = _unattendedSettings.Value.PackageMigrationsUnattended ? RuntimeLevel.Run : RuntimeLevel.PackageMigrations;
|
||||
Reason = RuntimeLevelReason.UpgradePackageMigrations;
|
||||
// no matter what the level is run for package migrations.
|
||||
// they either run unattended, or only manually via the back office.
|
||||
Level = RuntimeLevel.Run;
|
||||
|
||||
if (_unattendedSettings.Value.PackageMigrationsUnattended)
|
||||
{
|
||||
_logger.LogDebug("Package migrations need to execute.");
|
||||
Reason = RuntimeLevelReason.UpgradePackageMigrations;
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogInformation("Package migrations need to execute but unattended package migrations is disabled. They will need to be run from the back office.");
|
||||
Reason = RuntimeLevelReason.Run;
|
||||
}
|
||||
|
||||
break;
|
||||
case UmbracoDatabaseState.Ok:
|
||||
|
||||
@@ -60,15 +60,15 @@ namespace Umbraco.Cms.Tests.Integration.Umbraco.Core
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GivenPackageMigrationsExist_WhenNotUnattendedMigrations_ThenLevelIsPackageMigrations()
|
||||
public void GivenPackageMigrationsExist_WhenNotUnattendedMigrations_ThenLevelIsRun()
|
||||
{
|
||||
var unattendedOptions = Services.GetRequiredService<IOptions<UnattendedSettings>>();
|
||||
unattendedOptions.Value.PackageMigrationsUnattended = false;
|
||||
|
||||
RuntimeState.DetermineRuntimeLevel();
|
||||
|
||||
Assert.AreEqual(RuntimeLevel.PackageMigrations, RuntimeState.Level);
|
||||
Assert.AreEqual(RuntimeLevelReason.UpgradePackageMigrations, RuntimeState.Reason);
|
||||
Assert.AreEqual(RuntimeLevel.Run, RuntimeState.Level);
|
||||
Assert.AreEqual(RuntimeLevelReason.Run, RuntimeState.Reason);
|
||||
}
|
||||
|
||||
private class TestMigrationPlan : PackageMigrationPlan
|
||||
|
||||
@@ -48,7 +48,6 @@ namespace Umbraco.Cms.Web.BackOffice.Routing
|
||||
{
|
||||
case RuntimeLevel.Install:
|
||||
case RuntimeLevel.Upgrade:
|
||||
case RuntimeLevel.PackageMigrations:
|
||||
case RuntimeLevel.Run:
|
||||
|
||||
MapMinimalBackOffice(endpoints);
|
||||
|
||||
@@ -36,7 +36,6 @@ namespace Umbraco.Cms.Web.BackOffice.Routing
|
||||
{
|
||||
case RuntimeLevel.Install:
|
||||
case RuntimeLevel.Upgrade:
|
||||
case RuntimeLevel.PackageMigrations:
|
||||
case RuntimeLevel.Run:
|
||||
endpoints.MapHub<PreviewHub>(GetPreviewHubRoute());
|
||||
endpoints.MapUmbracoRoute<PreviewController>(_umbracoPathSegment, Constants.Web.Mvc.BackOfficeArea, null);
|
||||
|
||||
Reference in New Issue
Block a user