Issue #2550309 by webflo, phenaproxima, kaushashah: Unable to import migration config-entities generated by migrate_upgrade module
parent
d3c5e548b9
commit
3eaded3590
|
|
@ -585,8 +585,11 @@ class Migration extends ConfigEntityBase implements MigrationInterface, Requirem
|
||||||
parent::calculateDependencies();
|
parent::calculateDependencies();
|
||||||
$this->calculatePluginDependencies($this->getSourcePlugin());
|
$this->calculatePluginDependencies($this->getSourcePlugin());
|
||||||
$this->calculatePluginDependencies($this->getDestinationPlugin());
|
$this->calculatePluginDependencies($this->getDestinationPlugin());
|
||||||
// Add dependencies on required migration dependencies.
|
|
||||||
foreach ($this->getMigrationDependencies()['required'] as $dependency) {
|
// Add hard dependencies on required migrations.
|
||||||
|
$dependencies = $this->getEntityManager()->getStorage($this->entityTypeId)
|
||||||
|
->getVariantIds($this->getMigrationDependencies()['required']);
|
||||||
|
foreach ($dependencies as $dependency) {
|
||||||
$this->addDependency('config', $this->getEntityType()->getConfigPrefix() . '.' . $dependency);
|
$this->addDependency('config', $this->getEntityType()->getConfigPrefix() . '.' . $dependency);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ class MigrationStorage extends ConfigEntityStorage implements MigrateBuildDepend
|
||||||
* @return string[]
|
* @return string[]
|
||||||
* The expanded list of IDs.
|
* The expanded list of IDs.
|
||||||
*/
|
*/
|
||||||
protected function getVariantIds(array $ids) {
|
public function getVariantIds(array $ids) {
|
||||||
// Re-index the array numerically, since we need to limit the loop by size.
|
// Re-index the array numerically, since we need to limit the loop by size.
|
||||||
$ids = array_values($ids);
|
$ids = array_values($ids);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Contains \Drupal\Tests\migrate\Kernel\Entity\MigrationTest.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Drupal\Tests\migrate\Kernel\Entity;
|
||||||
|
|
||||||
|
use Drupal\KernelTests\KernelTestBase;
|
||||||
|
use Drupal\migrate\Entity\Migration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the Migration entity.
|
||||||
|
*
|
||||||
|
* @coversDefaultClass \Drupal\migrate\Entity\Migration
|
||||||
|
* @group migrate
|
||||||
|
*/
|
||||||
|
class MigrationTest extends KernelTestBase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static $modules = ['migrate'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers ::calculateDependencies
|
||||||
|
*/
|
||||||
|
public function testCalculateDependencies() {
|
||||||
|
$fixture_migrations = [
|
||||||
|
'd6_node__article' => 'd6_node',
|
||||||
|
'd6_node__page' => 'd6_node',
|
||||||
|
'd6_variables' => 'd6_variables',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($fixture_migrations as $id => $template) {
|
||||||
|
$values = [
|
||||||
|
'id' => $id,
|
||||||
|
'template' => $template,
|
||||||
|
'source' => [
|
||||||
|
'plugin' => 'empty',
|
||||||
|
],
|
||||||
|
'destination' => [
|
||||||
|
'plugin' => 'null',
|
||||||
|
],
|
||||||
|
'migration_tags' => []
|
||||||
|
];
|
||||||
|
Migration::create($values)->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
$values = [
|
||||||
|
'migration_dependencies' => [
|
||||||
|
'required' => [
|
||||||
|
'd6_node:*',
|
||||||
|
'd6_variables'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'source' => [
|
||||||
|
'plugin' => 'empty',
|
||||||
|
],
|
||||||
|
'destination' => [
|
||||||
|
'plugin' => 'null',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$migration = new Migration($values, 'migration');
|
||||||
|
$expected = [
|
||||||
|
'migrate.migration.d6_node__article',
|
||||||
|
'migrate.migration.d6_node__page',
|
||||||
|
'migrate.migration.d6_variables'
|
||||||
|
];
|
||||||
|
$migration->calculateDependencies();
|
||||||
|
$this->assertEquals($expected, $migration->getDependencies()['config']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -39,6 +39,3 @@ process:
|
||||||
|
|
||||||
destination:
|
destination:
|
||||||
plugin: entity_revision:node
|
plugin: entity_revision:node
|
||||||
migration_dependencies:
|
|
||||||
required:
|
|
||||||
- d6_node:*
|
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,17 @@ class Node extends CckBuilder {
|
||||||
$node_type = $row->getSourceProperty('type');
|
$node_type = $row->getSourceProperty('type');
|
||||||
$values = $template;
|
$values = $template;
|
||||||
$values['id'] = $template['id'] . '__' . $node_type;
|
$values['id'] = $template['id'] . '__' . $node_type;
|
||||||
|
|
||||||
$label = $template['label'];
|
$label = $template['label'];
|
||||||
$values['label'] = $this->t("@label (@type)", ['@label' => $label, '@type' => $node_type]);
|
$values['label'] = $this->t("@label (@type)", ['@label' => $label, '@type' => $node_type]);
|
||||||
$values['source']['node_type'] = $node_type;
|
$values['source']['node_type'] = $node_type;
|
||||||
|
|
||||||
|
// If this migration is based on the d6_node_revision template, it should
|
||||||
|
// explicitly depend on the corresponding d6_node variant.
|
||||||
|
if ($template['id'] == 'd6_node_revision') {
|
||||||
|
$values['migration_dependencies']['required'][] = 'd6_node__' . $node_type;
|
||||||
|
}
|
||||||
|
|
||||||
$migration = Migration::create($values);
|
$migration = Migration::create($values);
|
||||||
|
|
||||||
if (isset($fields[$node_type])) {
|
if (isset($fields[$node_type])) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue