diff --git a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java index bb49ce1042f..ddc06b652eb 100644 --- a/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java +++ b/framework/config/src/main/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImpl.java @@ -74,18 +74,28 @@ public class ConfigDepotImpl implements ConfigDepot, ConfigDepotAdmin { List _scopedStorages; Set _configured = Collections.synchronizedSet(new HashSet()); - HashMap>> _allKeys = new HashMap>>(1007); + private HashMap>> _allKeys = new HashMap>>(1007); HashMap>> _scopeLevelConfigsMap = new HashMap>>(); public ConfigDepotImpl() { ConfigKey.init(this); + createEmptyScopeLevelMappings(); + } + + /** + * Create an empty map of ConfigKey.Scope values, setting the _scopeLevelConfigsMap with the created map + * This map must contain all ConfigKey.Scope values, except the ConfigKey.Scope.Global. + */ + protected void createEmptyScopeLevelMappings() { + _scopeLevelConfigsMap = new HashMap>>(); _scopeLevelConfigsMap.put(ConfigKey.Scope.Zone, new HashSet>()); _scopeLevelConfigsMap.put(ConfigKey.Scope.Cluster, new HashSet>()); _scopeLevelConfigsMap.put(ConfigKey.Scope.StoragePool, new HashSet>()); _scopeLevelConfigsMap.put(ConfigKey.Scope.Account, new HashSet>()); _scopeLevelConfigsMap.put(ConfigKey.Scope.ImageStore, new HashSet>()); _scopeLevelConfigsMap.put(ConfigKey.Scope.Domain, new HashSet>()); + _scopeLevelConfigsMap.put(ConfigKey.Scope.ManagementServer, new HashSet>()); } @Override diff --git a/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java new file mode 100644 index 00000000000..fed784cfe2d --- /dev/null +++ b/framework/config/src/test/java/org/apache/cloudstack/framework/config/impl/ConfigDepotImplTest.java @@ -0,0 +1,43 @@ +// +// 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.cloudstack.framework.config.impl; + +import org.apache.cloudstack.framework.config.ConfigKey; +import org.junit.Assert; +import org.junit.Test; + +public class ConfigDepotImplTest { + + private ConfigDepotImpl configDepotImpl = new ConfigDepotImpl(); + + @Test + public void createEmptyScopeLevelMappingsTest() { + configDepotImpl.createEmptyScopeLevelMappings(); + ConfigKey.Scope[] configKeyScopeArray = ConfigKey.Scope.values(); + + for (int i = 0; i < configKeyScopeArray.length; i++) { + if (configKeyScopeArray[i] == ConfigKey.Scope.Global) { + Assert.assertFalse(configDepotImpl._scopeLevelConfigsMap.containsKey(configKeyScopeArray[i])); + } else { + Assert.assertTrue(configDepotImpl._scopeLevelConfigsMap.containsKey(configKeyScopeArray[i])); + } + } + } + +}