示例#1
0
 def test_set(self, mock_cmdgen):
     var_bind = (self.oid, self.value)
     mock_cmdgenerator = mock_cmdgen.return_value
     mock_cmdgenerator.setCmd.return_value = ("", None, 0, [var_bind])
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     client.set(self.oid, self.value)
     mock_cmdgenerator.setCmd.assert_called_once_with(
         mock.ANY, mock.ANY, var_bind)
示例#2
0
def get_capabilities_properties(d_info,
                                capa_keys,
                                gpu_ids,
                                fpga_ids=None,
                                **kwargs):
    """get capabilities properties

    This function returns a dictionary which contains keys
    and their values from the report.


    :param d_info: the dictionary of ipmitool parameters for accessing a node.
    :param capa_keys: a list of keys for additional capabilities properties.
    :param gpu_ids: the list of string contains <vendorID>/<deviceID>
    for GPU.
    :param fpga_ids: the list of string contains <vendorID>/<deviceID>
    for CPU FPGA.
    :param kwargs: additional arguments passed to scciclient.
    :returns: a dictionary which contains keys and their values.
    """

    snmp_client = snmp.SNMPClient(d_info['irmc_address'],
                                  d_info['irmc_snmp_port'],
                                  d_info['irmc_snmp_version'],
                                  d_info['irmc_snmp_community'],
                                  d_info['irmc_snmp_security'])
    try:
        v = {}
        if 'rom_firmware_version' in capa_keys:
            v['rom_firmware_version'] = \
                snmp.get_bios_firmware_version(snmp_client)

        if 'irmc_firmware_version' in capa_keys:
            v['irmc_firmware_version'] = \
                snmp.get_irmc_firmware_version(snmp_client)

        if 'server_model' in capa_keys:
            v['server_model'] = snmp.get_server_model(snmp_client)

        # Sometime the server started but PCI device list building is
        # still in progress so system will response error. We have to wait
        # for some more seconds.
        if kwargs.get('sleep_flag', False) and \
                any(k in capa_keys for k in ('pci_gpu_devices', 'cpu_fpga')):
            time.sleep(5)

        if 'pci_gpu_devices' in capa_keys:
            v['pci_gpu_devices'] = ipmi.get_pci_device(d_info, gpu_ids)

        if fpga_ids is not None and 'cpu_fpga' in capa_keys:
            v['cpu_fpga'] = ipmi.get_pci_device(d_info, fpga_ids)

        if 'trusted_boot' in capa_keys:
            v['trusted_boot'] = ipmi.get_tpm_status(d_info)

        return v
    except (snmp.SNMPFailure, ipmi.IPMIFailure) as err:
        raise SCCIClientError('Capabilities inspection failed: %s' % err)
示例#3
0
 def test_set_err_engine(self, mock_cmdgen):
     var_bind = (self.oid, self.value)
     mock_cmdgenerator = mock_cmdgen.return_value
     mock_cmdgenerator.setCmd.return_value = ("engine error", None, 0,
                                              [var_bind])
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     self.assertRaises(snmp.SNMPFailure, client.set, self.oid, self.value)
     mock_cmdgenerator.setCmd.assert_called_once_with(
         mock.ANY, mock.ANY, var_bind)
示例#4
0
 def test___init__(self, mock_cmdgen):
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V1)
     mock_cmdgen.assert_called_once_with()
     self.assertEqual(self.address, client.address)
     self.assertEqual(self.port, client.port)
     self.assertEqual(snmp.SNMP_V1, client.version)
     self.assertIsNone(client.community)
     self.assertNotIn('security', client.__dict__)
     self.assertEqual(mock_cmdgen.return_value, client.cmd_gen)
示例#5
0
 def test_get_next(self, mock_cmdgen):
     var_bind = (self.oid, self.value)
     mock_cmdgenerator = mock_cmdgen.return_value
     mock_cmdgenerator.nextCmd.return_value = ("", None, 0,
                                               [[var_bind, var_bind]])
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     val = client.get_next(self.oid)
     self.assertEqual([self.value, self.value], val)
     mock_cmdgenerator.nextCmd.assert_called_once_with(
         mock.ANY, mock.ANY, self.oid)
示例#6
0
 def test_set_pdu_err(self, mock_cmdgen):
     var_bind = (self.oid, self.value)
     error_status = mock.Mock()
     error_status.prettyPrint = lambda: "pdu error"
     mock_cmdgenerator = mock_cmdgen.return_value
     mock_cmdgenerator.setCmd.return_value = (None, error_status, 1,
                                              [var_bind])
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     self.assertRaises(snmp.SNMPFailure, client.set, self.oid, self.value)
     mock_cmdgenerator.setCmd.assert_called_once_with(
         mock.ANY, mock.ANY, var_bind)
示例#7
0
 def test_set_err_transport(self, mock_transport, mock_cmdgen):
     mock_transport.side_effect = snmp_error.PySnmpError
     mock_cmdgenerator = mock_cmdgen.return_value
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     self.assertRaises(snmp.SNMPFailure, client.set, self.oid, self.value)
     self.assertFalse(mock_cmdgenerator.setCmd.called)
示例#8
0
 def test__get_transport_err(self, mock_transport, mock_cmdgen):
     mock_transport.side_effect = snmp_error.PySnmpError()
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     self.assertRaises(snmp_error.PySnmpError, client._get_transport)
     mock_cmdgen.assert_called_once_with()
     mock_transport.assert_called_once_with((client.address, client.port))
示例#9
0
 def test__get_transport(self, mock_transport, mock_cmdgen):
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     client._get_transport()
     mock_cmdgen.assert_called_once_with()
     mock_transport.assert_called_once_with((client.address, client.port))
示例#10
0
 def test__get_auth_v3(self, mock_user, mock_cmdgen):
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V3)
     client._get_auth()
     mock_cmdgen.assert_called_once_with()
     mock_user.assert_called_once_with(client.security)
示例#11
0
 def test__get_auth_v2c(self, mock_community, mock_cmdgen):
     client = snmp.SNMPClient(self.address, self.port, snmp.SNMP_V2C)
     client._get_auth()
     mock_cmdgen.assert_called_once_with()
     mock_community.assert_called_once_with(client.community, mpModel=1)