Jira (FACT-3192) Custom fact fails to appear when using some options like --json

9 views
Skip to first unread message

Gavin Didrichsen (Jira)

unread,
Mar 17, 2023, 9:43:01 AM3/17/23
to puppe...@googlegroups.com
Gavin Didrichsen created an issue
 
Facter / Bug FACT-3192
Custom fact fails to appear when using some options like --json
Issue Type: Bug Bug
Assignee: Unassigned
Created: 2023/03/17 6:42 AM
Labels: jira_escalated
Priority: Normal Normal
Reporter: Gavin Didrichsen

 

 

  • I can see my ``bigbird`` custom fact as expected:

 

```

root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p bigbird

{

  role => "role::replica",

  sshkey =>

{     identifier => "pe-server-238c28-1.us-west1-b.c.customer-support-scratchpad.internal",     key => "LONGLONGLONGPUBLICKEY",     type => "ssh-rsa"   }

}

 

root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p | grep bigbird

bigbird => {

root@pe-server-238c28-1 pe_curl_requests (development)$

```

 

  • However, when I introduce other flags I see expected results:

 

```bash

  1. these work

root@pe-server-238c28-1 development (development)$ facter -p --json | grep -E "(oslogin|[^/]bigbird)"

  "bigbird": {

    "oslogin": {

root@pe-server-238c28-1 development (development)$ facter -p bigbird --json | grep -E "(oslogin|[^/]bigbird)"

  "bigbird": {

root@pe-server-238c28-1 development (development)$ 

 

 

  1. these don't work
  1. custom fact 'bigbird' is not returned unexpectedly

root@pe-server-238c28-1 development (development)$ facter --json | grep -E "(oslogin|[^/]bigbird)"

    "oslogin": {

root@pe-server-238c28-1 development (development)$ 

 

 

  1. no facts returned AND an error is thrown

root@pe-server-238c28-1 development (development)$ facter -p --no-external-facts | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:08.334765 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p --no-external-facts --json | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:15.077332 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p bigbird --no-external-facts | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:21.438824 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p bigbird --no-external-facts --json | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:28.317694 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ 

```

 

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

Gavin Didrichsen (Jira)

unread,
Mar 17, 2023, 9:44:01 AM3/17/23
to puppe...@googlegroups.com
Gavin Didrichsen updated an issue
Change By: Gavin Didrichsen
 

 

* I can see my ``bigbird`` custom fact as expected:

 

``` {code}

root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p bigbird

{

}}}{{{}{{}}}{{   role => "role::replica",

}}{{{}   sshkey => {

}}}{{{}{     identifier => "pe-server-238c28-1.us-west1-b.c.customer-support-scratchpad.internal",

    key => "LONGLONGLONGPUBLICKEY",

    type => "ssh-rsa"

  }

{ } }}{{{}}{}}}

 

{{{} root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p | grep bigbird

{}}}{{{} bigbird => {

{}}}{{{} root@pe-server-238c28-1 pe_curl_requests (development)$ {}}}
{code}
```

 

* However, when I introduce other flags I see expected results:

 

```bash {code}

# these work


root@pe-server-238c28-1 development (development)$ facter -p --json | grep -E "(oslogin|[^/]bigbird)"

  "bigbird": {

    "oslogin": {

root@pe-server-238c28-1 development (development)$ facter -p bigbird --json | grep -E "(oslogin|[^/]bigbird)"

  "bigbird": {

root@pe-server-238c28-1 development (development)$ 

 

 

# these don't work

# custom fact 'bigbird' is not returned unexpectedly


root@pe-server-238c28-1 development (development)$ facter --json | grep -E "(oslogin|[^/]bigbird)"

    "oslogin": {

root@pe-server-238c28-1 development (development)$ 

 

 

# no facts returned AND an error is thrown


root@pe-server-238c28-1 development (development)$ facter -p --no-external-facts | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:08.334765 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p --no-external-facts --json | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:15.077332 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p bigbird --no-external-facts | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:21.438824 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ facter -p bigbird --no-external-facts --json | grep -E "(oslogin|[^/]bigbird)"

[2023-03-17 13:28:28.317694 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

root@pe-server-238c28-1 development (development)$ 
{code}
```

 

Gavin Didrichsen (Jira)

unread,
Mar 17, 2023, 9:45:03 AM3/17/23
to puppe...@googlegroups.com
Gavin Didrichsen updated an issue
 

 
* I can see my ``bigbird`` custom fact as expected:

 

{code}
root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p bigbird
{ }}}{{{}{{}}}{{
  role => "role::replica", }}{{{}
  sshkey =>{ }}}{{{}{
    identifier => "pe-server-238c28-1.us-west1-b.c.customer-support-scratchpad.internal",
    key => "LONGLONGLONGPUBLICKEY",
    type => "ssh-rsa"
  } {}}}{{{}}{}}}
{{{ }


root@pe-server-238c28-1 pe_curl_requests (development)$ facter -p | grep bigbird {}}}{{{}
bigbird => { {}}}{{{}
root@pe-server-238c28-1 pe_curl_requests (development)${ }}}
{
code}

 
* However, when I introduce other flags I see expected results:

 

Gavin Didrichsen (Jira)

unread,
Mar 17, 2023, 9:52:03 AM3/17/23
to puppe...@googlegroups.com
Gavin Didrichsen updated an issue
A customer is seeing some unexpected behaviours when using facter as follows:
* Using``{*}-p-{*}`` and ``{*}-no-external-facts{*}`` together produces an error ``{*}ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one{*}`` and no facts are returned
* Other variations of facter options fail to return the expected custom fact

I have been able to replicate what the customer is seeing on my lab of
 
{code}root@pe-server-238c28-1 development (development)$ facter --version
4.2.14
root@pe-server-238c28-1 development (development)$
 
{code}
 

More detail of my lab setup:
* I have a custom fact defined on my PE, e.g., my environment containse the custom fact here *site-modules/bigbird/lib/facter/bigbird.rb*
* I
can see my ``bigbird`` custom fact as expected:

Charmaine Pritchett (Jira)

unread,
Mar 17, 2023, 9:55:01 AM3/17/23
to puppe...@googlegroups.com
Charmaine Pritchett updated an issue
Change By: Charmaine Pritchett
Zendesk Ticket Count: 1
Zendesk Ticket IDs: 51387

Josh Cooper (Jira)

unread,
Mar 17, 2023, 1:02:02 PM3/17/23
to puppe...@googlegroups.com

Josh Cooper (Jira)

unread,
Mar 21, 2023, 9:31:02 PM3/21/23
to puppe...@googlegroups.com

root@pe-server-238c28-1 development (development)$ facter --json | grep -E "(oslogin|[^/]bigbird)"
    "oslogin": {

This output (above) is expected because bigbird is a custom fact in a puppet module (so --puppet is required to load those facts)

root@pe-server-238c28-1 development (development)$ facter -p --no-external-facts | grep -E "(oslogin|[^/]bigbird)"
[2023-03-17 13:28:08.334765 ] ERROR Facter::OptionsValidator - no-external-facts and external-dir options conflict: please specify only one 

This output (above) is not expected and is a bug.

The "--no-external-facts" command line option is important because it prevents recursion when external facts call facter. See FACT-1373 and that was added in Facter 3 and the same issue again in Facter 4 (FACT-2772)

Reply all
Reply to author
Forward
0 new messages