def test_recreate_fails(self, mock_service_create):
     service_obj = service.Service(context=self.context)
     service_obj.host = 'fake-host'
     service_obj.create()
     self.assertRaises(exception.ObjectActionError, service_obj.create)
     mock_service_create(self.context, {'host': 'fake-host',
                                      'version': fake_service['version']})
示例#2
0
 def _test_destroy(self):
     self.mox.StubOutWithMock(db, 'service_destroy')
     db.service_destroy(self.context, 123)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj.id = 123
     service_obj.destroy(self.context)
示例#3
0
 def _test_destroy(self):
     ctxt = context.get_admin_context()
     self.mox.StubOutWithMock(db, 'service_destroy')
     db.service_destroy(ctxt, 123)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj.id = 123
     service_obj.destroy(ctxt)
示例#4
0
 def test_create(self):
     self.mox.StubOutWithMock(db, 'service_create')
     db.service_create(self.context, {'host': 'fake-host'}).AndReturn(
         fake_service)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj.host = 'fake-host'
     service_obj.create(self.context)
     self.assertEqual(fake_service['id'], service_obj.id)
示例#5
0
 def test_save(self):
     self.mox.StubOutWithMock(db, 'service_update')
     db.service_update(self.context, 123, {'host': 'fake-host'}).AndReturn(
         fake_service)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj.id = 123
     service_obj.host = 'fake-host'
     service_obj.save(self.context)
示例#6
0
 def test_get_by_service(self, cn_get_by_svc_id):
     cn_get_by_svc_id.return_value = [fake_compute_node]
     fake_service = service.Service(id=123)
     computes = compute_node.ComputeNodeList.get_by_service(self.context,
                                                            fake_service)
     self.assertEqual(1, len(computes))
     self.compare_obj(computes[0], fake_compute_node,
                      subs=self.subs(),
                      comparators=self.comparators())
示例#7
0
 def test_get_by_service(self, service_get):
     service_get.return_value = {'compute_node': [fake_compute_node]}
     fake_service = service.Service(id=123)
     computes = compute_node.ComputeNodeList.get_by_service(
         self.context, fake_service)
     self.assertEqual(1, len(computes))
     self.compare_obj(computes[0],
                      fake_compute_node,
                      comparators={'stats': self.json_comparator})
 def test_save(self, mock_service_update, mock_notify):
     service_obj = service.Service(context=self.context)
     service_obj.id = 123
     service_obj.host = 'fake-host'
     service_obj.save()
     self.assertEqual(service.SERVICE_VERSION, service_obj.version)
     mock_service_update.assert_called_once_with(
         self.context, 123, {'host': 'fake-host',
                             'version': fake_service['version']})
示例#9
0
 def test_recreate_fails(self):
     self.mox.StubOutWithMock(db, 'service_create')
     db.service_create(self.context, {'host': 'fake-host'}).AndReturn(
         fake_service)
     self.mox.ReplayAll()
     service_obj = service.Service(context=self.context)
     service_obj.host = 'fake-host'
     service_obj.create()
     self.assertRaises(exception.ObjectActionError, service_obj.create)
示例#10
0
 def service_get_by_compute_host(self, context, host_name):
     db_service = self.cells_rpcapi.service_get_by_compute_host(context,
                                                                host_name)
     # NOTE(danms): Currently cells does not support objects as
     # return values, so just convert the db-formatted service objects
     # to new-world objects here
     if db_service:
         return service_obj.Service._from_db_object(context,
                                                    service_obj.Service(),
                                                    db_service)
示例#11
0
 def test_service_delete(self):
     with contextlib.nested(
             mock.patch.object(service_obj.Service,
                               'get_by_id',
                               return_value=service_obj.Service()),
             mock.patch.object(service_obj.Service,
                               'destroy')) as (get_by_id, destroy):
         self.host_api.service_delete(self.ctxt, 1)
         get_by_id.assert_called_once_with(self.ctxt, 1)
         destroy.assert_called_once_with()
示例#12
0
 def test_create(self, mock_service_create):
     service_obj = service.Service(context=self.context)
     service_obj.host = 'fake-host'
     service_obj.uuid = uuidsentinel.service2
     service_obj.create()
     self.assertEqual(fake_service['id'], service_obj.id)
     self.assertEqual(service.SERVICE_VERSION, service_obj.version)
     mock_service_create.assert_called_once_with(
                    self.context, {'host': 'fake-host',
                                   'uuid': uuidsentinel.service2,
                                   'version': fake_service['version']})
示例#13
0
 def test_compute_node(self):
     self.mox.StubOutWithMock(db, 'compute_node_get_by_service_id')
     db.compute_node_get_by_service_id(self.context, 123).AndReturn(
         test_compute_node.fake_compute_node)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj._context = self.context
     service_obj.id = 123
     compare(service_obj.compute_node, test_compute_node.fake_compute_node)
     # Make sure it doesn't re-fetch this
     service_obj.compute_node
