3 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 * and is available at http://www.eclipse.org/legal/epl-v10.html
10 package org.opendaylight.controller.configuration.internal;
12 import java.util.Collections;
13 import java.util.HashSet;
16 import org.opendaylight.controller.clustering.services.IClusterGlobalServices;
17 import org.opendaylight.controller.configuration.IConfigurationAware;
18 import org.opendaylight.controller.configuration.IConfigurationContainerAware;
19 import org.opendaylight.controller.configuration.IConfigurationContainerService;
20 import org.opendaylight.controller.sal.utils.StatusCode;
21 import org.opendaylight.controller.sal.utils.Status;
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
26 * @file ConfigurationImpl.java
28 * @brief Backend functionality for all Configuration related tasks.
33 public class ConfigurationContainerImpl implements
34 IConfigurationContainerService, IConfigurationAware {
35 private static final Logger logger = LoggerFactory
36 .getLogger(ConfigurationContainerImpl.class);
37 private IClusterGlobalServices clusterServices;
39 * Collection containing the configuration objects.
40 * This is configuration world: container names (also the map key)
41 * are maintained as they were configured by user, same case
43 private Set<IConfigurationContainerAware> configurationAwareList = (Set<IConfigurationContainerAware>) Collections
44 .synchronizedSet(new HashSet<IConfigurationContainerAware>());
46 public void addConfigurationContainerAware(
47 IConfigurationContainerAware configurationAware) {
48 if (!this.configurationAwareList.contains(configurationAware)) {
49 this.configurationAwareList.add(configurationAware);
53 public int getConfigurationAwareListSize() {
54 return this.configurationAwareList.size();
57 public void removeConfigurationContainerAware(
58 IConfigurationContainerAware configurationAware) {
59 this.configurationAwareList.remove(configurationAware);
62 public void setClusterServices(IClusterGlobalServices i) {
63 this.clusterServices = i;
64 logger.debug("IClusterServices set");
67 public void unsetClusterServices(IClusterGlobalServices i) {
68 if (this.clusterServices == i) {
69 this.clusterServices = null;
70 logger.debug("IClusterServices Unset");
77 public void destroy() {
79 this.configurationAwareList.clear();
83 public Status saveConfiguration() {
84 boolean success = true;
85 for (IConfigurationContainerAware configurationAware : configurationAwareList) {
86 logger.info("Save Config triggered for {}",
87 configurationAware.getClass().getSimpleName());
89 Status status = configurationAware.saveConfiguration();
90 if (!status.isSuccess()) {
92 logger.info("Failed to save config for {}",
93 configurationAware.getClass().getSimpleName());
97 return new Status(StatusCode.SUCCESS, null);
99 return new Status(StatusCode.INTERNALERROR,
100 "Failed to Save All Configurations");
105 public Status saveConfigurations() {
106 return saveConfiguration();