[lxc-devel] [distrobuilder/master] Add filters for various actions

monstermunchkin on Github lxc-bot at linuxcontainers.org
Wed Aug 14 14:35:51 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190814/fd47c3e6/attachment.bin>
-------------- next part --------------
From 1b2b73dff67d7cc5057dd51f5968923749dae433 Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Wed, 14 Aug 2019 16:34:23 +0200
Subject: [PATCH] Add filters for various actions

Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
 distrobuilder/main_build-dir.go | 10 ++++++++++
 shared/definition.go            | 32 ++++++++++++++++++++++----------
 2 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/distrobuilder/main_build-dir.go b/distrobuilder/main_build-dir.go
index add07d1..de44d61 100644
--- a/distrobuilder/main_build-dir.go
+++ b/distrobuilder/main_build-dir.go
@@ -33,6 +33,16 @@ func (c *cmdBuildDir) command() *cobra.Command {
 					continue
 				}
 
+				if len(file.Architectures) > 0 && !lxd.StringInSlice(
+					c.global.definition.Image.ArchitectureMapped, file.Architectures) {
+					continue
+				}
+
+				if len(file.Variants) > 0 && !lxd.StringInSlice(
+					c.global.definition.Image.Variant, file.Variants) {
+					continue
+				}
+
 				err := generator.Run(c.global.flagCacheDir, c.global.targetDir, file)
 				if err != nil {
 					continue
diff --git a/shared/definition.go b/shared/definition.go
index 9ecdbe5..977cb8b 100644
--- a/shared/definition.go
+++ b/shared/definition.go
@@ -12,16 +12,21 @@ import (
 	lxdarch "github.com/lxc/lxd/shared/osarch"
 )
 
-// A DefinitionPackagesSet is a set of packages which are to be installed
-// or removed.
-type DefinitionPackagesSet struct {
-	Packages      []string `yaml:"packages"`
-	Action        string   `yaml:"action"`
+// A DefinitionFilter defines filters for various actions.
+type DefinitionFilter struct {
 	Releases      []string `yaml:"releases,omitempty"`
 	Architectures []string `yaml:"architectures,omitempty"`
 	Variants      []string `yaml:"variants,omitempty"`
 }
 
+// A DefinitionPackagesSet is a set of packages which are to be installed
+// or removed.
+type DefinitionPackagesSet struct {
+	DefinitionFilter
+	Packages []string `yaml:"packages"`
+	Action   string   `yaml:"action"`
+}
+
 // A DefinitionPackagesRepository contains data of a specific repository
 type DefinitionPackagesRepository struct {
 	Name     string   `yaml:"name"`              // Name of the repository
@@ -110,14 +115,13 @@ type DefinitionTarget struct {
 
 // A DefinitionFile represents a file which is to be created inside to chroot.
 type DefinitionFile struct {
+	DefinitionFilter
 	Generator string                 `yaml:"generator"`
 	Path      string                 `yaml:"path,omitempty"`
 	Content   string                 `yaml:"content,omitempty"`
-	Releases  []string               `yaml:"releases,omitempty"`
 	Name      string                 `yaml:"name,omitempty"`
 	Template  DefinitionFileTemplate `yaml:"template,omitempty"`
 	Templated bool                   `yaml:"templated,omitempty"`
-	Variants  []string               `yaml:"variants,omitempty"`
 }
 
 // A DefinitionFileTemplate represents the settings used by generators
@@ -129,9 +133,9 @@ type DefinitionFileTemplate struct {
 // A DefinitionAction specifies a custom action (script) which is to be run after
 // a certain action.
 type DefinitionAction struct {
-	Trigger  string   `yaml:"trigger"`
-	Action   string   `yaml:"action"`
-	Releases []string `yaml:"releases,omitempty"`
+	DefinitionFilter
+	Trigger string `yaml:"trigger"`
+	Action  string `yaml:"action"`
 }
 
 // DefinitionMappings defines custom mappings.
@@ -422,6 +426,14 @@ func (d *Definition) GetRunnableActions(trigger string) []DefinitionAction {
 			continue
 		}
 
+		if len(action.Architectures) > 0 && !shared.StringInSlice(d.Image.ArchitectureMapped, action.Architectures) {
+			continue
+		}
+
+		if len(action.Variants) > 0 && !shared.StringInSlice(d.Image.Variant, action.Variants) {
+			continue
+		}
+
 		out = append(out, action)
 	}
 


More information about the lxc-devel mailing list