Repository: ambari Updated Branches: refs/heads/trunk 8adb1b0bf -> d8bff0381
http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes-mapred/theme.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes-mapred/theme.json b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes-mapred/theme.json index 97d05dc..c96d656 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes-mapred/theme.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes-mapred/theme.json @@ -1,52 +1,50 @@ { - "Theme": { - "name": "default", - "description": "Default theme for MAPREDUCE service", - "configuration": { - "layouts": [ - { - "name": "default", - "tabs": [ - { - "name": "settings", - "display-name": "Settings", - "layout": { - "tab-columns": "1", - "tab-rows": "1", - "sections": [ - { - "name": "section-mr-scheduler", - "display-name": "MR Scheduler Defaults", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "2", - "section-columns": "2", - "section-rows": "1", - "subsections": [ - { - "name": "subsection-mr-scheduler-col1", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "1" - }, - { - "name": "subsection-mr-scheduler-col2", - "row-index": "0", - "column-index": "1", - "row-span": "1", - "column-span": "1" - } - ] - } - ] - } + "name": "default", + "description": "Default theme for MAPREDUCE service", + "configuration": { + "layouts": [ + { + "name": "default", + "tabs": [ + { + "name": "settings", + "display-name": "Settings", + "layout": { + "tab-columns": "1", + "tab-rows": "1", + "sections": [ + { + "name": "section-mr-scheduler", + "display-name": "MR Scheduler Defaults", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "2", + "section-columns": "2", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-mr-scheduler-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + }, + { + "name": "subsection-mr-scheduler-col2", + "row-index": "0", + "column-index": "1", + "row-span": "1", + "column-span": "1" + } + ] + } + ] } - ] - } - ] - }, + } + ] + } + ], "placement": { "configuration-layout": "default", "configs": [ @@ -68,47 +66,47 @@ } ] }, - "widgets":[ + "widgets": [ { - "config":"mapred-site/mapreduce.map.memory.mb", - "widget":{ - "type":"slider", - "units":[ + "config": "mapred-site/mapreduce.map.memory.mb", + "widget": { + "type": "slider", + "units": [ { - "unit-name":"GB" + "unit-name": "GB" } ] } }, { - "config":"mapred-site/mapreduce.reduce.memory.mb", - "widget":{ - "type":"slider", - "units":[ + "config": "mapred-site/mapreduce.reduce.memory.mb", + "widget": { + "type": "slider", + "units": [ { - "unit-name":"GB" + "unit-name": "GB" } ] } }, { - "config":"mapred-site/yarn.app.mapreduce.am.resource.mb", - "widget":{ - "type":"slider", - "units":[ + "config": "mapred-site/yarn.app.mapreduce.am.resource.mb", + "widget": { + "type": "slider", + "units": [ { - "unit-name":"GB" + "unit-name": "GB" } ] } }, { - "config":"mapred-site/mapreduce.task.io.sort.mb", - "widget":{ - "type":"slider", - "units":[ + "config": "mapred-site/mapreduce.task.io.sort.mb", + "widget": { + "type": "slider", + "units": [ { - "unit-name":"MB" + "unit-name": "MB" } ] } http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes/theme.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes/theme.json b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes/theme.json index ffe0996..5dbf19f 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes/theme.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.2/services/YARN/themes/theme.json @@ -1,97 +1,95 @@ { - "Theme": { - "name": "default", - "description": "Default theme for YARN service", - "configuration": { - "layouts": [ - { - "name": "default", - "tabs": [ - { - "name": "settings", - "display-name": "Settings", - "layout": { - "tab-columns": "3", - "tab-rows": "2", - "sections": [ - { - "name": "section-nm-sizing", - "display-name": "NodeManager Sizing", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "2", - "section-columns": "2", - "section-rows": "1", - "subsections": [ - { - "name": "subsection-nm-sizing-col1", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "1" - }, - { - "name": "subsection-nm-sizing-col2", - "row-index": "0", - "column-index": "1", - "row-span": "1", - "column-span": "1" - } - ] - }, - { - "name": "section-yarn-platform-features", - "display-name": "YARN Platform Features", - "row-index": "0", - "column-index": "2", - "row-span": "1", - "column-span": "1", - "section-columns": "1", - "section-rows": "1", - "subsections": [ - { - "name": "subsection-yarn-platform-features-col1", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "1" - } - ] - }, - { - "name": "section-container-sizing", - "display-name": "Container Sizing", - "row-index": "1", - "column-index": "0", - "row-span": "1", - "column-span": "2", - "section-columns": "2", - "section-rows": "1", - "subsections": [ - { - "name": "subsection-container-sizing-col1", - "row-index": "0", - "column-index": "0", - "row-span": "1", - "column-span": "1" - }, - { - "name": "subsection-container-sizing-col2", - "row-index": "0", - "column-index": "1", - "row-span": "1", - "column-span": "1" - } - ] - } - ] - } + "name": "default", + "description": "Default theme for YARN service", + "configuration": { + "layouts": [ + { + "name": "default", + "tabs": [ + { + "name": "settings", + "display-name": "Settings", + "layout": { + "tab-columns": "3", + "tab-rows": "2", + "sections": [ + { + "name": "section-nm-sizing", + "display-name": "NodeManager Sizing", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "2", + "section-columns": "2", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-nm-sizing-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + }, + { + "name": "subsection-nm-sizing-col2", + "row-index": "0", + "column-index": "1", + "row-span": "1", + "column-span": "1" + } + ] + }, + { + "name": "section-yarn-platform-features", + "display-name": "YARN Platform Features", + "row-index": "0", + "column-index": "2", + "row-span": "1", + "column-span": "1", + "section-columns": "1", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-yarn-platform-features-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + } + ] + }, + { + "name": "section-container-sizing", + "display-name": "Container Sizing", + "row-index": "1", + "column-index": "0", + "row-span": "1", + "column-span": "2", + "section-columns": "2", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-container-sizing-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + }, + { + "name": "subsection-container-sizing-col2", + "row-index": "0", + "column-index": "1", + "row-span": "1", + "column-span": "1" + } + ] + } + ] } - ] - } - ] - }, + } + ] + } + ], "placement": { "configuration-layout": "default", "configs": [ @@ -240,4 +238,4 @@ } ] } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/themes/theme.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/themes/theme.json b/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/themes/theme.json index c149daa..553c9a9 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/themes/theme.json +++ b/ambari-server/src/main/resources/stacks/HDP/2.3/services/YARN/themes/theme.json @@ -1,150 +1,22 @@ { - "Theme": { - "name": "default", - "description": "Default theme for YARN service", + "name": "default", + "description": "Default theme for YARN service", + "configuration": { "placement": { "configuration-layout": "default", "configs": [ { - "config": "yarn-site/yarn.nodemanager.resource.memory-mb", - "subsection-name": "subsection-nm-sizing-col1" - }, - { - "config": "yarn-site/yarn.nodemanager.vmem-pmem-ratio", - "subsection-name": "subsection-nm-sizing-col1" - }, - { - "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit", - "subsection-name": "subsection-nm-sizing-col2" - }, - { - "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores", - "subsection-name": "subsection-nm-sizing-col2" - }, - { - "config": "yarn-site/yarn.scheduler.minimum-allocation-mb", - "subsection-name": "subsection-container-sizing-col1" - }, - { - "config": "yarn-site/yarn.scheduler.maximum-allocation-mb", - "subsection-name": "subsection-container-sizing-col1" - }, - { - "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores", - "subsection-name": "subsection-container-sizing-col2" - }, - { - "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores", - "subsection-name": "subsection-container-sizing-col2" - }, - { "config": "yarn-site/yarn.node-labels.enabled", "subsection-name": "subsection-yarn-platform-features-col1" }, { "config": "yarn-env/yarn_cgroups_enabled", "subsection-name": "subsection-yarn-platform-features-col1" - }, - { - "config": "yarn-site/yarn.resourcemanager.work-preserving-recovery.enabled", - "subsection-name": "subsection-yarn-platform-features-col1" - }, - { - "config": "yarn-site/yarn.log-aggregation-enable", - "subsection-name": "subsection-yarn-platform-features-col1" } ] }, "widgets": [ { - "config": "yarn-site/yarn.nodemanager.resource.memory-mb", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "MB" - } - ] - } - }, - { - "config": "yarn-site/yarn.nodemanager.vmem-pmem-ratio", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "float" - } - ] - } - }, - { - "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "percent" - } - ] - } - }, - { - "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "int" - } - ] - } - }, - { - "config": "yarn-site/yarn.scheduler.minimum-allocation-mb", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "MB" - } - ] - } - }, - { - "config": "yarn-site/yarn.scheduler.maximum-allocation-mb", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "MB" - } - ] - } - }, - { - "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "int" - } - ] - } - }, - { - "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores", - "widget": { - "type": "slider", - "units": [ - { - "unit-name": "int" - } - ] - } - }, - { "config": "yarn-site/yarn.node-labels.enabled", "widget": { "type": "checkbox" @@ -155,19 +27,7 @@ "widget": { "type": "checkbox" } - }, - { - "config": "yarn-site/yarn.log-aggregation-enable", - "widget": { - "type": "checkbox" - } - }, - { - "config": "yarn-site/yarn.resourcemanager.work-preserving-recovery.enabled", - "widget": { - "type": "checkbox" - } } ] } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/test/java/org/apache/ambari/server/stack/ThemeModuleTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/stack/ThemeModuleTest.java b/ambari-server/src/test/java/org/apache/ambari/server/stack/ThemeModuleTest.java index 500ccb3..f4b4b93 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/stack/ThemeModuleTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/stack/ThemeModuleTest.java @@ -18,70 +18,36 @@ package org.apache.ambari.server.stack; -import org.apache.ambari.server.state.ThemeInfo; -import org.apache.commons.lang.StringUtils; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; +import org.apache.ambari.server.state.theme.Theme; import org.junit.Test; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.File; import static org.junit.Assert.*; public class ThemeModuleTest { - private String parentTheme = "{\n" + - " \"Theme\": {\n" + - " \"name\": \"default\",\n" + - " \"description\": \"Default theme for HDFS service\",\n" + - " \"subObject\": {\n" + - " \"primitiveInt\" : 10,\n" + - " \"primitiveStr\" : \"str\",\n" + - " \"array1\" : [1,2,3],\n" + - " \"array2\" : [1,2,3]\n" + - " }\n" + - " }\n" + - "}"; - private String childTheme = "{\n" + - " \"Theme\": {\n" + - " \"description\": \"inherited theme\",\n" + - " \"subObject\": {\n" + - " \"primitiveInt\" : 12,\n" + - " \"primitiveStr\" : \"newStr\",\n" + - " \"array1\" : [1,2,3,4,5],\n" + - " \"array2\" : null,\n" + - " \"subObject2\" : {\"1\":\"1\"}\n" + - " }\n" + - " }\n" + - "}"; - - private ObjectMapper mapper = new ObjectMapper(); - TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String,Object>>() {}; @Test public void testResolve() throws Exception { + File parentThemeFile = new File(this.getClass().getClassLoader().getResource("parent-theme.json").getFile()); + File childThemeFile = new File(this.getClass().getClassLoader().getResource("child-theme.json").getFile()); - ThemeInfo parentInfo = new ThemeInfo(); - parentInfo.setThemeMap(mapper.<Map<String, Object>>readValue(parentTheme, typeRef)); - ThemeModule parentModule = new ThemeModule(parentInfo); - - ThemeInfo childInfo = new ThemeInfo(); - childInfo.setThemeMap(mapper.<Map<String, Object>>readValue(childTheme, typeRef)); - ThemeModule childModule = new ThemeModule(childInfo); + ThemeModule parentModule = new ThemeModule(parentThemeFile); + ThemeModule childModule = new ThemeModule(childThemeFile); childModule.resolve(parentModule, null, null); - Map descriptionMap = ((Map) childInfo.getThemeMap().get("Theme")); - Map subObjectMap = (Map) descriptionMap.get("subObject"); + Theme childTheme = childModule.getModuleInfo().getThemeMap().get(ThemeModule.THEME_KEY); + Theme parentTheme = parentModule.getModuleInfo().getThemeMap().get(ThemeModule.THEME_KEY); + + assertNotNull(childTheme.getThemeConfiguration().getLayouts()); // not defined in child should be inherited + + assertEquals(10, parentTheme.getThemeConfiguration().getPlacement().getConfigs().size()); + assertEquals(12, childTheme.getThemeConfiguration().getPlacement().getConfigs().size()); //two more inherited - assertTrue(StringUtils.equals((String) descriptionMap.get("description"), "inherited theme")); - assertTrue(descriptionMap.containsKey("name")); - assertFalse(subObjectMap.containsKey("array2")); - assertEquals(subObjectMap.get("primitiveInt"), 12); - assertEquals(subObjectMap.get("primitiveStr"), "newStr"); - assertEquals(((List)subObjectMap.get("array1")).size(), 5); + assertEquals(10, parentTheme.getThemeConfiguration().getWidgets().size()); + assertEquals(12, childTheme.getThemeConfiguration().getWidgets().size()); } http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/test/resources/child-theme.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/child-theme.json b/ambari-server/src/test/resources/child-theme.json new file mode 100644 index 0000000..553c9a9 --- /dev/null +++ b/ambari-server/src/test/resources/child-theme.json @@ -0,0 +1,33 @@ +{ + "name": "default", + "description": "Default theme for YARN service", + "configuration": { + "placement": { + "configuration-layout": "default", + "configs": [ + { + "config": "yarn-site/yarn.node-labels.enabled", + "subsection-name": "subsection-yarn-platform-features-col1" + }, + { + "config": "yarn-env/yarn_cgroups_enabled", + "subsection-name": "subsection-yarn-platform-features-col1" + } + ] + }, + "widgets": [ + { + "config": "yarn-site/yarn.node-labels.enabled", + "widget": { + "type": "checkbox" + } + }, + { + "config": "yarn-env/yarn_cgroups_enabled", + "widget": { + "type": "checkbox" + } + } + ] + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-server/src/test/resources/parent-theme.json ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/resources/parent-theme.json b/ambari-server/src/test/resources/parent-theme.json new file mode 100644 index 0000000..5dbf19f --- /dev/null +++ b/ambari-server/src/test/resources/parent-theme.json @@ -0,0 +1,241 @@ +{ + "name": "default", + "description": "Default theme for YARN service", + "configuration": { + "layouts": [ + { + "name": "default", + "tabs": [ + { + "name": "settings", + "display-name": "Settings", + "layout": { + "tab-columns": "3", + "tab-rows": "2", + "sections": [ + { + "name": "section-nm-sizing", + "display-name": "NodeManager Sizing", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "2", + "section-columns": "2", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-nm-sizing-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + }, + { + "name": "subsection-nm-sizing-col2", + "row-index": "0", + "column-index": "1", + "row-span": "1", + "column-span": "1" + } + ] + }, + { + "name": "section-yarn-platform-features", + "display-name": "YARN Platform Features", + "row-index": "0", + "column-index": "2", + "row-span": "1", + "column-span": "1", + "section-columns": "1", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-yarn-platform-features-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + } + ] + }, + { + "name": "section-container-sizing", + "display-name": "Container Sizing", + "row-index": "1", + "column-index": "0", + "row-span": "1", + "column-span": "2", + "section-columns": "2", + "section-rows": "1", + "subsections": [ + { + "name": "subsection-container-sizing-col1", + "row-index": "0", + "column-index": "0", + "row-span": "1", + "column-span": "1" + }, + { + "name": "subsection-container-sizing-col2", + "row-index": "0", + "column-index": "1", + "row-span": "1", + "column-span": "1" + } + ] + } + ] + } + } + ] + } + ], + "placement": { + "configuration-layout": "default", + "configs": [ + { + "config": "yarn-site/yarn.nodemanager.resource.memory-mb", + "subsection-name": "subsection-nm-sizing-col1" + }, + { + "config": "yarn-site/yarn.nodemanager.vmem-pmem-ratio", + "subsection-name": "subsection-nm-sizing-col1" + }, + { + "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit", + "subsection-name": "subsection-nm-sizing-col2" + }, + { + "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores", + "subsection-name": "subsection-nm-sizing-col2" + }, + { + "config": "yarn-site/yarn.scheduler.minimum-allocation-mb", + "subsection-name": "subsection-container-sizing-col1" + }, + { + "config": "yarn-site/yarn.scheduler.maximum-allocation-mb", + "subsection-name": "subsection-container-sizing-col1" + }, + { + "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores", + "subsection-name": "subsection-container-sizing-col2" + }, + { + "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores", + "subsection-name": "subsection-container-sizing-col2" + }, + { + "config": "yarn-site/yarn.resourcemanager.work-preserving-recovery.enabled", + "subsection-name": "subsection-yarn-platform-features-col1" + }, + { + "config": "yarn-site/yarn.log-aggregation-enable", + "subsection-name": "subsection-yarn-platform-features-col1" + } + ] + }, + "widgets": [ + { + "config": "yarn-site/yarn.nodemanager.resource.memory-mb", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "MB" + } + ] + } + }, + { + "config": "yarn-site/yarn.nodemanager.vmem-pmem-ratio", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "float" + } + ] + } + }, + { + "config": "yarn-site/yarn.nodemanager.resource.percentage-physical-cpu-limit", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "percent" + } + ] + } + }, + { + "config": "yarn-site/yarn.nodemanager.resource.cpu-vcores", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "int" + } + ] + } + }, + { + "config": "yarn-site/yarn.scheduler.minimum-allocation-mb", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "MB" + } + ] + } + }, + { + "config": "yarn-site/yarn.scheduler.maximum-allocation-mb", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "MB" + } + ] + } + }, + { + "config": "yarn-site/yarn.scheduler.minimum-allocation-vcores", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "int" + } + ] + } + }, + { + "config": "yarn-site/yarn.scheduler.maximum-allocation-vcores", + "widget": { + "type": "slider", + "units": [ + { + "unit-name": "int" + } + ] + } + }, + { + "config": "yarn-site/yarn.log-aggregation-enable", + "widget": { + "type": "checkbox" + } + }, + { + "config": "yarn-site/yarn.resourcemanager.work-preserving-recovery.enabled", + "widget": { + "type": "checkbox" + } + } + ] + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/d8bff038/ambari-web/app/mappers/configs/themes_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/configs/themes_mapper.js b/ambari-web/app/mappers/configs/themes_mapper.js index 978d7e3..5f00730 100644 --- a/ambari-web/app/mappers/configs/themes_mapper.js +++ b/ambari-web/app/mappers/configs/themes_mapper.js @@ -123,7 +123,7 @@ App.themesMapper = App.QuickDataMapper.create({ * @param {Object} json - json to parse */ mapThemeConfigs: function(json) { - Em.getWithDefault(json, "ThemeInfo.theme_data.Theme.placement.configs", []).forEach(function(configLink) { + Em.getWithDefault(json, "ThemeInfo.theme_data.Theme.configuration.placement.configs", []).forEach(function(configLink) { var configId = this.getConfigId(configLink); var subSectionId = configLink["subsection-name"]; var subSection = App.SubSection.find(subSectionId); @@ -144,7 +144,7 @@ App.themesMapper = App.QuickDataMapper.create({ * @param {Object} json - json to parse */ mapThemeWidgets: function(json) { - Em.getWithDefault(json, "ThemeInfo.theme_data.Theme.widgets", []).forEach(function(widget) { + Em.getWithDefault(json, "ThemeInfo.theme_data.Theme.configuration.widgets", []).forEach(function(widget) { var configId = this.getConfigId(widget); var configProperty = App.StackConfigProperty.find(configId);