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

Unable to create report definition when using IPv6 network #490

Open
jpelletier412 opened this issue Oct 11, 2024 · 3 comments
Open

Unable to create report definition when using IPv6 network #490

jpelletier412 opened this issue Oct 11, 2024 · 3 comments
Labels
bug Something isn't working

Comments

@jpelletier412
Copy link

jpelletier412 commented Oct 11, 2024

What is the bug?
Error is thrown when attempting to create report definition in Opensearch-Dashboards GUI when on IPv6 network. We see this in the logs:

{
   "type":"log",
   "@timestamp":"2024-10-01T10:33:12Z",
   "tags":[
      "error",
      "plugins",
      "reportsDashboards"
   ],
   "pid":1,
   "message":"Failed input validation for create report definition ValidationError: [report_params.core_params.origin]: value must be a valid URI (see RFC 3986)."
}

I am not sure what this error is refering to as when I investigate the request in the browser, I dont see an "report_params.core_params.origin" field

{
   "report_params":{
      "report_name":"test1",
      "report_source":"Saved search",
      "description":"",
      "core_params":{
         "base_url":"/app/discover#/view/27895720-8f5f-11ec-b2f5-09d48915cf9c",
         "report_format":"csv",
         "time_duration":"PT30M",
         "saved_search_id":"27895720-8f5f-11ec-b2f5-09d48915cf9c",
         "limit":10000,
         "excel":true
      }
   },
   "delivery":{
      "configIds":[
         
      ],
      "title":"",
      "textDescription":"",
      "htmlDescription":""
   },
   "trigger":{
      "trigger_type":"On demand"
   }
}

The response in the logs seems to have correct formatted IPv6 addresses:

{
   "type":"response",
   "@timestamp":"2024-10-01T10:33:12Z",
   "tags":[
      
   ],
   "pid":1,
   "method":"post",
   "statusCode":400,
   "req":{
      "url":"/api/reporting/reportDefinition",
      "method":"post",
      "headers":{
         "host":"[330b:c0e0:101:5459:6936:2:1e0b:20d]",
         "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
         "accept":"*/*",
         "accept-language":"en-US,en;q=0.5",
         "accept-encoding":"gzip, deflate, br, zstd",
         "referer":"https://[330b:c0e0:101:5459:6936:2:1e0b:20d]/app/reports-dashboards",
         "content-type":"application/json",
         "osd-version":"2.14.0",
         "osd-xsrf":"osd-fetch",
         "content-length":"368",
         "origin":"https://[330b:c0e0:101:5459:6936:2:1e0b:20d]",
         "connection":"keep-alive",
         "sec-fetch-dest":"empty",
         "sec-fetch-mode":"cors",
         "sec-fetch-site":"same-origin",
         "priority":"u=0"
      },
      "remoteAddress":"330b:c0e0:101:5ec9:b433:2:c:0",
      "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
      "referer":"https://[330b:c0e0:101:5459:6936:2:1e0b:20d]/app/reports-dashboards"
   },
   "res":{
      "statusCode":400,
      "responseTime":5,
      "contentLength":9
   },
   "message":"POST /api/reporting/reportDefinition 400 5ms - 9.0B"
}

Generating report definition works fine in IPv4 network and defining server.host in opensearch-dashboards.yml as "0.0.0.0".

How can one reproduce the bug?

  1. Define server.host in opensearch-dashboards.yaml as "::"
  2. In Dashboards GUI, navigate to Plugins > Reporting
  3. Attempt to create a report defintion. Any settings will generate the error
  4. Notice error is raised and defintion is not created

What is the expected behavior?
No error is occurrs when attempting to create a report definition when server.host is defined as "::"

What is your host/environment?
Opensearch and Dashboards v2.14.0
Running using Docker images in Kuberntes environment
Environment is running on IPv6 network
opensearch-dashbaords.yml:

opensearch:
  hosts:
  -  https://app-service.svc.cluster.local:9200

  username: "user"
  password: "password"

  ssl:
    certificateAuthorities: [ "/secure/App/oauth-ca/oauth-ca.crt" ]
    
  requestHeadersAllowlist:
  - Authorization
  - securitytenant
  # Including old header name for backwards compatability
  - security_tenant

server:
  host: "::"

  ssl:
    enabled: true
    certificate: /secure/App/cert/cert
    key: /secure/App/cert/key

opensearch_security:
  auth:
    type: openid
  cookie:
    secure: true
    password: "secret"

  openid:
    connect_url: "https://oauth-service.svc.cluster.local/realms/App/.well-known/openid-configuration/"
    client_secret: "secret"
    client_id: "telemetry"
    root_ca: /secure/App/oauth-ca/oauth-ca.crt
    base_redirect_url: https://[330b:c0e0:101:5459:6936:2:1e0b:020d]/

  readonly_mode:
    roles:
    - kibana_read_only

  multitenancy:
    enabled: false

opensearchDashboards:
  autocompleteTimeout: 100000
  autocompleteTerminateAfter: 10000000
  branding:
    logo:
      defaultUrl: "https://[330b:c0e0:101:5459:6936:2:1e0b:020d]/ui/favicons/solidBackgroundLogo.png"
    mark:
      defaultUrl: "https://[330b:c0e0:101:5459:6936:2:1e0b:020d]/ui/favicons/transparentBackgroundLogo.png"
    loadingLogo:
      defaultUrl: "https://[330b:c0e0:101:5459:6936:2:1e0b:020d]/ui/favicons/transparentBackgroundLogo.png"
    faviconUrl: "https://[330b:c0e0:101:5459:6936:2:1e0b:020d]/ui/favicons/transparentBackgroundLogo.png"
    applicationTitle: "Application Telemetry"
@jpelletier412 jpelletier412 added bug Something isn't working untriaged labels Oct 11, 2024
@dblock dblock removed the untriaged label Nov 4, 2024
@dblock
Copy link
Member

dblock commented Nov 4, 2024

[Catch All Triage - 1, 2]

@joshuali925 joshuali925 transferred this issue from opensearch-project/reporting Jan 17, 2025
@krisfreedain
Copy link
Member

Catch All Triage - 1, 2, 3

@jpelletier412
Copy link
Author

I am actually looking to provide a fix for this issue. I think I have found the area that needs to be fixed, but I am having a hard time testing this as it does not seem like the Reporting plugin can generate defintions when I run things locally in a "development" environment. I have a local Opensearch cluster running with the Reporting plugin added to Dashboards and when I attempt to create a new report definition, I consistently get an error stating that the URI that the request is trying to reach is not available "“no handler found for uri [/_plugins/_reports/defintions”. Unfortunately I dont have the full error as I can no longer get my Dashboard instance to run as it instantly says "OpenSearch Dashboards did not load properly. Check the server output for more information." And there is nothing in the server logs.

This error is also happening even when I define server.host as "0.0.0.0", which I know works in production environment. Are there addtional plugins/APIs I need to have present? I assume this error means whatever is responsible for handling the request just simply isnt there. Any guideance would be great.

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

No branches or pull requests

3 participants