Re: [jenkins-ci PATCH v2 10/12] lcitool: Add projects information handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 12, 2018 at 05:19:27PM +0200, Andrea Bolognani wrote:
> The original tool's limited scope meant loadins this
> information was not needed, but we're going to start
> making use of it pretty soon.
> 
> Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx>
> ---
>  guests/lcitool | 47 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
> 
> diff --git a/guests/lcitool b/guests/lcitool
> index d82c36f..3bd5fa7 100755
> --- a/guests/lcitool
> +++ b/guests/lcitool
> @@ -233,11 +233,58 @@ class Inventory:
>      def get_facts(self, host):
>          return self._facts[host]
>  
> +class Projects:
> +
> +    def __init__(self):
> +        try:
> +            with open("./vars/mappings.yml", "r") as f:

There is clear information where how to run the lcitool in the docs
in some patches befor so the relative paths that are used everywhere in
the code are not causing a problem.
Though IMO, I think it's clearer to have a variable (config
option, hardcoded, env variable or whatever you decide), storing the path of
these files so that this code is not dependent on relative paths. WDYT?

> +                mappings = yaml.load(f)
> +                self._mappings = mappings["mappings"]
> +        except:
> +            raise Error("Can't load mappings")
> +
> +        self._packages = {}
> +        source = "./vars/projects/"
> +        for item in os.listdir(source):
> +            yaml_path = os.path.join(source, item)
> +            if not os.path.isfile(yaml_path):
> +                continue
> +            if not yaml_path.endswith(".yml"):
> +                continue
> +
> +            project = os.path.splitext(item)[0]
> +
> +            try:
> +                with open(yaml_path, "r") as f:
> +                    packages = yaml.load(f)
> +                    self._packages[project] = packages["packages"]
> +            except:
> +                raise Error("Can't load packages for '{}'".format(project))
> +
> +    def expand_pattern(self, pattern):
> +        projects = Util.expand_pattern(pattern, self._packages, "project")
> +
> +        # Some projects are internal implementation details and should
> +        # not be exposed to the user
> +        internal_projects = [ "base", "blacklist", "jenkins" ]
> +        for project in internal_projects:
> +            if project in projects:
> +                projects.remove(project)
> +
> +        return projects
> +
> +    def get_mappings(self):
> +        return self._mappings
> +
> +    def get_packages(self, project):
> +        return self._packages[project]
> +
>  class Application:
>  
>      def __init__(self):
>          self._config = Config()
>          self._inventory = Inventory()
> +        self._projects = Projects()
>  
>          self._parser = argparse.ArgumentParser(
>              conflict_handler = "resolve",
> -- 
> 2.17.1
> 
> --
> libvir-list mailing list
> libvir-list@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: signature.asc
Description: PGP signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux