Copyright (c) 2006 IBM, released under EPL version 1.0 RSE David McKnight.
-
date post
20-Dec-2015 -
Category
Documents
-
view
218 -
download
0
Transcript of Copyright (c) 2006 IBM, released under EPL version 1.0 RSE David McKnight.
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSERSE
David McKnightDavid McKnight
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
AgendaAgenda
IntroductionIntroductionRSE DemoRSE DemoArchitectureArchitecture
Service LayerService Layer Subsystem LayerSubsystem Layer UI LayerUI Layer
StructureStructure FeaturesFeatures PluginsPlugins Build SetupBuild Setup
Extending RSEExtending RSEExtension DemoExtension Demo
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
IntroductionIntroduction
Framework providing Framework providing common reusable way common reusable way accessing remote accessing remote systemssystemsPerspective with views Perspective with views that can be used for that can be used for displaying info about all displaying info about all kinds of hostskinds of hostsUsed in various IBM Used in various IBM products for accessing products for accessing different types of systemsdifferent types of systems
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE DemoRSE Demo
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
ArchitectureArchitecture
RSE has three major layersRSE has three major layers1.1. Service LayerService Layer
2.2. Subsystem LayerSubsystem Layer
3.3. UI LayerUI Layer
Services
Subsystems
UI
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Service LayerService Layer
headless, barebones API layer headless, barebones API layer used to interact with different protocols to provide remote used to interact with different protocols to provide remote servicesservicesService layer model objects are minimal and UI-Service layer model objects are minimal and UI-independentindependentexamples:examples:
File ServiceFile Servicefor listing, modifying, copying, and transferring remote file and for listing, modifying, copying, and transferring remote file and foldersfolders
Shell ServiceShell Servicefor launching remote shells and interacting with the associated IOfor launching remote shells and interacting with the associated IO
Process ServiceProcess Service for listing remote processesfor listing remote processes
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Service Layer cont.Service Layer cont.
There can be many different implementations for There can be many different implementations for a given service type depending on what host a given service type depending on what host services are availableservices are available For example, the following are possible File Service For example, the following are possible File Service
implementations:implementations:FTPFTP
DatastoreDatastore
SSHSSH
HTTPHTTP
LocalLocal
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Subsystem LayerSubsystem Layer
Subsystems integrate the services of the service Subsystems integrate the services of the service layer with connection information, model artifacts layer with connection information, model artifacts and persistenceand persistenceSubsystem layer model objects wrapper serivce Subsystem layer model objects wrapper serivce layer objects and reference higher-level RSE layer objects and reference higher-level RSE objectsobjectsEach subsystem associated with one service Each subsystem associated with one service typetype Examples:Examples:
File service subsystemFile service subsystemShell service subsystemShell service subsystemProcess service subsystemProcess service subsystem
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Subsystem FiltersSubsystem Filters
Each type of subsystem may optionally Each type of subsystem may optionally provide filter supportprovide filter support Filters are persistent objects that provide Filters are persistent objects that provide
means to query specific sets of information means to query specific sets of information from a hostfrom a host
RSE provides support for persisting and RSE provides support for persisting and managing the filtersmanaging the filters
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Subsystem ConfigurationsSubsystem Configurations
Subsystem ConfigurationsSubsystem Configurations each subsystem configuration registered each subsystem configuration registered
against one or more system typesagainst one or more system types each host connection has the subsystems each host connection has the subsystems
that were registered with it’s system typethat were registered with it’s system type
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Configuring SubsystemsConfiguring Subsystems
When more than one When more than one subsystem subsystem configuration for a configuration for a subsystem type, user subsystem type, user can switch can switch configurations as configurations as desireddesired
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
File Service Subsystem File Service Subsystem ConfigurationsConfigurations
In this example, the In this example, the current file subsystem current file subsystem configuration uses configuration uses DatastoreDatastore
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
UI LayerUI Layer
RSE view adapterRSE view adapter provides means of rendering RSE subsystems and provides means of rendering RSE subsystems and
associated artifacts in the RSE viewsassociated artifacts in the RSE views ISystemViewElementAdapterISystemViewElementAdapter
Common interface that all RSE artifacts adapt to when being Common interface that all RSE artifacts adapt to when being used in the UIused in the UI
QueriesQueries RSE view content provider gets adapter for RSE object and RSE view content provider gets adapter for RSE object and
calls adapter API to get children of that objectcalls adapter API to get children of that object Adapter typically uses Subsystem API (resolveFilterString Adapter typically uses Subsystem API (resolveFilterString
methods) to gather results of query methods) to gather results of query
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE FeaturesRSE Features
CoreCore The base service and subsystem definitions, extension points, RSE The base service and subsystem definitions, extension points, RSE
perspective, views, dialogs, widgets and various generic featuresperspective, views, dialogs, widgets and various generic featuresLocalLocal
Local service implementations and the subsystem configurations for Local service implementations and the subsystem configurations for using themusing them
DatastoreDatastore Service implementations using the Datastore communications Service implementations using the Datastore communications
framework and the subsystem configurations for using themframework and the subsystem configurations for using themFTPFTP
The FTP file service implementation and the subsystem configuration The FTP file service implementation and the subsystem configuration for itfor it
TelnetTelnet An example shell service implementation with the required subsystem An example shell service implementation with the required subsystem
configurationconfiguration
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE PluginsRSE PluginsBase PluginsBase Plugins
org.eclipse.rse.servicesorg.eclipse.rse.servicesAPIs for common services and common utilitiesAPIs for common services and common utilitiesDefines IFileService, IShellService and IProcessServiceDefines IFileService, IShellService and IProcessService
org.eclipse.rse.loggingorg.eclipse.rse.loggingused for logging in RSEused for logging in RSE
org.eclipse.rse.coreorg.eclipse.rse.corecore RSE stuffcore RSE stuff
org.eclipse.rse.uiorg.eclipse.rse.uiRSE UI and UI extensions RSE UI and UI extensions
org.eclipse.rse.subsystems.files.coreorg.eclipse.rse.subsystems.files.coreDefines the subsystem and artifacts that are used to drive the file serviceDefines the subsystem and artifacts that are used to drive the file service
org.eclipse.rse.subsystems.processes.coreorg.eclipse.rse.subsystems.processes.coreDefines the subsystem and artifacts that are used to drive the process serviceDefines the subsystem and artifacts that are used to drive the process service
org.eclipse.rse.subsystems.shells.coreorg.eclipse.rse.subsystems.shells.coreDefines the subsystem and artifacts that are used to drive the shell serviceDefines the subsystem and artifacts that are used to drive the shell service
org.eclipse.rse.files.uiorg.eclipse.rse.files.uiDefines the actions, dialogs and view adapters used to interact with remote filesDefines the actions, dialogs and view adapters used to interact with remote files
org.eclipse.rse.processes.uiorg.eclipse.rse.processes.uiDefines the actions, dialogs and view adapters used to interact with remote processesDefines the actions, dialogs and view adapters used to interact with remote processes
org.eclipse.rse.shells.uiorg.eclipse.rse.shells.uiDefines the actions, dialogs and view adapters used to interact with remote shellsDefines the actions, dialogs and view adapters used to interact with remote shells
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE Plugins - LocalRSE Plugins - Local
Local PluginsLocal Plugins org.eclipse.rse.services.localorg.eclipse.rse.services.local
Local implementation for common servicesLocal implementation for common servicesProvides: file service, shell service and process serviceProvides: file service, shell service and process service
org.eclipse.rse.connectorservice.localorg.eclipse.rse.connectorservice.localProvides means to connect to localProvides means to connect to local
org.eclipse.rse.subsystems.shells.localorg.eclipse.rse.subsystems.shells.localShell subsystem configuration that uses local shell serviceShell subsystem configuration that uses local shell service
org.eclipse.rse.subsystems.processes.localorg.eclipse.rse.subsystems.processes.localProcess subsystem configuration that uses local process Process subsystem configuration that uses local process serviceservice
org.eclipse.rse.subsystems.files.localorg.eclipse.rse.subsystems.files.localFile subsystem configuration that uses local file serviceFile subsystem configuration that uses local file service
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE Plugins - DatastoreRSE Plugins - DatastoreThese plugins constitute the Datastore communication framework, common service These plugins constitute the Datastore communication framework, common service implementations, the host extensions for those services and the subsystem implementations, the host extensions for those services and the subsystem configurations that are used to integrate Datastore services into RSEconfigurations that are used to integrate Datastore services into RSEPluginsPlugins
org.eclipse.dstore.extraorg.eclipse.dstore.extraPart of the Datastore communication frameworkPart of the Datastore communication framework
org.eclipse.dstore.coreorg.eclipse.dstore.coreDatastore communication frameworkDatastore communication framework
org.eclipse.rse.services.dstoreorg.eclipse.rse.services.dstoreCommon Datastore service implementationsCommon Datastore service implementationsprovides file service, shell service and process serviceprovides file service, shell service and process serviceProvides host miners for each serviceProvides host miners for each service
org.eclipse.rse.connectorservice.dstoreorg.eclipse.rse.connectorservice.dstoreProvides RSE integration to connecting to a remote DatastoreProvides RSE integration to connecting to a remote Datastore
org.eclipse.rse.dstore.securityorg.eclipse.rse.dstore.securityProvides SSL security integration for Datastore communicationsProvides SSL security integration for Datastore communications
org.eclipse.rse.subsystems.files.dstoreorg.eclipse.rse.subsystems.files.dstoreFile subsystem configuration for the Datastore file serviceFile subsystem configuration for the Datastore file service
org.eclipse.rse.subsystems.processes.dstoreorg.eclipse.rse.subsystems.processes.dstoreProcess subsystem configuration for the Datastore process serviceProcess subsystem configuration for the Datastore process service
org.eclipse.rse.subsystems.shells.dstoreorg.eclipse.rse.subsystems.shells.dstoreShell subsystem configuration for the Datastore shell serviceShell subsystem configuration for the Datastore shell service
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE Plugins Cont.RSE Plugins Cont.
FTP PluginsFTP Plugins org.eclipse.rse.services.files.ftporg.eclipse.rse.services.files.ftp
FTP file service implementationFTP file service implementation org.eclipse.rse.subsystems.files.ftporg.eclipse.rse.subsystems.files.ftp
File subsystem configuration for use with FTP file serviceFile subsystem configuration for use with FTP file service
Telnet PluginsTelnet Plugins org.eclipse.rse.services.shells.telnetorg.eclipse.rse.services.shells.telnet
Telnet shell service implementationTelnet shell service implementation org.eclipse.rse.subsystems.shells.telnetorg.eclipse.rse.subsystems.shells.telnet
Telnet subsystem configuration for use with Telnet shell Telnet subsystem configuration for use with Telnet shell serviceservice
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Build SetupBuild Setup
Ant BuildAnt Build org.eclipse.rse.buildorg.eclipse.rse.build
Contains scripts for extracting and building RSE Contains scripts for extracting and building RSE runtime and SDKruntime and SDK
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Extension PointsExtension PointsSystem typesSystem types
Subsystem configurations registered against system typesSubsystem configurations registered against system types i.e. Intel Linux, AIX, i5OS, etc. i.e. Intel Linux, AIX, i5OS, etc. New types can be addedNew types can be added
Subsystem ConfigurationsSubsystem Configurations Associates a subsystem, it’s service implementation and other customizations Associates a subsystem, it’s service implementation and other customizations
with connections of one or more system typeswith connections of one or more system typesPopup ExtensionsPopup Extensions
Actions can be contributed against remote RSE objects, similar to regular Eclipse Actions can be contributed against remote RSE objects, similar to regular Eclipse popup extensionspopup extensions
Persistence ProvidersPersistence Providers Method of saving and loading RSE connection informationMethod of saving and loading RSE connection information RSE DOMRSE DOM
Importers and exporters used to load and saveImporters and exporters used to load and save
RSE APIsRSE APIs System RegistrySystem Registry
Manage and create profiles, connections, etc.Manage and create profiles, connections, etc.
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Extension DemoExtension Demo
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
Example of Extending RSEExample of Extending RSE
Vendor needs to provide custom access to system Vendor needs to provide custom access to system ABCABC
Hosts of type ABC have services for FTP, telnet and the XYZ Hosts of type ABC have services for FTP, telnet and the XYZ serviceservice
Steps the vendor takes:Steps the vendor takes:1.1. The ABC system type is contributedThe ABC system type is contributed2.2. The FTP file service subsystem configuration and telnet shell The FTP file service subsystem configuration and telnet shell
service subsystem configurations are contributed to system service subsystem configurations are contributed to system type ABCtype ABC
3.3. Contribute XYZ functionalityContribute XYZ functionality1.1. XYZ service API defined along with XYZ service subsystemXYZ service API defined along with XYZ service subsystem2.2. XYZ service implemented using appropriate protocolXYZ service implemented using appropriate protocol3.3. XYZ service subsystem configuration setup to use XYZ service XYZ service subsystem configuration setup to use XYZ service
implementation and registered with ABC system typeimplementation and registered with ABC system type
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
FTP Extension ExampleFTP Extension Example
Implemented IFileService using FTPClient class Implemented IFileService using FTPClient class provided in JDKprovided in JDK FTPHostFile used as IHostFile model in service layerFTPHostFile used as IHostFile model in service layer
Implemented FTP File Subsystem Configuration Implemented FTP File Subsystem Configuration to provide FTP service setup for the to provide FTP service setup for the FileServiceSubsystemFileServiceSubsystem Implemented FTP connector service to initialize FTP Implemented FTP connector service to initialize FTP
connection in FTPFileService from the subsystemconnection in FTPFileService from the subsystem
Implemented host file adapter to wrapper Implemented host file adapter to wrapper FTPHostFile objects with FTPRemoteFile FTPHostFile objects with FTPRemoteFile objectsobjects
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
AppendixAppendix
Additional slides hereAdditional slides here
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
RSE PerspectiveRSE Perspective
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
TerminologyTerminologySystem TypeSystem Type
Distinguishes different types of hostsDistinguishes different types of hostsHostHost
A persistent object representing the host a user connects toA persistent object representing the host a user connects toConnector ServiceConnector Service
The means by which one or more subsystems connect to a hostThe means by which one or more subsystems connect to a hostSubsystemSubsystem
provides the means to do operations on the hostprovides the means to do operations on the host wrappers a servicewrappers a service
Subsystem configurationSubsystem configuration A contribution of a subsystem associated with a particular service A contribution of a subsystem associated with a particular service
implementation, connector service and other customizationsimplementation, connector service and other customizationsServiceService
A simple interface to provide a set of host functionalityA simple interface to provide a set of host functionalityFilterFilter
Provides a means to zero in on a particular set of host dataProvides a means to zero in on a particular set of host data
Copyright (c) 2006 IBM, released under EPL version 1.0Copyright (c) 2006 IBM, released under EPL version 1.0
File Service APIFile Service APIIFileServiceIFileService
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.0Copyright (c) 2006 IBM, released under EPL version 1.0
Shell Service APIShell Service API
IShellServiceIShellService 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.0Copyright (c) 2006 IBM, released under EPL version 1.0
Process Service APIProcess Service API
IProcesServiceIProcesService 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)