From 1c84c16cf62798186bb6c306b9e8876771ef7e5e Mon Sep 17 00:00:00 2001 From: distix ticketing system Date: Thu, 26 Jul 2018 14:14:04 +0000 Subject: imported mails --- .../Maildir/new/1532614444.M574217P11733Q1.koom | 191 +++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 tickets/fdf0ea2a14784fd0b4bc21727c915d9a/Maildir/new/1532614444.M574217P11733Q1.koom (limited to 'tickets/fdf0ea2a14784fd0b4bc21727c915d9a/Maildir/new/1532614444.M574217P11733Q1.koom') diff --git a/tickets/fdf0ea2a14784fd0b4bc21727c915d9a/Maildir/new/1532614444.M574217P11733Q1.koom b/tickets/fdf0ea2a14784fd0b4bc21727c915d9a/Maildir/new/1532614444.M574217P11733Q1.koom new file mode 100644 index 0000000..ec89ac1 --- /dev/null +++ b/tickets/fdf0ea2a14784fd0b4bc21727c915d9a/Maildir/new/1532614444.M574217P11733Q1.koom @@ -0,0 +1,191 @@ +Return-Path: +X-Original-To: distix@pieni.net +Delivered-To: distix@pieni.net +Received: from yaffle.pepperfish.net (yaffle.pepperfish.net [88.99.213.221]) + by pieni.net (Postfix) with ESMTPS id BE78243816 + for ; Thu, 26 Jul 2018 14:13:38 +0000 (UTC) +Received: from platypus.pepperfish.net (unknown [10.112.101.20]) + by yaffle.pepperfish.net (Postfix) with ESMTP id 7F21F41468 + for ; Thu, 26 Jul 2018 15:13:38 +0100 (BST) +Received: from ip6-localhost.nat ([::1] helo=platypus.pepperfish.net) + by platypus.pepperfish.net with esmtp (Exim 4.80 #2 (Debian)) + id 1fih1O-0003jX-ED; Thu, 26 Jul 2018 15:13:38 +0100 +Received: from koom.pieni.net ([88.99.190.206] helo=pieni.net) + by platypus.pepperfish.net with esmtpsa (Exim 4.80 #2 (Debian)) + id 1fih1M-0003io-MB + for ; Thu, 26 Jul 2018 15:13:36 +0100 +Received: from exolobe3.liw.fi (mobile-access-5d6a6b-181.dhcp.inet.fi + [93.106.107.181]) by pieni.net (Postfix) with ESMTPSA id E321040A82 + for ; Thu, 26 Jul 2018 14:13:35 +0000 (UTC) +Received: from exolobe3.liw.fi (localhost [127.0.0.1]) + by exolobe3.liw.fi (Postfix) with ESMTPS id 0634488041E + for ; Thu, 26 Jul 2018 17:13:34 +0300 (EEST) +Date: Thu, 26 Jul 2018 17:13:32 +0300 +From: Lars Wirzenius +To: ick-discuss@ick.liw.fi +Message-ID: <20180726141332.GA32297@exolobe3.liw.fi> +References: <20180726130528.xgtftruk6srzgi4x@somnambulist.local> +MIME-Version: 1.0 +In-Reply-To: <20180726130528.xgtftruk6srzgi4x@somnambulist.local> +User-Agent: Mutt/1.10.1 (2018-07-13) +X-Pepperfish-Transaction: 209b-579f-e244-76b2 +X-Pepperfish-Transaction-By: platypus +Subject: Re: Proposal: an icktool lint subcommand +X-BeenThere: ick-discuss@ick.liw.fi +X-Mailman-Version: 2.1.5 +Precedence: list +List-Id: discussions about the ick CI system +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Content-Type: multipart/mixed; boundary="===============2072883612514617144==" +Mime-version: 1.0 +Sender: ick-discuss-bounces@ick.liw.fi +Errors-To: ick-discuss-bounces@ick.liw.fi + + +--===============2072883612514617144== +Content-Type: multipart/signed; micalg=pgp-sha512; + protocol="application/pgp-signature"; boundary="qMm9M+Fa2AknHoGS" +Content-Disposition: inline + + +--qMm9M+Fa2AknHoGS +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline +Content-Transfer-Encoding: quoted-printable + +On Thu, Jul 26, 2018 at 02:05:28PM +0100, Daniel Silverstone wrote: +> I have noticed, over time, that it's possible to get into situations +> where the controller is in a bit of an inconsistent or messy state. +>=20 +> To that end I'd like to suggest the introduction of a set of lints which +> can be run against the controller to tell you about it (or a subset of it= +). + +I am in full support of this idea. I have some suggestions. We should +definitely do some form of this idea, preferably sooner. I too have +spent long evening trying to get all the details right. + +> * Projects refer to pipelines which do not exist +> * Projects refer to pipelines but do not have all the requisite parameters +> * Pipelines exist which are not referred to by any project +> * Pipelines exist with no actions + +I would add the following check: + +* Project defines a parameter that none of its pipelines ask for. + +The first implementation thought I have is that we should make it easy +to write checks. If it's easy, we'll have more, and they'll more +likely be correct. + +My second implementation thought is it would be nice to be able to +run the checks before putting the projects and pipelines into the +controller. Thus, I'd do it client side. It would be nice if the +client could read the projects and resources from the controller, or +=66rom a local file, though. Local file is more important: if we have +that, we can use "icktool show" to list all projects and pipelines. + +My third implementation thought is that I'd like this to not be part +of icktool, which is growing fairly large already. Thus, a new tool, +icklint, would be called for. It can be added to ick2.git, or be kept +in its own repository. Could be written in Python or any other +suitable language, such as Rust. (I'd like to learn Rust more.) +Preferably a language I understand. + +Alternatively, we could have a set of checks, and a way to run them +against a set of project and pipeline objects, and then use them both +=66rom icktool, and in the controller, runnig the checks at build +trigger time. + +Since I don't yet know enough Rust to write this, I sketch in Python: +assume a main program that reads files with projects and pipelines, +and then runs though a number of checks. Each check is implemented as +an object with the following interface: + + class IckLintCheck: + def set_projects(self, projects): + def set_pipelines(self, projects): + def get_projects(self): + def get_pipelines(self): + def find_lint(self): + +Here projects and pipelines are dicts indexed with the name of a +project or pipeline, and find_lint yields a sequence of issues. An issue +is a string to be displayed to the user. + +Example: + + class CheckProjects(IckLintCheck): + + def find_lint(self): + checks =3D [self.check_pipeline_exists, self.check_params_given] + for p in self.get_projects(): + for name in p['pipelines']: + for check in checks: + for issue in check(p, name): + yield issue + + def check_pipeline_exists(self, p, name): + if name not in self.get_pipelines(): + yield 'Project {} uses pipeline {}, which does not exist'.f= +ormat( + p['project'], name) + + def check_params_given(self, p, name): + pl =3D self.get_pipelines()[name] + for param in pl['parameters']: + if param not in p['parameters']: + yield 'Project {} does not define {}, needed by {}.form= +at(' + p['project'], param, name) + +It is probably possible to reduct boilerplate, but I hope you get the +idea from the example. + +Does that seem reasonable? + +--=20 +I want to build worthwhile things that might last. --joeyh + +--qMm9M+Fa2AknHoGS +Content-Type: application/pgp-signature; name="signature.asc" + +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEETNTnrewG6wEE1EJ3bC+mFux6IDEFAltZ1wwACgkQbC+mFux6 +IDEPgBAAvf156XGwL1KunkCfrwbgn+hR14XUOIyG21/+jM27vD8verLNafwMp1C7 +lp4uVZcXwznUG7tehY6fabrJBtNFQIP07BZB4ZXSVU1rJkbADATqP+oR8kPnSKNF +e4QET2nTdvTapUmvTBe/lLNA1ipE9ugt5wzz61S6WfJoy+F4ikWnt725arg6qRMd +oeestUQB12NDlZlh/XQnpabgwv9AJEjaZTEFiPMDNOM4CI8Kj4JDjHxl2CZlz+u5 +xcCY5qQh1Ha374YkbFGL0Ba5uNV2Jo1xP45I6E1G5MPclp8m5CnhSzdEh1cfWZx7 +qSWtSzhTWxxEYNvnQlzGwH2fpeXazjJzNEUQSZBYSLO5cHJFr3Q95uvcvX+6rvZN +nOTRIaUA6X062B6VAGy3Qds5Sb6Hb5XUtzfMh+PTy37NxwTkkrvd6H+FY73OYTJ4 +FO8dnW04tuQF9QVF4BNoebZ3WR10EiGwBVixLbX7dIIexVKntDHkTiFhQwPBINAd +jOzC9y5eAY65PsYsY4FL/Z/Envsnnr8Shomieyevkpxs7aL+bBBZS2RsVaurqEV/ +csoddc6p3cgPNy+XoJAabcky1NI7aExVVGTfYsROI2gj+p3nk42/TKqEim9Xae6m +91dOR2zYpkVINRQOyBQjbCyIS+2u1cy4+0eZkOiIIiuWicEIUUk= +=uvAM +-----END PGP SIGNATURE----- + +--qMm9M+Fa2AknHoGS-- + + +--===============2072883612514617144== +Content-Type: text/plain; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Content-Disposition: inline + +_______________________________________________ +ick-discuss mailing list +ick-discuss@ick.liw.fi +https://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/ick-discuss-ick.liw.fi + +--===============2072883612514617144==-- + -- cgit v1.2.1