Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

elasticsearch_install action :remove failure #688

Open
joshbranham opened this issue Nov 2, 2018 · 2 comments
Open

elasticsearch_install action :remove failure #688

joshbranham opened this issue Nov 2, 2018 · 2 comments
Labels
Bug Something isn't working

Comments

@joshbranham
Copy link

When attempting to remove an elasticsearch_install with the block below, it fails as it attempts to tell dpkg to remove the package version listed while prepending #{Chef::Config[:file_cache_path]} to the name, which if you are just trying to dpkg uninstall something, fails.

My question is: I know this cookbook does not support upgrading, but should it not allow the following for sake of people writing their own upgrade recipe? I worked around this by having an explicit dpkg_package block with action :remove

I am happy to submit a PR for this, just wanted to gauge the response first. Thanks!

The spec I was trying is:

elasticsearch_install 'elasticsearch' do
    type 'package'
    version <existing_version>
    action :remove
end

Here is some output from test-kitchen for my wrapper cookbook

           Error executing action `remove` on resource 'elasticsearch_install[elasticsearch]'
           ================================================================================

           Mixlib::ShellOut::ShellCommandFailed
           ------------------------------------
           dpkg_package[/tmp/kitchen/cache/elasticsearch-6.4.1.deb] (/tmp/kitchen/cache/cookbooks/elasticsearch/libraries/provider_install.rb line 143) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0, 1], but received '2'
           ---- Begin output of ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] ----
           STDOUT:
           STDERR: dpkg-query: error: --status needs a valid package name but '/tmp/kitchen/cache/elasticsearch-6.4.1.deb' is not: illegal package name in specifier '/tmp/kitchen/cache/elasticsearch-6.4.1.deb': must start with an alphanumeric character

           Use --help for help about querying packages.
           ---- End output of ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] ----
           Ran ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] returned 2

           Cookbook Trace:
           ---------------
           /tmp/kitchen/cache/cookbooks/elasticsearch/libraries/provider_install.rb:152:in `remove_package_wrapper_action'
           /tmp/kitchen/cache/cookbooks/elasticsearch/libraries/provider_install.rb:28:in `action_remove'

           Resource Declaration:
           ---------------------
           # In /tmp/kitchen/cache/cookbooks/elasticsearch_6/recipes/upgrade.rb

            33: elasticsearch_install 'elasticsearch' do
            34:     type 'package'
            35:     version '6.4.1'
            36:     action :remove
            37: end
            38:

           Compiled Resource:
           ------------------
           # Declared in /tmp/kitchen/cache/cookbooks/elasticsearch_6/recipes/upgrade.rb:33:in `from_file'

           elasticsearch_install("elasticsearch") do
             action [:remove]
             default_guard_interpreter :default
             declared_type :elasticsearch_install
             cookbook_name "elasticsearch_6"
             recipe_name "upgrade"
             type "package"
             version "6.4.1"
           end

           System Info:
           ------------
           chef_version=14.6.47
           platform=ubuntu
           platform_version=16.04
           ruby=ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]
           program_name=/opt/chef/bin/chef-client
           executable=/opt/chef/bin/chef-client


       Running handlers:
       [2018-11-02T18:53:53+00:00] ERROR: Running exception handlers
       Running handlers complete
       [2018-11-02T18:53:53+00:00] ERROR: Exception handlers complete
       Chef Client failed. 2 resources updated in 06 seconds
       [2018-11-02T18:53:53+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
       [2018-11-02T18:53:53+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
       [2018-11-02T18:53:53+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: elasticsearch_install[elasticsearch] (elasticsearch_6::upgrade line 33) had an error: Mixlib::ShellOut::ShellCommandFailed: dpkg_package[/tmp/kitchen/cache/elasticsearch-6.4.1.deb] (/tmp/kitchen/cache/cookbooks/elasticsearch/libraries/provider_install.rb line 143) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0, 1], but received '2'
       ---- Begin output of ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] ----
       STDOUT:
       STDERR: dpkg-query: error: --status needs a valid package name but '/tmp/kitchen/cache/elasticsearch-6.4.1.deb' is not: illegal package name in specifier '/tmp/kitchen/cache/elasticsearch-6.4.1.deb': must start with an alphanumeric character

       Use --help for help about querying packages.
       ---- End output of ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] ----
       Ran ["dpkg", "-s", "/tmp/kitchen/cache/elasticsearch-6.4.1.deb"] returned 2
@martinb3
Copy link
Contributor

martinb3 commented Nov 6, 2018

Hey there --

I'd be glad to drop the path from the dpkg_package :remove action; it does seem like it's probably unnecessary. Alternately, I'll note you could also use the regular install action with package_options and give dpkg some direction on upgrading the package, which would side-step needing to remove the old package directly.

Hope that helps. Feel free to submit a PR to fix that path in the remove action 👍

@martinb3 martinb3 added Bug Something isn't working question labels Nov 6, 2018
@joshbranham
Copy link
Author

Hey there --

I'd be glad to drop the path from the dpkg_package :remove action; it does seem like it's probably unnecessary. Alternately, I'll note you could also use the regular install action with package_options and give dpkg some direction on upgrading the package, which would side-step needing to remove the old package directly.

Hope that helps. Feel free to submit a PR to fix that path in the remove action 👍

I think that is a good option as well, although removal should still probably work. PR is up

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants