Copyright (c) 2006 IBM, released under EPL version 1.0 RSE David McKnight
Copyright (c) 2006 IBM, released under EPL version 1.0 Agenda Introduction RSE Demo Architecture Service Layer Service Layer Subsystem Layer Subsystem Layer UI Layer UI LayerStructure Features Features Plugins Plugins Build Setup Build Setup Extending RSE Extension Demo
Copyright (c) 2006 IBM, released under EPL version 1.0 Introduction Framework providing common reusable way accessing remote systems Perspective with views that can be used for displaying info about all kinds of hosts Used in various IBM products for accessing different types of systems
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Demo
Copyright (c) 2006 IBM, released under EPL version 1.0 Architecture RSE has three major layers 1. Service Layer 2. Subsystem Layer 3. UI Layer Services Subsystems UI
Copyright (c) 2006 IBM, released under EPL version 1.0 Service Layer headless, barebones API layer used to interact with different protocols to provide remote services Service layer model objects are minimal and UI- independent examples: File Service File Service for listing, modifying, copying, and transferring remote file and folders Shell Service Shell Service for launching remote shells and interacting with the associated IO Process Service Process Service for listing remote processes for listing remote processes
Copyright (c) 2006 IBM, released under EPL version 1.0 Service Layer cont. There can be many different implementations for a given service type depending on what host services are available For example, the following are possible File Service implementations: For example, the following are possible File Service implementations:FTPDatastoreSSHHTTPLocal
Copyright (c) 2006 IBM, released under EPL version 1.0 Subsystem Layer Subsystems integrate the services of the service layer with connection information, model artifacts and persistence Subsystem layer model objects wrapper serivce layer objects and reference higher-level RSE objects Each subsystem associated with one service type Examples: Examples: File service subsystem Shell service subsystem Process service subsystem
Copyright (c) 2006 IBM, released under EPL version 1.0 Subsystem Filters Each type of subsystem may optionally provide filter support Filters are persistent objects that provide means to query specific sets of information from a host Filters are persistent objects that provide means to query specific sets of information from a host RSE provides support for persisting and managing the filters RSE provides support for persisting and managing the filters
Copyright (c) 2006 IBM, released under EPL version 1.0 Subsystem Configurations each subsystem configuration registered against one or more system types each subsystem configuration registered against one or more system types each host connection has the subsystems that were registered with its system type each host connection has the subsystems that were registered with its system type
Copyright (c) 2006 IBM, released under EPL version 1.0 Configuring Subsystems When more than one subsystem configuration for a subsystem type, user can switch configurations as desired
Copyright (c) 2006 IBM, released under EPL version 1.0 File Service Subsystem Configurations In this example, the current file subsystem configuration uses Datastore
Copyright (c) 2006 IBM, released under EPL version 1.0 UI Layer RSE view adapter provides means of rendering RSE subsystems and associated artifacts in the RSE views provides means of rendering RSE subsystems and associated artifacts in the RSE views ISystemViewElementAdapter ISystemViewElementAdapter Common interface that all RSE artifacts adapt to when being used in the UI Queries RSE view content provider gets adapter for RSE object and calls adapter API to get children of that object RSE view content provider gets adapter for RSE object and calls adapter API to get children of that object Adapter typically uses Subsystem API (resolveFilterString methods) to gather results of query Adapter typically uses Subsystem API (resolveFilterString methods) to gather results of query
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Features Core The base service and subsystem definitions, extension points, RSE perspective, views, dialogs, widgets and various generic features The base service and subsystem definitions, extension points, RSE perspective, views, dialogs, widgets and various generic featuresLocal Local service implementations and the subsystem configurations for using them Local service implementations and the subsystem configurations for using themDatastore Service implementations using the Datastore communications framework and the subsystem configurations for using them Service implementations using the Datastore communications framework and the subsystem configurations for using themFTP The FTP file service implementation and the subsystem configuration for it The FTP file service implementation and the subsystem configuration for itTelnet An example shell service implementation with the required subsystem configuration An example shell service implementation with the required subsystem configuration
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Plugins Base Plugins org.eclipse.rse.services org.eclipse.rse.services APIs for common services and common utilities Defines IFileService, IShellService and IProcessService org.eclipse.rse.logging org.eclipse.rse.logging used for logging in RSE org.eclipse.rse.core org.eclipse.rse.core core RSE stuff org.eclipse.rse.ui org.eclipse.rse.ui RSE UI and UI extensions org.eclipse.rse.subsystems.files.core org.eclipse.rse.subsystems.files.core Defines the subsystem and artifacts that are used to drive the file service org.eclipse.rse.subsystems.processes.core org.eclipse.rse.subsystems.processes.core Defines the subsystem and artifacts that are used to drive the process service org.eclipse.rse.subsystems.shells.core org.eclipse.rse.subsystems.shells.core Defines the subsystem and artifacts that are used to drive the shell service org.eclipse.rse.files.ui org.eclipse.rse.files.ui Defines the actions, dialogs and view adapters used to interact with remote files org.eclipse.rse.processes.ui org.eclipse.rse.processes.ui Defines the actions, dialogs and view adapters used to interact with remote processes org.eclipse.rse.shells.ui org.eclipse.rse.shells.ui Defines the actions, dialogs and view adapters used to interact with remote shells
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Plugins - Local Local Plugins org.eclipse.rse.services.local org.eclipse.rse.services.local Local implementation for common services Provides: file service, shell service and process service org.eclipse.rse.connectorservice.local org.eclipse.rse.connectorservice.local Provides means to connect to local org.eclipse.rse.subsystems.shells.local org.eclipse.rse.subsystems.shells.local Shell subsystem configuration that uses local shell service org.eclipse.rse.subsystems.processes.local org.eclipse.rse.subsystems.processes.local Process subsystem configuration that uses local process service org.eclipse.rse.subsystems.files.local org.eclipse.rse.subsystems.files.local File subsystem configuration that uses local file service
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Plugins - Datastore These plugins constitute the Datastore communication framework, common service implementations, the host extensions for those services and the subsystem configurations that are used to integrate Datastore services into RSE Plugins org.eclipse.dstore.extra org.eclipse.dstore.extra Part of the Datastore communication framework org.eclipse.dstore.core org.eclipse.dstore.core Datastore communication framework org.eclipse.rse.services.dstore org.eclipse.rse.services.dstore Common Datastore service implementations provides file service, shell service and process service Provides host miners for each service org.eclipse.rse.connectorservice.dstore org.eclipse.rse.connectorservice.dstore Provides RSE integration to connecting to a remote Datastore org.eclipse.rse.dstore.security org.eclipse.rse.dstore.security Provides SSL security integration for Datastore communications org.eclipse.rse.subsystems.files.dstore org.eclipse.rse.subsystems.files.dstore File subsystem configuration for the Datastore file service org.eclipse.rse.subsystems.processes.dstore org.eclipse.rse.subsystems.processes.dstore Process subsystem configuration for the Datastore process service org.eclipse.rse.subsystems.shells.dstore org.eclipse.rse.subsystems.shells.dstore Shell subsystem configuration for the Datastore shell service
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Plugins Cont. FTP Plugins org.eclipse.rse.services.files.ftp org.eclipse.rse.services.files.ftp FTP file service implementation org.eclipse.rse.subsystems.files.ftp org.eclipse.rse.subsystems.files.ftp File subsystem configuration for use with FTP file service Telnet Plugins org.eclipse.rse.services.shells.telnet org.eclipse.rse.services.shells.telnet Telnet shell service implementation org.eclipse.rse.subsystems.shells.telnet org.eclipse.rse.subsystems.shells.telnet Telnet subsystem configuration for use with Telnet shell service
Copyright (c) 2006 IBM, released under EPL version 1.0 Build Setup Ant Build org.eclipse.rse.build org.eclipse.rse.build Contains scripts for extracting and building RSE runtime and SDK
Copyright (c) 2006 IBM, released under EPL version 1.0 Extension Points System types Subsystem configurations registered against system types Subsystem configurations registered against system types i.e. Intel Linux, AIX, i5OS, etc. i.e. Intel Linux, AIX, i5OS, etc. New types can be added New types can be added Subsystem Configurations Associates a subsystem, its service implementation and other customizations with connections of one or more system types Associates a subsystem, its service implementation and other customizations with connections of one or more system types Popup Extensions Actions can be contributed against remote RSE objects, similar to regular Eclipse popup extensions Actions can be contributed against remote RSE objects, similar to regular Eclipse popup extensions Persistence Providers Method of saving and loading RSE connection information Method of saving and loading RSE connection information RSE DOM RSE DOM Importers and exporters used to load and save RSE APIs System Registry System Registry Manage and create profiles, connections, etc.
Copyright (c) 2006 IBM, released under EPL version 1.0 Extension Demo
Copyright (c) 2006 IBM, released under EPL version 1.0 Example of Extending RSE Vendor needs to provide custom access to system ABC Hosts of type ABC have services for FTP, telnet and the XYZ service Hosts of type ABC have services for FTP, telnet and the XYZ service Steps the vendor takes: 1. The ABC system type is contributed 2. The FTP file service subsystem configuration and telnet shell service subsystem configurations are contributed to system type ABC 3. Contribute XYZ functionality 1. XYZ service API defined along with XYZ service subsystem 2. XYZ service implemented using appropriate protocol 3. XYZ service subsystem configuration setup to use XYZ service implementation and registered with ABC system type
Copyright (c) 2006 IBM, released under EPL version 1.0 FTP Extension Example Implemented IFileService using FTPClient class provided in JDK FTPHostFile used as IHostFile model in service layer FTPHostFile used as IHostFile model in service layer Implemented FTP File Subsystem Configuration to provide FTP service setup for the FileServiceSubsystem Implemented FTP connector service to initialize FTP connection in FTPFileService from the subsystem Implemented FTP connector service to initialize FTP connection in FTPFileService from the subsystem Implemented host file adapter to wrapper FTPHostFile objects with FTPRemoteFile objects
Copyright (c) 2006 IBM, released under EPL version 1.0 Appendix Additional slides here
Copyright (c) 2006 IBM, released under EPL version 1.0 RSE Perspective
Copyright (c) 2006 IBM, released under EPL version 1.0 Terminology System Type Distinguishes different types of hosts Distinguishes different types of hostsHost A persistent object representing the host a user connects to A persistent object representing the host a user connects to Connector Service The means by which one or more subsystems connect to a host The means by which one or more subsystems connect to a hostSubsystem provides the means to do operations on the host provides the means to do operations on the host wrappers a service wrappers a service Subsystem configuration A contribution of a subsystem associated with a particular service implementation, connector service and other customizations A contribution of a subsystem associated with a particular service implementation, connector service and other customizationsService A simple interface to provide a set of host functionality A simple interface to provide a set of host functionalityFilter Provides a means to zero in on a particular set of host data Provides a means to zero in on a particular set of host data
Copyright (c) 2006 IBM, released under EPL version 1.0 File Service API IFileService copy(IProgressMonitor, String, String, String, String) copy(IProgressMonitor, String, String, String, String) copyBatch(IProgressMonitor, String[], String[], String) copyBatch(IProgressMonitor, String[], String[], String) createFile(IProgressMonitor, String, String) createFile(IProgressMonitor, String, String) createFolder(IProgressMonitor, String, String) createFolder(IProgressMonitor, String, String) delete(IProgressMonitor, String, String) delete(IProgressMonitor, String, String) download(IProgressMonitor, String, String, File, boolean, String) download(IProgressMonitor, String, String, File, boolean, String) getFile(IProgressMonitor, String, String) getFile(IProgressMonitor, String, String) getFiles(IProgressMonitor, String, String) getFiles(IProgressMonitor, String, String) getFilesAndFolders(IProgressMonitor, String, String) getFilesAndFolders(IProgressMonitor, String, String) getFolders(IProgressMonitor, String, String) getFolders(IProgressMonitor, String, String) getRoots(IProgressMonitor) getRoots(IProgressMonitor) getUserHome() getUserHome() isCaseSensitive() isCaseSensitive() move(IProgressMonitor, String, String, String, String) move(IProgressMonitor, String, String, String, String) rename(IProgressMonitor, String, String, String) rename(IProgressMonitor, String, String, String) rename(IProgressMonitor, String, String, String, IHostFile) rename(IProgressMonitor, String, String, String, IHostFile) upload(IProgressMonitor, File, String, String, boolean, String, String) upload(IProgressMonitor, File, String, String, boolean, String, String) upload(IProgressMonitor, InputStream, String, String, boolean, String) upload(IProgressMonitor, InputStream, String, String, boolean, String)
Copyright (c) 2006 IBM, released under EPL version 1.0 Shell Service API IShellService getHostEnvironment() getHostEnvironment() launchShell(IProgressMonitor, String, String, String[]) launchShell(IProgressMonitor, String, String, String[]) launchShell(IProgressMonitor, String, String[]) launchShell(IProgressMonitor, String, String[]) runCommand(IProgressMonitor, String, String, String, String[]) runCommand(IProgressMonitor, String, String, String, String[]) runCommand(IProgressMonitor, String, String, String[]) runCommand(IProgressMonitor, String, String, String[])
Copyright (c) 2006 IBM, released under EPL version 1.0 Process Service API IProcesService getParentProcess(IProgressMonitor, long) getParentProcess(IProgressMonitor, long) getProcess(IProgressMonitor, long) getProcess(IProgressMonitor, long) getSignalTypes() getSignalTypes() kill(IProgressMonitor, long, String) kill(IProgressMonitor, long, String) listAllProcesses(IProgressMonitor) listAllProcesses(IProgressMonitor) listAllProcesses(IProgressMonitor, IHostProcessFilter) listAllProcesses(IProgressMonitor, IHostProcessFilter) listAllProcesses(IProgressMonitor, String, String, String) listAllProcesses(IProgressMonitor, String, String, String) listChildProcesses(IProgressMonitor, long) listChildProcesses(IProgressMonitor, long) listChildProcesses(IProgressMonitor, long, IHostProcessFilter) listChildProcesses(IProgressMonitor, long, IHostProcessFilter) listRootProcesses(IProgressMonitor) listRootProcesses(IProgressMonitor)