コード例 #1
0
ファイル: ipmi.py プロジェクト: jhaam/confluent
 def read_inventory(self, component):
     invitems = []
     if component == 'all':
         for invdata in self.ipmicmd.get_inventory():
             if invdata[1] is None:
                 newinf = {'present': False, 'information': None}
             else:
                 sanitize_invdata(invdata[1])
                 newinf = {'present': True, 'information': invdata[1]}
             newinf['name'] = invdata[0]
             invitems.append(newinf)
     else:
         self.make_inventory_map()
         compname = self.invmap.get(component, None)
         if compname is None:
             self.output.put(msg.ConfluentTargetNotFound())
             return
         invdata = self.ipmicmd.get_inventory_of_component(compname)
         if invdata is None:
             newinf = {'present': False, 'information': None}
         else:
             sanitize_invdata(invdata)
             newinf = {'present': True, 'information': invdata}
         newinf['name'] = compname
         invitems.append(newinf)
     newinvdata = {'inventory': invitems}
     self.output.put(msg.KeyValueData(newinvdata, self.node))
コード例 #2
0
ファイル: ipmi.py プロジェクト: jhaam/confluent
 def read_sensors(self, sensorname):
     try:
         if sensorname == 'all':
             sensors = self.ipmicmd.get_sensor_descriptions()
             readings = []
             for sensor in filter(self.match_sensor, sensors):
                 try:
                     reading = self.ipmicmd.get_sensor_reading(
                         sensor['name'])
                 except pygexc.IpmiException as ie:
                     if ie.ipmicode == 203:
                         continue
                     raise
                 if hasattr(reading, 'health'):
                     reading.health = _str_health(reading.health)
                 readings.append(reading)
             self.output.put(msg.SensorReadings(readings, name=self.node))
         else:
             self.make_sensor_map()
             if sensorname not in self.sensormap:
                 self.output.put(
                     msg.ConfluentTargetNotFound(self.node,
                                                 'Sensor not found'))
                 return
             reading = self.ipmicmd.get_sensor_reading(
                 self.sensormap[sensorname])
             if hasattr(reading, 'health'):
                 reading.health = _str_health(reading.health)
             self.output.put(
                 msg.SensorReadings([reading],
                                    name=self.node))
     except pygexc.IpmiException:
         self.output.put(msg.ConfluentTargetTimeout(self.node))
コード例 #3
0
ファイル: ipmi.py プロジェクト: banuchka/confluent
 def handle_ntp(self):
     if self.element[3] == 'enabled':
         if 'read' == self.op:
             enabled = self.ipmicmd.get_ntp_enabled()
             self.output.put(msg.NTPEnabled(self.node, enabled))
             return
         elif 'update' == self.op:
             enabled = self.inputdata.ntp_enabled(self.node)
             self.ipmicmd.set_ntp_enabled(enabled == 'True')
             return
     elif self.element[3] == 'servers':
         if len(self.element) == 4:
             self.output.put(msg.ChildCollection('all'))
             size = len(self.ipmicmd.get_ntp_servers())
             for idx in range(1, size + 1):
                 self.output.put(msg.ChildCollection(idx))
         else:
             if 'read' == self.op:
                 if self.element[-1] == 'all':
                     servers = self.ipmicmd.get_ntp_servers()
                     self.output.put(msg.NTPServers(self.node, servers))
                     return
                 else:
                     idx = int(self.element[-1]) - 1
                     servers = self.ipmicmd.get_ntp_servers()
                     if len(servers) > idx:
                         self.output.put(
                             msg.NTPServer(self.node, servers[idx]))
                     else:
                         self.output.put(
                             msg.ConfluentTargetNotFound(
                                 self.node,
                                 'Requested NTP configuration not found'))
                     return
             elif self.op in ('update', 'create'):
                 if self.element[-1] == 'all':
                     servers = self.inputdata.ntp_servers(self.node)
                     for idx in servers:
                         self.ipmicmd.set_ntp_server(
                             servers[idx],
                             int(idx[-1]) - 1)
                     return
                 else:
                     idx = int(self.element[-1]) - 1
                     server = self.inputdata.ntp_server(self.node)
                     self.ipmicmd.set_ntp_server(server, idx)
                     return
コード例 #4
0
ファイル: ipmi.py プロジェクト: jxdn/confluent
 def read_inventory(self, component):
     errorneeded = False
     try:
         invitems = []
         if component == 'all':
             for invdata in self.ipmicmd.get_inventory():
                 if invdata[1] is None:
                     newinf = {'present': False, 'information': None}
                 else:
                     sanitize_invdata(invdata[1])
                     newinf = {'present': True, 'information': invdata[1]}
                 newinf['name'] = invdata[0]
                 invitems.append(newinf)
         else:
             self.make_inventory_map()
             compname = self.invmap.get(component, None)
             if compname is None:
                 self.output.put(msg.ConfluentTargetNotFound())
                 return
             invdata = self.ipmicmd.get_inventory_of_component(compname)
             if invdata is None:
                 newinf = {'present': False, 'information': None}
             else:
                 sanitize_invdata(invdata)
                 newinf = {'present': True, 'information': invdata}
             newinf['name'] = compname
             invitems.append(newinf)
     except ssl.SSLEOFError:
         errorneeded = msg.ConfluentNodeError(
             self.node, 'Unable to communicate with the https server on '
                        'the target BMC while trying to read extended '
                        'information')
     except exc.PubkeyInvalid:
         errorneeded = msg.ConfluentNodeError(
             self.node,
             'Extended information unavailable, mismatch detected between '
             'target certificate fingerprint and '
             'pubkeys.tls_hardwaremanager attribute')
     newinvdata = {'inventory': invitems}
     self.output.put(msg.KeyValueData(newinvdata, self.node))
     if errorneeded:
         self.output.put(errorneeded)