def get_stack_version_before_packages_installed(self): """ This works in a lazy way (calculates the version first time and stores it). If you need to recalculate the version explicitly set: Script.stack_version_from_distro_select = None before the call. However takes a bit of time, so better to avoid. :return: stack version including the build number. e.g.: 2.3.4.0-1234. """ # preferred way is to get the actual selected version of current component component_name = self.get_component_name() if not Script.stack_version_from_distro_select and component_name: from resource_management.libraries.functions import stack_select Script.stack_version_from_distro_select = stack_select.get_stack_version_before_install( component_name) # If <stack-selector-tool> has not yet been done (situations like first install), # we can use <stack-selector-tool> version itself. if not Script.stack_version_from_distro_select: Script.stack_version_from_distro_select = packages_analyzer.getInstalledPackageVersion( stack_tools.get_stack_tool_package( stack_tools.STACK_SELECTOR_NAME)) return Script.stack_version_from_distro_select
def get_stack_version_before_packages_installed(self): """ This works in a lazy way (calculates the version first time and stores it). If you need to recalculate the version explicitly set: Script.stack_version_from_distro_select = None before the call. However takes a bit of time, so better to avoid. :return: stack version including the build number. e.g.: 2.3.4.0-1234. """ # preferred way is to get the actual selected version of current component component_name = self.get_component_name() if not Script.stack_version_from_distro_select and component_name: from resource_management.libraries.functions import stack_select Script.stack_version_from_distro_select = stack_select.get_stack_version_before_install( component_name) # If <stack-selector-tool> has not yet been done (situations like first install), # we can use <stack-selector-tool> version itself. # Wildcards cause a lot of troubles with installing packages, if the version contains wildcards we should try to specify it. if not Script.stack_version_from_distro_select or '*' in Script.stack_version_from_distro_select: # FIXME: this method is not reliable to get stack-selector-version # as if there are multiple versions installed with different <stack-selector-tool>, we won't detect the older one (if needed). Script.stack_version_from_distro_select = packages_analyzer.getInstalledPackageVersion( stack_tools.get_stack_tool_package( stack_tools.STACK_SELECTOR_NAME)) return Script.stack_version_from_distro_select
def get_stack_version_before_packages_installed(self): """ This works in a lazy way (calculates the version first time and stores it). If you need to recalculate the version explicitly set: Script.stack_version_from_distro_select = None before the call. However takes a bit of time, so better to avoid. :return: stack version including the build number. e.g.: 2.3.4.0-1234. """ # preferred way is to get the actual selected version of current component component_name = self.get_component_name() if not Script.stack_version_from_distro_select and component_name: from resource_management.libraries.functions import stack_select Script.stack_version_from_distro_select = stack_select.get_stack_version_before_install(component_name) # If <stack-selector-tool> has not yet been done (situations like first install), # we can use <stack-selector-tool> version itself. # Wildcards cause a lot of troubles with installing packages, if the version contains wildcards we should try to specify it. if not Script.stack_version_from_distro_select or '*' in Script.stack_version_from_distro_select: # FIXME: this method is not reliable to get stack-selector-version # as if there are multiple versions installed with different <stack-selector-tool>, we won't detect the older one (if needed). Script.stack_version_from_distro_select = packages_analyzer.getInstalledPackageVersion( stack_tools.get_stack_tool_package(stack_tools.STACK_SELECTOR_NAME)) return Script.stack_version_from_distro_select
def test_get_installed_package_version_ubuntu(self, is_ubuntu_family_mock, checked_call_mock): is_ubuntu_family_mock.return_value = True checked_call_mock.return_value = (0, '1.2.3') result = packages_analyzer.getInstalledPackageVersion("package1") self.assertEqual(result, '1.2.3') self.assertEqual( checked_call_mock.call_args_list, [call("dpkg -s package1 | grep Version | awk '{print $2}'")])
def test_get_installed_package_version_centos_suse(self, is_ubuntu_family_mock, checked_call_mock): is_ubuntu_family_mock.return_value = False checked_call_mock.return_value = (0, '0.0.1-SNAPSHOT', '') result = packages_analyzer.getInstalledPackageVersion("package1") self.assertEqual(result, '0.0.1-SNAPSHOT') self.assertEqual(checked_call_mock.call_args_list, [ call( "rpm -q --queryformat '%{version}-%{release}' package1 | sed -e 's/\\.el[0-9]//g'", stderr=-1) ])
def test_get_installed_package_version_centos_suse(self, is_ubuntu_family_mock, checked_call_mock): is_ubuntu_family_mock.return_value = False checked_call_mock.return_value = (0, '0.0.1-SNAPSHOT','') result = packages_analyzer.getInstalledPackageVersion("package1") self.assertEqual(result, '0.0.1-SNAPSHOT') self.assertEqual(checked_call_mock.call_args_list, [call("rpm -q --queryformat '%{version}-%{release}' package1 | sed -e 's/\\.el[0-9]//g'", stderr=-1)])
def test_get_installed_package_version_ubuntu(self, is_ubuntu_family_mock, checked_call_mock): is_ubuntu_family_mock.return_value = True checked_call_mock.return_value = (0, '1.2.3','') result = packages_analyzer.getInstalledPackageVersion("package1") self.assertEqual(result, '1.2.3') self.assertEqual(checked_call_mock.call_args_list, [call("dpkg -s package1 | grep Version | awk '{print $2}'", stderr=-1)])