8 Rules for management information model extensions

32.106-63GPPConfiguration Management (CM)Part 6: Basic CM Integration Reference Point (IRP): Common Object Request Broker Architecture (CORBA) Solution Set (SS)Telecommunication managementTS

This clause discusses how the models and IDL definitions provided in 3GPP TS 32.111-3 [10], 3GPP TS 32.106-3 [9] and 3GPP TS 32.106-6 (the present document) can be extended for a particular implementation and still remain compliant with 3GPP SA5’s specifications.

8.1 Allowed extensions

Vendor-specific MOCs, other than those specified in clause 6.5, may be supported. The vendor-specific MOCs may support new types of attributes. The 3GPP SA5-specified notifications may be issued referring to the vendor-specific MOCs and vendor-specific attributes. New MOCs shall be distinguishable from 3GPP SA5 MOCs by name. 3GPP SA5-specified and vendor-specific attributes may be used in vendor-specific MOCs. Vendor-specific attribute names shall be distinguishable from existing attribute names.

Basic CM IRP MOCs may be subclassed. Subclassed MOCs shall maintain the specified behaviour of the 3GPP SA5’s superior classes. They may add vendor-specific behaviour with vendor-specific attributes. When subclassing, naming attributes cannot be changed. The subclassed MOC shall support all attributes of its superior class. Vendor-specific attributes cannot be added to 3GPP SA5 MOCs without subclassing.

When subclassing, the 3GPP SA5-specified containment rules and their specified cardinality shall still be followed. As an example, ManagementNode (or its subclasses) shall be contained under G3SubNetwork (or its subclasses). Also, in R99, there may only be 0 or 1 ManagementNode (or its subclasses) contained under G3SubNetwork (or its subclasses).

Managed Object Instances may be instantiated as CORBA objects. This requires that the MOCs be represented in IDL. 3GPP SA5’s MOCs are not currently specified in IDL, but may be specified in IDL for instantiation or subclassing purposes. However, management information models should not require that IRPManagers access the instantiated managed objects other than through supported methods in the present document (3GPP TS 32.106-6).

Extension rules related to notifications (Notification categories, Event Types, Extended Event Types etc.) are for further study in 3GPP’s Releases 4/5.

8.2 Extensions not allowed

The IDL specifications in 3GPP TS  32.111-3 [10], 3GPP TS  32.106-3 [9] and 3GPP TS  32.106-6 (the present document) cannot be edited or altered. Any additional IDL specifications shall be specified in separate IDL files.

IDL interfaces (note: not MOCs) specified in 3GPP TS  32.111-3 [10], 3GPP TS  32.106-3 [9] and 3GPP TS  32.106-6 (the present document) may not be subclassed or extended. New interfaces may be defined with vendor-specific methods.

Annex A (normative):
CORBA IDL, Access Protocol

#ifndef BasicCmIRPSystem_idl

#define BasicCmIRPSystem_idl

#include "CommonIRPConstDefs.idl"

#pragma prefix "3gppsa5.org"

module BasicCmIRPSystem

