/* * Copyright (c) 2008-2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.zkutils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.emc.storageos.coordinator.client.service.CoordinatorClient; import com.emc.storageos.coordinator.common.Configuration; import com.emc.storageos.coordinator.client.model.MigrationStatus; import com.emc.storageos.coordinator.client.model.Constants; /** * Handle service information configuration */ public class ServiceConfigCmdHandler { private static final Logger log = LoggerFactory .getLogger(ServiceConfigCmdHandler.class); private static final String ZKUTI_CONF = "/zkutils-conf.xml"; private static final String COORDINATOR_BEAN = "coordinator"; private CoordinatorClient coordinator; public ServiceConfigCmdHandler() { ApplicationContext ctx = new ClassPathXmlApplicationContext(ZKUTI_CONF); coordinator = (CoordinatorClient) ctx.getBean(COORDINATOR_BEAN); } /** * Reset Migration status from specific status * * @param status * specific status */ public void resetMigrationStatus(MigrationStatus status) { MigrationStatus nowStatus = coordinator.getMigrationStatus(); if (nowStatus != null && nowStatus.equals(status)) { log.info("Reset Migration status from {}.", nowStatus); coordinator.removeServiceConfiguration(coordinator.getSiteId(), getMigrationConfiguration()); nowStatus = coordinator.getMigrationStatus(); log.info("After reseting, the status is {}.", nowStatus); if (nowStatus == null) { System.out.println("Reset Migration status Successfully."); } else { System.out.println("Fail to reset Migration status."); log.error("Fail to reset Migration status."); } } else { log.error("The Migration status is {}, not specific {}.", nowStatus, status); System.out.println(String.format("The Migration status is %s, not %s.", nowStatus, status)); } } /** * Get MigrationConfiguration Config. If you want to get status, use * coordinator.getMigrationStatus(); * * @return null if not found */ public Configuration getMigrationConfiguration() { Configuration config = coordinator.queryConfiguration( coordinator.getSiteId(), coordinator.getVersionedDbConfigPath(Constants.DBSVC_NAME, coordinator.getTargetDbSchemaVersion()), Constants.GLOBAL_ID); return config; } }