Beispiel #1
0
    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
Beispiel #2
0
    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