示例#14
0
 def test_create(self):
     self.mox.StubOutWithMock(db, 'service_create')
     db.service_create(self.context, {'host': 'fake-host',
                                      'version': fake_service['version']}
                       ).AndReturn(fake_service)
     self.mox.ReplayAll()
     service_obj = service.Service(context=self.context)
     service_obj.host = 'fake-host'
     service_obj.create()
     self.assertEqual(fake_service['id'], service_obj.id)
     self.assertEqual(service.SERVICE_VERSION, service_obj.version)
示例#15
0
    def test_from_db_object_without_uuid_generates_one(self, generate_uuid):
        values = _fake_service(uuid=None, id=None)
        db_service = db.api.service_create(self.context, values)

        s = service.Service()
        service.Service._from_db_object(self.context, s, db_service)
        self.assertEqual(uuidsentinel.service4, s.uuid)

        # Check the DB too
        db_service2 = db.api.service_get(self.context, s.id)
        self.assertEqual(s.uuid, db_service2['uuid'])
示例#16
0
 def test_save(self):
     self.mox.StubOutWithMock(db, 'service_update')
     db.service_update(self.context, 123, {
         'host': 'fake-host',
         'version': 1
     }).AndReturn(fake_service)
     self.mox.ReplayAll()
     service_obj = service.Service(context=self.context)
     service_obj.id = 123
     service_obj.host = 'fake-host'
     service_obj.save()
     self.assertEqual(service.SERVICE_VERSION, service_obj.version)
示例#17
0
 def test_compute_node(self, mock_get):
     fake_compute_node = objects.ComputeNode._from_db_object(
         self.context, objects.ComputeNode(),
         test_compute_node.fake_compute_node)
     mock_get.return_value = [fake_compute_node]
     service_obj = service.Service(id=123,
                                   host="fake-host",
                                   binary="nova-compute")
     service_obj._context = self.context
     self.assertEqual(service_obj.compute_node, fake_compute_node)
     # Make sure it doesn't re-fetch this
     service_obj.compute_node
     mock_get.assert_called_once_with(self.context, 'fake-host')
示例#18
0
 def test_compute_node(self):
     self.mox.StubOutWithMock(db, 'compute_node_get_by_service_id')
     db.compute_node_get_by_service_id(self.context, 123).AndReturn(
         test_compute_node.fake_compute_node)
     self.mox.ReplayAll()
     service_obj = service.Service()
     service_obj._context = self.context
     service_obj.id = 123
     self.compare_obj(service_obj.compute_node,
                      test_compute_node.fake_compute_node,
                      allow_missing=OPTIONAL,
                      comparators={'stats': self.json_comparator})
     # Make sure it doesn't re-fetch this
     service_obj.compute_node
示例#19
0
    def test_get_by_id_with_host_field_not_in_db(self, mock_cn_get,
                                                 mock_obj_svc_get):
        fake_compute_node_with_no_host = fake_compute_node.copy()
        host = fake_compute_node_with_no_host.pop('host')
        fake_service = service.Service(id=123)
        fake_service.host = host

        mock_cn_get.return_value = fake_compute_node_with_no_host
        mock_obj_svc_get.return_value = fake_service

        compute = compute_node.ComputeNode.get_by_id(self.context, 123)
        self.compare_obj(compute, fake_compute_node,
                         subs=self.subs(),
                         comparators=self.comparators())
示例#20
0
    def test_obj_make_compatible_with_icehouse_computes(self):
        service_obj = service.Service(context=self.context, **fake_service)
        compute_node_obj = compute_node.ComputeNode(host=fake_service['host'])
        service_obj.compute_node = compute_node_obj
        service_primitive = service_obj.obj_to_primitive()

        # Icehouse versions :
        #   Service : 1.2
        #   ComputeNode : 1.3
        service_obj.obj_make_compatible(service_primitive['nova_object.data'],
                                        '1.2')
        self.assertEqual(
            '1.3', service_primitive['nova_object.data']['compute_node']
            ['nova_object.version'])
示例#21
0
 def test_compute_node(self):
     fake_compute_node = objects.ComputeNode._from_db_object(
         self.context, objects.ComputeNode(),
         test_compute_node.fake_compute_node)
     self.mox.StubOutWithMock(objects.ComputeNodeList, 'get_all_by_host')
     objects.ComputeNodeList.get_all_by_host(
         self.context, 'fake-host').AndReturn([fake_compute_node])
     self.mox.ReplayAll()
     service_obj = service.Service(id=123,
                                   host="fake-host",
                                   binary="nova-compute")
     service_obj._context = self.context
     self.assertEqual(service_obj.compute_node, fake_compute_node)
     # Make sure it doesn't re-fetch this
     service_obj.compute_node
