Exemplo n.º 1
0
    def initialize(self):
        self._log.info("Initializing project {} ...".format(self.name))

        if self.path is None:
            raise Exception("Project 'path' not defined: {}".format(self.name))

        flow_paths = [os.path.join(self.path, flow) for flow in self.flows]

        self._flow_loader = FlowLoader(flow_paths)

        for uri, path in self._flow_loader.flow_files.items():
            self._log.debug("{0} : {1}".format(uri, path))
Exemplo n.º 2
0
	def initialize(self):
		self._log.info("Initializing project {} ...".format(self.name))

		if self.path is None:
			raise Exception("Project 'path' not defined: {}".format(self.name))

		flow_paths = [os.path.join(self.path, flow) for flow in self.flows]

		self._flow_loader = FlowLoader(flow_paths)

		for uri, path in self._flow_loader.flow_files.items():
			self._log.debug("{0} : {1}".format(uri, path))
Exemplo n.º 3
0
class Project(object):
	def __init__(self, desc, name=None, logger=None, base_path=None):
		self._log = logger or woklogger.get_logger(_LOGGER_NAME)

		self.name = name or desc.get("name")

		self._flow_loader = None

		platform = desc.get("platform")

		self.path = desc.get("path")

		self.conf = desc.get("conf", default=Data.element)
		if isinstance(self.conf, basestring):
			self.conf = ConfigLoader(os.path.join(base_path or "", self.conf)).load()

		self.conf_rules = []
		if self.path is not None:
			self.conf_rules += [ConfRule(dict(set=[[rtconf.PROJECT_PATH, self.path]]), base_path, platform)]
		self.conf_rules += [ConfRule(rule, base_path, platform) for rule in desc.get("conf_rules", default=Data.list)]

		self.flows = desc.get("flows", default=Data.list)

	def extend(self, pdesc, base_path=None):
		platform = pdesc.get("platform")

		if platform is not None and "path" in pdesc:
			self.conf_rules += [ConfRule(dict(set=[[rtconf.PROJECT_PATH, pdesc["path"]]]), base_path, platform)]

		if "conf" in pdesc:
			if platform is None:
				self.conf.merge(pdesc["conf"])
			else:
				self.conf_rules += [ConfRule(dict(merge=pdesc["conf"]), base_path, platform)]

		self.conf_rules += [ConfRule(rule, base_path, platform) for rule in pdesc.get("conf_rules", default=Data.list)]
		self.flows += pdesc.get("flows", default=Data.list)

	def initialize(self):
		self._log.info("Initializing project {} ...".format(self.name))

		if self.path is None:
			raise Exception("Project 'path' not defined: {}".format(self.name))

		flow_paths = [os.path.join(self.path, flow) for flow in self.flows]

		self._flow_loader = FlowLoader(flow_paths)

		for uri, path in self._flow_loader.flow_files.items():
			self._log.debug("{0} : {1}".format(uri, path))

	def load_flow(self, flow_name, version=None):
		flow = self._flow_loader.load_from_canonical(flow_name, version=version)
		flow.project = self
		return flow

	def load_from_ref(self, ref):
		flow = self._flow_loader.load_from_ref(ref)
		flow.project = self
		return flow

	def get_conf(self, task_name=None, platform_name=None):
		conf = self.conf.clone()

		for rule in self.conf_rules:
			pname = conf.get(rtconf.PLATFORM_TARGET, platform_name)
			if rule.match(task_name=task_name, platform=pname):
				rule.apply(conf)

		if rtconf.PROJECT_PATH not in conf:
			conf[rtconf.PROJECT_PATH] = self.path

		return conf

	def _repr(self, sb, indent=0):
		sb += ["Project [{}]".format(self.name)]
		sb += ["  path={}".format(self.path)]
		sb += ["  flows={}".format(self.flows)]
		sb += ["  conf={}".format(self.conf)]
		sb += ["  conf_rules={}".format(self.conf_rules)]
		for platform_name in sorted(self._platforms.keys()):
			self._platforms[platform_name]._repr(sb, 2)

	def __repr__(self):
		sb = []
		self._repr(sb)
		return "\n".join(sb)
Exemplo n.º 4
0
class Project(object):
    def __init__(self, desc, name=None, logger=None, base_path=None):
        self._log = logger or woklogger.get_logger(_LOGGER_NAME)

        self.name = name or desc.get("name")

        self._flow_loader = None

        platform = desc.get("platform")

        self.path = desc.get("path")

        self.conf = desc.get("conf", default=Data.element)
        if isinstance(self.conf, basestring):
            self.conf = ConfigLoader(os.path.join(base_path or "",
                                                  self.conf)).load()

        self.conf_rules = []
        if self.path is not None:
            self.conf_rules += [
                ConfRule(dict(set=[[rtconf.PROJECT_PATH, self.path]]),
                         base_path, platform)
            ]
        self.conf_rules += [
            ConfRule(rule, base_path, platform)
            for rule in desc.get("conf_rules", default=Data.list)
        ]

        self.flows = desc.get("flows", default=Data.list)

    def extend(self, pdesc, base_path=None):
        platform = pdesc.get("platform")

        if platform is not None and "path" in pdesc:
            self.conf_rules += [
                ConfRule(dict(set=[[rtconf.PROJECT_PATH, pdesc["path"]]]),
                         base_path, platform)
            ]

        if "conf" in pdesc:
            if platform is None:
                self.conf.merge(pdesc["conf"])
            else:
                self.conf_rules += [
                    ConfRule(dict(merge=pdesc["conf"]), base_path, platform)
                ]

        self.conf_rules += [
            ConfRule(rule, base_path, platform)
            for rule in pdesc.get("conf_rules", default=Data.list)
        ]
        self.flows += pdesc.get("flows", default=Data.list)

    def initialize(self):
        self._log.info("Initializing project {} ...".format(self.name))

        if self.path is None:
            raise Exception("Project 'path' not defined: {}".format(self.name))

        flow_paths = [os.path.join(self.path, flow) for flow in self.flows]

        self._flow_loader = FlowLoader(flow_paths)

        for uri, path in self._flow_loader.flow_files.items():
            self._log.debug("{0} : {1}".format(uri, path))

    def load_flow(self, flow_name, version=None):
        flow = self._flow_loader.load_from_canonical(flow_name,
                                                     version=version)
        flow.project = self
        return flow

    def load_from_ref(self, ref):
        flow = self._flow_loader.load_from_ref(ref)
        flow.project = self
        return flow

    def get_conf(self, task_name=None, platform_name=None):
        conf = self.conf.clone()

        for rule in self.conf_rules:
            pname = conf.get(rtconf.PLATFORM_TARGET, platform_name)
            if rule.match(task_name=task_name, platform=pname):
                rule.apply(conf)

        if rtconf.PROJECT_PATH not in conf:
            conf[rtconf.PROJECT_PATH] = self.path

        return conf

    def _repr(self, sb, indent=0):
        sb += ["Project [{}]".format(self.name)]
        sb += ["  path={}".format(self.path)]
        sb += ["  flows={}".format(self.flows)]
        sb += ["  conf={}".format(self.conf)]
        sb += ["  conf_rules={}".format(self.conf_rules)]
        for platform_name in sorted(self._platforms.keys()):
            self._platforms[platform_name]._repr(sb, 2)

    def __repr__(self):
        sb = []
        self._repr(sb)
        return "\n".join(sb)