{

/**

* This constant defines the version of this IRP.

*/

const string VERSION = "1c1";

/**

* The format of Distinguished Name (DN) is specified in "Name Conventions

* for Managed Objects revision B".

*/

typedef string DN;

/**

* This module adds datatype definitions for types

* used in the NRM which are not basic datatypes defined

* already in CORBA.

*/

module AttributeTypes

{

/**

* An MO reference referres to an MO instance.

* "otherMO" contains the distinguished name of the referred MO.

* A conceptual "null" reference (meaning no MO is referenced)

* is represented as an empty string ("").

*

*/

struct MOReference

{

DN otherMO;

};

/**

* MOReferenceSet represents a set of MO references.

* This type is used to hold 0..n MO references.

* A referred MO is not allowed to be repeated (therefore

* it is denoted as a "Set")

*/

typedef sequence<MOReference> MOReferenceSet;

/**

* A set of strings.

*/

typedef sequence<string> StringSet;

};

exception IllegalFilterFormatException {

string reason;

};

exception IllegalDNFormatException {

string reason;

};

exception IllegalScopeTypeException {

string reason;

};

exception IllegalScopeLevelException {

string reason;

};

exception UndefinedMOException {

string reason;

};

exception UndefinedScopeException {

string reason;

};

exception FilterComplexityLimit {

string reason;

};

exception NextBasicCmInformations {

string reason;

};

exception InvalidParameter {

string parameter;

};

exception GetBasicCmIRPVersion {

string reason;

};

/**

*

* In R99 the only allowed filter value is "TRUE" i.e. a filter that

* matches everything.

*/

typedef string FilterType;

/**

* ResultContents is used to tell how much information to get back

* from the find_managed_objects operation.

*

* NAMES: Used to get only Distinguished Name

* for MOs.

* The name contains both the MO class

* and the names of all superior objects in the naming

* tree.

*

* NAMES_AND_ATTRIBUTES: Used to get both NAMES plus

* MO attributes (all or selected).

*/

enum ResultContents

{

NAMES,

NAMES_AND_ATTRIBUTES

};

/**

* ScopeType defines the kind of scope to use in a search

* together with SearchControl.level, in a SearchControl value.

*

* SearchControl.level is always >= 0. If a level is bigger than the

* depth of the tree there will be no exceptions thrown.

* BASE_ONLY: level ignored, just return the base object.

* BASE_NTH_LEVEL: return all subordinate objects that are on "level"

* distance from the base object, where 0 is the base object.

* BASE_SUBTREE: return the base object and all of its subordinates

* down to and including the nth level.

* BASE_ALL: level ignored, return the base object and all of it’s

* subordinates.

*/

enum ScopeType

{

BASE_ONLY,

BASE_NTH_LEVEL,

BASE_SUBTREE,

BASE_ALL

};

/**

* SearchControl controls the find_managed_object search,

* and contains:

* the type of scope ("type" field),

* the level of scope ("level" field), level 0 means the "baseObject",

* level 1 means baseobject including its sub-ordinates etc..

* the filter ("filter" field),

* the result type ("contents" field).

* The type, level and contents fields are all mandatory.

* The filter field contains the filter expression.

* The string "TRUE" indicates "no filter",

* i.e. a filter that matches everything.

*/

struct SearchControl

{

ScopeType type;

unsigned long level;

FilterType filter;

ResultContents contents;

};

/**

* Represents an attribute: "name" is the attribute name

* and "value" is the attribute value in form of a CORBA Any.

* The allowed attribute value types are defined in the

* AttributeTypes module.

*/

struct MOAttribute

{

string name;

any value;

};

typedef sequence<MOAttribute> MOAttributeSet;

struct Result

{

DN mo;

MOAttributeSet attributes;

};

typedef sequence<Result> ResultSet;

/**

The BasicCmInformationIterator is used to iterate through a snapshot of

Managed Object Information when IRPManager invokes find_managed_objects.

IRPManager uses it to pace the return of Managed Object Information.

IRPAgent controls the life-cycle of the iterator. However, a destroy

operation is provided to handle the case where IRPManager wants to stop

the iteration procedure before reaching the last iteration.

*/

interface BasicCmInformationIterator

{

/**

This method returns between 1 and "how_many" Managed Object information.

The IRPAgent may return less than "how_many" items even if there are

more items to return. "how_many" must be non-zero. Return TRUE if there

may be more Managed Object information to return. Return FALSE if there

are no more Managed Object information to be returned.

If FALSE is returned, the IRPAgent will automatically destroy the

iterator.

@parm how_many how many elements to return in the "fetchedElements" out

parameter.

@parm fetchedElements the elements.

@returns A boolean indicating if any elements are returned.

"fetchedElements" is empty when the BasicCmInformationIterator is

empty.

*/

boolean next_basicCmInformations (

in unsigned short how_many,

out ResultSet fetchedElements

)

raises (NextBasicCmInformations,InvalidParameter);

/**

This method destroys the iterator.

*/

void destroy ();

}; // end of BasicCmInformationIterator

typedef sequence<string> AttributeNameSet;

/**

* The BasicCmIrpOperations interface.

* Supports a number of Resource Model versions.

*/

interface BasicCmIrpOperations

{

/**

* Get the version of the interface and all supported resource

* model versions.

*

* @returns all supported versions.

*/

CommonIRPConstDefs::VersionNumberSet get_basicCm_IRP_version();

/**

* Performs a containment search, using a SearchControl to

* control the search and the returned results.

*

* All MOs in the scope constitute a set that the filter works on.

* The result BasicCmInformationIterator contains all matched MOs,

* with the amount of detail specified in the SearchControl.

* For the special case when no managed objects are matched in

* find_managed_objects, the BasicCmInformationIterator will be returned.

* Executing the next_basicCmInformations in the

* BasicCmInformationIterator will return FALSE for

* completion.

*

* @parm baseObject The start MO in the containment tree.

* @parm searchControl the SearchControl to use.

* @parm requestedAttributes defines which attributes to get.

* If this parameter is empty (""), all attributes shall

* be returned. Note: In R99 this is the only supported semantics.

* Note that this argument is only

* relevant if ResultContents in the search control is

* specifed to NAMES_AND_ATTRIBUTES.

*

*

* @raises UndefinedMOException The MO does not exist.

* @raises IllegalDNFormatException The dn syntax string is

* malformed.

* @raises IllegalScopeTypeException The ScopeType in scope contains

* an illegal value.

* @raises IllegalScopeLevelException The scope level is negative

* (<0).

* @raises IllegalFilterFormatException The filter string is

* malformed.

* @raises FilterComplexityLimit if the filter syntax is correct,

* but the filter is too complex to be processed by the IRP agent.

* @see SearchControl

* @see BasicCmInformationIterator

*/

BasicCmInformationIterator find_managed_objects(in DN baseObject,

in SearchControl searchControl,

in AttributeNameSet requestedAttributes)

raises (UndefinedMOException,

IllegalDNFormatException,

UndefinedScopeException,

IllegalScopeTypeException,

IllegalScopeLevelException,

IllegalFilterFormatException,

FilterComplexityLimit);

};

};