示例#22
0
    def test_get_by_host_and_nodename_not_found(self, cn_get_by_h_and_n,
                                                svc_get_by_ch,
                                                cn_get_by_svc_id,
                                                svc_get_by_id):
        cn_get_by_h_and_n.side_effect = exception.ComputeHostNotFound(
            host='fake')
        fake_service = service.Service(id=123)
        fake_service.host = 'fake'
        another_node = fake_old_compute_node.copy()
        another_node['hypervisor_hostname'] = 'elsewhere'
        svc_get_by_ch.return_value = fake_service
        cn_get_by_svc_id.return_value = [another_node]
        svc_get_by_id.return_value = fake_service

        self.assertRaises(exception.ComputeHostNotFound,
                          compute_node.ComputeNode.get_by_host_and_nodename,
                          self.context, 'fake', 'vm.danplanet.com')
示例#23
0
    def test_get_by_host_and_nodename_with_old_compute(self, cn_get_by_h_and_n,
                                                       svc_get_by_ch,
                                                       cn_get_by_svc_id,
                                                       svc_get_by_id):
        cn_get_by_h_and_n.side_effect = exception.ComputeHostNotFound(
            host='fake')
        fake_service = service.Service(id=123)
        fake_service.host = 'fake'
        svc_get_by_ch.return_value = fake_service
        cn_get_by_svc_id.return_value = [fake_old_compute_node]
        svc_get_by_id.return_value = fake_service

        compute = compute_node.ComputeNode.get_by_host_and_nodename(
            self.context, 'fake', 'vm.danplanet.com')
        # NOTE(sbauza): Result is still converted to new style Compute
        self.compare_obj(compute, fake_compute_node,
                         subs=self.subs(),
                         comparators=self.comparators())
示例#24
0
    def service_update(self, context, host_name, binary, params_to_update):
        """Used to enable/disable a service. For compute services, setting to
        disabled stops new builds arriving on that host.

        :param host_name: the name of the host machine that the service is
                          running
        :param binary: The name of the executable that the service runs as
        :param params_to_update: eg. {'disabled': True}
        """
        db_service = self.cells_rpcapi.service_update(
            context, host_name, binary, params_to_update)
        # NOTE(danms): Currently cells does not support objects as
        # return values, so just convert the db-formatted service objects
        # to new-world objects here
        if db_service:
            return service_obj.Service._from_db_object(context,
                                                       service_obj.Service(),
                                                       db_service)
示例#25
0
    def test_get_all_by_host_with_old_compute(self, cn_get_all_by_host,
                                              svc_get_by_ch, cn_get_by_svc_id,
                                              svc_get_by_id):
        cn_get_all_by_host.side_effect = exception.ComputeHostNotFound(
            host='fake')
        fake_service = service.Service(id=123)
        fake_service.host = 'fake'
        svc_get_by_ch.return_value = fake_service
        cn_get_by_svc_id.return_value = [fake_old_compute_node]
        svc_get_by_id.return_value = fake_service

        computes = compute_node.ComputeNodeList.get_all_by_host(
            self.context, 'fake')
        self.assertEqual(1, len(computes))
        # NOTE(sbauza): Result is still converted to new style Compute
        self.compare_obj(computes[0],
                         fake_compute_node,
                         subs=self.subs(),
                         comparators=self.comparators())
示例#26
0
 def test_load_when_orphaned(self):
     service_obj = service.Service()
     service_obj.id = 123
     self.assertRaises(exception.OrphanedObjectError, getattr, service_obj,
                       'compute_node')
示例#27
0
 def test_set_id_failure(self, db_mock):
     service_obj = service.Service()
     service_obj.create(self.context)
     self.assertRaises(exception.ReadOnlyFieldError, setattr, service_obj,
                       'id', 124)
示例#28
0
 def test_set_id_failure(self, db_mock):
     service_obj = service.Service(context=self.context,
                                   binary='nova-compute')
     service_obj.create()
     self.assertRaises(ovo_exc.ReadOnlyFieldError, setattr, service_obj,
                       'id', 124)
示例#29
0
 def _test_destroy(self, mock_service_destroy):
     service_obj = service.Service(context=self.context)
     service_obj.id = 123
     service_obj.destroy()
     mock_service_destroy.assert_called_once_with(self.context, 123)
示例#30
0
 def test_obj_make_compatible_from_manifest_strips_uuid(self):
     s = service.Service()
     primitive = {'uuid': uuidsentinel.service}
     s.obj_make_compatible_from_manifest(primitive, '1.20', mock.Mock())
     self.assertNotIn('uuid', primitive)