56b96e97bba0ccaad7e45cdd9b2f96dace898c6c
[controller.git] / opendaylight / config / config-api / src / main / java / org / opendaylight / controller / config / api / ConfigRegistry.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.config.api;
9
10 import java.util.List;
11 import java.util.Set;
12
13 import javax.management.ObjectName;
14
15 import org.opendaylight.controller.config.api.jmx.CommitStatus;
16 import org.opendaylight.controller.config.api.jmx.constants.ConfigRegistryConstants;
17
18 /**
19  * Provides functionality for working with configuration registry - mainly
20  * creating and committing config transactions.
21  */
22 public interface ConfigRegistry extends LookupRegistry, ServiceReferenceReadableRegistry {
23
24     /**
25      * Only well-known ObjectName in configuration system, under which
26      * ConfigRegisry is registered.
27      */
28     public static final ObjectName OBJECT_NAME = ConfigRegistryConstants.OBJECT_NAME;
29
30     /**
31      * Opens new configuration transaction.
32      *
33      * @return {@link ObjectName} of {@link ConfigTransactionControllerMXBean}
34      */
35     ObjectName beginConfig();
36
37     /**
38      * Verifies and commits transaction.
39      *
40      * @param transactionControllerON
41      *            {@link ObjectName} of
42      *            {@link ConfigTransactionControllerMXBean} that was received in
43      *            {@link #beginConfig()} method call.
44      * @return CommitStatus
45      * @throws ValidationException
46      *             if validation fails
47      * @throws ConflictingVersionException
48      *             if configuration state was changed
49      */
50     CommitStatus commitConfig(ObjectName transactionControllerON)
51             throws ConflictingVersionException, ValidationException;
52
53     /**
54      * @return list of open configuration transactions.
55      */
56     List<ObjectName> getOpenConfigs();
57
58     /**
59      * Will return true unless there was a transaction that succeeded during
60      * validation but failed in second phase of commit. In this case the server
61      * is unstable and its state is undefined.
62      */
63     boolean isHealthy();
64
65     Set<String> getAvailableModuleNames();
66
67     /**
68      * Find all runtime beans
69      *
70      * @return objectNames
71      */
72     Set<ObjectName> lookupRuntimeBeans();
73
74     /**
75      * Find all runtime of specified module
76      *
77      * @param moduleName
78      *            of bean
79      * @param instanceName
80      *            of bean
81      * @return objectNames
82      */
83     Set<ObjectName> lookupRuntimeBeans(String moduleName, String instanceName);
84
85 }