Home | History | Annotate | Download | only in srm
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License (the "License").
      6  * You may not use this file except in compliance with the License.
      7  *
      8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9  * or http://www.opensolaris.org/os/licensing.
     10  * See the License for the specific language governing permissions
     11  * and limitations under the License.
     12  *
     13  * When distributing Covered Code, include this CDDL HEADER in each
     14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15  * If applicable, add the following below this CDDL HEADER, with the
     16  * fields enclosed by brackets "[]" replaced with your own identifying
     17  * information: Portions Copyright [yyyy] [name of copyright owner]
     18  *
     19  * CDDL HEADER END
     20  */
     21 /*
     22  * Copyright (c) 2001 by Sun Microsystems, Inc.
     23  * All rights reserved.
     24  *
     25  * Solaris_ActiveProjectProcessAggregateStatistics.java
     26  */
     27 
     28 
     29 package com.sun.wbem.solarisprovider.srm;
     30 
     31 import javax.wbem.cim.*;
     32 import javax.wbem.provider.*;
     33 
     34 import java.util.Enumeration;
     35 import java.util.Iterator;
     36 import java.util.Vector;
     37 
     38 
     39 /**
     40  * Provider of the Solaris_ActiveProjectProcessAggregateStatistics class.
     41  * This class represents a link between a Project active on a system and the
     42  * aggregated resource usage of its Process(es).
     43  * @author Sun Microsystems
     44  */
     45 public class  Solaris_ActiveProjectProcessAggregateStatistics
     46 	extends SRMProvider {
     47 
     48     /**
     49      * The name of the provider implemented by this class
     50      */
     51     protected String providerName =
     52 	SOLARIS_ACTIVEPROJECTPROCESSAGGREGATESTATISTICS;
     53 
     54 
     55     /**
     56      * Get the name of the provider implemented by this class.
     57      * @returns String provider name
     58      */
     59     protected String getProviderName() {
     60 	return providerName;
     61     }
     62 
     63 
     64     /**
     65      * Returns a specific CIMInstance.
     66      * @param op - the name of the instance to be retrieved. This must include
     67      * all of the keys and values for the instance.
     68      * @param localOnly - if true, only the local properties of the class are
     69      * returned, otherwise all properties are required
     70      * @param includeQualifiers - if true, the qualifiers are returned as part
     71      * of of the returned instancei, otherwise no qualifiers will be returned
     72      * @param includeClassOrigin - if true, the class origin of each property
     73      * will be returned
     74      * @param String[] - if null, all properties are returned, otherwise only
     75      * the properties specified will be returned. Any duplicate properties will
     76      * be ignored.
     77      * @param cc - the class reference
     78      *
     79      * @return	CIMInstance the retrieved instance.
     80      * @exception CIMException - the method getInstance throws a CIMException
     81      * if the CIMObjectPath is incorrect or does not exist.
     82      */
     83     public synchronized CIMInstance getInstance(CIMObjectPath op,
     84 				   boolean localOnly,
     85 				   boolean includeQualifiers,
     86 				   boolean includeClassOrigin,
     87 				   String[] propList,
     88 				   CIMClass cc)
     89 	    throws CIMException {
     90 
     91 	CIMObjectPath procaggreCOP = null;
     92 	CIMObjectPath activeprojCOP = null;
     93 	CIMInstance ci = null;
     94 	CIMProperty cp;
     95 
     96 	SRMDebug.trace(SRMDebug.METHOD_CALL, op.toString());
     97 	try {
     98 	    Enumeration e = op.getKeys().elements();
     99 	    while (e.hasMoreElements()) {
    100 		cp = (CIMProperty) e.nextElement();
    101 		if (cp.getName().equalsIgnoreCase(ELEMENT)) {
    102 		    activeprojCOP = (CIMObjectPath)((CIMValue)(cp.getValue())).
    103 			getValue();
    104 		}
    105 		if (cp.getName().equalsIgnoreCase(STATS)) {
    106 		    procaggreCOP = (CIMObjectPath)((CIMValue)(cp.getValue())).
    107 			getValue();
    108 		}
    109 	    }
    110 
    111 	    ci = cc.newInstance();
    112 	    ci.setProperty(ELEMENT, new CIMValue(activeprojCOP));
    113 	    ci.setProperty(STATS, new CIMValue(procaggreCOP));
    114 
    115 	} catch (Exception e) {
    116 	    String msg = writeLog(LOGERROR, "SRM_1001");
    117 	    writeLog(LOGERROR, e);
    118 	    msg += " (" + e.getClass().toString() + ")";
    119 	    SRMDebug.trace1(providerName, e);
    120 	    throw new CIMException(CIMException.CIM_ERR_FAILED, msg);
    121 	}
    122     	SRMDebug.trace(SRMDebug.METHOD_RETV, ci.toString());
    123 	return ci;
    124 
    125     } // end getInstance
    126 
    127 
    128     /**
    129      * Enumerates all instances of Solaris_ActiveProjectAggregateStatistics.
    130      * @param op - the object path specifies the class to be enumerated
    131      * localOnly - if true, only the local properties of the class are returned,
    132      * otherwise all properties are required
    133      * @param includeQualifiers - if true, the qualifiers are returned as part
    134      * of of the returned instancei, otherwise no qualifiers will be returned
    135      * @param includeClassOrigin - if true, the class origin of each property
    136      * will be returned
    137      * @param String[] - if null, all properties are returned, otherwise only
    138      * the properties specified will be
    139      * returned. Any duplicate properties will be ignored.
    140      * @param cc - the class reference
    141      * @return An array of CIMInstance
    142      * @exception CIMException - if the CIMObjectPath is incorrect or does not
    143      * exist.
    144      */
    145     public synchronized CIMInstance[] enumerateInstances(CIMObjectPath op,
    146 					    boolean localOnly,
    147 					    boolean includeQualifiers,
    148 					    boolean includeClassOrigin,
    149 					    String[] propList,
    150 					    CIMClass cc)
    151 	    throws CIMException {
    152 
    153 	Vector installedElements = new Vector();
    154 	ActiveProjectModel apm;
    155 	CIMObjectPath procaggreCOP;
    156 	CIMObjectPath activeprojCOP;
    157 	CIMInstance ci;
    158     	DataModel   dm = null;
    159 
    160 	SRMDebug.trace(SRMDebug.METHOD_CALL, op.toString());
    161 	try {
    162 	    dm = resourceMonitor.getDataModel(false);
    163 	    for (Iterator i = dm.getProjectIterator(); i.hasNext(); ) {
    164 		apm = (ActiveProjectModel) i.next();
    165 		activeprojCOP = apm.getCIMObjectPath(SOLARIS_ACTIVEPROJECT);
    166 		procaggreCOP = dm.getProjprocs(apm.name).getCIMObjectPath(
    167 		    SOLARIS_PROJECTPROCESSAGGREGATESTATISTICALINFORMATION);
    168 		ci = cc.newInstance();
    169 		ci.setProperty(ELEMENT, new CIMValue(activeprojCOP));
    170 		ci.setProperty(STATS, new CIMValue(procaggreCOP));
    171 		installedElements.addElement(ci);
    172 	    }
    173 	    dm = resourceMonitor.releaseDataModel(dm);
    174 	} catch (Exception e) {
    175 	    dm = resourceMonitor.releaseDataModel(dm);
    176 	    String msg = writeLog(LOGERROR, "SRM_1002");
    177 	    writeLog(LOGERROR, e);
    178 	    msg += " (" + e.getClass().toString() + ")";
    179 	    SRMDebug.trace1(providerName, e);
    180 	    throw new CIMException(CIMException.CIM_ERR_FAILED, msg);
    181     	}
    182 	CIMInstance[] ciArray = new CIMInstance[installedElements.size()];
    183 	installedElements.toArray(ciArray);
    184 	SRMDebug.trace(SRMDebug.METHOD_RETV, "instance[0]: "
    185 	    	+ ciArray[0].toString());
    186         return ciArray;
    187 
    188     } // end enumerateInstances
    189 
    190 
    191     /**
    192      * Returns all object paths.
    193      *
    194      * @param op - the class name to enumerate the instances
    195      * @param cc - the class reference passed to the provider
    196      * @return an array of CIMObjectPath containing names of the enumerated
    197      * instances.
    198      * @exception CIMException - if the classname is null or does not exist.
    199      */
    200     public synchronized  CIMObjectPath[]
    201     	enumerateInstanceNames(CIMObjectPath op, CIMClass cc)
    202 	    throws CIMException {
    203 
    204 	Vector installedElements = new Vector();
    205 	ActiveProjectModel apm;
    206 	CIMObjectPath procaggreCOP;
    207 	CIMObjectPath activeprojCOP;
    208 	CIMObjectPath cop;
    209 	DataModel   dm = null;
    210 
    211 	SRMDebug.trace(SRMDebug.METHOD_CALL, op.toString());
    212 	try {
    213 	    dm = resourceMonitor.getDataModel(false);
    214 	    Iterator i = dm.getProjectIterator();
    215 	    while (i.hasNext()) {
    216 		apm = (ActiveProjectModel) i.next();
    217 		activeprojCOP = apm.getCIMObjectPath(SOLARIS_ACTIVEPROJECT);
    218 		procaggreCOP = dm.getProjprocs(apm.name).getCIMObjectPath(
    219 		    SOLARIS_PROJECTPROCESSAGGREGATESTATISTICALINFORMATION);
    220 		cop = new CIMObjectPath(op.getObjectName(),
    221 		op.getNameSpace());
    222 		cop.addKey(ELEMENT, new CIMValue(activeprojCOP));
    223 		cop.addKey(STATS, new CIMValue(procaggreCOP));
    224 		installedElements.add(cop);
    225 	    }
    226 	    dm = resourceMonitor.releaseDataModel(dm);
    227 	} catch (Exception e) {
    228 	    dm = resourceMonitor.releaseDataModel(dm);
    229 	    String msg = writeLog(LOGERROR, "SRM_1003");
    230 	    writeLog(LOGERROR, e);
    231 	    msg += " (" + e.getClass().toString() + ")";
    232 	    SRMDebug.trace1(providerName, e);
    233 	    throw new CIMException(CIMException.CIM_ERR_FAILED, msg);
    234     	}
    235     	CIMObjectPath[] copArray = new CIMObjectPath[installedElements.size()];
    236 	installedElements.toArray(copArray);
    237 	SRMDebug.trace(SRMDebug.METHOD_RETV, "instanceName[0]: "
    238 	    	+ copArray[0].toString());
    239 	return copArray;
    240     }
    241 
    242 } // end class Solaris_ActiveProjectProcessAggregateStatistics
    243