<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Consolidating all the past comments on the MOF structure, I put together a basic implementation of lmi-bmc &nbsp;provider (with just enumeration enabled)at <a href="https://github.com/praveen-pk/lmi-bmc">https://github.com/praveen-pk/lmi-bmc</a>. Please give this a spin and let me know your comments/suggestions.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>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. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><p class=MsoNormal><span style='color:#1F497D'>Thank you<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Praveen K Paladugu<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Dell Linux Engineering<o:p></o:p></span></p></div><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><a name="_____replyseparator"></a><b>From:</b> openlmi-devel-bounces@lists.fedorahosted.org [mailto:openlmi-devel-bounces@lists.fedorahosted.org] <b>On Behalf Of </b>Paladugu, Praveen<br><b>Sent:</b> Monday, May 05, 2014 5:06 PM<br><b>To:</b> jsafrane@redhat.com; openlmi-devel@lists.fedorahosted.org<br><b>Subject:</b> RE: A provider for publishing Management Controller (Service Processor) information<o:p></o:p></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Jan<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Thanks for the Comments!! <o:p></o:p></p><p class=MsoNormal>Updated the MOF as recommended (for the most part).<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>An Array of IPaddresses was recommended in the last thread, so updated the MOF accordingly. I pinged some folks on Dell&#8217;s Service Processor team to check if multiple IP addresses can be assigned a BMC NIC. Will update as soon as I hear something. <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>[Description(&quot;Model an Out of Band Management Controller and capture its features and capabilities&quot;)]<o:p></o:p></p><p class=MsoNormal>class LMI_BMC : CIM_ManagementController<o:p></o:p></p><p class=MsoNormal>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;This variable, should always capture the latest ipv4 IP/s addresses of BMC.&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string IP4Addresses[];<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;This variable, should always capture the latest ipv6 IP/s addresses of BMC.&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string IP6Addresses[];<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;The VLAN setting on the BMC NIC port.&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string VLAN;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;[Description(&quot;This variable will capture MAC address of the BMC.&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string PermanentMACAddress;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp; [Description(&#8220;If BMC provides any user friendly interfaces like http, ftp etc, this variable will capture the related URL/s to interact with BMC.&#8221;)]&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string BMC_URLs[];<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>/* COMMENT: &nbsp;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? */<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; /*<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #Capture this information in indexed IndentifyingDescriptions and OtheridentifyingInfo Arrays of CIM_LogicalDevice.<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #string Manufacturer_ID;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #string Manufacturer;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; #string Model; <o:p></o:p></p><p class=MsoNormal>*/<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&#8220;This variable will capture the version of the firmware installed on the BMC&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; &nbsp;string FirmwareVersion;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;[Description(&#8220;This Array will capture the list of protocols supported by the BMC&#8221;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; ArrayType (&#8220;Indexed&#8221;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; MaxLen (256),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; ModelCorrespondence {&#8220;LMI_BMC.SupportedProtoVersion&#8221;} &nbsp;]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string SupportedProtos[];<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;[Description(&#8220;This Array will capture the version of the supported protocol listed in the corresponding index of SupportedProtos &#8221;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; ArrayType (&#8220;Indexed&#8221;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; ModelCorrespondence {&#8220;LMI_BMC.SupportedProtos&#8221; } ]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string SupportedProtoVersion[];<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>/*COMMENT: &nbsp;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*/<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;Function to add a new IPv4 address to BMC.&quot;)&#8217;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; ValueMap (&#8220;0&#8221;,&#8221;1&#8221;,&#8221;2&#8221;)&#8217;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; Values (&#8220;Success&#8221;, &#8220;Failed&#8221;, &#8220;Invalid Argument&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; uint32&nbsp; &nbsp;set_IP4Address(<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the IP address of the BMC, to the input value&quot;)] <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string IP4Address, <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the netmask to this input value&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Netmask, <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the gateway this input value&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Gateway);<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;Function to assign a new IPv6 address to BMC.&quot;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; ValueMap (&#8220;0&#8221;,&#8221;1&#8221;,&#8221;2&#8221;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; Values (&#8220;Success&#8221;, &#8220;Failed&#8221;, &#8220;Invalid Argument&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; uint32&nbsp; set_IP6Address(<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the IP address of the BMC, to the input value&quot;)] <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string IP6Address, <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the netmask to this input value&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Netmask, <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description (&quot;Set the gateway on BMC to this input value&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Gateway);<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; [Description(&quot;Function to assign a VLAN ID to BMC.&quot;)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; ValueMap (&#8220;0&#8221;,&#8221;1&#8221;,&#8221;2&#8221;)<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp; Values (&#8220;Success&#8221;, &#8220;Failed&#8221;, &#8220;Invalid Argument&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; uint32 set_VLAN(<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [IN, Description(&quot;Set the VLAN ID of BMC NIC to this input value&quot;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string Vlan<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;[Description(&quot;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.&quot;),<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; ValueMap (&#8220;0&#8221;, &#8220;1&#8221;,&#8221;2&#8221;,&#8221;3&#8221;,&#8221;4&#8221;), <o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;Values (&#8220;Dedicated&#8221;, &#8220;LOM1&#8221;,&#8221;LOM2&#8221;,&#8221;LOM3&#8221;,&#8221;LOM4&#8221;)]<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; string get_active_nic();<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp; <o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>};<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p style='margin-bottom:12.0pt'>Thank you<br>Praveen K Paladugu<br>Dell Linux Engineering<br><br><o:p></o:p></p></div></body></html>