Guru Meditation Reports broken without version_string

The versions from many openstack projects don't provide the
vendor_string,product_string,version_string_with_package.
We need to keep compatible with these projects.

Closes-Bug:#1456465
Change-Id: I688ef29b84541d3261f6b9395b3f591b276aa071
(cherry-picked from oslo-incubator commit
14874b8a836b9580a94a118ed535898cfa76362f)
This commit is contained in:
zhangchunlong1@huawei.com 2015-05-19 15:29:33 +08:00 committed by Davanum Srinivas
parent 7a6ccda607
commit 99a11312ed
2 changed files with 34 additions and 4 deletions

View File

@ -40,7 +40,21 @@ class PackageReportGenerator(object):
self.version_obj = version_obj
def __call__(self):
return vm.PackageModel(
self.version_obj.vendor_string(),
self.version_obj.product_string(),
self.version_obj.version_string_with_package())
if hasattr(self.version_obj, "vendor_string"):
vendor_string = self.version_obj.vendor_string()
else:
vendor_string = None
if hasattr(self.version_obj, "product_string"):
product_string = self.version_obj.product_string()
else:
product_string = None
if hasattr(self.version_obj, "version_string_with_package"):
version_string_with_package = self.version_obj.\
version_string_with_package()
else:
version_string_with_package = None
return vm.PackageModel(vendor_string, product_string,
version_string_with_package)

View File

@ -123,3 +123,19 @@ class TestOpenstackGenerators(base.BaseTestCase):
'vendor = Cheese Shoppe\n'
'version = 1.0.0')
self.assertEqual(target_str, six.text_type(model))
def test_package_report_generator_without_vendor_string(self):
class VersionObj(object):
def product_string(self):
return 'Sharp Cheddar'
def version_string_with_package(self):
return '1.0.0'
model = os_pgen.PackageReportGenerator(VersionObj())()
model.set_current_view_type('text')
target_str = ('product = Sharp Cheddar\n'
'vendor = None\n'
'version = 1.0.0')
self.assertEqual(target_str, six.text_type(model))