__all__ = ["BMC", "BMCInfo", "BMCGuid", "LanBMC"]

class BMCInfo:
    device_id = None
    device_revision = None
    firmware_revision = None
    ipmi_version = None
    is_chassis_device = None
    is_bridge = None
    is_ipmb_event_generator = None
    is_ipmb_event_receiver = None
    is_fru_inventory_device = None
    is_sel_device = None
    is_sdr_repository_device = None
    is_sensor_device = None
    manufacturer_id = None
    product_id = None
    device_available = None
    aux_firmware_revision_info = None

    def __init__(self, **entries):
        self.__dict__.update(entries)

    def __eq__(self, other):
        return self.__dict__ == other.__dict__

class BMCGuid:
    system_guid = None
    time_stamp = None

    def __init__(self, **entries):
        self.__dict__.update(entries)

    def __eq__(self, other):
        return self.__dict__ == other.__dict__
        
class BMC(object):
    """A BMC - what you're talking to when you're talking IPMI"""
    def __init__(self, handle_class, tool_class, command_list):
        self.handle = handle_class(self, tool_class, command_list)

    def info(self):
        return self.handle.get_device_id()

    def guid(self):
        return self.handle.get_system_guid()

    def sdr_list(self):
        return self.handle.get_sdr_list()

class LanBMC(BMC):
    """A BMC that's accessed over the LAN"""
    def __init__(self,
                    hostname,
                    username = None,
                    password = None,
                    authtype = None,
                    level = None,
                    port = 623,
                    **kwargs):

        self.params = {
            'hostname' : hostname,
            'username' : username,
            'password' : password,
            'authtype' : authtype,
            'level'    : level,
            'port'     : port
        }

        super(LanBMC, self).__init__(**kwargs)

@@ -1,8 +1,33 @@
+%22%22%22Stuff about BMC's%22%22%22%0A%0A
 __all__ 
@@ -84,16 +84,145 @@
 MCInfo:%0A
+    %22%22%22Describes a BMC info record result%0A    %0A    %22bmc info%22 is just the ipmitool name - this is really %22get device id%22%0A    %22%22%22%0A
     devi
@@ -700,32 +700,98 @@
 lf, **entries):%0A
+        %22%22%22each kwarg's value to an attribute of the same name%22%22%22%0A
         self.__d
@@ -854,62 +854,263 @@
     
-return self.__dict__ == other.__dict__%0A%0Aclass BMCGuid:
+%22%22%22BMCInfo's are equivalent if their attributes are the same%22%22%22%0A        return self.__dict__ == other.__dict__%0A%0Aclass BMCGuid:%0A    %22%22%22Result record for bmc guid command%0A%0A    this is really %22get device guid%22 - bmc guid is the ipmitool command name.%0A    %22%22%22
 %0A   
@@ -1179,32 +1179,98 @@
 lf, **entries):%0A
+        %22%22%22each kwarg's value to an attribute of the same name%22%22%22%0A
         self.__d
@@ -1313,32 +1313,104 @@
 _(self, other):%0A
+        %22%22%22BMCGuid's are equivalent if their attributes are the same%22%22%22%0A
         return s
@@ -1534,75 +1534,480 @@
 IPMI
-%22%22%22%0A    def __init__(self, handle_class, tool_class, command_list):
+%0A    %0A    I think this should ultimately be the interface for all commands issued%0A    from IPMI.. or maybe just commands %22about the bmc%22. This needs to be%0A    resolved!%0A    %22%22%22%0A    def __init__(self, handle_class, tool_class, command_list):%0A        %22%22%22%0A        Arguments:%0A        handle_class -- class to use for Handles created%0A        tool_class -- class to use for the Tool for each handle%0A        command_list -- the list of commands available for this BMC%0A        %22%22%22
 %0A   
@@ -2083,32 +2083,65 @@
 def info(self):%0A
+        %22%22%22Get the BMC's info%22%22%22%0A
         return s
@@ -2180,32 +2180,65 @@
 def guid(self):%0A
+        %22%22%22Get the BMC's guid%22%22%22%0A
         return s
@@ -2283,32 +2283,78 @@
 sdr_list(self):%0A
+        %22%22%22Get a list of SDR's for the BMC%22%22%22%0A
         return s

add docstring and cleanup pylint warnings