Example #1
0
 def test_lookup_fail(self):
     dom_xml = u'''<vm>
         <device id='alias0' type='fancydev'>
             <mode type="int">42</mode>
         </device>
     </vm>'''
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     with self.md_desc.device(id='alias999', type='fancydev') as dev:
         self.assertEqual(dev, {})
Example #2
0
 def test_lookup_partial_attributes(self):
     dom_xml = u'''<vm>
         <device id='alias0' type='fancydev'>
             <mode type="int">42</mode>
         </device>
         <device id='alias1'>
             <mode type="int">33</mode>
         </device>
     </vm>'''
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     with self.md_desc.device(type='fancydev') as dev:
         self.assertEqual(dev, {'mode': 42})
Example #3
0
 def test_lookup_ambiguous_raises(self):
     dom_xml = u'''<vm>
         <device type='fancydev'>
             <mode type="int">1</mode>
         </device>
         <device type='fancydev'>
             <mode type="int">2</mode>
         </device>
     </vm>'''
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     with self.assertRaises(metadata.MissingDevice):
         with self.md_desc.device(type='fancydev'):
             pass
Example #4
0
 def test_lookup_multiple_devices(self):
     dom_xml = u'''<vm>
         <device id='alias0' type='devA' addr='pci_0000_00_1a_0'>
             <mode type="int">1200</mode>
         </device>
         <device id='alias1' type='devA' addr='pci_0000_00_02_0'>
             <mode type="int">900</mode>
         </device>
         <device id='alias2' type='devC' addr='pci_0000_00_1f_2'>
             <mode type="int">1440</mode>
         </device>
     </vm>'''
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     with self.md_desc.device(addr='pci_0000_00_02_0') as dev:
         self.assertEqual(dev, {'mode': 900})
Example #5
0
    def test_clear(self):
        dom_xml = u'''<vm>
            <device id='alias0'>
                <mode>12</mode>
            </device>
        </vm>'''
        expected_xml = u'''<vm/>'''
        dom = FakeDomain.with_metadata(dom_xml)
        self.md_desc.load(dom)
        with self.md_desc.device(id='alias0') as dev:
            dev.clear()
        self.md_desc.dump(dom)

        produced_xml = dom.metadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
                                    xmlconstants.METADATA_VM_VDSM_URI, 0)
        self.assertXMLEqual(produced_xml, expected_xml)
Example #6
0
 def test_all_devices(self):
     dom_xml = u'''<vm>
         <device type='fancydev'>
             <mode type="int">1</mode>
         </device>
         <device class='otherdev' foo='1'>
             <mode type="float">0.333</mode>
         </device>
         <device type='fancydev' extra='ignored'>
             <mode type="int">2</mode>
         </device>
     </vm>'''
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     assert list(self.md_desc.all_devices(type='fancydev')) == \
         [{'mode': 1}, {'mode': 2}]
Example #7
0
    def test_all_devices_copy_data(self):
        dom_xml = u'''<vm>
            <device type='fancydev'>
                <mode type="int">1</mode>
            </device>
            <device type='fancydev' extra='ignored'>
                <mode type="int">2</mode>
            </device>
        </vm>'''
        dom = FakeDomain.with_metadata(dom_xml)
        self.md_desc.load(dom)

        for dev in self.md_desc.all_devices(type='fancydev'):
            dev['mode'] = 3

        assert list(self.md_desc.all_devices(type='fancydev')) == \
            [{'mode': 1}, {'mode': 2}]
Example #8
0
    def test_update_device(self, dom_xml):
        expected_res = {
            'flag': True,
            'mode': 42,
        }
        dom = FakeDomain.with_metadata(dom_xml)
        self.md_desc.load(dom)
        with self.md_desc.device(id='alias0') as dev:
            dev['mode'] = 42
            dev['flag'] = True
            dev.pop('removeme', None)
        self.md_desc.dump(dom)

        # troubleshooting helper should the test fail
        print(
            dom.metadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
                         xmlconstants.METADATA_VM_VDSM_URI, 0))
        # our assertXMLEqual consider the order of XML attributes
        # significant, while according to XML spec is not.
        with self.md_desc.device(id='alias0') as dev:
            self.assertEqual(dev, expected_res)
Example #9
0
 def test_get_device(self, dom_xml, expected_dev):
     dom = FakeDomain.with_metadata(dom_xml)
     self.md_desc.load(dom)
     with self.md_desc.device(id='alias0') as dev:
         self.assertEqual(dev, expected_dev)