From: <rm...@hy...> - 2008-03-29 01:32:25
|
Author: rmorgan Date: 2008-03-28 18:32:20 -0700 (Fri, 28 Mar 2008) New Revision: 8584 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=8584 Modified: trunk/installer/data/db-upgrade.xml trunk/sql/authz/ResourceGroup.hbm.xml trunk/src/org/hyperic/hq/authz/server/session/ResourceGroup.java trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupDAO.java trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupManagerEJBImpl.java trunk/src/org/hyperic/hq/authz/server/session/RoleDAO.java trunk/src/org/hyperic/hq/grouping/server/session/GroupManagerEJBImpl.java Log: Remove GROUP_ENT_TYPE and GROUP_ENT_RES_TYPE from EAM_RESOURCE_GROUP. Modified: trunk/installer/data/db-upgrade.xml =================================================================== --- trunk/installer/data/db-upgrade.xml 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/installer/data/db-upgrade.xml 2008-03-29 01:32:20 UTC (rev 8584) @@ -8555,6 +8555,17 @@ </schemaSpec> + <schemaSpec version="3.109"> + <schema-directSQL> + <statement desc="Drop group_ent_type from EAM_RESOURCE_GROUP"> + ALTER TABLE EAM_RESOURCE_GROUP DROP COLUMN group_ent_type + </statement> + <statement desc="Drop group_ent_res_type from EAM_RESOURCE_GROUP"> + ALTER TABLE EAM_RESOURCE_GROUP DROP COLUMN group_ent_res_type + </statement> + </schema-directSQL> + </schemaSpec> + </dbupgrade> </target> Modified: trunk/sql/authz/ResourceGroup.hbm.xml =================================================================== --- trunk/sql/authz/ResourceGroup.hbm.xml 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/sql/authz/ResourceGroup.hbm.xml 2008-03-29 01:32:20 UTC (rev 8584) @@ -43,14 +43,6 @@ <column name="GROUPTYPE" not-null="false" default="11"/> </property> - <property name="groupEntType" type="integer"> - <column name="GROUP_ENT_TYPE" not-null="false" default="-1"/> - </property> - - <property name="groupEntResType" type="integer"> - <column name="GROUP_ENT_RES_TYPE" not-null="false" default="-1"/> - </property> - <property name="clusterId" type="integer"> <column name="CLUSTER_ID" not-null="false" default="-1"/> </property> Modified: trunk/src/org/hyperic/hq/authz/server/session/ResourceGroup.java =================================================================== --- trunk/src/org/hyperic/hq/authz/server/session/ResourceGroup.java 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/src/org/hyperic/hq/authz/server/session/ResourceGroup.java 2008-03-29 01:32:20 UTC (rev 8584) @@ -43,8 +43,6 @@ private String _location; private boolean _system = false; private Integer _groupType; - private Integer _groupEntType; - private Integer _groupEntResType; private Integer _clusterId; private long _ctime; private long _mtime; @@ -61,22 +59,20 @@ private String _description; private String _location; private int _groupType; - private int _groupEntType; - private int _groupEntResType; + private Resource _resourcePrototype; private int _clusterId; private boolean _system; public ResourceGroupCreateInfo(String name, String description, - int groupType, int groupEntType, - int groupEntResType, + int groupType, + Resource resourcePrototype, String location, int clusterId, boolean system) { _name = name; _description = description; - _groupEntResType = groupEntResType; - _groupEntType = groupEntType; + _resourcePrototype = resourcePrototype; _groupType = groupType; _location = location; _clusterId = clusterId; @@ -87,8 +83,7 @@ public String getDescription() { return _description; } public String getLocation() { return _location; } public int getGroupType() { return _groupType; } - public int getGroupEntType() { return _groupEntType; } - public int getGroupEntResType() { return _groupEntResType; } + public Resource getResourcePrototype() { return _resourcePrototype; } public int getClusterId() { return _clusterId; } public boolean getSystem() { return _system; } } @@ -97,10 +92,6 @@ super(); } - ResourceGroup(ResourceGroupValue val) { - setResourceGroupValue(val); - } - ResourceGroup(ResourceGroupCreateInfo cInfo, AuthzSubject creator) { setName(cInfo.getName()); _clusterId = new Integer(cInfo.getClusterId()); @@ -108,8 +99,7 @@ _location = cInfo.getLocation(); _system = cInfo.getSystem(); _groupType = new Integer(cInfo.getGroupType()); - _groupEntType = new Integer(cInfo.getGroupEntType()); - _groupEntResType = new Integer(cInfo.getGroupEntResType()); + _resourcePrototype = cInfo.getResourcePrototype(); _ctime = _mtime = System.currentTimeMillis(); _modifiedBy = creator.getName(); } @@ -170,22 +160,38 @@ _groupType = val; } + /** + * @deprecated Use getResourcePrototype() instead. + * XXX: ADHOC groups lose the Group or Application types with the change + * to use a Resource prototype for compatible groups. + */ public Integer getGroupEntType() { - return _groupEntType; - } + if (_resourcePrototype == null) { + return new Integer(-1); + } - protected void setGroupEntType(Integer val) { - _groupEntType = val; + Integer type = _resourcePrototype.getResourceType().getId(); + if (type.equals(AuthzConstants.authzPlatformProto)) { + return new Integer(AppdefEntityConstants.APPDEF_TYPE_PLATFORM); + } else if (type.equals(AuthzConstants.authzServerProto)) { + return new Integer(AppdefEntityConstants.APPDEF_TYPE_SERVER); + } else if (type.equals(AuthzConstants.authzServiceProto)) { + return new Integer(AppdefEntityConstants.APPDEF_TYPE_SERVICE); + } else { + return new Integer(-1); // Backwards compat. + } } + /** + * @deprecated Use getResourcePrototype() instead. + */ public Integer getGroupEntResType() { - return _groupEntResType; + if (_resourcePrototype == null) { + return new Integer(-1); + } + return _resourcePrototype.getInstanceId(); } - protected void setGroupEntResType(Integer val) { - _groupEntResType = val; - } - public Integer getClusterId() { return _clusterId; } @@ -322,12 +328,15 @@ return _resourceGroupValue; } + /** + * @TODO: This method needs to be removed in favor of more discrete + * operations. Not all the properties here can be changed once a group is + * created. + */ protected void setResourceGroupValue(ResourceGroupValue val) { setClusterId(new Integer(val.getClusterId())); setCtime(val.getCTime()); setDescription(val.getDescription()); - setGroupEntResType(new Integer(val.getGroupEntResType())); - setGroupEntType(new Integer(val.getGroupEntType())); setGroupType(new Integer(val.getGroupType())); setId(val.getId()); setLocation(val.getLocation()); Modified: trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupDAO.java =================================================================== --- trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupDAO.java 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupDAO.java 2008-03-29 01:32:20 UTC (rev 8584) @@ -59,29 +59,6 @@ Resource r = rDao.create(resType, proto, resGrp.getName(), creator, resGrp.getId(), cInfo.getSystem()); - // XXX: This garbage is temporary. - if (cInfo.getGroupEntResType() != -1) { - Integer type; - switch (cInfo.getGroupEntType()) { - case AppdefEntityConstants.APPDEF_TYPE_PLATFORM: - type = AuthzConstants.authzPlatformProto; - break; - case AppdefEntityConstants.APPDEF_TYPE_SERVER: - type = AuthzConstants.authzServerProto; - break; - case AppdefEntityConstants.APPDEF_TYPE_SERVICE: - type = AuthzConstants.authzServiceProto; - break; - default: - throw new IllegalArgumentException("Unhandled group type" + - cInfo.getGroupEntType()); - } - - Resource resourceType = - rDao.findByInstanceId(type, new Integer(cInfo.getGroupEntResType())); - resGrp.setResourcePrototype(resourceType); - } - resGrp.setResource(r); save(resGrp); Modified: trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupManagerEJBImpl.java 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/src/org/hyperic/hq/authz/server/session/ResourceGroupManagerEJBImpl.java 2008-03-29 01:32:20 UTC (rev 8584) @@ -39,6 +39,7 @@ import javax.naming.NamingException; import org.hyperic.hq.appdef.shared.AppdefEntityID; +import org.hyperic.hq.appdef.shared.AppdefEntityConstants; import org.hyperic.hq.authz.server.session.Resource; import org.hyperic.hq.authz.server.session.ResourceGroup; import org.hyperic.hq.authz.server.session.AuthzSubject; @@ -104,6 +105,38 @@ } /** + * For compatible groups, get the Resource prototype for the given + * appdef entity type and id. + * @param atype The appdef type, one of AppdefEntityConstants.APPDEF_TYPE* + * @param aid The appdef instance id. + * @return The Resource prototype for this type and id or null if one + * does not exist. + * @ejb:interface-method + * @TODO As we migrate to a Resource based inventory this method should go. + */ + public Resource getResourceGroupPrototype(int atype, int aid) { + + ResourceDAO dao = getResourceDAO(); + + Integer type; + switch (atype) { + case AppdefEntityConstants.APPDEF_TYPE_PLATFORM: + type = AuthzConstants.authzPlatformProto; + break; + case AppdefEntityConstants.APPDEF_TYPE_SERVER: + type = AuthzConstants.authzServerProto; + break; + case AppdefEntityConstants.APPDEF_TYPE_SERVICE: + type = AuthzConstants.authzServiceProto; + break; + default: + return null; + } + + return dao.findByInstanceId(type, new Integer(aid)); + } + + /** * Create a resource group. Currently no permission checking. * * @param roles List of {@link Role}s @@ -736,11 +769,12 @@ g.getId(), AuthzConstants.perm_modifyResourceGroup); g.setGroupType(new Integer(groupType)); - g.setGroupEntType(new Integer(groupEntType)); - g.setGroupEntResType(new Integer(groupEntResType)); + + Resource r = getResourceGroupPrototype(groupEntType, + groupEntResType); + g.setResourcePrototype(r); } - - + /** * Get the maximum collection interval for a scheduled metric within a * compatible group of resources. Modified: trunk/src/org/hyperic/hq/authz/server/session/RoleDAO.java =================================================================== --- trunk/src/org/hyperic/hq/authz/server/session/RoleDAO.java 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/src/org/hyperic/hq/authz/server/session/RoleDAO.java 2008-03-29 01:32:20 UTC (rev 8584) @@ -93,8 +93,7 @@ new ResourceGroupCreateInfo(groupName, "", // Description 0, // Group type - 0, // Group entity type - 0, // Group entity resource type + null, // The Resource prototype null, // Location 0, // clusterId true); // system Modified: trunk/src/org/hyperic/hq/grouping/server/session/GroupManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/grouping/server/session/GroupManagerEJBImpl.java 2008-03-29 00:51:10 UTC (rev 8583) +++ trunk/src/org/hyperic/hq/grouping/server/session/GroupManagerEJBImpl.java 2008-03-29 01:32:20 UTC (rev 8584) @@ -103,18 +103,22 @@ "exists."); } + ResourceGroupManagerLocal rgmLoc = getResourceGroupManager(); + + Resource resourcePrototype = + rgmLoc.getResourceGroupPrototype(group.getGroupEntType(), + group.getGroupEntResType()); + /* Create the resource group. */ ResourceGroupCreateInfo createInfo = new ResourceGroupCreateInfo(group.getName(), group.getDescription(), group.getGroupType(), - group.getGroupEntType(), - group.getGroupEntResType(), + resourcePrototype, group.getLocation(), group.getClusterId(), false /* system = false */); - ResourceGroupManagerLocal rgmLoc = getResourceGroupManager(); ResourceGroup rg = rgmLoc.createResourceGroup(subj, createInfo, Collections.EMPTY_LIST, // Roles |