Repository: ambari Updated Branches: refs/heads/trunk 889dec5b1 -> 60436ae70
AMBARI-5916. Create subresources mapper for Slider app view. (alexantonenko via srimanth) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/60436ae7 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/60436ae7 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/60436ae7 Branch: refs/heads/trunk Commit: 60436ae70109a23bfca55cdca01e6c469c54fcb5 Parents: 889dec5 Author: Srimanth Gunturi <[email protected]> Authored: Wed May 28 14:12:03 2014 -0700 Committer: Srimanth Gunturi <[email protected]> Committed: Wed May 28 14:27:08 2014 -0700 ---------------------------------------------------------------------- .../resources/ui/app/assets/data/apps/apps.json | 240 +++++++++++++++++-- .../src/main/resources/ui/app/initialize.js | 3 - .../ui/app/mappers/slider_apps_mapper.js | 98 +++++++- .../src/main/resources/ui/app/models/host.js | 23 +- .../main/resources/ui/app/models/slider_app.js | 5 - .../ui/app/models/slider_app_component.js | 14 +- 6 files changed, 314 insertions(+), 69 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json b/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json index 7b5686b..7a00c14 100644 --- a/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json +++ b/contrib/views/slider/src/main/resources/ui/app/assets/data/apps/apps.json @@ -1,43 +1,239 @@ { - "href" : "http://162.216.149.12:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps?fields=*", + "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps?fields=*", "items" : [ { - "href" : "http://162.216.149.12:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps/1400598543383_1", + "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps/1401266754647_1", + "appVersion" : "0.96.0.2.1.1", "components" : null, "configs" : null, - "diagnostics" : "", - "endTime" : 1400598813404, - "id" : "1400598543383_1", + "description" : "apache hbase is the hadoop database, a distributed, scalable, big data\n ...", + "diagnostics" : "org.apache.slider.core.exceptions.TriggerClusterTeardownException: Unstable Application Instance : - failed with role HBASE_MASTER failing 6 times (2 in startup); threshold is 5 - last failure: Failure container_1401266754647_0001_01_000008 on host c6401.ambari.apache.org, see http://c6401.ambari.apache.org:19888/jobhistory/logs/c6401.ambari.apache.org:45454/container_1401266754647_0001_01_000008/ctx/yarn", + "endTime" : 1401267215643, + "id" : "1401266754647_1", "instance_name" : "SLIDER_1", "jmx" : null, - "name" : "PigLatin:pigSmoke.sh", - "startTime" : 1400598788691, - "state" : "FINISHED", - "type" : "HBASE", + "name" : "hoya30", + "startTime" : 1401266799783, + "state" : "FROZEN", + "type" : "hbase", "urls" : null, - "user" : "ambari-qa", + "user" : "yarn", "version" : "1.0.0", "view_name" : "SLIDER", - "yarnId" : "application_1400598543383_0001" + "yarnId" : "application_1401266754647_0001" }, { - "href" : "http://162.216.149.12:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps/1400598543383_2", + "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps/1401266754647_2", + "appVersion" : "0.96.0.2.1.1", "components" : null, "configs" : null, - "diagnostics" : "", - "endTime" : 1400598890254, - "id" : "1400598543383_2", + "description" : "apache hbase is the hadoop database, a distributed, scalable, big data\n ...", + "diagnostics" : "Application application_1401266754647_0002 failed 2 times due to AM Container for appattempt_1401266754647_0002_000002 exited with exitCode: 1 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException: \norg.apache.hadoop.util.Shell$ExitCodeException: \n\tat org.apache.hadoop.util.Shell.runCommand(Shell.java:505)\n\tat org.apache.hadoop.util.Shell.run(Shell.java:418)\n\tat org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)\n\tat org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)\n\tat org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:300)\n\tat org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:81)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoo lExecutor.java:1145)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n\tat java.lang.Thread.run(Thread.java:744)\n\n\nContainer exited with a non-zero exit code 1\n.Failing this attempt.. Failing the application.", + "endTime" : 1401298946291, + "id" : "1401266754647_2", "instance_name" : "SLIDER_1", "jmx" : null, - "name" : "word count", - "startTime" : 1400598861646, - "state" : "FINISHED", - "type" : "ACCUMULO", + "name" : "hoya32", + "startTime" : 1401298942807, + "state" : "FAILED", + "type" : "hbase", "urls" : null, - "user" : "ambari-qa", + "user" : "yarn", + "version" : "1.0.0", + "view_name" : "SLIDER", + "yarnId" : "application_1401266754647_0002" + }, + { + "href" : "http://c6401:8080/api/v1/views/SLIDER/versions/1.0.0/instances/SLIDER_1/apps/1401266754647_3", + "appVersion" : "0.96.0.2.1.1", + "description" : "apache hbase is the hadoop database, a distributed, scalable, big data\n ...", + "diagnostics" : "", + "endTime" : 0, + "id" : "1401266754647_3", + "instance_name" : "SLIDER_1", + "name" : "hoya30", + "startTime" : 1401299043372, + "state" : "RUNNING", + "type" : "hbase", + "user" : "yarn", "version" : "1.0.0", "view_name" : "SLIDER", - "yarnId" : "application_1400598543383_0002" + "yarnId" : "application_1401266754647_0003", + "components" : { + "HBASE_MASTER" : { + "componentName" : "HBASE_MASTER", + "instanceCount" : 2, + "activeContainers" : { + "container_1401266754647_0003_01_000002" : { + "released" : "false", + "startTime" : "1401299052926", + "createTime" : "1401299052732", + "environment" : "[AGENT_WORK_ROOT=\"$PWD\", HADOOP_USER_NAME=\"yarn\", AGENT_LOG_ROOT=\"$LOG_DIRS\", MALLOC_ARENA_MAX=\"4\"]", + "host" : "c6401.ambari.apache.org", + "name" : "container_1401266754647_0003_01_000002", + "command" : "python ./infra/agent/slider-agent/agent/main.py --label container_1401266754647_0003_01_000002___HBASE_MASTER --host c6401.ambari.apache.org --port 36278 ; ", + "state" : "3", + "role" : "HBASE_MASTER", + "exitCode" : "0", + "diagnostics" : "", + "roleId" : "1" + } + }, + "completedContainers" : { } + }, + "HBASE_REGIONSERVER" : { + "componentName" : "HBASE_REGIONSERVER", + "instanceCount" : 1, + "activeContainers" : { + "container_1401266754647_0003_01_000003" : { + "released" : "false", + "startTime" : "1401299053317", + "createTime" : "1401299053307", + "environment" : "[AGENT_WORK_ROOT=\"$PWD\", HADOOP_USER_NAME=\"yarn\", AGENT_LOG_ROOT=\"$LOG_DIRS\", MALLOC_ARENA_MAX=\"4\"]", + "host" : "c6401.ambari.apache.org", + "name" : "container_1401266754647_0003_01_000003", + "command" : "python ./infra/agent/slider-agent/agent/main.py --label container_1401266754647_0003_01_000003___HBASE_REGIONSERVER --host c6401.ambari.apache.org --port 36278 ; ", + "state" : "3", + "role" : "HBASE_REGIONSERVER", + "exitCode" : "0", + "diagnostics" : "", + "roleId" : "2" + } + }, + "completedContainers" : { } + }, + "slider-appmaster" : { + "componentName" : "slider-appmaster", + "instanceCount" : 1, + "activeContainers" : { + "container_1401266754647_0003_01_000001" : { + "released" : "false", + "startTime" : "0", + "createTime" : "0", + "host" : "c6401.ambari.apache.org", + "name" : "container_1401266754647_0003_01_000001", + "command" : "", + "state" : "3", + "role" : "slider-appmaster", + "exitCode" : "0", + "diagnostics" : "", + "roleId" : "0" + } + }, + "completedContainers" : { } + } + }, + "configs" : { + "core-site" : { + "fs.defaultFS" : "hdfs://c6401.ambari.apache.org:8020" + }, + "global" : { + "app_install_dir" : "/hadoop/yarn/local/usercache/yarn/appcache/application_1401266754647_0003/container_1401266754647_0003_01_000002/app/install", + "app_log_dir" : "/hadoop/yarn/log/application_1401266754647_0003/container_1401266754647_0003_01_000002/app/log", + "app_pid_dir" : "/hadoop/yarn/local/usercache/yarn/appcache/application_1401266754647_0003/container_1401266754647_0003_01_000002/app/run", + "app_root" : "/hadoop/yarn/local/usercache/yarn/appcache/application_1401266754647_0003/container_1401266754647_0003_01_000002/app/install/hbase-0.96.1-hadoop2", + "app_user" : "yarn", + "ganglia_server_host" : "c6401.ambari.apache.org", + "ganglia_server_id" : "Application1", + "ganglia_server_port" : "8663", + "hbase_master_heapsize" : "1024m", + "hbase_regionserver_heapsize" : "1024m", + "security_enabled" : "false", + "user_group" : "hadoop" + }, + "hbase-site" : { + "hbase.client.keyvalue.maxsize" : "10485760", + "hbase.client.scanner.caching" : "100", + "hbase.cluster.distributed" : "true", + "hbase.defaults.for.version.skip" : "true", + "hbase.hregion.majorcompaction" : "86400000", + "hbase.hregion.max.filesize" : "10737418240", + "hbase.hregion.memstore.block.multiplier" : "2", + "hbase.hregion.memstore.flush.size" : "134217728", + "hbase.hregion.memstore.mslab.enabled" : "true", + "hbase.hstore.blockingStoreFiles" : "10", + "hbase.hstore.compactionThreshold" : "3", + "hbase.hstore.flush.retries.number" : "120", + "hbase.local.dir" : "${hbase.tmp.dir}/local", + "hbase.master.info.port" : "39505", + "hbase.regionserver.global.memstore.lowerLimit" : "0.38", + "hbase.regionserver.global.memstore.upperLimit" : "0.4", + "hbase.regionserver.handler.count" : "60", + "hbase.regionserver.info.port" : "0", + "hbase.regionserver.port" : "0", + "hbase.rootdir" : "hdfs://c6401.ambari.apache.org:8020/apps/hbase/data", + "hbase.security.authentication" : "simple", + "hbase.security.authorization" : "false", + "hbase.stagingdir" : "hdfs://c6401.ambari.apache.org:8020/apps/hbase/staging", + "hbase.superuser" : "yarn", + "hbase.tmp.dir" : "/hadoop/yarn/local/usercache/yarn/appcache/application_1401266754647_0003/container_1401266754647_0003_01_000002/work/app/tmp", + "hbase.zookeeper.property.clientPort" : "2181", + "hbase.zookeeper.quorum" : "c6401.ambari.apache.org", + "hbase.zookeeper.useMulti" : "true", + "hfile.block.cache.size" : "0.40", + "zookeeper.session.timeout" : "30000", + "zookeeper.znode.parent" : "/hbase-unsecure" + }, + "hdfs-site" : { + "dfs.namenode.http-address" : "c6401.ambari.apache.org:50070", + "dfs.namenode.https-address" : "c6401.ambari.apache.org:50470" + }, + "yarn-site" : { + "yarn.acl.enable" : "true", + "yarn.admin.acl" : "*", + "yarn.application.classpath" : "/etc/hadoop/conf,/usr/lib/hadoop/*,/usr/lib/hadoop/lib/*,/usr/lib/hadoop-hdfs/*,/usr/lib/hadoop-hdfs/lib/*,/usr/lib/hadoop-yarn/*,/usr/lib/hadoop-yarn/lib/*,/usr/lib/hadoop-mapreduce/*,/usr/lib/hadoop-mapreduce/lib/*", + "yarn.log-aggregation-enable" : "true", + "yarn.log-aggregation.retain-seconds" : "2592000", + "yarn.log.server.url" : "http://c6401.ambari.apache.org:19888/jobhistory/logs", + "yarn.nodemanager.address" : "0.0.0.0:45454", + "yarn.nodemanager.admin-env" : "MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX", + "yarn.nodemanager.aux-services" : "mapreduce_shuffle", + "yarn.nodemanager.aux-services.mapreduce_shuffle.class" : "org.apache.hadoop.mapred.ShuffleHandler", + "yarn.nodemanager.container-executor.class" : "org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor", + "yarn.nodemanager.container-monitor.interval-ms" : "3000", + "yarn.nodemanager.delete.debug-delay-sec" : "0", + "yarn.nodemanager.disk-health-checker.min-healthy-disks" : "0.25", + "yarn.nodemanager.health-checker.interval-ms" : "135000", + "yarn.nodemanager.health-checker.script.timeout-ms" : "60000", + "yarn.nodemanager.linux-container-executor.group" : "hadoop", + "yarn.nodemanager.local-dirs" : "/hadoop/yarn/local", + "yarn.nodemanager.log-aggregation.compression-type" : "gz", + "yarn.nodemanager.log-dirs" : "/hadoop/yarn/log", + "yarn.nodemanager.log.retain-second" : "604800", + "yarn.nodemanager.remote-app-log-dir" : "/app-logs", + "yarn.nodemanager.remote-app-log-dir-suffix" : "logs", + "yarn.nodemanager.resource.memory-mb" : "2048", + "yarn.nodemanager.vmem-check-enabled" : "false", + "yarn.nodemanager.vmem-pmem-ratio" : "2.1", + "yarn.resourcemanager.address" : "c6401.ambari.apache.org:8050", + "yarn.resourcemanager.admin.address" : "c6401.ambari.apache.org:8141", + "yarn.resourcemanager.am.max-attempts" : "2", + "yarn.resourcemanager.hostname" : "c6401.ambari.apache.org", + "yarn.resourcemanager.nodes.exclude-path" : "/etc/hadoop/conf/yarn.exclude", + "yarn.resourcemanager.resource-tracker.address" : "c6401.ambari.apache.org:8025", + "yarn.resourcemanager.scheduler.address" : "c6401.ambari.apache.org:8030", + "yarn.resourcemanager.scheduler.class" : "org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler", + "yarn.resourcemanager.webapp.address" : "c6401.ambari.apache.org:8088", + "yarn.scheduler.maximum-allocation-mb" : "2048", + "yarn.scheduler.minimum-allocation-mb" : "682", + "yarn.timeline-service.address" : "c6401.ambari.apache.org:10200", + "yarn.timeline-service.enabled" : "true", + "yarn.timeline-service.generic-application-history.store-class" : "org.apache.hadoop.yarn.server.applicationhistoryservice.NullApplicationHistoryStore", + "yarn.timeline-service.leveldb-timeline-store.path" : "/var/log/hadoop-yarn/timeline", + "yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms" : "300000", + "yarn.timeline-service.store-class" : "org.apache.hadoop.yarn.server.applicationhistoryservice.timeline.LeveldbTimelineStore", + "yarn.timeline-service.ttl-enable" : "true", + "yarn.timeline-service.ttl-ms" : "2678400000", + "yarn.timeline-service.webapp.address" : "c6401.ambari.apache.org:8188", + "yarn.timeline-service.webapp.https.address" : "c6401.ambari.apache.org:8190" + } + }, + "jmx" : { }, + "urls" : { + "JMX" : "http://c6401.ambari.apache.org:39505/jmx", + "Metrics" : "http://c6401.ambari.apache.org/cgi-bin/rrd.py?c=Application1", + "UI" : "http://c6401.ambari.apache.org:39505/master-status" + } } ] -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/initialize.js ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/initialize.js b/contrib/views/slider/src/main/resources/ui/app/initialize.js index 08ee2bc..73f4c6f 100755 --- a/contrib/views/slider/src/main/resources/ui/app/initialize.js +++ b/contrib/views/slider/src/main/resources/ui/app/initialize.js @@ -20,9 +20,6 @@ window.App = require('config/app'); -App.ApplicationAdapter = DS.FixtureAdapter.extend({ - namespace: 'slider-emberjs' -}); require('config/router'); require('config/store'); require('translations'); http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js index c791a23..5194c99 100644 --- a/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js +++ b/contrib/views/slider/src/main/resources/ui/app/mappers/slider_apps_mapper.js @@ -36,14 +36,57 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, { }, /** - * Parse loaded data according to <code>map</code> - * Load <code>App.SliderApp</code> and <code>App.QuickLink</code> models + * Parse loaded data + * Load <code>App.SliderAppComponent</code> model * @param {object} data received from server data * @method parse */ - parse: function(data) { - var apps = []; - var quickLinks = []; + parseComponents: function(data) { + var components = [], + appId = data.id; + + Object.keys(data.components).forEach(function (key) { + var component = data.components[key]; + activeContainers = Object.keys(component.activeContainers); + for(var i= 0; i < component.instanceCount; i++){ + components.pushObject( + Ember.Object.create({ + id: appId + component.componentName + i, + status: activeContainers[i] ? "Running" : "Stopped", + host: activeContainers[i] ? component.activeContainers[activeContainers[i]].host : "", + componentName: component.componentName, + appId: appId + }) + ); + } + }); + App.SliderApp.store.pushMany('sliderAppComponent', components); + return components.mapProperty('id'); + }, + + /** + * Parse loaded data + * Load <code>App.SliderApp.configs</code> model + * @param {object} data received from server data + * @method parse + */ + parseConfigs : function(data) { + var configs = {}; + Object.keys(data.configs).forEach(function (key) { + configs[key] = data.configs[key]; + }); + return configs; + }, + + /** + * Parse loaded data + * Load <code>App.QuickLink</code> model + * @param {object} data received from server data + * @method parse + */ + parseQuickLinks : function(data) { + var quickLinks = [], + appId = data.id; quickLinks.push( Ember.Object.create({ id: 'YARN application', @@ -51,26 +94,57 @@ App.SliderAppsMapper = App.Mapper.createWithMixins(App.RunPeriodically, { url: "http://"+window.location.hostname+":8088" }) ); + + if(!data.urls){ + return quickLinks.mapProperty('id'); + } + + Object.keys(data.urls).forEach(function (key) { + quickLinks.push( + Ember.Object.create({ + id: appId+key, + label: key, + url: data.urls[key] + }) + ); + }); + App.SliderApp.store.pushMany('QuickLink', quickLinks); + return quickLinks.mapProperty('id'); + }, + + /** + * Parse loaded data + * Load <code>App.SliderApp</code> model + * @param {object} data received from server data + * @method parse + */ + parse: function(data) { + var apps = [], + self = this; + data.items.forEach(function(app) { + var componentsId = app.components ? self.parseComponents(app) : [], + configs = app.configs ? self.parseConfigs(app) : {}; + quickLinks = self.parseQuickLinks(app); + apps.push( Ember.Object.create({ id: app.id, - index: app.id, yarnId: app.yarnId, name: app.name, status: app.state, user: app.user, - started: app.startTime, - ended: app.endTime, - appType: app.type, + started: (new Date(app.startTime).toUTCString()), + ended: app.endTime ? (new Date(app.endTime).toUTCString()) : "-", + appType: app.type.toUpperCase(), diagnostics: app.diagnostics, - components: app.components, - quickLinks: ["YARN application"], + components: componentsId, + quickLinks: quickLinks, + configs: configs, runtimeProperties: app.configs }) ); }); - App.SliderApp.store.pushMany('quickLink', quickLinks); App.SliderApp.store.pushMany('sliderApp', apps); } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/models/host.js ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/models/host.js b/contrib/views/slider/src/main/resources/ui/app/models/host.js index 4bc1d79..19269c2 100644 --- a/contrib/views/slider/src/main/resources/ui/app/models/host.js +++ b/contrib/views/slider/src/main/resources/ui/app/models/host.js @@ -30,25 +30,4 @@ App.Host = DS.Model.extend({ }); -App.Host.FIXTURES = [ - { - id: 1, - hostName: 'host1', - publicHostName: 'Host 1' - }, - { - id: 2, - hostName: 'host2', - publicHostName: 'Host 2' - }, - { - id: 3, - hostName: 'host3', - publicHostName: 'Host 3' - }, - { - id: 4, - hostName: 'host 4', - publicHostName: 'Host 4' - } -]; \ No newline at end of file +App.Host.FIXTURES = []; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js b/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js index 0150ea6..14c4a32 100644 --- a/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js +++ b/contrib/views/slider/src/main/resources/ui/app/models/slider_app.js @@ -21,11 +21,6 @@ App.SliderApp = DS.Model.extend({ /** * @type {string} */ - index: DS.attr('string'), - - /** - * @type {string} - */ yarnId: DS.attr('string'), /** http://git-wip-us.apache.org/repos/asf/ambari/blob/60436ae7/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js b/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js index 6f759f7..8f4f584 100644 --- a/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js +++ b/contrib/views/slider/src/main/resources/ui/app/models/slider_app_component.js @@ -21,19 +21,23 @@ App.SliderAppComponent = DS.Model.extend({ /** * @type {string} */ - index: DS.attr('string'), // (appid+component_name+index) + status: DS.attr('string'), /** * @type {string} */ - status: DS.attr('string'), + host: DS.attr('string'), /** - * @type {App.Host} + * @type {string} */ - host: DS.belongsTo('host') + componentName: DS.attr('string'), -}); + /** + * @type {App.SliderApp} + */ + appId: DS.belongsTo('sliderApp') +}); App.SliderAppComponent.FIXTURES = []; \ No newline at end of file
