Uploaded image for project: 'Satellite'
  1. Satellite
  2. SAT-35587

Error when trying to set any subscription attributes for virt-who-* hosts.

XMLWordPrintable

    • 1
    • False
    • rubygem-katello-4.16.0.7
    • Important
    • Artemis Sprint 153
    • sat-proton
    • None
    • None
    • None
    • Manual
    • Yes

      Description of problem:

      Getting the following error when trying to set any subscription attributes for virt-who-* hosts, such as syspurpose, autoheal etc.

      Katello::Resources::Candlepin::Consumer: 400 Bad Request {"displayMessage":"Runtime Error com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<org.candlepin.dto.api.server.v1.EnvironmentDTO>` from String value (token `JsonToken.VALUE_STRING`)\n at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 131] (through reference chain: org.candlepin.dto.api.server.v1.ConsumerDTO[\"environments\"]) at com.fasterxml.jackson.databind.exc.MismatchedInputException.from:59","requestUuid":"26aae922-8731-4b43-b74c-02d62d0194fa"} (PUT /candlepin/consumers/87980cb0-1e37-4441-af11-b636b3054b66) 

       

      How reproducible:

      Easy

       

      Is this issue a regression from an earlier version:

      Since Satellite 6.14.  No error prior version 6.14.

       

      Steps to Reproduce:

      1. If no virt-who is setup, try to setup  a list of fake hypervisor hosts

      2. Navigate to the Satellite Web UI -> All Hosts page.

      3. Choose one of the virt-who-* host.

      4. Try to update any system purpose attribute or try to set the auto heal to false using hammer

      hammer host update --autoheal no --name virt-who-host-example.com 

      Actual behavior:
      Fail with above error.

       

      Expected behavior:
      no error

       

      Business Impact / Additional info:

      If I understand correctly, setting subscription attributes (such as autoheal and syspurpose)  for hypersivor hosts have no effect. If this is correct, then I don't see any impact at the moment.

       

      This is the issue.  Since virt-who hosts don't assign to any cv environments so it falls in to the "else" condition. The "else" condition doesn't return the array list format expected by Candlepin. 

            def candlepin_environments
              if self.host.content_facet
                self.host.content_facet.content_view_environments.map do |cve|
                  { :id => cve.content_view.cp_environment_id(cve.lifecycle_environment) }
                end
              else
                self.host.organization.default_content_view.cp_environment_id(self.host.organization.library)  <================
              end
            end 

       

              rhn-support-chrobert Chris Roberts
              rhn-support-hyu Hao Chang Yu
              Vijaykumar Sawant Vijaykumar Sawant
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: