/* * Copyright (c) 2008-2011 EMC Corporation * All Rights Reserved */ package com.emc.storageos.volumecontroller.impl.metering.plugins.smis; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.TimeSeriesQueryResult; import com.emc.storageos.db.client.impl.DbClientImpl; import com.emc.storageos.db.client.model.Stat; import com.emc.storageos.db.client.model.StatTimeSeries; import com.emc.storageos.db.exceptions.DatabaseException; /** * DBClient used in starting its own DBService, used for testing VNX plugin */ public class Cassandraforplugin { private static final String SERVICE_BEAN = "dbsvc"; private static final Logger _logger = LoggerFactory .getLogger(Cassandraforplugin.class); public static long query(DbClient dbClient) { ExecutorService executor = Executors.newFixedThreadPool(10); CountDownLatch latch = new CountDownLatch(1); DummyQueryResult result = new DummyQueryResult(latch); DateTime dateTime = new DateTime(DateTimeZone.UTC); try { dbClient.queryTimeSeries(StatTimeSeries.class, dateTime, result, executor); } catch (DatabaseException e) { _logger.error("Exception Query" + e); } try { latch.await(60, TimeUnit.SECONDS); } catch (InterruptedException e) { _logger.error(e.getMessage(), e); } return latch.getCount(); } public static DbClient returnDBClient() throws IOException { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( "/dbutils-conf.xml"); DbClientImpl dbClient = (DbClientImpl) ctx.getBean("dbclient"); dbClient.setClusterName("StorageOS"); dbClient.setKeyspaceName("StorageOS"); dbClient.start(); return dbClient; } private static class DummyQueryResult implements TimeSeriesQueryResult<Stat> { private CountDownLatch _latch; DummyQueryResult(CountDownLatch latch) { _latch = latch; } @Override public void data(Stat data, long timeinMillis) { _logger.info("VolumeID :" + data.getResourceId()); _logger.info("Provisioned Volume :" + data.getProvisionedCapacity()); _logger.info("Read IOS :" + data.getBandwidthIn()); _logger.info("Write IOS :" + data.getBandwidthOut()); _logger.info("Allocated :" + data.getAllocatedCapacity()); _logger.info("Project :" + data.getProject()); _logger.info("VirtualPool :" + data.getVirtualPool()); _logger.info("Tenant :" + data.getTenant()); _logger.info("serviceType :" + data.getServiceType()); _latch.countDown(); } @Override public void done() { _logger.info("Querying Metrics Done"); } @Override public void error(Throwable e) { _logger.error("Error callback", e); } } }