Jira (FACT-3176) Facter long key breaks YAML formatter

7 views
Skip to first unread message

Tomas Barton (Jira)

unread,
Jan 12, 2023, 8:18:04 AM1/12/23
to puppe...@googlegroups.com
Tomas Barton created an issue
 
Facter / Bug FACT-3176
Facter long key breaks YAML formatter
Issue Type: Bug Bug
Affects Versions: FACT 4.2.13
Assignee: Unassigned
Components: Facter 4
Created: 2023/01/12 5:17 AM
Environment:

Debian 11

Priority: Normal Normal
Reporter: Tomas Barton

facter -y will output invalid YAML when some key is too long (somewhere around 130 characters)

longfact:
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : foo
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : bar
  1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567: "this
    is fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678
  : "not fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890
  : foo
  bar:
  - baz
  - foo
  foo: bar

the fact is defined as /opt/puppetlabs/puppet/cache/lib/facter/longfact.rb:

#!/usr/bin/env ruby
 
require 'facter'
 
Facter.add(:longfact) do
  setcode do
    ret = {}
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'foo'
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'bar'
    ret['bar'] = 'baz',
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890'] = 'foo'
    ret['foo'] = 'bar'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567'] = 'this is fine'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678'] = 'not fine'
    ret
  end
end

also I would expect

facter --puppet longfact."/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6"

to return a value instead of nil

JSON looks ok:

{
  "longfact": {
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "foo",
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "bar",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567": "this is fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678": "not fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890": "foo",
    "bar": [
      "baz",
      "foo"
    ],
    "foo": "bar"
  }
}

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v8.20.11#820011-sha1:0629dd8)
Atlassian logo

Tomas Barton (Jira)

unread,
Jan 12, 2023, 8:52:02 AM1/12/23
to puppe...@googlegroups.com
Tomas Barton updated an issue
Change By: Tomas Barton
{{facter -y longfact }} will output invalid YAML when some key is too long (somewhere around 130 characters)

{code}

longfact:
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : foo
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : bar
  1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567: "this
    is fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678
  : "not fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890
  : foo
  bar:

  -
baz
  - foo
  foo
: bar
{code}

the fact is defined as {{/opt/puppetlabs/puppet/cache/lib/facter/longfact.rb}}:

{code}

#!/usr/bin/env ruby

require 'facter'

Facter.add(:longfact) do
  setcode do
    ret = {}
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'foo'
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'bar'
    ret['bar'] = 'baz'
,
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890'] = 'foo'
    ret['foo'] = 'bar'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567'] = 'this is fine'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678'] = 'not fine'
    ret
  end
end
{code}

also I would expect

{code}
facter --puppet longfact."/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6"
{code}

to return a value instead of {{nil}}

JSON looks ok {{ facter --puppet longfact -j}} :

{code}

{
  "longfact": {
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "foo",
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "bar",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567": "this is fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678": "not fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890": "foo",
    "bar": [
      "baz",
      "foo"
    ],
    "foo": "bar"
  }
}
{code}

Tomas Barton (Jira)

unread,
Jan 12, 2023, 8:53:07 AM1/12/23
to puppe...@googlegroups.com
Tomas Barton updated an issue
{{facter -y longfact}} will output invalid YAML when some key is too long (somewhere around 130 characters)

{code}
longfact:
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : foo
  ? /lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6
  : bar
  1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567: "this
    is fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678
  : "not fine"
  ? 1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890
  : foo
  bar: baz

  foo: bar
{code}
the fact is defined as {{/opt/puppetlabs/puppet/cache/lib/facter/longfact.rb}}:

{code}
#!/usr/bin/env ruby

require 'facter'

Facter.add(:longfact) do
  setcode do
    ret = {}
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'foo'
    ret['/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6'] = 'bar'
    ret['bar'] = 'baz'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890'] = 'foo'
    ret['foo'] = 'bar'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567'] = 'this is fine'
    ret['1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678'] = 'not fine'
    ret
  end
end
{code}

also I would expect

{code}
facter --puppet longfact."/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6"
{code}
to return a value instead of {{nil}}

JSON looks ok {{ facter --puppet longfact -j}}:

{code :json }

{
  "longfact": {
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io/configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "foo",
    "/lib/kubelet/pods/764c8dc6-dff9-4577-8e61-cfa61eecc4f5/volumes/kubernetes.io~configmap/esconfig/pvc-e17f80f3-6f36-431f-b44e-72fcbee370a6": "bar",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567": "this is fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-12345678": "not fine",
    "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890": "foo",
    "bar":
[
      "baz",
      "foo"

    ],
    "foo"
: "bar"
  }
}
{code}

Tomas Barton (Jira)

unread,
Jan 18, 2023, 4:12:01 AM1/18/23
to puppe...@googlegroups.com
Tomas Barton commented on Bug FACT-3176
 
Re: Facter long key breaks YAML formatter

Sorry, mine fault, the yaml seems to be valid. I just haven't seen this syntax.

Reply all
Reply to author
Forward
0 new messages