mirror of
https://github.com/apache/sqoop.git
synced 2025-05-06 11:40:41 +08:00
SQOOP-1624: Sqoop2: Apply repository upgrader api
Add supported direction check when upgrading connector as well. (Qian Xu via Abraham Elmahrek)
This commit is contained in:
parent
2f0e73067f
commit
02786f0e20
@ -92,8 +92,7 @@ public To getTo() {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConnectorConfigurableUpgrader getConfigurableUpgrader() {
|
public ConnectorConfigurableUpgrader getConfigurableUpgrader() {
|
||||||
// TODO: SQOOP-1624
|
return new KiteConnectorUpgrader();
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.sqoop.connector.kite;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.apache.sqoop.configurable.ConfigurableUpgradeUtil;
|
||||||
|
import org.apache.sqoop.connector.spi.ConnectorConfigurableUpgrader;
|
||||||
|
import org.apache.sqoop.model.MConfig;
|
||||||
|
import org.apache.sqoop.model.MFromConfig;
|
||||||
|
import org.apache.sqoop.model.MLinkConfig;
|
||||||
|
import org.apache.sqoop.model.MToConfig;
|
||||||
|
|
||||||
|
//NOTE: All config types have the similar upgrade path at this point
|
||||||
|
public class KiteConnectorUpgrader extends ConnectorConfigurableUpgrader {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void upgradeLinkConfig(MLinkConfig original, MLinkConfig upgradeTarget) {
|
||||||
|
ConfigurableUpgradeUtil.doUpgrade(original.getConfigs(), upgradeTarget.getConfigs());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void upgradeFromJobConfig(MFromConfig original, MFromConfig upgradeTarget) {
|
||||||
|
ConfigurableUpgradeUtil.doUpgrade(original.getConfigs(), upgradeTarget.getConfigs());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void upgradeToJobConfig(MToConfig original, MToConfig upgradeTarget) {
|
||||||
|
ConfigurableUpgradeUtil.doUpgrade(original.getConfigs(), upgradeTarget.getConfigs());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -471,52 +471,57 @@ public final void upgradeConnector(MConnector oldConnector, MConnector newConnec
|
|||||||
// every job has 2 parts, the FROM and the TO links and their
|
// every job has 2 parts, the FROM and the TO links and their
|
||||||
// corresponding connectors.
|
// corresponding connectors.
|
||||||
LOG.info(" Job upgrade for job:" + job.getName()+ " for connector:" + connectorName);
|
LOG.info(" Job upgrade for job:" + job.getName()+ " for connector:" + connectorName);
|
||||||
List<MConfig> fromConfig = newConnector.getFromConfig().clone(false).getConfigs();
|
|
||||||
if (job.getFromConnectorId() == newConnector.getPersistenceId()) {
|
|
||||||
MFromConfig newFromConfig = new MFromConfig(fromConfig);
|
|
||||||
MFromConfig oldFromCOnfig = job.getFromJobConfig();
|
|
||||||
upgrader.upgradeFromJobConfig(oldFromCOnfig, newFromConfig);
|
|
||||||
MToConfig oldToConfig = job.getToJobConfig();
|
|
||||||
// create a job with new FROM direction configs but old TO direction
|
|
||||||
// configs
|
|
||||||
MJob newJob = new MJob(job, newFromConfig, oldToConfig, job.getDriverConfig());
|
|
||||||
|
|
||||||
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
if (newConnector.getSupportedDirections().isDirectionSupported(Direction.FROM)) {
|
||||||
newJob.getFromJobConfig().getConfigs(),
|
List<MConfig> fromConfig = newConnector.getFromConfig().clone(false).getConfigs();
|
||||||
connector.getJobConfigurationClass(Direction.FROM)
|
if (job.getFromConnectorId() == newConnector.getPersistenceId()) {
|
||||||
);
|
MFromConfig newFromConfig = new MFromConfig(fromConfig);
|
||||||
|
MFromConfig oldFromConfig = job.getFromJobConfig();
|
||||||
|
upgrader.upgradeFromJobConfig(oldFromConfig, newFromConfig);
|
||||||
|
MToConfig oldToConfig = job.getToJobConfig();
|
||||||
|
// create a job with new FROM direction configs but old TO direction
|
||||||
|
// configs
|
||||||
|
MJob newJob = new MJob(job, newFromConfig, oldToConfig, job.getDriverConfig());
|
||||||
|
|
||||||
if(validationResult.getStatus().canProceed()) {
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
updateJob(newJob, tx);
|
newJob.getFromJobConfig().getConfigs(),
|
||||||
} else {
|
connector.getJobConfigurationClass(Direction.FROM)
|
||||||
logInvalidModelObject("fromJob", newJob, validationResult);
|
);
|
||||||
upgradeSuccessful = false;
|
|
||||||
LOG.error(" From JOB config upgrade FAILED for job: " + job.getName() + " for connector:" + connectorName);
|
if (validationResult.getStatus().canProceed()) {
|
||||||
|
updateJob(newJob, tx);
|
||||||
|
} else {
|
||||||
|
logInvalidModelObject("fromJob", newJob, validationResult);
|
||||||
|
upgradeSuccessful = false;
|
||||||
|
LOG.error(" From JOB config upgrade FAILED for job: " + job.getName() + " for connector:" + connectorName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<MConfig> toConfig = newConnector.getToConfig().clone(false).getConfigs();
|
if (newConnector.getSupportedDirections().isDirectionSupported(Direction.TO)) {
|
||||||
if (job.getToConnectorId() == newConnector.getPersistenceId()) {
|
List<MConfig> toConfig = newConnector.getToConfig().clone(false).getConfigs();
|
||||||
MToConfig oldToConfig = job.getToJobConfig();
|
if (job.getToConnectorId() == newConnector.getPersistenceId()) {
|
||||||
MToConfig newToConfig = new MToConfig(toConfig);
|
MToConfig oldToConfig = job.getToJobConfig();
|
||||||
upgrader.upgradeToJobConfig(oldToConfig, newToConfig);
|
MToConfig newToConfig = new MToConfig(toConfig);
|
||||||
MFromConfig oldFromConfig = job.getFromJobConfig();
|
upgrader.upgradeToJobConfig(oldToConfig, newToConfig);
|
||||||
// create a job with old FROM direction configs but new TO direction
|
MFromConfig oldFromConfig = job.getFromJobConfig();
|
||||||
// configs
|
// create a job with old FROM direction configs but new TO direction
|
||||||
MJob newJob = new MJob(job, oldFromConfig, newToConfig, job.getDriverConfig());
|
// configs
|
||||||
|
MJob newJob = new MJob(job, oldFromConfig, newToConfig, job.getDriverConfig());
|
||||||
|
|
||||||
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
ConfigValidationResult validationResult = ConfigUtils.validateConfigs(
|
||||||
newJob.getToJobConfig().getConfigs(),
|
newJob.getToJobConfig().getConfigs(),
|
||||||
connector.getJobConfigurationClass(Direction.TO)
|
connector.getJobConfigurationClass(Direction.TO)
|
||||||
);
|
);
|
||||||
|
|
||||||
if(validationResult.getStatus().canProceed()) {
|
if (validationResult.getStatus().canProceed()) {
|
||||||
updateJob(newJob, tx);
|
updateJob(newJob, tx);
|
||||||
} else {
|
} else {
|
||||||
logInvalidModelObject("toJob", newJob, validationResult);
|
logInvalidModelObject("toJob", newJob, validationResult);
|
||||||
upgradeSuccessful = false;
|
upgradeSuccessful = false;
|
||||||
LOG.error(" TO JOB config upgrade FAILED for job: " + job.getName() + " for connector:" + connectorName);
|
LOG.error(" TO JOB config upgrade FAILED for job: " + job.getName() + " for connector:" + connectorName);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user