def get_dependencies(self, product_name): """ найти зависомости для продукта :param product_name: :return: :raise Exception: """ if not isinstance(product_name, str): raise Exception("Expected string. got '{0}'".format(product_name)) product = Core.get_instance().feed.get_product(product_name) result = dict() if product is None: result["product"] = "None" return result result["product"] = product.to_dict(True) parameter_manager = ParametersManager([product]) result['parameters'] = [product_parameter.to_dict() for product_parameter in parameter_manager.get_for_product(product)] if product.is_installed(): result['can_upgrade'] = bool(product.upgrade_command) result['last_version'] = product.version == product.get_installed_version() else: result['can_upgrade'] = True result['last_version'] = False dependencies = product.get_dependencies() if dependencies is None or len(dependencies) == 0: return result result["and"] = self._get_dependencies_for_node(dependencies) return result
def get_dependencies(self, product_name): """ найти зависомости для продукта :param product_name: :return: :raise Exception: """ if not isinstance(product_name, str): raise Exception("Expected string. got '{0}'".format(product_name)) product = Core.get_instance().feed.get_product(product_name) result = dict() if product is None: raise DependencyException( "We cant't find the product '{0}'".format(product_name), product_name) result["product"] = product.to_dict(True) parameter_manager = ParametersManager(self.core, [product]) result['parameters'] = [ product_parameter.to_dict() for product_parameter in parameter_manager.get_for_product(product) ] if product.is_installed(): result['can_upgrade'] = bool(product.upgrade_command) result[ 'last_version'] = product.version == product.get_installed_version( ) else: result['can_upgrade'] = True result['last_version'] = False dependencies = product.get_dependencies() if isinstance(product, Application): # if application we generate dependency from spec params engines = [] databases = [] dependencies = [] for i in product.engines: engines.append(i['engine']) if product.database_type is not None: for i in product.database_type: databases.append(i) databases_deps = databases[0] if len(databases) > 1: databases_deps = OrderedDict() databases_deps["or"] = databases dependencies.append(databases_deps) engines_deps = engines[0] if len(engines) > 1: engines_deps = OrderedDict() engines_deps["or"] = engines dependencies.append(engines_deps) if dependencies is None or len(dependencies) == 0: return result result["and"] = self._get_dependencies_for_node(dependencies) return result