Skip to content

Commit

Permalink
Adds get_available_resource to hyperv driver
Browse files Browse the repository at this point in the history
Fixes Bug #1048263

update_available_resource was changed to get_available_resource.
This fix implements implements the method in the hyperv driver

Change-Id: Id018877c563aab7f75618ada318b6422ab06c7b7
  • Loading branch information
alexpilotti committed Sep 9, 2012
1 parent f14bf21 commit 0599406
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 25 deletions.
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 6 additions & 0 deletions nova/tests/test_hypervapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"""

import os
import platform
import shutil
import sys
import uuid
Expand Down Expand Up @@ -151,6 +152,11 @@ def tearDown(self):
finally:
super(HyperVAPITestCase, self).tearDown()

def test_get_available_resource(self):
dic = self._conn.get_available_resource()

self.assertEquals(dic['hypervisor_hostname'], platform.node())

def test_list_instances(self):
num_vms = self._hypervutils.get_vm_count()
instances = self._conn.list_instances()
Expand Down
4 changes: 2 additions & 2 deletions nova/virt/hyperv/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ def get_volume_connector(self, instance):
def poll_rescued_instances(self, timeout):
pass

def update_available_resource(self, context, host):
self._vmops.update_available_resource(context, host)
def get_available_resource(self):
return self._vmops.get_available_resource()

def update_host_status(self):
"""See xenapi_conn.py implementation."""
Expand Down
34 changes: 11 additions & 23 deletions nova/virt/hyperv/vmops.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"""
import multiprocessing
import os
import platform
import uuid

from nova import db
Expand Down Expand Up @@ -555,23 +556,17 @@ def _get_hypervisor_version(self):
LOG.info(_('Windows version: %s ') % version)
return version

def update_available_resource(self, context, host):
"""Updates compute manager resource info on ComputeNode table.
def get_available_resource(self):
"""Retrieve resource info.
This method is called as an periodic tasks and is used only
in live migration currently.
This method is called when nova-compute launches, and
as part of a periodic task.
:param ctxt: security context
:param host: hostname that compute manager is currently running
:returns: dictionary describing resources
"""
LOG.info(_('get_available_resource called'))

try:
service_ref = db.service_get_all_compute_by_host(context, host)[0]
except exception.NotFound:
raise exception.ComputeServiceUnavailable(host=host)

# Updating host information
# TODO(alexpilotti) implemented cpu_info
dic = {'vcpus': self._get_vcpu_total(),
'memory_mb': self._get_memory_mb_total(),
Expand All @@ -581,17 +576,10 @@ def update_available_resource(self, context, host):
'local_gb_used': self._get_local_gb_used(),
'hypervisor_type': "hyperv",
'hypervisor_version': self._get_hypervisor_version(),
'cpu_info': "unknown",
'service_id': service_ref['id'],
'disk_available_least': 1}

compute_node_ref = service_ref['compute_node']
if not compute_node_ref:
LOG.info(_('Compute_service record created for %s ') % host)
db.compute_node_create(context, dic)
else:
LOG.info(_('Compute_service record updated for %s ') % host)
db.compute_node_update(context, compute_node_ref[0]['id'], dic)
'hypervisor_hostname': platform.node(),
'cpu_info': 'unknown'}

return dic

def _cache_image(self, fn, target, fname, cow=False, Size=None,
*args, **kwargs):
Expand Down

0 comments on commit 0599406

Please sign in to comment.