Doc Set NextIndex

Solstice Enterprise Manager 4.1 Developing C++ Applications Sun Microsystems

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