![]() ![]() ![]() |
Solstice Enterprise Manager 4.1 Developing C++ Applications |
![]() |
Contents
 Preface
1.  Introduction to the Solstice EM C++ Development Environment
- 1.1 What You Can Develop in the Solstice EM C++ Development Environment
- 1.2 Solstice EM Network Management Model
- 1.3 Solstice EM Programming Model
- 1.3.1 Solstice EM Application Program Interface (API) Component
- 1.3.2 Data Component
- 1.3.3 Graphical User Interface (GUI) Component
- 1.4 Overview of the Application Development Process
- 1.4.1 Requirements Analysis and High-Level Design
- 1.4.2 Low-Level Design
- 1.4.3 Implementation
- 1.4.4 Unit Testing and Debugging
- 1.4.5 Integration
- 1.4.6 System Testing
2.  Modeling Managed Objects
- 2.1 ISO Management Model
- 2.1.1 Managers
- 2.1.2 Agents
- 2.1.3 Managed Resources
- 2.1.4 Managed Objects
- 2.1.5 Management Protocols
- 2.1.6 Manager-Agent Hierarchy
- 2.2 Designing the Object Model
- 2.2.1 Defining the Task
- 2.2.2 Identifying Managed Object Classes
- 2.2.3 Identifying Inheritance Relationships
- 2.2.4 Identifying the Characteristics of a Managed Object Class
- 2.2.5 Describing the Behavior of Items in the Object Model
- 2.2.6 Identifying Containment Relationships
- 2.2.7 Grouping Information Into Packages
- 2.2.8 Grouping GDMO Definitions Into Documents
- 2.3 Abstract Syntax Notation #1 (ASN.1)
- 2.3.1 Grouping ASN.1 Syntax Definitions Into Modules
- 2.3.2 Defining ASN.1 Types
- 2.3.3 Defining ASN.1Values
- 2.3.4 Reusing Definitions From Other ASN.1 Modules
- 2.4 Assigning Unique Identifiers
- 2.4.1 Registering an OID
- 2.4.2 Guidelines for Allocating Your Own OIDs
- 2.4.3 Notation for OIDs
- 2.5 Obtaining GDMO and ASN.1 Specifications for Objects
- 2.5.1 Existing GDMO Definitions
- 2.5.2 SNMP MIBs
- 2.6 Making Your Object Model Available to Solstice EM
- 2.6.1 Loading Your Object Model Into the MDR
- 2.6.2 Setting Agent Role Behavior of Solstice EM
3.  Enabling Applications to Access Managed Objects
- 3.1 Connecting to an MIS
- 3.1.1 Creating and Initializing an Instance of the Platform Class
- 3.1.2 Calling the connect Function of the Platform Class
- 3.2 Disconnecting From an MIS
- 3.3 Bypassing the MIS to Access Solstice EM Databases
- 3.3.1 Getting Information Required for a Database Connection
- 3.3.2 Passing Database Information to a Database Application Development Tool
- 3.3.3 Example Database Connection Program
4.  Handling Errors
- 4.1 Testing for the Success a Function Call
- 4.1.1 Using the Overloaded NOT Operator
- 4.1.2 Using the get_error_type Function
- 4.2 Providing Error Information to Users
5.  Performing Operations on Managed Objects
- 5.1 Management Operations
- 5.2 Creating a Managed Object
- 5.2.1 Creating and Initializing an Instance of Image
- 5.2.2 Activating the Instance of Image
- 5.2.3 Verifying if the Managed Object Exists
- 5.2.4 Initializing Attributes of the Managed Object
- 5.2.5 Adding the Managed Object to the MIS
- 5.2.6 Example Object Creation Function
- 5.3 Selecting a Managed Object
- 5.3.1 Selecting a Managed Object by Specifying its FDN or LDN
- 5.3.2 Selecting a Managed Object by Specifying its Nickname
- 5.4 Updating an Image Instance
- 5.5 Deleting a Managed Object
- 5.5.1 Removing the Managed Object From the MIS
- 5.5.2 Example Object Deletion Function
- 5.6 Getting Attribute Values From an Object
- 5.7 Setting Attribute Values of an Object
- 5.7.1 Setting Attribute Values in the Image Instance
- 5.7.2 Updating the MIS With the Changed Values
- 5.7.3 Checking If the MIS Has Been Updated
- 5.7.4 Real and Imaginary Values in an Image Instance
- 5.7.5 Example
- 5.8 Performing an Action on an Object
- 5.9 Tracking Changes to an Object
- 5.9.1 Automatically Tracking Changes to an Object
- 5.9.2 Manually Tracking Changes to an Object
- 5.10 Retrieving Data From the Metadata Repository
- 5.10.1 Selecting the MDR Managed Object
- 5.10.2 Updating the Image Instance That Represents the MDR Managed Object
- 5.10.3 Sending the Action Request
- 5.11 Simulating an Agent Object
- 5.11.1 Containing Managed Objects in the Solstice EM MIS
- 5.11.2 Making Read-Only Attributes Modifiable
- 5.11.3 Loading GDMO Descriptions Into the MIS
- 5.11.4 Creating and Modifying Objects in the MIS
- 5.12 Representing MIS Instances Locally in an Application
6.  Performing Management Operations on Object Collections
- 6.1 Grouping Managed Objects
- 6.2 Creating a Container for an Object Collection
- 6.3 Defining the Membership of an Object Collection
- 6.3.1 Defining the Membership by Derivation
- 6.3.2 Format of a Derivation String
- 6.3.3 Defining the Membership by Enumeration
- 6.4 Tracking Changes to an Object Collection
- 6.4.1 Maintaining the Membership of an Object Collection
- 6.4.2 Setting the Mode of an Object Collection
- 6.5 Accessing All Objects in an Object Collection
- 6.5.1 Adding All Objects in an Object Collection to the MIS
- 6.5.2 Deleting All Objects in an Object Collection
- 6.5.3 Setting Attribute Values of All Objects in an Object Collection
- 6.5.4 Performing an Action on an All Objects in an Object Collection
- 6.5.5 Setting the Synchronization of an Object Collection
- 6.6 Accessing Individual Objects in an Object Collection
- 6.7 Obtaining All Object Collections for an Object
7.  Handling Events
- 7.1 Event Notifications
- 7.2 Processing Information in Event Notifications
- 7.2.1 Registering Callback Functions for Event Handling
- 7.2.2 Writing Callback Functions for Event Handling
- 7.2.3 Controlling Event-Related Updates
- 7.3 Scheduling Event Handling
- 7.3.1 Scheduling for Applications Without a Graphical User Interface
- 7.3.2 Scheduling for Applications With a Graphical User Interface
- 7.3.3 Guidelines for Developing Your Own Scheduler
- 7.4 Filtering Events
- 7.4.1 Selecting Managed Object Classes and Event Types
- 7.4.2 Selecting a Subtree of the MIT
- 7.4.3 Specifying a Discriminator Construct
- 7.5 Simulating an Event
- 7.5.1 Simulating an Event Without Using the Solstice EM APIs
- 7.5.2 Simulating an Event Programatically
- 7.6 Subscribing to Log Record Events
8.  Performing Asynchronous Management Operations
- 8.1 Asynchronous and Synchronous Operation
- 8.2 Specifying Asynchronous Operations
- 8.2.1 Interactions With the MIS
- 8.2.2 Asynchronous Operations on Managed Objects
- 8.2.3 Asynchronous Operations on Object Collections
- 8.2.4 Asynchronous CMIS Operations on Object Collections
- 8.3 Handling Responses From an Asynchronous Operation
- 8.3.1 Registering a Callback Function for the Completion of an Asynchronous Operation
- 8.3.2 Registering a Callback Function for Handling Responses From Managed Objects
- 8.3.3 Writing Callback Functions for Asynchronous Operations
- 8.3.4 Scheduling Response Handling
- 8.3.5 Adding a Callback to the Scheduler Queue
- 8.4 Verifying and Changing the Status of an Asynchronous Operation
- 8.4.1 Verifying the Result of an Asynchronous Operation
- 8.4.2 Cancelling an Asynchronous Operation
- 8.4.3 Changing the Timeout of an Asynchronous Operation
9.  Encoding and Decoding Complex ASN.1 Values
- 9.1 Introduction to the Morf Class
- 9.2 Creating Complex ASN.1 Values
- 9.2.1 Creating a Morf Instance From String Data
- 9.2.2 Creating Simple Morf Instances
- 9.2.3 Selecting the Type for a CHOICE Value
- 9.2.4 Creating a Morf Instance for ASN.1 ANY Values
- 9.2.5 Creating Complex Morf Instances From Other Morf Instances
- 9.3 Parsing Complex ASN.1 Values
- 9.3.1 Structure of Morf Instances
- 9.3.2 Overview of Functions for Parsing Morf Instances
- 9.3.3 Parsing CHOICE Values
- 9.3.4 Parsing List Values
- 9.3.5 Getting Objects Associated With a Morf Instance
- 9.3.6 Getting Metainformation About the ASN.1 Type of a Morf Instance
- 9.3.7 Example of Parsing a Morf Instance
- 9.4 Decoding Complex ASN.1 Values
- 9.4.1 Getting a String Representation of a Morf Instance
- 9.4.2 Extracting a Value in a Morf Instance as a New Morf Instance
- 9.4.3 Getting the Value Assigned to a Morf Instance
- 9.4.4 Getting Scalar Values Assigned to a Morf Instance
- 9.5 Using the MorfBuilder Class
- 9.5.1 Constructing a MorfBuilder Instance
- 9.5.2 Adding Data to a MorfBuilder Instance
- 9.5.3 Selecting a Syntax for CHOICE Values
- 9.5.4 Setting a Navigation Type for SEQUENCE Values
- 9.5.5 Validating the Data in a MorfBuilder Instance
- 9.5.6 Assembling MorfBuilder Data Into a Single Morf Instance
10.  Developing Object Behaviors
- 10.1 ODT Overview
- 10.1.1 Supporting Functions
- 10.1.2 Object Development Components
- 10.2 Object Interfaces
- 10.2.1 Object Behavior Interface
- 10.2.2 Object Services API
- 10.3 Object Development Overview
- 10.3.1 Possible Errors
- 10.3.2 Sanity Check Procedure
- 10.4 Object Code Generator Utility
- 10.4.1 Generated Code Interfaces
- 10.4.2 Code Generation Components
- 10.4.3 Using the Object Code Generator Utility
- 10.4.4 Configuring the Object Code Generator Utility
- 10.4.5 How Filter Attributes Affect Code Generation
- 10.5 Implementing GDMO Specified Object Behavior
- 10.5.1 MIS Object Modeling Concepts
- 10.5.2 Asynchronous Interface Behavior
- 10.5.3 Sub Operations: subfetch, subread, subwrite, substore
- 10.5.4 Propagation of Errors
- 10.5.5 Serialization of Object Requests
- 10.6 Debugging Objects
- 10.6.1 Process
- 10.6.2 Dynamic Loading in Solstice EM
- 10.6.3 ASN.1 and GDMO Debugging
- 10.6.4 Printing ASN.1 Values in Human-Readable Form
- 10.6.5 Debugging Flags
- 10.7 Generated Files
- 10.7.1 Makefile (Makefile.className)
- 10.7.2 Readme File (README.className)
- 10.7.3 User Header File (className_user.odt.hh)
- 10.7.4 PMI Client Create Program for Object Instantiation (pmi_className.cc)
- 10.7.5 User Code File (className_user.odt.cc)
- 10.7.6 Dynamic Loading File (className.load)
- 10.7.7 Dynamic Unloading File (className.unload)
- 10.8 TRY Exception Macros
- 10.8.1 Overview
- 10.8.2 Code Structure
- 10.8.3 Code Examples
- 10.9 Object Development Examples
- 10.9.1 Compiling All Examples
- 10.9.2 cellSample
- 10.9.3 demoPing
- 10.9.4 demoregistry
- 10.9.5 demoServer
- 10.9.6 diskInfo
- 10.10 Object Development Scenario Using Chai Object
- 10.10.1 Creating Your Own Object Class
- 10.10.2 Debugging Flags
- 10.10.3 Sample Behavior Implementation
- 10.10.4 chai Object Class Definitions
- 10.10.5 Sample PMI Program to Create a New chai Object Instance
- 10.10.6 Example Generated Code in .cc File
- 10.10.7 Example Generated Code in .hh File
11.  Writing Management Protocol Adaptors (MPAs)
- 11.1 Review of MIS Architecture
- 11.2 Initializing Management Protocol Adaptors and Protocol Driver Modules
- 11.2.1 Services Access Points (SAPs)
- 11.2.2 Initializing a Management Protocol Adaptor
- 11.2.3 Initializing a Protocol Driver Module
- 11.3 Routing Messages
- 11.3.1 How Messages are Routed to the Adaptors
- 11.3.2 MPA and PDM Addresses
- 11.3.3 FDN Table Configuration Options
- 11.3.4 Source and Destination Fields in the Message
- 11.4 MPA/PDM Request Management
- 11.4.1 Asynchronous Request Code Specifics
- 11.4.2 Validating Requests
- 11.4.3 Matching Requests to Responses
- 11.5 Timer Management
- 11.5.1 Timer Management Interface
- 11.5.2 Stopping a Timer
- 11.6 File Descriptor Management
- 11.6.1 Asynchronous File I/O
- 11.6.2 Example of a Read Callback Implementation
- 11.7 Notifications
- 11.7.1 Creating a Notification
- 11.8 Sample MPA/PDM Source Code
- 11.8.1 Files and Configuration
- 11.9 Developing an Adaptor
- 11.9.1 Defining the Management Information Model
- 11.9.2 The Request Management Interface
- 11.9.3 The Protocol Code
12.  Controlling Access to Applications and Data
- 12.1 Access Control Levels
- 12.1.1 Application-Level Access Control
- 12.1.2 Application-Feature-Level Access Control
- 12.1.3 Managed-Object-Level Access Control
- 12.1.4 Event Notification Access Control
- 12.1.5 Management Protocol Adapter (MPA) Access Control
- 12.2 Enforcing Predefined Access Control Rules
- 12.2.1 Defining Access Control Rules
- 12.2.2 Enforcing Application-Level and Application-Feature-Level Access Control
- 12.2.3 Handling Denial of Access to Managed Objects
- 12.3 Modifying Access Control Information
- 12.3.1 Activating Access Control for the Solstice EM Platform
- 12.3.2 Adding a User to a Privilege Group
- 12.3.3 Listing All Application Features Under Access Control
- 12.3.4 Adding Applications and Application Features to a Privilege Group
- 12.3.5 Defining a Target
- 12.3.6 Defining a Security Rule
- 12.3.7 Handling Access Control Errors
- 12.4 Getting Access Control Defaults
- 12.4.1 Getting the Default Enforcement Action for All Management Operations
- 12.4.2 Getting the Default Enforcement Action for All Events
- 12.4.3 Getting a List of Trusted Hosts
- 12.4.4 Getting the Access Control Denial Granularity
- 12.4.5 Getting the Access Control Domain
- 12.5 Keeping Event Notifications Private
- 12.5.1 Assigning an Owner to a Log
- 12.5.2 Enabling Access Control for the Log Server
- 12.6 Making MPAs Secure
- 12.6.1 Subscribing to Access Control Events
- 12.6.2 Creating and Initializing an Instance of the ACE Class
- 12.6.3 Processing Information in Access Control Events
- 12.6.4 Implementing a Class Derived From AuxServerUtils
- 12.6.5 Calling Access Control Decision and Enforcement Functions
13.  Optimizing Performance
- 13.1 General Guidelines for Optimizing Performance
- 13.2 Selectively Activating Image Instances
- 13.3 Filtering Events
- 13.4 Writing Your Own Classes to Represent Managed Objects
- 13.5 Using the Low-Level PMI
14.  Guidelines for Compiling and Linking Applications
- 14.1 Compiler Version Requirements
- 14.2 Header Files and Libraries
- 14.3 Options for Locating Header Files and Libraries
- 14.4 Compilation Flags
15.  Troubleshooting
- 15.1 Testing and Debugging Programs
- 15.1.1 Verifying GDMO and ASN.1 Syntax and Logic
- 15.1.2 Trapping Errors in PMI Function Calls
- 15.1.3 Trapping Programming Logic Errors
- 15.1.4 Monitoring Protocol Translation by an MPA
- 15.1.5 Reloading GDMO Documents
- 15.2 Monitoring Communications With the MIS
- 15.2.1 Starting em_debug
- 15.2.2 Interpreting em_debug Messages
- 15.2.3 Full List of em_debug Message Types
- 15.3 Avoiding Common Problems
- 15.3.1 Verifying Attribute and Class Names
- 15.3.2 Creating Automatically Named Managed Object Instances Appropriately
- 15.3.3 Testing That Scopes and Filters are Supported
- 15.4 Example Troubleshooting Scenarios
- 15.4.1 Failure to Set an Attribute Value
- 15.4.2 Failure to Process Notifications
16.  Integrating Applications With Solstice EM
- 16.1 Adding an Application to a Tools Window
- 16.2 Extending the Tools Menu of a Solstice EM Tool
- 16.3 Customizing the Network Views Tool
- 16.3.1 Extending the Actions Menu of the Network Views Tool
- 16.3.2 Setting the Activation of a Topology Type
17.  Writing RPC Agents for Solstice EM
- 17.1 Manager-Agent Model
- 17.2 Types of Agents
- 17.3 Steps for Writing an Agent
- 17.4 Solstice EM Integration
- 17.4.1 Installing the Agent
- 17.4.2 Updating the Solstice EM MIS Database
A.  Solstice EM C++ Source Code Examples
- A.1 Guidelines for Compiling the Examples
- A.2 Satellite Example
- A.3 High-Level PMI Examples
- A.3.1 Managed Object Examples
- A.3.2 Object Collection Examples
- A.3.3 Event Handling Examples
- A.3.4 Log Record Handling Examples
- A.3.5 Network Topology Examples
- A.3.6 FDN Translation Examples
- A.3.7 Graphical Application Examples
- A.3.8 MDR Action Examples
- A.3.9 Encoding and Decoding Examples
- A.4 Scenario Examples
- A.5 Security Examples
- A.5.1 Access Control API Examples
- A.5.2 Access Control Engine API Examples
- A.5.3 Password Request Example
- A.5.4 Application-Feature-Level Example
- A.6 Low-Level PMI Examples
- A.7 Object Modeling Example
- A.8 Object Development Examples
- A.9 Miscellaneous Examples
B.  Standards Reference and Further Reading
- B.1 Standards Reference
- B.2 Terminology References
- B.3 Further Reading
C.  GDMO Templates
- C.1 Conventions Used in the Definitions
- C.2 Managed Object Class Template
- C.2.1 Managed Object Class Template Format
- C.2.2 Managed Object Class Template Constructs
- C.3 Name Binding Template
- C.3.1 Name Binding Template Format
- C.3.2 Name Binding Template Constructs
- C.4 Package Template
- C.4.1 Package Template Format
- C.4.2 Package Template Constructs
- C.4.3 PropertyList Supporting Production
- C.5 Attribute Template
- C.5.1 Attribute Template Format
- C.5.2 Attribute Template Constructs
- C.6 Action Template
- C.6.1 Action Template Format
- C.6.2 Action Template Constructs
- C.7 Notification Template
- C.7.1 Notification Template Format
- C.7.2 Notification Template Constructs
- C.8 Parameter Template
- C.8.1 Parameter Template Format
- C.8.2 Parameter Template Constructs
- C.9 Attribute Group Template
- C.9.1 Attribute Group Template Format
- C.9.2 Attribute Group Template Constructs
- C.10 Behaviour Template
- C.10.1 Behaviour Template Format
- C.10.2 Behaviour Template Constructs
Sun Microsystems, Inc. Copyright information. All rights reserved. |
Doc Set | Next | Index |