From 7a4c92e7171d642a1e1fce324441710ad4d44ce9 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 19 May 2018 18:45:36 +0300 Subject: Change: use build graphs in build resources, instead of action list --- ick2/build.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 ick2/build.py (limited to 'ick2/build.py') diff --git a/ick2/build.py b/ick2/build.py new file mode 100644 index 0000000..cfb1f71 --- /dev/null +++ b/ick2/build.py @@ -0,0 +1,53 @@ +# Copyright (C) 2018 Lars Wirzenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + + +import ick2 + + +class Build: + + acceptable = { + 'triggered': ['building'], + 'building': ['done', 'failed'], + } + + def __init__(self, resource): + self.resource = resource + self.graph = ick2.BuildGraph(graph=self.resource.get('graph', {})) + self.graph.set_observer(self.update_graph_in_resource) + + def get_status(self): + return self.resource['status'] + + def set_status(self, status): + current = self.get_status() + if status not in self.acceptable[current]: + raise WrongBuildStatusChange(current, status) + self.resource['status'] = status + + def get_graph(self): + return self.graph + + def update_graph_in_resource(self): + self.resource['graph'] = self.graph.get_actions() + + +class WrongBuildStatusChange(Exception): + + def __init__(self, current, new): + super().__init__( + 'Unacceptable build status change from {} to {}'.format( + current, new)) -- cgit v1.2.1