puppet-retrospec | generate puppet code tests modules facts types | Configuration Management library

 by   nwops Ruby Version: Current License: AGPL-3.0

kandi X-RAY | puppet-retrospec Summary

puppet-retrospec is a Ruby library typically used in Devops, Configuration Management applications. puppet-retrospec has no bugs, it has no vulnerabilities, it has a Strong Copyleft License and it has low support. You can download it from GitHub.
Proper testing is hard especially when you are new to ruby, rspec or even puppet. Retrospec makes it dead simple to get started with advanced puppet module development. Retrospec will scan you puppet module files and actually write some very basic rspec-puppet test code. Thus this gem will retrofit your existing puppet module with everything needed to get going with puppet unit testing. Additionally, retrospec will outfit your module with any file you can think of. Say goodbye to repetitive module setup. Not only will retrospec generate tests for you, it will also assist in creating many of the advanced puppet module files like custom facts, functions, types, providers and schemas, as well as their associated test files. It will even create the module from scratch if so desired. The project was named retrospec because there are many times when you need to retrofit your module with various things.
    Support
      Quality
        Security
          License
            Reuse
            Support
              Quality
                Security
                  License
                    Reuse

                      kandi-support Support

                        summary
                        puppet-retrospec has a low active ecosystem.
                        summary
                        It has 140 star(s) with 27 fork(s). There are 8 watchers for this library.
                        summary
                        It had no major release in the last 6 months.
                        summary
                        There are 32 open issues and 56 have been closed. On average issues are closed in 78 days. There are 2 open pull requests and 0 closed requests.
                        summary
                        It has a neutral sentiment in the developer community.
                        summary
                        The latest version of puppet-retrospec is current.
                        puppet-retrospec Support
                          Best in #Configuration Management
                            Average in #Configuration Management
                            puppet-retrospec Support
                              Best in #Configuration Management
                                Average in #Configuration Management

                                  kandi-Quality Quality

                                    summary
                                    puppet-retrospec has 0 bugs and 0 code smells.
                                    puppet-retrospec Quality
                                      Best in #Configuration Management
                                        Average in #Configuration Management
                                        puppet-retrospec Quality
                                          Best in #Configuration Management
                                            Average in #Configuration Management

                                              kandi-Security Security

                                                summary
                                                puppet-retrospec has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
                                                summary
                                                puppet-retrospec code analysis shows 0 unresolved vulnerabilities.
                                                summary
                                                There are 0 security hotspots that need review.
                                                puppet-retrospec Security
                                                  Best in #Configuration Management
                                                    Average in #Configuration Management
                                                    puppet-retrospec Security
                                                      Best in #Configuration Management
                                                        Average in #Configuration Management

                                                          kandi-License License

                                                            summary
                                                            puppet-retrospec is licensed under the AGPL-3.0 License. This license is Strong Copyleft.
                                                            summary
                                                            Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.
                                                            puppet-retrospec License
                                                              Best in #Configuration Management
                                                                Average in #Configuration Management
                                                                puppet-retrospec License
                                                                  Best in #Configuration Management
                                                                    Average in #Configuration Management

                                                                      kandi-Reuse Reuse

                                                                        summary
                                                                        puppet-retrospec releases are not available. You will need to build from source code and install.
                                                                        summary
                                                                        Installation instructions, examples and code snippets are available.
                                                                        summary
                                                                        puppet-retrospec saves you 109368 person hours of effort in developing the same functionality from scratch.
                                                                        summary
                                                                        It has 10826 lines of code, 531 functions and 210 files.
                                                                        summary
                                                                        It has high code complexity. Code complexity directly impacts maintainability of the code.
                                                                        puppet-retrospec Reuse
                                                                          Best in #Configuration Management
                                                                            Average in #Configuration Management
                                                                            puppet-retrospec Reuse
                                                                              Best in #Configuration Management
                                                                                Average in #Configuration Management
                                                                                  Top functions reviewed by kandi - BETA
                                                                                  kandi has reviewed puppet-retrospec and discovered the below as its top functions. This is intended to give you an instant insight into puppet-retrospec implemented functionality, and help decide if they suit your requirements.
                                                                                  • Ensure the module is valid
                                                                                    • This method returns a list of all files that should be included in the provider .
                                                                                      • Create AST for AST .
                                                                                        • = begin Function to create a module directory
                                                                                          • Returns the path to the templates directory
                                                                                            • Create a temporary module directory
                                                                                              • returns the type file if it exists
                                                                                                • Creates a puppet request object
                                                                                                  • This method returns the list of sources for the template file .
                                                                                                    Get all kandi verified functions for this library.
                                                                                                    Get all kandi verified functions for this library.

                                                                                                    puppet-retrospec Key Features

                                                                                                    One of the design goals of this plugin is to try to introspect as much information as possible so we don’t need input from the user. If you are not sure what default values are used, use the -h option and the defaults will be revealed. Most of the defaults are dynamic. Another design goal is to allow the user to configure every option so that passing additional options is not required when configured correctly. Please see the [Configuration Section](#configuration) for setting a config file.

                                                                                                    puppet-retrospec Examples and Code Snippets

                                                                                                    No Code Snippets are available at this moment for puppet-retrospec.
                                                                                                    Community Discussions

                                                                                                    Trending Discussions on Configuration Management

                                                                                                    Puppet copy file if not empty
                                                                                                    chevron right
                                                                                                    Declaring configuration of custom configurable application in java?
                                                                                                    chevron right
                                                                                                    To run playbook based on ansible_distribution
                                                                                                    chevron right

                                                                                                    QUESTION

                                                                                                    Puppet copy file if not empty
                                                                                                    Asked 2020-Dec-17 at 02:50

                                                                                                    I have a requirement where I need to check for a file on the puppet master and copy it to the agent only if it is not empty.

                                                                                                    I have the following so far:

                                                                                                      exec {
                                                                                                        'check_empty_file':
                                                                                                          provider => shell,
                                                                                                          command  => "test -s puppet:////path/to/puppetmaster/file",
                                                                                                          returns  => ["0", "1"],
                                                                                                      }
                                                                                                    
                                                                                                      if $check_empty_file == '0' {
                                                                                                        file {
                                                                                                          'file_name':
                                                                                                            path    => '/path/to/agent/file',
                                                                                                            alias   => '/path/to/agent/file',
                                                                                                            source  => "puppet:///path/to/puppetmaster/file",
                                                                                                        }
                                                                                                      }
                                                                                                    

                                                                                                    But it doesn't work. Any help is appreciated. Thanks!

                                                                                                    ANSWER

                                                                                                    Answered 2020-Dec-17 at 02:50

                                                                                                    You cannot use an Exec resource to perform the check, because you need to perform the evaluation during catalog building, and resources are not applied until after the catalog is built. Moreover, the test command tests for the existence of a the specified path. It does not know about URLs, and even if it did, it would be unlikely to recognize or handle the puppet: URL scheme. Furthermore, there is no association whatever between resource titles and variable names.

                                                                                                    To gather data at catalog building time, you're looking for a puppet function. It is not that hard to add your own custom function to Puppet, but you don't need that for your case -- the built-in file() function will serve your purpose. It might look something like this:

                                                                                                    $file_content = file('/')
                                                                                                    
                                                                                                    if $file_content != '' {
                                                                                                      file { '/path/to/target/file':
                                                                                                        ensure  => 'file',
                                                                                                        content => $file_content,
                                                                                                        # ...
                                                                                                      }
                                                                                                    }
                                                                                                    

                                                                                                    Source https://stackoverflow.com/questions/65333257

                                                                                                    QUESTION

                                                                                                    Declaring configuration of custom configurable application in java?
                                                                                                    Asked 2020-Nov-10 at 11:42

                                                                                                    So for a hobby project of mine, I would like to create an application that translates an HTTP call and request between two services.

                                                                                                    The application does that based on a configuration that can be set by the user. The idea is that the application listens to an incoming API call translates the call and then forwards it.

                                                                                                    Then the application waits for a response then translates the response and sends it back to the caller.

                                                                                                    A translation can be as simple as renaming a field value in a body object or replace a header field to the body.

                                                                                                    I think a translation should begin with mapping the correct URL so here is an example of what I was thinking of a configuration should look like:

                                                                                                        //request mapping
                                                                                                        incoming URL = outgoing URL(
                                                                                                        
                                                                                                            //Rename header value
                                                                                                            header.someobject.renameto = "somevalue"
                                                                                                            
                                                                                                            //Replace body object to header
                                                                                                            body.someobject.replaceto.header
                                                                                                        )
                                                                                                    

                                                                                                    I was thinking that the configuration should be placed in a .txt file and read by the application.

                                                                                                    My question is, are there other similar systems that use a configuration file for a configuration like this? And are there other/better ways to declare a configuration?

                                                                                                    ANSWER

                                                                                                    Answered 2020-Nov-10 at 11:42

                                                                                                    I have done something sort-of-similar in a different context (generate code from an input specification), so I will provide an outline of what I did to provide some food for thought. I used Config4* (disclosure: I developed that). If the approach I describe below is of interest to you, then I suggest you read Chapters 2 and 3 of the Config4* Getting Started Guide to get an overview of the Config4* syntax and API. Alternatively, express the concepts below in a different configuration syntax, such as XML.

                                                                                                    Config4* is a configuration syntax, and the subset of syntax relevant to this discussion is as follows:

                                                                                                    # this is a comment
                                                                                                    name1 = "simple value";
                                                                                                    name2 = ["a", "list of", "values"];
                                                                                                    # a list can be laid out in columns to simulate a table of information
                                                                                                    name3 = [
                                                                                                      # item      colour
                                                                                                      #------------------
                                                                                                        "car",    "red",
                                                                                                        "jeans",  "blue",
                                                                                                        "roses",  "red",
                                                                                                    ];
                                                                                                    

                                                                                                    In a code generator application, I used a table to provide rules to specify how to generate code for assigning values to fields of messages. If no rule was specified for a particular field, then some built-in rules provided default behaviour. The table looked something like the following:

                                                                                                    field_rules = [
                                                                                                      # wildcarded message.field    instruction
                                                                                                      #----------------------------------------------------------------
                                                                                                        "Msg1.username",            "@config:username",
                                                                                                        "Msg1.password",            "@config:password",
                                                                                                        "Msg3.price",               "@order:price",
                                                                                                        "*.account",                "@string:foobar",
                                                                                                        "*.secondary_account",      "@ignore",
                                                                                                        "*.heartbeat_interval",     "@expr:_heartbeatInterval * 1000",
                                                                                                        "*.send_timestamp",         "@now",
                                                                                                    ];
                                                                                                    

                                                                                                    When my code generator wanted to generate code to assign a value to a field, the code generator constructed a string of the form ".", for example, Msg3.price. Then it examined the field_rules table line-by-line (starting from the top) to find a line in which the first column matched ".". The matching logic permitted * as a wildcard character that could match zero or more characters. (Conveniently, Config4* provides a patternMatch() utility operation that provides this functionality.)

                                                                                                    If a match was found, then the value in the instruction column told the code generator what sort of code to generate. (If no match was found, then built-in rules were used, and if none of those applied, then no code was generated for the field.)

                                                                                                    Each instruction was a string of the form "@:optional,arguments". That was tokenized to provide the keyword and the optional arguments. The keyword was converted to an enum, and that drove a switch statement for generating code. For example:

                                                                                                    • The @config:username instruction specified that code should be generated to assign the value of the username variable in a runtime configuration file to the field.
                                                                                                    • The @order:price instruction specified that code should be generated to assign the value returned from calling orderObj->getPrice() to the field.
                                                                                                    • The @string:foobar instruction specified the string literal foobar should be assigned to the field.
                                                                                                    • The @expr:_heartbeatInterval * 1000 instruction specified that code should be generated to assign the value of the expression _heartbeatInterval * 1000 to the field.
                                                                                                    • The @ignore instruction specified that no code should be generated to assign a value to the field.
                                                                                                    • The @now instruction specified that code should be generated to assign the current clock time to the field.

                                                                                                    I have used the above technique in several projects, and each time I have invented instructions specific to the needs of the particular project. If you decide to use this technique, then obviously you will need to invent instructions to specify runtime translations rather than instructions to generate code. Also, don't feel you have to shoehorn all of your translation-based configuration into a single table. For example, you might use one table to provide a source URL -> destination URL mapping, and a different table to provide instructions for translating fields within messages.

                                                                                                    If this technique works as well for you as it has worked for me on my projects, then you will end up with your translation application being an "engine" whose behaviour is driven entirely by a configuration file that, in effect, is a DSL (domain-specific language). That DSL file is likely to be quite compact (less than 100 lines), and will be the part of the application that is visible to users. Because of this, it is worthwhile investing effort to make the DSL as intuitive and easy-to-read/modify as possible, because doing that will make the translation application: (1) user friendly, and (2) easy to document in a user manual.

                                                                                                    Source https://stackoverflow.com/questions/64766419

                                                                                                    QUESTION

                                                                                                    To run playbook based on ansible_distribution
                                                                                                    Asked 2020-Feb-10 at 14:44

                                                                                                    I have written separate playbooks for tomcat deployment on both Ubuntu and Linux as well, instead of mentioning **

                                                                                                    when: ansible_distribution == 'Ubuntu'

                                                                                                    **in every line in the playbook, i want to run the whole playbook only when this condition meets.

                                                                                                    This is my code

                                                                                                     - hosts: all
                                                                                                       tasks:
                                                                                                          - name: including the playbook for ubuntu deployment
                                                                                                            include: tomcat_ubuntu_new.yaml
                                                                                                            when: ansible_distribution == 'Ubuntu'
                                                                                                    
                                                                                                          - name: including the playbook for ubuntu deployment
                                                                                                            include: tomcat_standalone.yaml
                                                                                                            when: ansible_distribution == 'CentOS' or ansible_distribution == 'RedHat'
                                                                                                    
                                                                                                    

                                                                                                    Error:

                                                                                                    ERROR! unexpected parameter type in action: 
                                                                                                    
                                                                                                    The error appears to be in '/etc/ansible/tomcat_ubuntu_new.yaml': line 3, column 3, but may
                                                                                                    be elsewhere in the file depending on the exact syntax problem.
                                                                                                    
                                                                                                    The offending line appears to be:
                                                                                                    
                                                                                                    
                                                                                                    - hosts: all
                                                                                                      ^ here
                                                                                                    

                                                                                                    I want to run the playbook only on the hosts based on the ansible_distribution

                                                                                                    I tried many ways but no one works can any one post a clear answer with explanation

                                                                                                    ANSWER

                                                                                                    Answered 2020-Feb-10 at 14:44

                                                                                                    Q: "I want to run the playbook only on the hosts based on the ansible_distribution."

                                                                                                    A: It's not possible to include a playbook. This would run the playbooks recursively.

                                                                                                    Only import of a playbook is available. Moreover import_playbook is not a task. It's simply a tool to modularize large playbooks with multiple plays.

                                                                                                    Ansible conditionals do not apply to import_playbook the same way as they do not apply to playbooks.

                                                                                                    Instead, it is possible to create a group that will be used in the playbook.

                                                                                                    $cat tomcat_ubuntu_new.yaml
                                                                                                    ---
                                                                                                    - hosts: my_dynamic_group
                                                                                                      tasks:
                                                                                                      ...
                                                                                                    

                                                                                                    For example, let's create the group and import the playbook

                                                                                                    ---
                                                                                                    - hosts: all
                                                                                                      tasks:
                                                                                                        - add_host:
                                                                                                            name: "{{ item }}"
                                                                                                            groups: my_dynamic_group
                                                                                                          loop: "{{ groups.all }}"
                                                                                                          when: hostvars[item].ansible_distribution == 'Ubuntu'
                                                                                                          run_once: true
                                                                                                    
                                                                                                    - import_playbook: tomcat_ubuntu_new.yaml
                                                                                                    

                                                                                                    Source https://stackoverflow.com/questions/60140478

                                                                                                    Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                                                                                                    Vulnerabilities

                                                                                                    No vulnerabilities reported

                                                                                                    Install puppet-retrospec

                                                                                                    ![Build Status](https://gitlab.com/nwops/puppet-retrospec/badges/master/build.svg) [![Gem Version](https://badge.fury.io/rb/puppet-retrospec.svg)](http://badge.fury.io/rb/puppet-retrospec).
                                                                                                    This will also install the retrospec framework that is required to use the plugin.

                                                                                                    Support

                                                                                                    If you see the following, this error means that you need to add a fixture to the fixtures file. At this time I have no idea what your module requires. So just add the module that this class belongs to in the .fixtures file. See [fixtures doc](https://github.com/puppetlabs/puppetlabs_spec_helper#using-fixtures) for more information. If you see something like the following, this means your current module is using a much older version of Rspec. Retrospec uses Rspec 3 syntax so you need to update your rspec version. If you have tests that using older rspec syntax, take a look at [transpec](https://github.com/yujinakayama/transpec). If your tests will not run after running retrospec. Your spec_helper, Rakefile and Gemfile may not be compatible with the pre-defined templates. Just delete these files and re-run retrospec to recreate them. Add back any modifications you might have had.
                                                                                                    Find more information at:
                                                                                                    Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                                    Find more libraries
                                                                                                    Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                                    Save this library and start creating your kit
                                                                                                    CLONE
                                                                                                  • HTTPS

                                                                                                    https://github.com/nwops/puppet-retrospec.git

                                                                                                  • CLI

                                                                                                    gh repo clone nwops/puppet-retrospec

                                                                                                  • sshUrl

                                                                                                    git@github.com:nwops/puppet-retrospec.git

                                                                                                  • Share this Page

                                                                                                    share link

                                                                                                    Explore Related Topics

                                                                                                    Consider Popular Configuration Management Libraries

                                                                                                    dotfiles

                                                                                                    by mathiasbynens

                                                                                                    consul

                                                                                                    by hashicorp

                                                                                                    viper

                                                                                                    by spf13

                                                                                                    eureka

                                                                                                    by Netflix

                                                                                                    confd

                                                                                                    by kelseyhightower

                                                                                                    Try Top Libraries by nwops

                                                                                                    puppet-debugger

                                                                                                    by nwopsRuby

                                                                                                    retrospec

                                                                                                    by nwopsRuby

                                                                                                    puppet-debug

                                                                                                    by nwopsRuby

                                                                                                    release_manager

                                                                                                    by nwopsRuby

                                                                                                    Compare Configuration Management Libraries with Highest Support

                                                                                                    consul

                                                                                                    by hashicorp

                                                                                                    viper

                                                                                                    by spf13

                                                                                                    confd

                                                                                                    by kelseyhightower

                                                                                                    dotfiles

                                                                                                    by mathiasbynens

                                                                                                    eureka

                                                                                                    by Netflix

                                                                                                    Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
                                                                                                    Find more libraries
                                                                                                    Explore Kits - Develop, implement, customize Projects, Custom Functions and Applications with kandi kits​
                                                                                                    Save this library and start creating your kit