#endif

Annex B (normative):
CORBA IDL, Notification Definitions

#ifndef BasicCmNotifDefs_idl

#define BasicCmNotifDefs_idl

#include <TimeBase.idl> // CORBA Time Service

#include <NotificationIRPConstDefs.idl>

#pragma prefix "3gppsa5.org"

module BasicCmNotifDefs

{

/**

* Definition of ITU-T defined semantics.

* These constants are used in the type_name

* (header.fixed_header.event_type.type_name)

* field to denote the notification type

* Note all values are unique among themselves. Other IRP documents

* cannot use the same values.

*/

const string ET_OBJECT_CREATION = "x6";

const string ET_OBJECT_DELETION = "x7";

const string ET_ATTRIBUTE_VALUE_CHANGE = "x8";

/**

* Information about one attribute

* – name defines the name of the attribute

* – value defines the value of the attribute

*

*/

struct MOAttribute

{

string name;

any value;

};

/**

* A set of attribute names and values

*/

typedef sequence<MOAttribute> MOAttributeSet;

/**

* This interface defines fields that are common for all

* notification types.

* All constants in the scope of this interface will be

* visible in the interfaces that inherits this.

* For instance constant

* NotificationCommon::MANAGED_OBJECT_CLASS

* can be addressed by MODeletion::MANAGED_OBJECT_CLASS

*/

interface NotificationCommon

{

/**

* This constant defines a field in the filterable

* information in a StructuredEvent.

* This string is mapped to the name part of a

* Property in the event and the value part will

* carry the MO class name represented

* as a string.

*/

const string MANAGED_OBJECT_CLASS =

NotificationIRPConstDefs::NV_MANAGED_OBJECT_CLASS;

/**

* This constant defines a field in the filterable

* information in a StructuredEvent.

* This string is mapped to the name part of a

* Property in the event and the value part will

* carry the MO distinguished name represented

* as a string.

*/

const string MANAGED_OBJECT_INSTANCE =

NotificationIRPConstDefs::NV_MANAGED_OBJECT_INSTANCE;

/**

* This constant defines the name of the notification

* ID property, which is transported in the

* filterable_body_fields

*/

const string NOTIFICATION_ID =

NotificationIRPConstDefs::NV_NOTIFICATION_ID;

/**

* This constant defines the name of the

* event time property, which is transported in the

* filterable_body_fields.

* The data type for the value of this property

* is defined by datatype CommonIRPConstDefs::IRPTime

*/

const string EVENT_TIME =

NotificationIRPConstDefs::NV_EVENT_TIME;

/**

* This constant defines the name of the

* system name property, which is transported in the

* filterable_body_fields

*/

const string SYSTEM_DN =

NotificationIRPConstDefs::NV_SYSTEM_DN;

/**

* This constant defines the name of the

* source indicator property, which is transported in the

* filterable_body_fields

*/

const string SOURCE_INDICATOR = "SOURCE";

/**

* Valid values for the SOURCE_INDICATOR

* property

*/

const string RESOURCE_OPERATION = "RESOURCE OPERATION";

const string MANAGEMENT_OPERATION = "MANAGEMENT OPERATION";

const string UNKNOWN_OPERATION = "UNKNOWN";

/**

* This constant defines the name of the

* additional text property,

* which is transported in the filterable_body

* fields.

* The data type for the value of this property

* is a string.

*/

const string ADDITIONAL_TEXT =

NotificationIRPConstDefs::NV_ADDITIONAL_TEXT;

/**

* This constant defines the name of the

* correlated notifications property,

* which is transported in the

* filterable_body_fields

* The value part of the property is defined

* in the NotificationIRP;

* NotificationIRPConstDefs::CorrelatedNotificationSetType

*/

const string CORRELATED_NOTIFICATIONS =

NotificationIRPConstDefs::NV_CORRELATED_NOTIFICATIONS;

};

/**

* Constant definitions for the MO deleted notification

*/

interface MODeletion : NotificationCommon

{

const string EVENT_TYPE = ET_OBJECT_DELETION;

/**

* This information mapped into the remainder_of_body

* in the StructuredEvent

*/

typedef MOAttributeSet AttributeValues;

};

/**

* Constant definitions for the MO created notification

*/

interface MOCreation : NotificationCommon

{

const string EVENT_TYPE = ET_OBJECT_CREATION;

/**

* This information mapped into the remainder_of_body

* in the StructuredEvent

*/

typedef MOAttributeSet InitialAttributeValues;

};

/**

* Constant definitions for the Attribute Value Change

* notification

*/

interface AttributeValueChange : NotificationCommon

{

const string EVENT_TYPE = ET_ATTRIBUTE_VALUE_CHANGE;

/**

* Information about modidified attributes for

* one MO instance.

* – name defines the name of the attribute

* – newValue defines the new value of the attribute

* – oldValue defines the previous value of the attribute

* The value is optional, which means that it may contain

* an empty any (null inserted in the any).

*

*/

struct ModifiedAttribute

{

string name;

any newValue;

any oldValue;

};

/**

* This information mapped into the remainder_of_body

* in the StructuredEvent.

*/

typedef sequence<ModifiedAttribute> ModifiedAttributeSet;

};

};

