Copyright (c) 2006 IBM, released under EPL version 1.0 RSE David McKnight.

29
Copyright (c) 2006 IBM, released under Copyright (c) 2006 IBM, released under EPL version 1.0 EPL version 1.0 RSE RSE David McKnight 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)