コード例 #1
0
def get_test_node(ctxt, **kw):
    """Return a Node object with appropriate attributes.

    NOTE: The object leaves the attributes marked as changed, such
    that a create() could be used to commit it to the DB.
    """
    kw['object_type'] = 'node'
    get_db_node_checked = check_keyword_arguments(db_utils.get_test_node)
    db_node = get_db_node_checked(**kw)

    # Let DB generate ID if it isn't specified explicitly
    if 'id' not in kw:
        del db_node['id']
    node = objects.Node(ctxt)
    for key in db_node:
        if key == 'traits':
            # convert list of strings to object
            raw_traits = db_node['traits']
            trait_list = []
            for raw_trait in raw_traits:
                trait = objects.Trait(ctxt, trait=raw_trait)
                trait_list.append(trait)
            node.traits = objects.TraitList(ctxt, objects=trait_list)
            node.traits.obj_reset_changes()
        else:
            setattr(node, key, db_node[key])
    return node
コード例 #2
0
    def test_get_trait_names(self):
        trait = objects.Trait(context=self.context,
                              node_id=self.fake_trait['node_id'],
                              trait=self.fake_trait['trait'])
        trait_list = objects.TraitList(context=self.context, objects=[trait])

        result = trait_list.get_trait_names()

        self.assertEqual([self.fake_trait['trait']], result)
コード例 #3
0
ファイル: test_node.py プロジェクト: bestjie/ironic
    def test_traits_supported_set(self):
        # traits set, no change required.
        node = obj_utils.get_test_node(self.ctxt, **self.fake_node)
        traits = objects.TraitList(objects=[objects.Trait('CUSTOM_TRAIT')])
        traits.obj_reset_changes()
        node.traits = traits
        node.obj_reset_changes()

        node._convert_to_version("1.23")

        self.assertEqual(traits, node.traits)
        self.assertEqual({}, node.obj_get_changes())
コード例 #4
0
    def test_create(self, mock_add_trait):
        trait = objects.Trait(context=self.context,
                              node_id=self.node_id,
                              trait="fake")

        mock_add_trait.return_value = self.fake_trait

        trait.create()

        mock_add_trait.assert_called_once_with(self.node_id, 'fake', '1.0')

        self.assertEqual(self.fake_trait['trait'], trait.trait)
        self.assertEqual(self.fake_trait['node_id'], trait.node_id)
コード例 #5
0
ファイル: test_node.py プロジェクト: tbludau/ironic
 def test_save_with_traits(self):
     uuid = self.fake_node['uuid']
     with mock.patch.object(self.dbapi, 'get_node_by_uuid',
                            autospec=True) as mock_get_node:
         mock_get_node.return_value = self.fake_node
         with mock.patch.object(self.dbapi, 'update_node',
                                autospec=True) as mock_update_node:
             n = objects.Node.get(self.context, uuid)
             trait = objects.Trait(self.context, node_id=n.id,
                                   trait='CUSTOM_1')
             n.traits = objects.TraitList(self.context, objects=[trait])
             self.assertRaises(exception.BadRequest, n.save)
             self.assertFalse(mock_update_node.called)
コード例 #6
0
    def test_as_dict(self):
        trait = objects.Trait(context=self.context,
                              node_id=self.fake_trait['node_id'],
                              trait=self.fake_trait['trait'])
        trait_list = objects.TraitList(context=self.context, objects=[trait])

        result = trait_list.as_dict()

        expected = {
            'objects': [{
                'node_id': self.fake_trait['node_id'],
                'trait': self.fake_trait['trait']
            }]
        }
        self.assertEqual(expected, result)
コード例 #7
0
ファイル: test_node.py プロジェクト: bestjie/ironic
 def test_create_with_traits(self):
     node = obj_utils.get_test_node(self.ctxt, **self.fake_node)
     trait = objects.Trait(self.context, node_id=node.id, trait='CUSTOM_1')
     node.traits = objects.TraitList(self.context, objects=[trait])
     self.assertRaises(exception.BadRequest, node.create)