#endif

Annex C (normative):
CORBA IDL, NRM Definitions

#ifndef BasicCmNRMDefs_idl

#define BasicCmNRMDefs_idl

#pragma prefix "3gppsa5.org"

/**

* This module defines constants for each MO class name and

* the attribute names for each defined MO class.

*/

module BasicCmNRMDefs

{

/**

* Definitions for MO class G3SubNetwork

*/

interface G3SubNetwork

{

const string CLASS = "G3SubNetwork";

// Attribute Names

//

const string g3SubNetworkId = "g3SubNetworkId";

const string dnPrefix = "dnPrefix";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class G3ManagedElement

*/

interface G3ManagedElement

{

const string CLASS = "G3ManagedElement";

// Attribute Names

//

const string g3ManagedElementId = "g3ManagedElementId";

const string dnPrefix = "dnPrefix";

const string managedElementType = "managedElementType";

const string userLabel = "userLabel";

const string vendorName = "vendorName";

const string userDefinedState ="userDefinedState";

const string locationName ="locationName";

const string managedBy = "managedBy";

};

/**

* Definitions for MO class MeContext

*/

interface MeContext

{

const string CLASS = "MeContext";

// Attribute Names

//

const string meContextId = "meContextId";

const string dnPrefix = "dnPrefix";

};

/**

* Definitions for MO class ManagementNode

*/

interface ManagementNode

{

const string CLASS = "ManagementNode";

// Attribute Names

//

const string managementNodeId = "managementNodeId";

const string userLabel = "userLabel";

const string vendorName = "vendorName";

const string userDefinedState = "userDefinedState";

const string locationName = "locationName";

const string manages = "manages";

};

/**

* Definitions for abstract MO class ManagedFunction

*

*/

interface ManagedFunction

{

const string CLASS = "ManagedFunction";

// Attribute Names

//

const string userLabel = "userLabel";

};

/**

* Definitions for MO class RncFunction

*/

interface IRPAgent

{

const string CLASS = "IRPAgent";

// Attribute Names

//

const string irpAgentId = "irpAgentId";

const string systemDN = "systemDN";

};

/**

* Definitions for MO class NotificationIRP

*/

interface NotificationIRP

{

const string CLASS = "NotificationIRP";

// Attribute Names

//

const string notificationIRPId = "notificationIRPId";

const string irpVersion = "irpVersion";

};

/**

* Definitions for MO class AlarmIRP

*/

interface AlarmIRP

{

const string CLASS = "AlarmIRP";

// Attribute Names

//

const string alarmIRPId = "alarmIRPId";

const string irpVersion = "irpVersion";

};

/**

* Definitions for MO class BasicCmIRP

*/

interface BasicCmIRP

{

const string CLASS = "BasicCmIRP";

// Attribute Names

//

const string basicCmIRPId = "basicCmIRPId";

const string irpVersion = "irpVersion";

};

/**

* Definitions for MO class RncFunction

*/

interface RncFunction

{

const string CLASS = "RncFunction";

// Attribute Names

//

const string rncFunctionId = "rncFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class UtranCell

*/

interface UtranCell

{

const string CLASS = "UtranCell";

// Attribute Names

//

const string utranCellId = "utranCellId";

const string userLabel = "userLabel";

const string utranCellIubLink = "utranCellIubLink";

};

/**

* Definitions for MO class NodeBFunction

*/

interface NodeBFunction

{

const string CLASS = "NodeBFunction";

// Attribute Names

//

const string nodeBFunctionId = "nodeBFunctionId";

const string userLabel = "userLabel";

const string nodeBFunctionIubLink = "nodeBFunctionIubLink";

};

/**

* Definitions for MO class IubLink

*/

interface IubLink

{

const string CLASS = "IubLink";

// Attribute Names

//

const string iubLinkId = "iubLinkId";

const string userLabel = "userLabel";

const string iubLinkNodeBFunction = "iubLinkNodeBFunction";

const string iubLinkUtranCell = "iubLinkUtranCell";

};

/**

* Definitions for MO class MscFunction

*/

interface MscFunction

{

const string CLASS = "MscFunction";

// Attribute Names

//

const string mscFunctionId = "mscFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class HlrFunction

*/

interface HlrFunction

{

const string CLASS = "HlrFunction";

// Attribute Names

//

const string hlrFunctionId = "hlrFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class VlrFunction

*/

interface VlrFunction

{

const string CLASS = "VlrFunction";

// Attribute Names

//

const string vlrFunctionId = "vlrFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class AucFunction

*/

interface AucFunction

{

const string CLASS = "AucFunction";

// Attribute Names

//

const string aucFunctionId = "aucFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class EirFunction

*/

interface EirFunction

{

const string CLASS = "EirFunction";

// Attribute Names

//

const string eirFunctionId = "eirFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class SmsIwmscFunction

*/

interface SmsIwmscFunction

{

const string CLASS = "SmsIwmscFunction";

// Attribute Names

//

const string smsIwmscFunctionId = "smsIwmscFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class SmsGmscFunction

*/

interface SmsGmscFunction

{

const string CLASS = "SmsGmscFunction";

// Attribute Names

//

const string smsGmscFunctionId = "smsGmscFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class SgsnFunction

*/

interface SgsnFunction

{

const string CLASS = "SgsnFunction";

// Attribute Names

//

const string sgsnFunctionId = "sgsnFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class GgsnFunction

*/

interface GgsnFunction

{

const string CLASS = "GgsnFunction";

// Attribute Names

//

const string ggsnFunctionId = "ggsnFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class BgFunction

*/

interface BgFunction

{

const string CLASS = "BgFunction";

// Attribute Names

//

const string bgFunctionId = "bgFunctionId";

const string userLabel = "userLabel";

};

/**

* Definitions for MO class GmscFunction

*/

interface GmscFunction

{

const string CLASS = "GmscFunction";

// Attribute Names

//

const string gmscFunctionId = "gmscFunctionId";

const string userLabel = "userLabel";

};

};

#endif

Annex D (informative):
Change history

Change history

Date

TSG #

TSG Doc.

CR

Rev

Subject/Comment

Old

New

Dec 2000

S_10

SP-000514

Approved at TSG SA #10 and placed under Change Control.

1.0.0

3.0.0

Mar 2001

S_11

SP-010030

001

Remove TimeBase.idl not used in the module NotificationDefs

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

002

Update get_basicCm_IRP_version to be consistent with Alarm IRP and Notification IRP

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

003

Mismatched irpVersion types

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

004

Update Basic CM IRP Iterator to be consistent with Alarm IRP Iterator

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

005

Removing nested IDL modules

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

006

Update Structured Event table to be consistent with Alarm IRP

3.0.0

3.1.0

Mar 2001

S_11

SP-010030

007

UMTS Network Resource Model alignment with TSG RAN specifications

3.0.0

3.1.0

Jun 2001

S_12

SP-010284

008

Reposition "#pragma prefix" directive

3.1.0

3.2.0

Jun 2001

S_12

SP-010284

009

Correction of UTRAN attributes

3.1.0

3.2.0

Sep 2001

S_13

SP-010473

010

Duplicated exception definition for FilterComplexityLimit

3.2.0

3.3.0

Dec 2003

S_22

SP-030625

011

Remove characters causing IDL Compilation error

3.3.0

3.4.0