Consolidating all the past comments on the MOF structure, I put together a basic implementation of lmi-bmc  provider (with just enumeration enabled)at https://github.com/praveen-pk/lmi-bmc. Please give this a spin and let me know your comments/suggestions.

 

This provider works fine on Dell System with IPMI service running. There is much work left while handling the error cases, so the code is a bit unstable.

 

Thank you

Praveen K Paladugu

Dell Linux Engineering

 

From: openlmi-devel-bounces@lists.fedorahosted.org [mailto:openlmi-devel-bounces@lists.fedorahosted.org] On Behalf Of Paladugu, Praveen
Sent: Monday, May 05, 2014 5:06 PM
To: jsafrane@redhat.com; openlmi-devel@lists.fedorahosted.org
Subject: RE: A provider for publishing Management Controller (Service Processor) information

 

Jan

 

Thanks for the Comments!!

Updated the MOF as recommended (for the most part).

 

An Array of IPaddresses was recommended in the last thread, so updated the MOF accordingly. I pinged some folks on Dell’s Service Processor team to check if multiple IP addresses can be assigned a BMC NIC. Will update as soon as I hear something.

 

 

 

[Description("Model an Out of Band Management Controller and capture its features and capabilities")]

class LMI_BMC : CIM_ManagementController

{                                                   

 

    [Description("This variable, should always capture the latest ipv4 IP/s addresses of BMC.")]

    string IP4Addresses[];

 

    [Description("This variable, should always capture the latest ipv6 IP/s addresses of BMC.")]

    string IP6Addresses[];

 

    [Description("The VLAN setting on the BMC NIC port.")]

    string VLAN;       

               

    [Description("This variable will capture MAC address of the BMC.”)]

    string PermanentMACAddress;

 

 

   [Description(“If BMC provides any user friendly interfaces like http, ftp etc, this variable will capture the related URL/s to interact with BMC.”)]  

    string BMC_URLs[];

 

/* COMMENT:  If the following properties are rolledup into CIM_LogicalDevice, would a user enumerating LMI_BMC not be able to see these properties? Or is it just a matter of how the Enumeration function is defined for this class? */

 

    /*

    #Capture this information in indexed IndentifyingDescriptions and OtheridentifyingInfo Arrays of CIM_LogicalDevice.

    #string Manufacturer_ID;

    #string Manufacturer;

    #string Model;

*/

 

    [Description(“This variable will capture the version of the firmware installed on the BMC”)]

    string FirmwareVersion;

  

   [Description(“This Array will capture the list of protocols supported by the BMC”),

     ArrayType (“Indexed”),

     MaxLen (256),

     ModelCorrespondence {“LMI_BMC.SupportedProtoVersion”}  ]

    string SupportedProtos[];

   

    [Description(“This Array will capture the version of the supported protocol listed in the corresponding index of SupportedProtos ”),

    ArrayType (“Indexed”),

     ModelCorrespondence {“LMI_BMC.SupportedProtos” } ]

    string SupportedProtoVersion[];

  

 

/*COMMENT:  Should the below function assign a new virtual ip address to those already on the BMC? Or should the user be able to pass a list of IP addresses to overwrite the existing ones? Am leaning towards the latter option*/

 

 

 

    [Description("Function to add a new IPv4 address to BMC.")’

    ValueMap (“0”,”1”,”2”)’

     Values (“Success”, “Failed”, “Invalid Argument”)]

    uint32   set_IP4Address(

                [IN, Description ("Set the IP address of the BMC, to the input value")]

                string IP4Address,

                [IN, Description ("Set the netmask to this input value")]

                string Netmask,

                [IN, Description ("Set the gateway this input value")]

                string Gateway);

 

 

    [Description("Function to assign a new IPv6 address to BMC."),

     ValueMap (“0”,”1”,”2”),

     Values (“Success”, “Failed”, “Invalid Argument”)]

    uint32  set_IP6Address(

                [IN, Description ("Set the IP address of the BMC, to the input value")]

                string IP6Address,

                [IN, Description ("Set the netmask to this input value")]

                string Netmask,

                [IN, Description ("Set the gateway on BMC to this input value")]

                string Gateway);

 

 

 

    [Description("Function to assign a VLAN ID to BMC.")

     ValueMap (“0”,”1”,”2”)

     Values (“Success”, “Failed”, “Invalid Argument”)]

    uint32 set_VLAN(

                [IN, Description("Set the VLAN ID of BMC NIC to this input value")]

                string Vlan

                );            

 

   

    [Description("Some servers have dedicated NIC attached to BMC, some share a LOM used for host n/w communications. This function will let the user know which the case is."),

    ValueMap (“0”, “1”,”2”,”3”,”4”),

    Values (“Dedicated”, “LOM1”,”LOM2”,”LOM3”,”LOM4”)]

    string get_active_nic();

   

 

};

 

 

 

Thank you
Praveen K Paladugu
Dell Linux Engineering