Hello,
I have a problem with creating object workspace for my custom object in the plugin. I'm trying to create something similar to "chassis-rack" sample that provided with the SDK. I added a new app category and I want to display inventory lists of various custom objects under it. For each custom object, I need to be able to view it's related objects and/or its own properties. So I did everything just like in "rack-chassis" sample. I am able to view lists of my custom objects. However, when I click on a specific object in the list, its workspace does not appear (although it's defined in plugin.xml), I get an empty screen with a message: "You have no privileges to view this object or it does not exist". I added two custom objects and they both behave the same way.
I checked all the logs and there is nothing interesting. I also debugged it and found out that "getData" function of the DataAdapter registered for these objects is not called when I click on the specific object, so I suppose the problem is related to the object workspace, but I can't find or understand how I can find it.
I will be very grateful for help.
Here is my plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<plugin id="com.emc.ecs.scaleioPlugin"
moduleUri="Scaleiopluginui.swf" defaultBundle="ScaleiopluginuiResources">
<resources>
<resource locale="en_US">
<!-- relative path of the resource .swf generated by the build script -->
<module uri="locales/scaleio-plugin-ui-resources-en_US.swf"/>
</resource>
</resources>
<!--==========================================================================
================================== General ===================================
==============================================================================-->
<!-- Add "ScaleIO ECS" node to the Virtual Infrastructure view of the object
navigator. This category node is used below for the MDM clusters collection. -->
<extension id="com.emc.ecs.scaleioAppCategory">
<extendedPoint>vise.navigator.nodespecs</extendedPoint>
<object>
<title>#{scaleioAppCategory}</title>
<parentUid>vsphere.core.navigator.virtualInfrastructure</parentUid>
</object>
</extension>
<!--==========================================================================
==================================== MDM =====================================
==============================================================================-->
<extension id="com.emc.ecs.mdm.objectType">
<extendedPoint>vsphere.core.objectTypes</extendedPoint>
<object>
<types>
<String>ecs:Mdm</String>
</types>
<label>#{mdmLabel}</label>
<labelPlural>#{mdmLabelPlural}</labelPlural>
<icon>#{mdmIcon}</icon>
</object>
</extension>
<templateInstance id="com.emc.ecs.mdm.viewTemplateInstance">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com.emc.ecs.mdm"/>
<variable name="objectType" value="ecs:Mdm"/>
</templateInstance>
<templateInstance id="com.emc.ecs.lists.allMdm">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com.emc.ecs.mdmCollection"/>
<variable name="title" value="#{mdmLabel}"/>
<variable name="icon" value="#{mdmIcon}"/>
<variable name="objectType" value="ecs:Mdm"/>
<variable name="listViewId" value="com.emc.ecs.mdm.list"/>
<variable name="parentUid" value="com.emc.ecs.scaleioAppCategory"/>
</templateInstance>
<extension id="com.emc.ecs.mdm.list.sampleColumns">
<extendedPoint>com.emc.ecs.mdm.list.columns</extendedPoint>
<object>
<items>
<com.vmware.ui.lists.ColumnContainer>
<uid>com.emc.ecs.mdm.column.ip</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<requestedProperties>
<String>ip</String>
</requestedProperties>
<sortProperty>ip</sortProperty>
<exportProperty>ip</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
<component>
<mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
<headerText>Ip Address</headerText>
<dataField>ip</dataField>
</mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
</component>
</com.vmware.ui.lists.ColumnContainer>
<com.vmware.ui.lists.ColumnContainer>
<uid>com.emc.ecs.mdm.column.type</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<requestedProperties>
<String>type</String>
</requestedProperties>
<exportProperty>type</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
<component>
<mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
<headerText>MDM Type</headerText>
<dataField>type</dataField>
</mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
</component>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<!--==========================================================================
================================ MDM Cluster =================================
==============================================================================-->
<templateInstance id="com.emc.ecs.mdmCluster.viewTemplate">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com.emc.ecs.mdmCluster"/>
<variable name="objectType" value="ecs:MdmCluster"/>
</templateInstance>
<templateInstance id="com.emc.ecs.lists.allMdmCluster">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com.emc.ecs.mdmClusterCollection"/>
<variable name="title" value="#{mdmClusterLabel}"/>
<variable name="icon" value="#{mdmClusterIcon}"/>
<variable name="objectType" value="ecs:MdmCluster"/>
<variable name="listViewId" value="com.emc.ecs.mdmCluster.list"/>
<variable name="parentUid" value="com.emc.ecs.scaleioAppCategory"/>
</templateInstance>
<extension id="com.emc.ecs.mdmCluster.list.sampleColumns">
<extendedPoint>com.emc.ecs.mdmCluster.list.columns</extendedPoint>
<object>
<items>
<com.vmware.ui.lists.ColumnContainer>
<uid>com.emc.ecs.mdmCluster.column.name</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<requestedProperties>
<String>name</String>
</requestedProperties>
<sortProperty>name</sortProperty>
<exportProperty>name</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
<component>
<mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
<headerText>Name</headerText>
<dataField>name</dataField>
</mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
</component>
</com.vmware.ui.lists.ColumnContainer>
<com.vmware.ui.lists.ColumnContainer>
<uid>com.emc.ecs.mdmCluster.column.mode</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<requestedProperties>
<String>mode</String>
</requestedProperties>
<exportProperty>mode</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
<component>
<mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
<headerText>Mode</headerText>
<dataField>mode</dataField>
</mx.controls.advancedDataGridClasses.AdvancedDataGridColumn>
</component>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<extension id="com.emc.ecs.mdmCluster.objectType">
<extendedPoint>vsphere.core.objectTypes</extendedPoint>
<object>
<types>
<String>ecs:MdmCluster</String>
</types>
<label>#{mdmClusterLabel}</label>
<labelPlural>#{mdmClusterLabelPlural}</labelPlural>
<icon>#{mdmClusterIcon}</icon>
</object>
</extension>
</plugin>