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

JSON lists are not parsed as valid output #104

Open
blacksd opened this issue Jan 21, 2022 · 1 comment
Open

JSON lists are not parsed as valid output #104

blacksd opened this issue Jan 21, 2022 · 1 comment

Comments

@blacksd
Copy link

blacksd commented Jan 21, 2022

I saw a mention in #31 that the provider output doesn't parse JSON lists, only maps. This is unfortunately accurate; if I produce a JSON-valid list (it's from a jq output), I get a "no valid JSON" debug message:

2022-01-21T15:28:58.159+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:58 -------------------------
2022-01-21T15:28:58.159+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:58 [DEBUG] Starting execution...
2022-01-21T15:28:58.159+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:58 -------------------------
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59   [
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value1",
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value2",
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value3",
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value4",
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value5",
2022-01-21T15:28:59.248+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value6",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value7",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value8",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value9",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value10",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value11",
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59     "value12"
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59   ]
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59 -------------------------
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59 [DEBUG] Command execution completed:
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59 -------------------------
2022-01-21T15:28:59.249+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 15:28:59 [DEBUG] no valid JSON strings found at end of output:

if I get the same list enclosed within a map, it works:

2022-01-21T16:06:36.261+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:36 -------------------------
2022-01-21T16:06:36.261+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:36 [DEBUG] Starting execution...
2022-01-21T16:06:36.261+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:36 -------------------------
2022-01-21T16:06:37.300+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37   {
2022-01-21T16:06:37.300+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37     "roles": [
2022-01-21T16:06:37.300+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value1",
2022-01-21T16:06:37.300+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value2",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value3",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value4",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value5",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value6",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value7",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value8",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value9",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value10",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value11",
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37       "value12"
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37     ]
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37   }
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37 -------------------------
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37 [DEBUG] Command execution completed:
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37 -------------------------
2022-01-21T16:06:37.301+0100 [DEBUG] provider.terraform-provider-shell_v1.7.10: 2022/01/21 16:06:37 [DEBUG] Valid map[string]string:

I'll use the simple workaround for the time being, as soon as I'll get the chance I'll look into fixing this for good.

@freimer
Copy link

freimer commented Aug 31, 2022

I don't believe there is anything to fix. The output from the read script (or create and update if read not implemented) is used as the output for the resource. What key would be used if a list were accepted? It has to be a single JSON object, not a list, as the properties of the object are used as the keys in the map for the resource output. I'd suggest closing this, as there is nothing to fix. I believe your second example, with a "roles" property of the single output object in JSON is correct, and not a work-around.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants