Connect. Communicate. Collaborate PerfsonarUI plug-in tutorial Nina Jeliazkova ISTF, Bulgaria.

Slides:



Advertisements
Similar presentations
Generics, Lists, Interfaces
Advertisements

 Copyright 2005 Digital Enterprise Research Institute. All rights reserved. The WSML Editor Plugin to the Web Services Modeling Toolkit Mick.
Connect. Communicate. Collaborate Click to edit Master title style MODULE 1: perfSONAR TECHNICAL OVERVIEW.
Connect. Communicate. Collaborate WI5 – tools implementation Stephan Kraft October 2007, Sevilla.
ITEC200 – Week03 Inheritance and Class Hierarchies.
Guide to Oracle10G1 Introduction To Forms Builder Chapter 5.
Reza Gorgan Mohammadi AmirKabir University of Technology, Department of Computer Engineering & Information Technology Advanced design.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 7: Planning a DNS Strategy.
Tutorial 11: Connecting to External Data
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
Tutorial Introduction Fidelity NTSConnect is an innovative Web-based software solution designed for use by customers of Fidelity National Title Insurance.
PerfSONAR Client Construction February 11 th 2010, APAN 29 – perfSONAR Workshop Jeff Boote, Assistant Director R&D.
The SEEREN2 initiative is co-funded by the European Commission under the FP6 Research Infrastructures.
© Keren Kalif Intro to Android Development Written by Keren Kalif, Edited by Liron Blecher Contains slides from Google I/O presentation.
© 2007 IBM Corporation IBM Global Engineering Solutions IBM Blue Gene/P Blue Gene/P Navigator.
Connect. Communicate. Collaborate PerfsonarUI plug-in tutorial Nina Jeliazkova BREN, Bulgaria.
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice SISP Training Documentation Template.
Capture and Replay Often used for regression test development –Tool used to capture interactions with the system under test. –Inputs must be captured;
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
Introduction to Eclipse Plug-in Development. Who am I? Scott Kellicker Java, C++, JNI, Eclipse.
VSO Programmatic Interface Authors: Igor Suárez Solá Joe Hourclé Alisdair Davey VSO Team.
1 ® Copyright 2009 Adobe Systems Incorporated. All rights reserved. Adobe confidential. 1 Building Portlets with ColdFusion Pete Freitag Foundeo, Inc.
CS378 - Mobile Computing Intents. Allow us to use applications and components that are part of Android System – start activities – start services – deliver.
Chapter 6 Server-side Programming: Java Servlets
Connect. Communicate. Collaborate The Installation of RRD Measurement Archive (MA) Roman Łapacz, PSNC 27 th September, 2006 SEEREN2 Summer School, Heraklion.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
The Factory Patterns SE-2811 Dr. Mark L. Hornick 1.
MAKANI ANDROID APPLICATION Prepared by: Asma’ Hamayel Alaa Shaheen.
SiD Workshop October 2013, SLACDmitry Onoprienko SiD Workshop SLAC, October 2013 Dmitry Onoprienko SLAC, SCA FreeHEP based software status: Jas 3, WIRED,
VAPOR 3.0 Architecture Overview. Purpose of this document Provide understandable overview of 3.0 architecture Enable the development team to maintain.
What's New in Kinetic Calendar 2.0 Jack Boespflug Kinetic Data.
SilkTest 2008 R2 SP1: Silk4J Introduction. ConfidentialCopyright © 2008 Borland Software Corporation. 2 What is Silk4J? Silk4J enables you to create functional.
Server-side Programming The combination of –HTML –JavaScript –DOM is sometimes referred to as Dynamic HTML (DHTML) Web pages that include scripting are.
CIS 895 – MSE Project KDD-Research Entity Search Tool (KREST) Presentation 3 Eric Davis
Understanding StarTeam Enterprise Advantage Course #4124.
Greenstone Internals How to Build a Digital Library Ian H. Witten and David Bainbridge.
M1G Introduction to Programming 2 5. Completing the program.
IBM TSpaces Lab 2 Customizing tuples and fields. Summary Blocking commands Tuple Expiration Extending Tuples (The SubclassableTuple) Reading/writing user.
1 MSRBot Web Crawler Dennis Fetterly Microsoft Research Silicon Valley Lab © Microsoft Corporation.
HW#9 Clues CSCI 571 Fall, HW#9 Prototype
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
Data Design and Implementation. Definitions Atomic or primitive type A data type whose elements are single, non-decomposable data items Composite type.
Jan Hatje, DESY CSS – Control System Studio EPICS collaboration meeting CSS – Control System Studio Update EPICS collaboration meeting 2008 Shanghai.
Linux Operations and Administration
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Inheritance and Class Hierarchies Chapter 3. Chapter Objectives  To understand inheritance and how it facilitates code reuse  To understand how Java.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
PerfSONAR-PS Working Group Aaron Brown/Jason Zurawski January 21, 2008 TIP 2008 – Honolulu, HI.
Hyperion Artifact Life Cycle Management Agenda  Overview  Demo  Tips & Tricks  Takeaways  Queries.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved Address Book Application Introducing Database Programming.
1 CLASS – Simple NOAA Archive Access Portal SNAAP Eric Kihn and Rob Prentice NGDC CLASS Developers Meeting July 14th, 2008 Simple NOAA Archive Access Portal.
Connect. Communicate. Collaborate JRA1 Status Update Stephan Kraft, RRZE FAU Erlangen-Nürnberg JRA1 Montpellier Meeting, October 2006.
Copyright © 2004, Keith D Swenson, All Rights Reserved. OASIS Asynchronous Service Access Protocol (ASAP) Tutorial Overview, OASIS ASAP TC May 4, 2004.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Exploring Networked Data and Data Stores Lesson 3.
JAFER Toolkit Project Oxford University 1 JAFER Java-based high level Z39.50 toolkit Matthew Dovey; Colin Tatham; Antony Corfield; Richard Mawby Oxford.
1 Copyright © 2008, Oracle. All rights reserved. Repository Basics.
UAB Requirements for 2016 Ivan Prieto Barreiro 18/04/2016 UAB Requirements for
1 Deploying Measurement Systems in ESnet Joint Techs, Feb Joseph Metzger ESnet Engineering Group Lawrence Berkeley National Laboratory.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
Self Healing and Dynamic Construction Framework:
Software Design and Architecture
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
(Includes setup) FAQ ON DOCUMENTS (Includes setup)
Plug-In Architecture Pattern
Presentation transcript:

Connect. Communicate. Collaborate PerfsonarUI plug-in tutorial Nina Jeliazkova ISTF, Bulgaria

Connect. Communicate. Collaborate Roadmap Objective –teach developers how to create a visualisation for perfsonar web services and make it as easy as possible for them to start developing perfsonarUI plug-ins Content –introduction to the plug-ins –what can be re-used Data structures Request (generation, sending, aggregation, threads) Response processing Visualization –most important code snippets from my point of view based on the questions asked by plugin developers

Connect. Communicate. Collaborate Where to find PerfsonarUI Releases at perfSONAR wiki – Java Web start – Source code at perfSONAR SVN repository – –Javadoc Whom to contact

Connect. Communicate. Collaborate PerfsonarUI plugins PerfsonarUI plugins are jar files, found in PerfsonarUI-vX.XX/bin/ext folder. Plugins are loaded on startup: –Each jar in that folder is scanned to find a class, implementing IPerfsonarTab interface. IPerfsonarTab –All found IPerfsonarTab classes are instantiated, added to PerfsonarTabsList and sorted by their IPerfsonarTab.getOrder() property.IPerfsonarTab PerfsonarTabsListIPerfsonarTab.getOrder() –Command line parameters are set to each tab via IPerfsonarTab.setParameters(java.l ang.String[]) IPerfsonarTab.setParameters(java.l ang.String[]) –For each IPerfsonarTab a PerfsonarTaskPane is created and added as a new tab.IPerfsonarTab PerfsonarTaskPane org.perfsonar.perfsonarui.PerfsonarTab

Connect. Communicate. Collaborate The anatomy of the tab (1) A set of clickable actions on the left. Actions are created by IPerfsonarTab.getActions(). IPerfsonarTab.getActions() Set of panels ( JComponent[ ] ) displaying some details of the query or the result just below actions. Created by IPerfsonarTab.createDetailsComponent IPerfsonarTab.createDetailsComponent Status bar, which is configured as a listener to IPerfsonarTab#.getRequest IPerfsonarTab#.getRequest Main panel ( PluginMainPanel ) PluginMainPanel Created by IPerfsonarTab. IPerfsonarTab. createMainComponent()

Connect. Communicate. Collaborate The anatomy of the tab (3) org.perfsonar.perfsonarui.IPerfso narTaborg.perfsonar.perfsonarui.IPerfso narTab a placeholder for several common data structures, that are deemed sufficient to create and send a request and process the response of perfSONAR service: MAEndpointList contains the list of services (addresses and other info as in MAEndpoint, that will be used in this IPerfsonarTab. Note that each tab may support its own list of services. This is accessible via IPerfsonarTab.getEndpointList(), IPerfsonarTab.setEndpointList()MAEndpointListMAEndpointIPerfsonarTab IPerfsonarTab.getEndpointList() IPerfsonarTab.setEndpointList() IUserData holds query and response data for a single entity (e.g. an interface in MA service, pair in IPPM service). Accessible via IPerfsonarTab.getUserData(), IPerfsonarTab.setUserData()IUserData IPerfsonarTab.getUserData() IPerfsonarTab.setUserData() MetaDataList is a list of IUserData which should be normally filled in from the response of the MetadataQuery. Accessible via IPerfsonarTab.getDataList(), IPerfsonarTab.setDataList().MetaDataListIUserData IPerfsonarTab.getDataList() IPerfsonarTab.setDataList() SmartMARequest is the class that handles request creation and sending. It can also aggregate requests if configured to do so, send them in parallel or sequentially. Can handle requests that need different XML schema. The request is accessible via IPerfsonarTab.getRequest() and IPerfsonarTab.setRequest().SmartMARequest IPerfsonarTab.getRequest() IPerfsonarTab.setRequest( IUserData MetaDataList SmartMARequest MAEndpointList

Connect. Communicate. Collaborate MAEndpoint - Lesson1-1 Lessons and demo plugin code used in the presentation are available in SVN repository org.perfsonar.perfsonarui.demo.Lesson1 MAEndpoint encapsulates information about perfsonar service (address, name,schema) Currently list of addresses are read from a configuration file MA.conf The intention is to populate the same data structure with information retrieved from LS Latest configuration file used by JWS PerfsonarUI is at

Connect. Communicate. Collaborate MAEndpointList: Lesson1-2 MAEndpointList class –org.perfsonar.perfsonarui.plugins package –Encapsulates Vector –Extends Observable –Methods to read configuration file and filter services based on schema Example code in lessons: –task2() - retrieve all services listed in –task3() - retrieve all BWCTL services listed in Future development: –populate MAEndpointList from Lookup Service

Connect. Communicate. Collaborate Interface IUserData Purpose –Placeholder for query and response data necessary to communicate with Perfsonar service Package –org.perfsonar.perfsonarui.plugins Most important methods: –setEndpoint(MAEndpoint endpoint) ; –String getQuery(String name) –setQuery(String name, String value); –setResponse(String name, String value); –String getResponse(String name); Default implementation: –AbstractUserData : two hash tables – one for query values and one for response values –Advantages : generic structure, not fixed to particular schema –Disadvantages: Some concerns about type safety Lesson2-1

Connect. Communicate. Collaborate AbstractUserData package –org.perfsonar.perfsonarui Default IUserData implementation: –two hash tables – one for query values and one for response values –extends Observable –user interface classes can register as Observers and reflect its changes (e.g. UserDataPanel) Lesson2-2

Connect. Communicate. Collaborate MetadataList Package –org.perfsonar.perfsonarui.plugins Encapsulates ArrayList Extends Observable Used to: –Store information received by MetadataKeyRequest –Specify multiple entries (e.g. interfaces, IPPM pairs) for sending MetadataKeyRequest and SetupDataRequests Lesson2-3. UI for displaying MetadataList and selected item (IUserData) query and response fields

Connect. Communicate. Collaborate SMARTMARequest Package org.perfsonar.perfsonarui An implementation of IPerfsonarRequest that understands different schema versions, based on the endpoint MAEndpoint. The descendants should implement createMARequest(MAEndpoint) and create specific IPerfsonarRequest based on MAEndpoint.getSchema()IPerfsonarRequestMAEndpointcreateMARequest(MAEndpoint)IPerfsonarRequestMAEndpoint.getSchema() Send request to different MA Query aggregation Sending requests in parallel threads Lesson3-1

Connect. Communicate. Collaborate SmartMARequest Lesson 3-1 : makeRequest(IUserData uData, String messageType, IPerfsonarResponse response, boolean runInThread) MetadatakeyRequest with parameters specified by IUserData 1)Query GEANT2 RRD MA for specific IP, then query ISTF RRD MA for all available interfaces. 2)The result is available in MetadataList object

Connect. Communicate. Collaborate SmartMARequest Lesson 4-1 : Send SetupDataRequest with parameters specified by IUserData Lesson 4-1 : Send SetupDataRequest with parameters specified by MetadataList. It may consist of IUserData with different endpoints. SMARTMARequest will send separate queries.

Connect. Communicate. Collaborate The anatomy of the tab (4) IPerfsonarResponse An interface to be implemented by classes that will receive response from perfSONAR service. This is basically a PropertyChangeListener that listens for PerfsonarResponseEventIPerfsonarResponse PerfsonarResponseEvent All Known Implementing Classes: IUserData MetaDataList SmartMARequest MAEndpointList IPerfsonarResponse

Connect. Communicate. Collaborate The anatomy of the tab (5) IUserData MetaDataList SmartMARequest MAEndpointList IPerfsonarResponse

Connect. Communicate. Collaborate The anatomy of the tab (6) Search list MetaDataList is another list of IUserData. Accessible via IPerfsonarTab.getSearchList(), IPerfsonarTab.setSearchList().MetaDataListIUserData IPerfsonarTab.getSearchList()IPerfsonarTab.setSearchList() –Provides means to send queries for subset of MetadataList –Used in traceroute query Actions IPerfsonarTab.getActions() are an PSActionMap of PSUIAction descendants. You may find useful following actions:IPerfsonarTab.getActions()PSActionMapPSUIAction –PerfsonarRequestAction descendants – to send requests.PerfsonarRequestAction –SetOptionsAction displays IPerfsonarTab.createOptionsComponent(java.awt.Component) in a JTabbedPane.SetOptionsAction IPerfsonarTab.createOptionsComponent(java.awt.Component) –EndpointsAction Perfsorm some action on a list of services (e.g. select, check status).EndpointsAction –ClearAction Calls IPerfsonarTab.clear().ClearActionIPerfsonarTab.clear()

Connect. Communicate. Collaborate Demo plug-in (1) Set to true in order to query > 1 service at time Use only perfsonar 2.0 services Create IUserData instance to be used in all requests Sets the default order of IUserData entries

Connect. Communicate. Collaborate Demo plug-in (2)

Connect. Communicate. Collaborate Demo plug-in (3)

Connect. Communicate. Collaborate Demo plug-in (4) This plug-in will be the last one The main panel The class listening for time/value pairs

Connect. Communicate. Collaborate Demo plug-in (5) Chart view - PerfsonarTimeSeriesDataset Tabular view - ResponseData

Connect. Communicate. Collaborate Demo plug-in (6)

Connect. Communicate. Collaborate Demo plug-in (6)

Connect. Communicate. Collaborate The anatomy of the tab (again) IUserData MetaDataList SmartMARequest MAEndpointList IPerfsonarResponse

Connect. Communicate. Collaborate How to implement classes to handle new request types Implement interface IPerfsonarRequest or subclass AbstractMARequest Most important IPerfsonarRequest methods:

Connect. Communicate. Collaborate AbstractMARequest Default implementation of IPerfsonarRequest Sends requests synchronously or asynchronously Abstract methods, have to be implemented by descendant classes:

Connect. Communicate. Collaborate Summary Create class that implements IPerfsonarTab. The easies way is to extend PerfsonarModel.IPerfsonarTabPerfsonarModel 1.Override PerfsonarModel.createUserData() and instantiate your IUserData class within method (or use the default) 2.Override PerfsonarModel.createDataList and instantiate your MetadataList (sub)class within the method (or use the default) 3.Implement #createSmartRequest 4.Implement #getOrder 5.Create PluginMainPanel descendant that will visualize your data and make #createMainComponent return it.PluginMainPanel 6.If existing IPerfsonarRequest classes are not suitable, derive your own class from AbstractMARequest and make SmartRequest to create it when necessary.IPerfsonarRequestAbstractMARequest 7.Override actions implementations, if necessary.

Connect. Communicate. Collaborate Summary (cont) Decide whether to use current implementations of IUserData and MetadataList or derive your own. If new type of request necessary, subclass AbstractMARequest. –Define new request type new PerfsonarSchema(“MyNewType”) –The “MyNewType” string will be used in MA.conf file –Implement its createRequest() methods, generating request from information available in IUserData (single query) or MetadataList (multiple queries). –Implement processRequest() method

Connect. Communicate. Collaborate Summary (cont) Use existing implementations or implement IPerfsonarResponse Use existing classes for user interface or implement your own and implement PluginMainPanelPluginMainPanel

Connect. Communicate. Collaborate Summary (cont) Use existing implementations or implement IPerfsonarResponse Use existing classes for user interface or implement your own and implement PluginMainPanelPluginMainPanel Use classes from org.perfsonar.perfsonarui.ui.panels package for user interface or implement your own. Most data classes extends Observable and a good approach for UI is to register as Observer and reflect its changes. org.perfsonar.perfsonarui.ui.panels

Connect. Communicate. Collaborate Future developments PerfsonarUI distribution –Stable releases –Latest code Code refactoring if necessary –Generalize API for MP and MA (are there other type of services?) –Proposal: separate directory for plugins, separate plugin build files from the main one –In principle plug-ins can be developed even completely outside of the PerfsonarUI source tree, using only perfsonarui jar files. Plug-ins are supposed to work by just placing jar files into PerfsonarUI/ext directory Implement missing functionality (e.g. LS, AA) and make them available for plugins Better documentation for developers Create plug-in repository –Source code – perfsonarui SVN source tree –JAR files – again at SVN with links from WIKI (other proposals?)

Connect. Communicate. Collaborate Thank you! Questions?