Skip to content
Snippets Groups Projects
Select Git revision
  • dev
  • main default protected
  • pck_cnt
  • upgrade_yocto
4 results

fofb-yocto

  • Clone with SSH
  • Clone with HTTPS
  • Table of content

    Tango TimeSeries (TTS) API

    A Java API to managed insert/select of Tango timeseries data with Timescale.

    This project contains 2 modules:

    • tango-timeseries-persistence: contains all API to interact with the timeseries database
    • tango-archiver-pool config: manages the configuration of the archiving Tango devices.

    tango-timeseries-persistence

    Contains 3 services: Tango data insertion, Tango data fetching and configuration

    Tango data insertion

    The first one is to insert Tango attributes (class fr.soleil.tango.archiving.services.TangoArchivingInserterService). Sample code to register an attribute and insert a value:

      // build database connection
    DatabaseConnectionConfig config = new DatabaseConnectionConfig(); 
      config.
    
    setName("tts");
      config.
    
    setHost("test-postgres-01");
      config.
    
    setDbType(DatabaseConnectionConfig.DataBaseType.POSTGRESQL);
      config.
    
    setName("tts");
      config.
    
    setUser("tts");
      config.
    
    setPassword("tts");
      config.
    
    setPort("5432");
      config.
    
    setConnectionTimeout(10000);
      config.
    
    setIdleTimeout(10000);
      config.
    
    setMaxPoolSize(90);
    
    // start an new attribute in periodic mode
    final TangoArchivingInserterService insertService = new TangoArchivingServicesBuilder().buildInserter(config);
    InsertionModes insertionModes = new InsertionModes();
      insertionModes.
    
    setPeriodic(true);
      insertionModes.
    
    setPeriodPeriodic(124);
      insertService.
    
    registerAttribute("archiving/source/tangotest.1/double_scalar",insertionModes, "archiving/archiver/1",0);
    
    // insert a value
    AttributeEvent event = new AttributeEvent();
      event.
    
    setDataTime(Timestamp.from(Instant.now()));
            event.
    
    setQuality(1);
      event.
    
    setFullName("archiving/source/tangotest.1/double_scalar");
      event.
    
    setValueR(1);
      event.
    
    setValueR(2);
      insertService.
    
    insertAttribute(event, AttrDataFormat.SCALAR, false);

    Tango data Fetching

    The second service is to fetch data from the database (class fr.soleil.tango.archiving.services.TangoArchivingFetcherService). Here is a sample code:

      TangoArchivingFetcherService fetcherService = new TangoArchivingServicesBuilder().buildFetcher(config);
    // get last inserted value
    AttributeValue value = fetcherService.getLast("archiving/source/tangotest.1/double_scalar", false);
    // get all values since a timestamp
    AttributeValueSeries values = fetcherService.getSince("archiving/source/tangotest.1/double_scalar", Timestamp.valueOf(LocalDateTime.now().minusDays(30)), false);

    Archiving configuration

    The third service is for managing archiving configuration (class fr.soleil.tango.archiving.services.TangoArchivingConfigService). Here is a sample code:

      TangoArchivingConfigService configService = new TangoArchivingServicesBuilder().buildConfigFetcher(config);
    final Map<InsertionModes, InsertionStatus> started = configService.getStartedAttributes();
    final Optional<AttributeConfig> attributeConfig = configService.getAttributeConfig(123);

    tango-archiver-pool config

    This module is to manage the configuration of the archiving (start or stop attributes) through Tango devices (called archiver)

       DatabaseConnectionConfig config = new DatabaseConnectionConfig();
       config.
    
    setName("tts");
       config.
    
    setHost("postgres-01");
       config.
    
    setUser("tts");
       config.
    
    setPassword("tts");
       config.
    
    setDbType(DatabaseConnectionConfig.DataBaseType.POSTGRESQL);
    
    TangoArchiverProperties properties = new TangoArchiverProperties();
       properties.
    
    setArchiverClassName("TimeseriesArchiver");
    
    TangoArchivingSystemConfigurationService service = new TangoArchivingSystemConfigurationBuilder().build(config, properties);
       service.
    
    updateArchiversList();
    
    ArchivingConfigs archivingConfigs = new ArchivingConfigs();
    ArchivingConfig config = new ArchivingConfig();
    AttributeConfig attributeConfig = new AttributeConfig();
    InsertionModes modes = new InsertionModes();
       modes.
    
    setPeriodic(true);
       modes.
    
    setPeriodPeriodic(100);
       config.
    
    setModes(modes);
       config.
    
    setAttributeConfig(attributeConfig);
       archivingConfigs.
    
    addConfiguration(config);
    
    Map<String, ArchivingConfigs> result = service.startArchiving(archivingConfigs);

    Foreseen evolutions

    Backport existing Legacy MySQL API to this API