// Copyright © 2005, 2006 THALES, SELEX Sistemi Integrati (SI), Themis Computer // and Progeny Systems Corporation. // 06-08-31 - MS - Draft (2) updated to the AMSM Revised Submission // Version 1.8 - 21 August 2006 // 07-03-02 - MS - Draft (3) updated to the AMSM Revised Submission // Version 1.10 - 18 December 2006 & includes // the errata from the 07-01-02 document #pragma locale ("en_US") // =================================================================== // Property // =================================================================== [Description ("An AMS_Property has a value and a name, which is" "defined by either a string or an item of an enumeration." "This enumeration (Value) is intended to normalize some of the" "possible values of the name yet letting the possibility to" "the implementations to define new possible names")] class AMS_Property { [Key] string InstanceID; string Name; string Value; }; // =================================================================== // SoftwareSystem // =================================================================== [Description ("The AMS_SoftwareSystem class models the software" "systems. It may be a part of an other AMS_SoftwareSystem," "gathers AMS_ExecutableSoftwareElements and AMS_Applications" "and must be associated to the AMS_SoftwareFeatureSpec that" "has been used to create it and which store creation" "information. Its attribute are:" "- a name which, with its CIM_SoftwareSystem's global" " name, takes part of the make-up of its global name." "- a status (started, stopped or failed)." "An AMS_Application is an interface that allows to start," "stop and get the status of the software system itself.")] class AMS_SoftwareSystem : CIM_ApplicationSystem { [Key, Override] string Name; [Description("This operation starts up the software system." "It must starts up all the executable software elements" "which belong to the system. It shall return AMS_STARTFAILED" "if at least one of the executable software element could not" "start. The state of the other executable software elements" "is the undefined. A full explanation of the cause of the" "error shall be logged")] uint16 Startup(); [Description("This operation shuts down the software system." "It must stop all the executable software elements which" "belong to the system. It shall return AMS_SHUTDOWNFAILED" "if at least one of the executable software element could not" "shutdown. The state of the other executable software elements" "is the undefined. A full explanation of the cause of the" "error shall be logged")] uint16 Shutdown(); [Description("The AMSRTSoftwareStatus enumerates run-time" "status of software items."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "SW_STARTED", "SW_STOPPED", "SW_FAILED"}] uint16 AMSRTSoftwareStatus; }; // =================================================================== // Application // =================================================================== [Description ("The AMS_Application class models the" "applications. It is a part of an AMS_SoftwareSystem, may" "gather AMS_ExecutableSoftwareElements," "AMS_LoadBalancingGroups and AMS_RedundancyGroups, and must" "be associated to the AMS_SoftwareFeatureSpec that has been" "used to create it and which refers to creation information" "Optionally, it may also gather other AMS_Applications with" "the association AMS_ApplicationOfApplication". "Its attributes are:" "- a name which, with its CIM_SoftwareSystem's global" " name, takes part of the make-up of its global name." "- a status (started, stopped or failed)." "An AMS_Application is an interface that allows to start," "stop and get the status of the application itself.")] class AMS_Application : CIM_ApplicationSystem { [Key, Override] string Name; [Description("This operation starts up the application. It" "starts up all the executable software elements which belong" "to the application. It shall return AMS_STARTFAILED if at" "least one of the executable software element could not start" "The state of the other executable software elements is then" "undefined. A full explanation of the cause of the error" "shall be logged. After an error, the executable software" "elements are in an unknown state.")] uint16 Startup(); [Description("This operation shuts down the application. It" "shuts down all the executable software elements which belong" "to the application. It shall return AMS_SHUTDOWNFAILED if at" "least one of the executable software element could not" "shutdown. The state of the other executable software" "elements is then undefined. A full explanation of the cause" "of the error shall be logged. After an error, the" "executable software elements are in an unknown state.")] uint16 Shutdown(); [Description("The AMSRTSoftwareStatus enumerates run-time" "status of software items."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "SW_STARTED", "SW_STOPPED", "SW_FAILED"}] uint16 AMSRTSoftwareStatus; }; // =================================================================== // ExecutableSoftwareElement // =================================================================== [Description ("The AMS_ExecutableSoftwareElement models a" "software element that is a logical element that contains" "the information necessary to represent and manage the" "functionality provided. It is part of an AMS_Application," "may be associated with an AMS_RedundancyGroup and must be" "associated to the AMS_ESESpec that has been used to create" "it and which hold most of the information on the element." "Its attributes are:" "- a name that, with its CIM_Application's or" " AMS_Application's global name, takes part of the" " make-up of its global name." "- a current state that is taken in the states allowed by" " its application model." "- a status (started, stopped or failed)." "- a state regarding the redundancy (no redundancy," " primary or redundant copy)" "An AMS_Application is an interface that allows to start," "stop, load, continue and get the status of the software" "element itself.")] class AMS_ExecutableSoftwareElement : CIM_Service { [Key, Override] string Name; [Description ("This operation starts up the executable software" "element with the specification actually associated by" "CIM_SoftwareElementServiceImplementation. It shall return:" "- AMS_RESOURCEERROR if the element could not start on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not start on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_BADACTION if the element could not start on account" " of a badly formed action in the specification" " definition," "- AMS_BADCHECK if the element could not start on account" " of a badly formed check in the specification" " definition," "- AMS_NOTCHECKED if at last one of the check of the" " associated specification was not true," "- AMS_BADMODELTYPE if the targeted host does not support" " the associated specification model type," "- AMS_STARTFAILED if the element could not start for any" " other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 Startup(); [Description ("This operation replaces the AMS_ESESpec" "associated by CIM_SoftwareElementServiceImplementation," "and next starts up the executable software element." "It shall return:" "- AMS_RESOURCEERROR if the element could not start on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not start on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_BADACTION if the element could not start on account" " of a badly formed action in the specification" " definition," "- AMS_BADCHECK if the element could not start on account" " of a badly formed check in the specification" " definition," "- AMS_NOTCHECKED if at last one of the check of the" " associated specification was not true," "- AMS_BADMODELTYPE if the targeted host does not support" " the associated specification model type," "- AMS_STARTFAILED if the element could not start for any" " other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 StartupOnSpec( [IN] AMS_ESESpec REF spec); [Description ("This operation starts up the executable software" "element on the host and with the command line indicated by" "the parameters. It shall return:" "- AMS_RESOURCEERROR if the element could not start on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not start on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_BADACTION if the element could not start on account" " of a badly formed action in the specification" " definition," "- AMS_BADCHECK if the element could not start on account" " of a badly formed check in the specification" " definition," "- AMS_NOTCHECKED if at last one of the check of the" " associated specification was not true," "- AMS_BADMODELTYPE if the targeted host does not support" " the associated specification model type," "- AMS_BADCOMMANDLINE if the command line in parameter is" " wrong," "- AMS_STARTFAILED if the element could not start for any" " other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 StartupOnHost( [IN] AMS_Host REF host, [IN] string commandLine); [Description("This operation shuts down the executable software" "element. It shall return:" "- AMS_RESOURCEERROR if the element could not start on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not start on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_BADACTION if the element could not start on account" " of a badly formed action in the specification" " definition," "- AMS_BADCHECK if the element could not start on account" " of a badly formed check in the specification" " definition," "- AMS_NOTCHECKED if at last one of the check of the" " associated specification was not true," "- AMS_SHUTDOWNFAILED if the element could not be shut" " down for any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 Shutdown(); [Description("This operation loads the executable software" "element. It shall return:" "- AMS_RESOURCEERROR if the element could not start on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not start on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_BADMODELTYPE if the targeted host does not support" " the associated specification model type," "- AMS_LOADFAILED if the element could not be start for" " any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 Load(); [Description ("This operation stops the executable software" "element. It shall return:" "- AMS_RESOURCEERROR if the element could not be stopped" " on account of an OS resource starvation error (lack" " of memory, disk...) when performing one of the" " action of the associated specification," "- AMS_RIGHTERROR if the element could not be stopped on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_STOPFAILED if the element could not be stopped for" " any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 Stop(); [Description ("This operation continues the executable software" "element. It shall return:" "- AMS_RESOURCEERROR if the element could not continue" " on account of an OS resource starvation error (lack" " of memory, disk...) when performing one of the" " action of the associated specification," "- AMS_RIGHTERROR if the element could not continue on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_CONTFAILED if the element could not be continued" " for any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 Continue(); [Description ("This operation halts the executable software" "element.")] uint16 halt(); [Description ("This operation forces the shutdown of the" "executable software element.It shall return:" "- AMS_RESOURCEERROR if the element could not shutdown on" " account of an OS resource starvation error (lack of" " memory, disk...) when performing one of the action" " of the associated specification," "- AMS_RIGHTERROR if the element could not shutdown on" " account of an OS right error when performing one of" " the action of the associated specification," "- AMS_SHUTDOWNFAILED if the element could not be" " shutdown for any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 ForceShutdown(); [Description ("This operation forces the shutdown of the" "executable software element.It shall return:" "- AMS_ALREADYPRIMARY if the element was already a" " primary element," "- AMS_NOTFT if the element is not in a redundancy" " group," "- AMS_PRIMARYFAILED if the element could not be" " activated for any other reason." "In all case of error, a full explanation of the cause of" "the error shall be logged. After an error, the executable" "software element is in an unknown state.")] uint16 ActivateAsPrimary(); [Description ( "This integer indicates the states in which executable software " "elements can be found (cf § 2.2.2.1)." ), ValueMap { "0", "1", "2", "3", "4", "5", "6" }, Values { "Unknown", "AMS_EXECUTABLE", "AMS_HALTED", "AMS_LOADED", "AMS_RUNNING", "AMS_STOPPED", "AMS_UNALLOCATED" }] uint16 AMSState; [Description("The AMS_RTSoftwareStatus enumerates run-time" "status of software items."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "SW_STARTED", "SW_STOPPED", "SW_FAILED"}] uint16 AMSRTSoftwareStatus; }; // =================================================================== // RedundancyGroup // =================================================================== [Description ("The AMS_RedundancyGroup class models the groups" "of elements that are working in a redundant way.." "It is a part of an AMS_Application, must be associated to" "the AMS_ExecutableElement that belongs to it, and must be" "associated to the AMS_SoftwareFeatureSpec that has been" "used to create it and which stores creation information." "Its attributes are:" "- a name which, with its CIM_Application's global name," " takes part of the make-up of its global name. " "- the style of replication (AMS_ReplicationStyle)." "- a status (started, stopped or failed)." "An AMS_RedundancyGroup is an interface that allows to " "start, stop and get the status of the group itself")] class AMS_RedundancyGroup : CIM_RedundancyGroup { [Key, Override] string Name; [Description ("This operation starts up the redundancy group." "It must starts up all the executable software elements" "which belong to the group. It shall return AMS_STARTFAILED" "if at least one of the executable software element could " "not start. The state of the other executable software" "elements is the undefined. A full explanation of the" "cause of the error shall be logged.")] uint16 Startup(); [Description ("This operation shuts down the redundancy group." "It must shut down all the executable software elements" "which belong to the group. It shall return " "AMS_SHUTDOWNFAILED if at least one of the executable" "software element could not shutdown. The state of the" "other executable software elements is the undefined. A" "full explanation of the cause of the error shall be " "logged.")] uint16 Shutdown(); [Description("The AMSReplicationStyle enumerates possible style" "for replication of a redundancy group. This enumeration" "comes from Fault Tolerant CORBA ([CORBA])." "- RG_STATELESS: the object contains read only data, so" " there is no need for recording or transferring" " object's state." "- RG_COLD_PASSIVE: replicas are not loaded into memory" " and they only come into existence when the primary" " replica fails. Since there is only one primary" " replica at any one time, the primary replica's state" " must be captured in case it fails. If the primary" " replica fails, one of the cold backup replicas is" " loaded into memory, and assumes the role of the new" " primary replica. For the new primary replica to take" " over from the old primary replica, the new replica's" " state must be identical to the state of the old" " primary replica. Before the new primary can fully " " assume the role of the primary replica, its state is" " initialized using the last checkpoint recorded" " previously by the logging-recovery mechanisms." "- RG_WARM_PASSIVE: this replication style differs from" " the Cold Passive replication in that the state of" " the primary member object of the object group gets" " recorded and transferred to other member objects of" " the object group (i.e. backup replicas). This type" " of recovery provides faster recovery from faults" " than Cold Passive. " "- RG_ACTIVE and RG_ACTIVE_WITH_VOTING: with this" " replication style all members of the object group" " execute the invoked methods simultaneously and" " expected to provide rapid recovery from faults." "- RG_IMPL_DEFINED: specific implementation defined style" " of replication"), ValueMap { "0", "1", "2", "3", "4", "5", "6"}, Values { "Unknown", "RG_COLD_PASSIVE", "RG_WARM_PASSIVE", "RG_ACTIVE", "RG_ACTIVE_WITH_VOTING", "RG_STATELESS", "RG_IMPL_DEFINED"}] uint16 AMSReplicationStyle; [Description("The AMSRTSoftwareStatus class enumerates run-time" "status of software items."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "SW_STARTED", "SW_STOPPED", "SW_FAILED"}] uint16 AMSRTSoftwareStatus; }; // =================================================================== // LoadBalancingGroup // =================================================================== [Description ("The AMS_LoadBalancingGroup class models the" "groups of elements that are load balanced. Load Balancing" "service allows to optimize the distribution of load among" "the available servers of the system. In this context the" "concept of 'Strategy' means the rule used by each" "application for choosing the server to execute the request" "within the available replicas. It is a part of an" "AMS_Application, must be associated to the" "AMS_ExecutableElements that belong to it, and must be" "associated to the AMS_SoftwareFeatureSpec that has been" "used to create it and which stores creation information." "Its attributes are:" "- a name which, with its CIM_Application's global name," " takes part of the make-up of its global name. " "- a style which is the strategy to be used for that" " group." "- a status (started, stopped or failed)." "An AMS_LoadBalancingGroup is an interface that allows to" "start, stop and get the status of the group itself.")] class AMS_LoadBalancingGroup : CIM_RedundancyGroup { [Key, Override] string Name; [Description ("This operation starts up the load balancing group." "It must starts up all the executable software elements" "which belong to the group. It shall return AMS_STARTFAILED" "if at least one of the executable software element could " "not start. The state of the other executable software" "elements is the undefined. A full explanation of the" "cause of the error shall be logged.")] uint16 Startup(); [Description ("This operation shuts down the load balancing group." "It must shut down all the executable software elements" "which belong to the group. It shall return " "AMS_SHUTDOWNFAILED if at least one of the executable" "software element could not shutdown. The state of the" "other executable software elements is the undefined. A" "full explanation of the cause of the error shall be " "logged.")] uint16 Shutdown(); [Description("The AMS_BalancingStyle class enumerates possible" "style for balancing in a load balancing group. Possible" "values are:" "- Round Robin: if a request from a client is balanced" " with a Round-Robin strategy upon a group of members," " the exact order in which requests are handed over to" " group members may be implementation-dependent;" " however, the service must guarantee that, for a" " group with n members, if a request is forwarded to a" " particular group member, the next n-1 requests, from" " the same client, are not forwarded to that member." "- Random: requests are handed over to group members in a" " randomly way." "- Implementation defined: the exact order in which" " requests are handed over to group members is defined" " by the implementation."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "LB_ROUND_ROBIN", "LB_RANDOM", "LB_IMPL_DEFINED"}] uint16 AMSBalancingStyle; [Description("The AMSRTSoftwareStatus enumerates run-time" "status of software items."), ValueMap { "0", "1", "2", "3" }, Values { "Unknown", "SW_STARTED", "SW_STOPPED", "SW_FAILED"}] uint16 AMSRTSoftwareStatus; }; // =================================================================== // Associations // =================================================================== //=================================================================== // SpecificState // =================================================================== [Association, aggregation, Description("An association between" "AMS_Property class in order to" "design platform-specific states. Known items of the " "AMS_StdState enumeration are:" "- ST_NONSTD: special value that denotes a non-normalized" " value (i.e. use the 'Name' attribute instead)" "- ST_ENV: on POSIX systems, the associated value is the" " content of the environment (blank-separated strings of the" " form 'var=value'")] class AMS_SpecificState : CIM_Component { [Key, aggregate, Override("GroupComponent"), Max(1)] AMS_ExecutableSoftwareElement REF GroupComponent; [Override("PartComponent")] AMS_Property REF PartComponent; [ValueMap { "0", "1"}, Values { "ST_NONSTD", "ST_ENV"}] uint16 AMSStdState; }; //=================================================================== // SystemOfSystem // =================================================================== [Association, Aggregation] class AMS_SystemOfSystem : CIM_Component { [Key, Aggregate, Max(1), Override("GroupComponent")] AMS_SoftwareSystem REF GroupComponent; [Override("PartComponent")] AMS_SoftwareSystem REF PartComponent; }; // =================================================================== // ApplicationOfApplication // =================================================================== [Association] class AMS_ApplicationOfApplication : CIM_Component { [Key, Aggregate, Max(1), Override("GroupComponent")] AMS_Application REF GroupComponent; [Override("PartComponent")] AMS_Application REF PartComponent; }; // =================================================================== // ApplicationFeature // =================================================================== [Association] class AMS_ApplicationFeature : CIM_Component { [Override("GroupComponent")] AMS_Application REF GroupComponent; [Override("PartComponent"), Min(1), Max(1)] AMS_SoftwareFeatureSpec REF PartComponent; }; // =================================================================== // SystemFeature // =================================================================== [Association] class AMS_SystemFeature : CIM_Component { [Override("GroupComponent")] AMS_SoftwareSystem REF GroupComponent; [Override("PartComponent"), Max(1), Min(1)] AMS_SoftwareFeatureSpec REF PartComponent; }; // =================================================================== // RedundancyFeature // =================================================================== [Association] class AMS_RedundancyFeature : CIM_Component { [Override("GroupComponent")] AMS_RedundancyGroup REF GroupComponent; [Override("PartComponent"), Max(1), Min(1)] AMS_SoftwareFeatureSpec REF PartComponent; }; // =================================================================== // LoadBalancingFeature // =================================================================== [Association] class AMS_LoadBalancingFeature : CIM_Component { [Override("GroupComponent")] AMS_LoadBalancingGroup REF GroupComponent; [Override("PartComponent"), Max(1), Min(1)] AMS_SoftwareFeatureSpec REF PartComponent; };