<?xml version="1.0"?>
<plugin name="Infinispan"
        displayName="InfinispanPlugin"
        description="Supports management and monitoring of Infinispan"
        package="org.infinispan.rhq"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="urn:xmlns:rhq-plugin"
        xmlns:c="urn:xmlns:rhq-configuration">

   <depends plugin="JMX" useClasses="true"/>

   <service name="Infinispan Cache Manager"
            discovery="CacheManagerDiscovery"
            class="CacheManagerComponent"
            
            
             
          >

            <runs-inside>
                <parent-resource-type name="Profile" plugin="jboss-as-7"/>
                <parent-resource-type name="JMX Server" plugin="JMX"/>
                <parent-resource-type name="JBossAS7 Standalone Server" plugin="jboss-as-7"/>
                <parent-resource-type name="JBossAS Server" plugin="JBossAS5"/>
                <parent-resource-type name="JBossAS Server" plugin="JBossAS"/>
            </runs-inside>


           <operation name="startCacheWithCacheName" displayName="Starts a cache with the given name" description="Starts a named cache from this cache manager">
              <parameters>
                 <c:simple-property name="cacheName" description="Name of cache to start"/>
              </parameters>
           </operation>
           <operation name="startCache" displayName="Starts the default cache" description="Starts the default cache associated with this cache manager">
           </operation>

           <metric property="Name" displayName="Cache manager name" displayType="summary" units="none" dataType="trait"
                   description="The name of this cache manager" />
           <metric property="Version" displayName="Infinispan version" displayType="summary" units="none" dataType="trait"
                   description="Infinispan version." />
           <metric property="CreatedCacheCount" displayName="Number of caches created" displayType="summary" units="none" dataType="measurement"
                   description="The total number of created caches, including the default cache." />
           <metric property="PhysicalAddresses" displayName="Physical network addresses" displayType="summary" units="none" dataType="trait"
                   description="The physical network addresses associated with this instance" />
           <metric property="ClusterSize" displayName="Cluster size" displayType="summary" units="none" dataType="measurement"
                   description="Size of the cluster in number of nodes" />
           <metric property="RunningCacheCount" displayName="Number of running caches" displayType="summary" units="none" dataType="measurement"
                   description="The total number of running caches, including the default cache." />
           <metric property="CacheManagerStatus" displayName="Cache manager status" displayType="summary" units="none" dataType="trait"
                   description="The status of the cache manager instance." />
           <metric property="NodeAddress" displayName="Network address" displayType="summary" units="none" dataType="trait"
                   description="The network address associated with this instance" />
           <metric property="DefinedCacheNames" displayName="List of defined caches" displayType="summary" units="none" dataType="trait"
                   description="The defined cache names and their statuses.  The default cache is not included in this representation." />
           <metric property="DefinedCacheCount" displayName="Number of caches defined" displayType="summary" units="none" dataType="measurement"
                   description="The total number of defined caches, excluding the default cache." />
           <metric property="ClusterMembers" displayName="Cluster members" displayType="summary" units="none" dataType="trait"
                   description="List of members in the cluster" />
           <metric property="TotalBytesWritten" displayName="Number of total number of bytes written" displayType="summary" units="none" dataType="measurement"
                   description="Returns the total number of bytes written by the server back to clients which includes both protocol and user information." />
           <metric property="HostName" displayName="Host name" displayType="summary" units="none" dataType="trait"
                   description="Returns the host to which the transport binds." />
           <metric property="ReceiveBufferSize" displayName="Receive buffer size" displayType="summary" units="none" dataType="trait"
                   description="Returns the receive buffer size." />
           <metric property="TpcNoDelay" displayName="TCP no delay" displayType="summary" units="none" dataType="trait"
                   description="Returns whether TCP no delay was configured or not." />
           <metric property="IdleTimeout" displayName="Idle timeout" displayType="summary" units="none" dataType="trait"
                   description="Returns the idle timeout." />
           <metric property="SendBufferSize" displayName="Send buffer size" displayType="summary" units="none" dataType="trait"
                   description="Returns the send buffer size." />
           <metric property="NumberWorkerThreads" displayName="Number of worker threads" displayType="summary" units="none" dataType="trait"
                   description="Returns the number of worker threads." />
           <metric property="Port" displayName="Port" displayType="summary" units="none" dataType="trait"
                   description="Returns the port to which the transport binds." />
           <metric property="TotalBytesRead" displayName="Number of total number of bytes read" displayType="summary" units="none" dataType="measurement"
                   description="Returns the total number of bytes read by the server from clients which includes both protocol and user information." />



       <service name="Infinispan Cache"
            discovery="CacheDiscovery"
            class="CacheComponent"
            
            
             
          >



           <operation name="CacheLoader.resetStatistics" displayName="[CacheLoader] Reset Statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Cache.stop" displayName="[Cache] Stops cache." description="Stops the cache.">
           </operation>
           <operation name="Cache.start" displayName="[Cache] Starts cache." description="Starts the cache.">
           </operation>
           <operation name="RpcManager.setStatisticsEnabled" displayName="[RpcManager] Enable/disable statistics" description="Enable/disable statistics">
              <parameters>
                 <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
              </parameters>
           </operation>
           <operation name="RpcManager.resetStatistics" displayName="[RpcManager] Reset statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="DeadlockDetectingLockManager.resetStatistics" displayName="[DeadlockDetectingLockManager] Reset statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Statistics.resetStatistics" displayName="[Statistics] Reset Statistics (Statistics)" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Passivation.resetStatistics" displayName="[Passivation] Reset statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Transactions.setStatisticsEnabled" displayName="[Transactions] Enable/disable statistics" description="Enable/disable statistics">
              <parameters>
                 <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
              </parameters>
           </operation>
           <operation name="Transactions.resetStatistics" displayName="[Transactions] Reset Statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Activation.resetStatistics" displayName="[Activation] Reset statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="DistributionManager.locateKey" displayName="[DistributionManager] Locate key" description="Locates an object in a cluster.  Only works with String keys.">
              <parameters>
                 <c:simple-property name="key" description="Key to locate"/>
              </parameters>
              <results>
                 <c:simple-property name="operationResult" />
              </results>
           </operation>
           <operation name="DistributionManager.isAffectedByRehash" displayName="[DistributionManager] Could key be affected by rehash?" description="Determines whether a given key is affected by an ongoing rehash, if any.">
              <parameters>
                 <c:simple-property name="key" description="Key to check"/>
              </parameters>
              <results>
                 <c:simple-property name="operationResult" />
              </results>
           </operation>
           <operation name="DistributionManager.isLocatedLocally" displayName="[DistributionManager] Is key local?" description="Tells you whether a given key is local to this instance of the cache.  Only works with String keys.">
              <parameters>
                 <c:simple-property name="key" description="Key to query"/>
              </parameters>
              <results>
                 <c:simple-property name="operationResult" />
              </results>
           </operation>
           <operation name="CacheStore.resetStatistics" displayName="[CacheStore] Reset statistics" description="Resets statistics gathered by this component">
           </operation>
           <operation name="Invalidation.setStatisticsEnabled" displayName="[Invalidation] Enable/disable statistics" description="Enable/disable statistics">
              <parameters>
                 <c:simple-property name="enabled" description="Whether statistics should be enabled or disabled (true/false)"/>
              </parameters>
           </operation>
           <operation name="Invalidation.resetStatistics" displayName="[Invalidation] Reset statistics" description="Resets statistics gathered by this component">
           </operation>

           <metric property="LockManager.NumberOfLocksAvailable" displayName="[LockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
                   description="The number of exclusive locks that are available." />
           <metric property="LockManager.NumberOfLocksHeld" displayName="[LockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
                   description="The number of exclusive locks that are held." />
           <metric property="LockManager.ConcurrencyLevel" displayName="[LockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
                   description="The concurrency level that the MVCC Lock Manager has been configured with." />
           <metric property="CacheLoader.CacheLoaderLoads" displayName="[CacheLoader] Number of cache store loads" displayType="detail" units="none" dataType="measurement"
                   description="Number of entries loaded from cache store" />
           <metric property="CacheLoader.CacheLoaderMisses" displayName="[CacheLoader] Number of cache store load misses" displayType="detail" units="none" dataType="measurement"
                   description="Number of entries that did not exist in cache store" />
           <metric property="Cache.CacheName" displayName="[Cache] Cache name" displayType="summary" units="none" dataType="trait"
                   description="Returns the cache name" />
           <metric property="Cache.ConfigurationAsXmlString" displayName="[Cache] Cache configuration (XML)" displayType="summary" units="none" dataType="trait"
                   description="Returns the cache configuration as XML string" />
           <metric property="Cache.CacheStatus" displayName="[Cache] Cache status" displayType="summary" units="none" dataType="trait"
                   description="Returns the cache status" />
           <metric property="RpcManager.SuccessRatioFloatingPoint" displayName="[RpcManager] Successful replication ratio" displayType="summary" units="percentage" dataType="measurement"
                   description="Successful replications as a ratio of total replications in numeric double format" />
           <metric property="RpcManager.ReplicationCount" displayName="[RpcManager] Number of successful replications" displayType="summary" units="none" dataType="measurement"
                   description="Number of successful replications" />
           <metric property="RpcManager.StatisticsEnabled" displayName="[RpcManager] Statistics enabled" displayType="detail" units="none" dataType="trait"
                   description="Statistics enabled" />
           <metric property="RpcManager.ReplicationFailures" displayName="[RpcManager] Number of failed replications" displayType="summary" units="none" dataType="measurement"
                   description="Number of failed replications" />
           <metric property="RpcManager.AverageReplicationTime" displayName="[RpcManager] Average time spent in the transport layer" displayType="summary" units="milliseconds" dataType="measurement"
                   description="The average time spent in the transport layer, in milliseconds" />
           <metric property="DeadlockDetectingLockManager.NumberOfLocksAvailable" displayName="[DeadlockDetectingLockManager] Number of locks available" displayType="detail" units="none" dataType="measurement"
                   description="The number of exclusive locks that are available." />
           <metric property="DeadlockDetectingLockManager.OverlapWithNotDeadlockAwareLockOwners" displayName="[DeadlockDetectingLockManager] Number of unsolvable deadlock situations" displayType="detail" units="none" dataType="measurement"
                   description="Number of situations when we try to determine a deadlock and the other lock owner is NOT a transaction. In this scenario we cannot run the deadlock detection mechanism" />
           <metric property="DeadlockDetectingLockManager.DetectedLocalDeadlocks" displayName="[DeadlockDetectingLockManager] Number of local transaction that were roll backed due to deadlocks" displayType="detail" units="none" dataType="measurement"
                   description="Number of local transaction that were roll backed due to deadlocks" />
           <metric property="DeadlockDetectingLockManager.LocallyInterruptedTransactions" displayName="[DeadlockDetectingLockManager] Number of interrupted local transactions" displayType="detail" units="none" dataType="measurement"
                   description="Number of locally originated transactions that were interrupted as a deadlock situation was detected" />
           <metric property="DeadlockDetectingLockManager.NumberOfLocksHeld" displayName="[DeadlockDetectingLockManager] Number of locks held" displayType="detail" units="none" dataType="measurement"
                   description="The number of exclusive locks that are held." />
           <metric property="DeadlockDetectingLockManager.ConcurrencyLevel" displayName="[DeadlockDetectingLockManager] Concurrency level" displayType="detail" units="none" dataType="trait"
                   description="The concurrency level that the MVCC Lock Manager has been configured with." />
           <metric property="DeadlockDetectingLockManager.TotalNumberOfDetectedDeadlocks" displayName="[DeadlockDetectingLockManager] Number of total detected deadlocks" displayType="detail" units="none" dataType="measurement"
                   description="Total number of local detected deadlocks" />
           <metric property="DeadlockDetectingLockManager.DetectedRemoteDeadlocks" displayName="[DeadlockDetectingLockManager] Number of remote transaction that were roll backed due to deadlocks" displayType="detail" units="none" dataType="measurement"
                   description="Number of remote transaction that were roll backed due to deadlocks" />
           <metric property="Statistics.AverageReadTime" displayName="[Statistics] Average read time" displayType="summary" units="milliseconds" dataType="measurement"
                   description="Average number of milliseconds for a read operation on the cache" />
           <metric property="Statistics.HitRatio" displayName="[Statistics] Hit ratio" displayType="summary" units="percentage" dataType="measurement"
                   description="Percentage hit/(hit+miss) ratio for the cache" />
           <metric property="Statistics.ElapsedTime" displayName="[Statistics] Seconds since cache started" displayType="summary" units="seconds" dataType="measurement"
                   description="Number of seconds since cache started" />
           <metric property="Statistics.ReadWriteRatio" displayName="[Statistics] Read/write ratio" displayType="summary" units="percentage" dataType="measurement"
                   description="read/writes ratio for the cache" />
           <metric property="Statistics.AverageWriteTime" displayName="[Statistics] Average write time" displayType="summary" units="milliseconds" dataType="measurement"
                   description="Average number of milliseconds for a write operation in the cache" />
           <metric property="Statistics.Hits" displayName="[Statistics] Number of cache hits" displayType="summary" units="none" dataType="measurement"
                   description="Number of cache attribute hits" />
           <metric property="Statistics.Evictions" displayName="[Statistics] Number of cache evictions" displayType="summary" units="none" dataType="measurement"
                   description="Number of cache eviction operations" />
           <metric property="Statistics.RemoveMisses" displayName="[Statistics] Number of cache removal misses" displayType="summary" units="none" dataType="measurement"
                   description="Number of cache removals where keys were not found" />
           <metric property="Statistics.TimeSinceReset" displayName="[Statistics] Seconds since cache statistics were reset" displayType="summary" units="seconds" dataType="measurement"
                   description="Number of seconds since the cache statistics were last reset" />
           <metric property="Statistics.NumberOfEntries" displayName="[Statistics] Number of current cache entries" displayType="summary" units="none" dataType="measurement"
                   description="Number of entries currently in the cache" />
           <metric property="Statistics.Stores" displayName="[Statistics] Number of cache puts" displayType="summary" units="none" dataType="measurement"
                   description="number of cache attribute put operations" />
           <metric property="Statistics.RemoveHits" displayName="[Statistics] Number of cache removal hits" displayType="summary" units="none" dataType="measurement"
                   description="Number of cache removal hits" />
           <metric property="Statistics.Misses" displayName="[Statistics] Number of cache misses" displayType="summary" units="none" dataType="measurement"
                   description="Number of cache attribute misses" />
           <metric property="Passivation.Passivations" displayName="[Passivation] Number of cache passivations" displayType="detail" units="none" dataType="measurement"
                   description="Number of passivation events" />
           <metric property="Transactions.Commits" displayName="[Transactions] Commits" displayType="summary" units="none" dataType="measurement"
                   description="Number of transaction commits performed since last reset" />
           <metric property="Transactions.StatisticsEnabled" displayName="[Transactions] Statistics enabled" displayType="detail" units="none" dataType="trait"
                   description="Statistics enabled" />
           <metric property="Transactions.Prepares" displayName="[Transactions] Prepares" displayType="summary" units="none" dataType="measurement"
                   description="Number of transaction prepares performed since last reset" />
           <metric property="Transactions.Rollbacks" displayName="[Transactions] Rollbacks" displayType="summary" units="none" dataType="measurement"
                   description="Number of transaction rollbacks performed since last reset" />
           <metric property="Activation.CacheLoaderLoads" displayName="[Activation] Number of cache store loads" displayType="detail" units="none" dataType="measurement"
                   description="Number of entries loaded from cache store" />
           <metric property="Activation.CacheLoaderMisses" displayName="[Activation] Number of cache store load misses" displayType="detail" units="none" dataType="measurement"
                   description="Number of entries that did not exist in cache store" />
           <metric property="Activation.Activations" displayName="[Activation] Number of cache entries activated" displayType="detail" units="none" dataType="measurement"
                   description="Number of activation events" />
           <metric property="CacheStore.CacheLoaderStores" displayName="[CacheStore] Number of cache stores" displayType="detail" units="none" dataType="measurement"
                   description="number of cache loader stores" />
           <metric property="Invalidation.StatisticsEnabled" displayName="[Invalidation] Statistics enabled" displayType="detail" units="none" dataType="trait"
                   description="Statistics enabled" />
           <metric property="Invalidation.Invalidations" displayName="[Invalidation] Number of invalidations" displayType="detail" units="none" dataType="measurement"
                   description="Number of invalidations" />


       </service>
   </service>

</plugin>