org.opendaylight.controller.config.api.ConfigRegistry Maven / Gradle / Ivy
/*
* Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.controller.config.api;
import java.util.List;
import java.util.Set;
import javax.management.ObjectName;
import org.opendaylight.controller.config.api.jmx.CommitStatus;
import org.opendaylight.controller.config.api.jmx.constants.ConfigRegistryConstants;
/**
* Provides functionality for working with configuration registry - mainly
* creating and committing config transactions.
*/
public interface ConfigRegistry extends LookupRegistry, ServiceReferenceReadableRegistry {
/**
* Only well-known ObjectName in configuration system, under which
* ConfigRegistry is registered.
*/
ObjectName OBJECT_NAME = ConfigRegistryConstants.OBJECT_NAME;
ObjectName OBJECT_NAME_NO_NOTIFICATIONS = ConfigRegistryConstants.OBJECT_NAME_NO_NOTIFICATIONS;
/**
* Opens new configuration transaction.
*
* @return {@link ObjectName} of
* {@link org.opendaylight.controller.config.api.jmx.ConfigTransactionControllerMXBean}
*/
ObjectName beginConfig();
/**
* Verifies and commits transaction.
*
* @param transactionControllerON
* {@link ObjectName} of
* {@link org.opendaylight.controller.config.api.jmx.ConfigTransactionControllerMXBean}
* that was received in {@link #beginConfig()} method call.
* @return CommitStatus
* @throws ValidationException
* if validation fails
* @throws ConflictingVersionException
* if configuration state was changed
*/
CommitStatus commitConfig(ObjectName transactionControllerON)
throws ConflictingVersionException, ValidationException;
/**
* List of open configuration transactions.
*
* @return list of open configuration transactions.
*/
List getOpenConfigs();
/**
* Will return true unless there was a transaction that succeeded during
* validation but failed in second phase of commit. In this case the server is
* unstable and its state is undefined.
*/
boolean isHealthy();
/**
* Get the module names available in the system.
*
* @return module factory names available in the system
*/
Set getAvailableModuleNames();
}