INFSO-RI-508833 Enabling Grids for E-sciencE www.eu-egee.org gLite C++ Configurator Practical experience gLite Configuration Meeting, March 1, 2005 Peter.

Slides:



Advertisements
Similar presentations
Programs in Memory Bryce Boe 2012/08/29 CS32, Summer 2012 B.
Advertisements

pa 1 Porting BETA to ROTOR ROTOR Projects Presentation Day, June by Peter Andersen.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13 Introduction to SQL Programming Techniques.
GridScape Ding Choon Hoong Grid Computing and Distributed Systems (GRIDS) Lab. The University of Melbourne Melbourne, Australia WW Grid.
Performed by:Gidi Getter Svetlana Klinovsky Supervised by:Viktor Kulikov 08/03/2009.
Processes CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
AUTOBUILD Build and Deployment Automation Solution.
ANSTO E-Science workshop Romain Quilici University of Sydney CIMA CIMA Instrument Remote Control Instrument Remote Control Integration with GridSphere.
CS212: Object Oriented Analysis and Design Lecture 6: Friends, Constructor and destructors.
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Information System on gLite middleware Vincent.
Advanced BioPSE NCRR Dynamic Compilation Joint Session #1: Advanced BioPSE/SCIRun.
Component frameworks Roy Kensmil. Historical trens in software development. ABSTRACT INTERACTIONS COMPONENT BUS COMPONENT GLUE THIRD-PARTY BINDING.
Templates An introduction. Simple Template Functions template T max(T x, T y) { if (x > y) { return x; } else { return y; } } int main(void) { int x =
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
Software Engineering Design Patterns. Singleton Single instance of class Constructor is private static final Class instance constructed when application.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
Java Server Pages An introduction to JSP. Containers and Components Several clients – one system.
Gaudi Framework Tutorial, April Job Options and Printing.
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Usage of virtualization in gLite certification Andreas Unterkircher.
Enterprise Library Extensibility Brian Button VP of Engineering Asynchrony Solutions, Inc.
Legion - A Grid OS. Object Model Everything is object Core objects - processing resource– host object - stable storage - vault object - definition of.
INFSO-RI Enabling Grids for E-sciencE gLite Data Management and Interoperability Peter Kunszt (JRA1 DM Cluster) 2 nd EGEE Conference,
Intro to Applets. Applet Applets run within the Web browser environment Applets bring dynamic interaction and live animation to an otherwise static HTML.
The Process Manager in the ATLAS DAQ System G. Avolio, M. Dobson, G. Lehmann Miotto, M. Wiesmann (CERN)
Processes CS 6560: Operating Systems Design. 2 Von Neuman Model Both text (program) and data reside in memory Execution cycle Fetch instruction Decode.
INFSO-RI Enabling Grids for E-sciencE Scenarios for Integrating Data and Job Scheduling Peter Kunszt On behalf of the JRA1-DM Cluster,
1 LHCb File Transfer framework N. Brook, Ph. Charpentier, A.Tsaregorodtsev LCG Storage Management Workshop, 6 April 2005, CERN.
Developing Applications with the CSI Framework A General Guide.
GLOBAL EDGE SOFTWERE LTD1 R EMOTE F ILE S HARING - Ardhanareesh Aradhyamath.
Server-Side C++ Mapping Copyright © ZeroC, Inc. Ice Programming with C++ 6. Server-Side C++ Mapping.
INFSO-RI Enabling Grids for E-sciencE User Interface (UI) Installation Giuseppe La Rocca INFN Catania - Italy First Latin American.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 – The Ganga Evolution Andrew Maier.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Using GStat 2.0 for Information Validation.
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Tools and techniques for managing virtual machine images Andreas.
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
Chapter 2. System Structures
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
INFSO-RI Enabling Grids for E-sciencE /10/20054th EGEE Conference - Pisa1 gLite Configuration and Deployment Models JRA1 Integration.
INFSO-RI Enabling Grids for E-sciencE Grid Services for Resource Reservation and Allocation Tiziana Ferrari Istituto Nazionale di.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Computational chemistry with ECCE on EGEE.
Hyperion Artifact Life Cycle Management Agenda  Overview  Demo  Tips & Tricks  Takeaways  Queries.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Programming with the DRMAA OGF Standard.
CINT & Reflex – The Future CINT’s Future Layout Reflex API Work In Progress: Use Reflex to store dictionary data Smaller memory footprint First step to.
Singleton Pattern. Problem Want to ensure a single instance of a class, shared by all uses throughout a program Context Need to address initialization.
What is a Process ? A program in execution.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
Design Patterns. Outline Purpose Purpose Useful Definitions Useful Definitions Pattern Overview Pattern Overview.
THE EYESWEB PLATFORM - GDE The EyesWeb XMI multimodal platform GDE 5 March 2015.
1 Xrootd-SRM Andy Hanushevsky, SLAC Alex Romosan, LBNL August, 2006.
EGEE-III INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Regional Nagios Emir Imamagic /SRCE EGEE’09,
I/O Software CS 537 – Introduction to Operating Systems.
INFSO-RI Enabling Grids for E-sciencE gLite Test and Certification Effort Nick Thackray CERN.
EGEE is a project funded by the European Union under contract IST Installation and configuration of gLite services Robert Harakaly, CERN,
EGEE is a project funded by the European Union under contract IST Data Management Data Access From WN Paolo Badino Ricardo.
9 Associators How to relate objects to each other Create relations Save relations Use relations: Associators.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
INFSO-RI Enabling Grids for E-sciencE File Transfer Software and Service SC3 Gavin McCance – JRA1 Data Management Cluster Service.
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe.
Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN.
INFSO-RI Enabling Grids for E-sciencE GUMS vs. LCMAPS Oscar Koeroo.
Enabling Grids for E-sciencE Claudio Cherubino INFN DGAS (Distributed Grid Accounting System)
C++ Lesson 1.
More Sophisticated Behavior
CCNA 2 v3 JEOPARDY Module 2 CCNA2 v3 Module 2 K. Martin.
Configuration for gLite
Page Replacement.
System calls….. C-program->POSIX call
Overview Before You Start Structure of a Module Ports and Datatypes
Presentation transcript:

INFSO-RI Enabling Grids for E-sciencE gLite C++ Configurator Practical experience gLite Configuration Meeting, March 1, 2005 Peter Kunszt on behalf of the JRA1-DM Cluster

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Contents An Example Improvements Food for Thought

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, An Example (Developer’s View) Configuration is stored in an XML file Each service component has its own block of config data in this file Each service to be configured needs to implement a C++ ComponentConfigurator class by extending glite::config::ComponentConfigurator The configuration values are always strings The configuration names are arbitrary but should be descriptive

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, An Example cont. Example: Transfer CLI configuration as it is today. Basic methods (from TransferConfig.h): class TransferConfig: public glite::config::ComponentConfiguration { static const char * NAME; // the component name virtual int init(const Params& params); // initialize (only this is used) virtual int config(const Params& params); // configure (just return 0) virtual int start(); // start “ virtual int stop(); // stop “ virtual int fini(); // finalize “ static TransferConfig * instance(); // get singleton static void finalize(); // finalize singleton Params is defined as: typedef std::map Params; where Param basically is the configuration parameter name (it has a single getName() method of relevance) THIS IS AN EXAMPLE

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Example cont’d Methods returning configuration properties: const char * getEndpoint() const { return m_endpoint.c_str();} const char * getSURLprefix() const { return m_surl_prefix.c_str();} const char * getSrmEndpoint() const { return m_srmEndpoint.c_str();} const char * getSURLpattern() const { return m_surl_pattern.c_str();} Private fields: static TransferConfig * s_instance; std::string m_endpoint; std::string m_srmEndpoint; std::string m_surl_prefix; std::string m_surl_pattern;

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Example Implementation cont’d Constants const char * GLITE_TRANSFER_CLI_NAME = "transfer-cli"; const char * ENDPOINT_PROPERTY_NAME = "FPSendpoint"; const char * SRM_ENDPOINT_PROPERTY_NAME = "SRMendpoint"; const char * SURL_PREFIX_PROPERTY_NAME = "SURLprefix"; const char * SURL_PATTERN_PROPERTY_NAME = "SURLpattern"; const char * TransferConfig::NAME = GLITE_TRANSFER_CLI_NAME; Each Configuration Component class needs to have a creation and destruction method: extern "C" { ComponentConfiguration * create_glite_component(){ return TransferConfig::instance(); } void destroy_glite_component(ComponentConfiguration * component){ TransferConfig::finalize(); } } // End extern "C" The singleton implementation is trivial TransferConfig* TransferConfig::s_instance = 0; TransferConfig* TransferConfig::instance(){ if(0 == s_instance){ s_instance = new TransferConfig(); } return s_instance; } void TransferConfig::finalize(){ if(0 != s_instance){ delete s_instance; } }

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Example Implementation Creation and Initialization TransferConfig::TransferConfig():ComponentConfiguration(NAME); int TransferConfig::init(const Params& params){ Params::const_iterator it; // Get Endpoint if((it = params.find(ENDPOINT_PROPERTY_NAME)) != params.end()){ ParamValue * pv = dynamic_cast ((*it).second); if(0 == pv){ return -1; } // ERROR m_endpoint = pv->getValue(); } else { return -1; } // ERROR - Mandatory if((it = params.find(SRM_ENDPOINT_PROPERTY_NAME)) != params.end()){ ParamValue * pv = dynamic_cast ((*it).second); if(0 == pv){ return -1; } // ERROR m_srmEndpoint = pv->getValue(); } else { return -1; } // ERROR - Mandatory if((it = params.find(SURL_PREFIX_PROPERTY_NAME)) != params.end()){ ParamValue * pv = dynamic_cast ((*it).second); if(0 == pv){ return -1; } // ERROR m_surl_prefix = pv->getValue(); } else { return -1; } // ERROR - Mandatory if((it = params.find(SURL_PATTERN_PROPERTY_NAME)) != params.end()){ if(0 == pv){ return -1; } // ERROR m_surl_pattern = pv->getValue(); } else { m_surl_pattern = “default”; } // DEFAULT VALUE return 0; }

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Usage In the main code, the configuration needs to be registered and initialized: glite_config_register( TransferConfig::instance() ); glite_config_initialize( TransferConfig::NAME ); The fields can be used simply by accessing the getter methods like const char * ep = TransferConfig::instance()->getEndpoint()

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Configuration Template File The GLite Transfer Command Line Interface provides a few executables which can be used on the command line to interact with the File Placement Service and the Data Scheduler. The endpoint of the FPS service where the Glite FPS Server is running The SRM endpoint. This needs to be the SRM associated with the FPS given in the FPSendpoint parameter When generating SURLs, the endpoint of the SRM is used and this prefix may be added if necessary on some systems. There are several SURL autogeneration patterns: flat, date, day, lfn. flat

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Service Configurator –Configure Log4Cpp (Using Log4J Property File) –Load all the components dynamically (Configuration File) –Configure all the Components –Notify the Components to start/stop –Handle Reconfiguration GLite Data Service a.k.a. Daemon launcher –Spawn a daemon process –Instantiate ServiceConfigurator and call it –Handle control signals –Monitor the daemon process GLite Data glite_data_config library –C library –Instantiate and manage ServiceConfigurator –Can be used to configure libraries or application that doesn’t need to run as daemon or services Independent from GLite I/O !

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Shameless self advertisement Works very well also for dynamic library loading –There is a tag which can be set to the name of the dynamic library to be loaded –The register method need not be called in this case since the library is scanned for the create_glite_component method –For an example see glite-io This has been in use since ‘forever’ (mid-August 2004) Well tested Simple It’s working well for us Nevertheless we know how to improve it:

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Possible Improvements Right now the XML files contain ‘static’ values (you need to edit the file to reconfigure the service) – extend to info system –Parameters might be configured to be retrieved from the information services or service discovery (for example supporting a service-discovery tag in addition to the value tag) Support for extended types: list, map, struct,.. –Makes multi-VO support possible

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, Improvements: Food for Thought Sysadmin view (top-down) vs. Developer (bottom-up) Simple site configuration Simple component configuration Component Simple component configuration Component Simple component configuration Component Magic Happy Sysadmin Happy Developers

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, What is ‘Magic’? Requirements: –Sysadmins want a single point of entry controlling all static and dynamic configuration data –Developers want their modules to be usable in a standalone way which is necessary for testing and debugging without an extra heavy layer on top ‘Magic’ design needs to take into account –Bootstrapping: when the component is new and has no config yet –Local configuration caching: A config file which can be used by the system in standalone mode –Communication between the component and the sysadmin tooling for dynamic updates –Possible legacy components with ‘incompatible’ configuration

Enabling Grids for E-sciencE INFSO-RI gLite Configuration – March 1, What would we do? Just ask..