Code Monkey home page Code Monkey logo

Comments (5)

Nexucis avatar Nexucis commented on May 26, 2024

Hi,

This is not an issue but a question, sorry if it's not the right place to post, I couldn't find anywhere else to ask.

it's a good place to ask :)

So with the current implementation, I don't think you can do that. The only way do to it would be to re-implement the PrometheusClient interface which I can understand is a bit painful just for a prefix URI issue.

What could be possible would be to make configurable the apiPrefix

We are currently migrating the code to prometheus directly. It will ease the changes. This repository is becoming a mirror. So until the migration is finished, I would like to avoid to change the code.

If you are ok with that, you could copy the code of the PrometheusClient and replace the constant apiPrefix = '/api/v1' by yours siteapi/v1/prom

Once the mirror will be in place, I will change the code to make the apiPrefix configurable and at this moment you will be able to remove your copy of the implementation of the PrometheusClient

Another question, when I tried this from the Readme, all auto suggestion seems to stop working, did I miss any config?

For this part, I would suggest to open a different issue where you can describe exactly what you did. Like the step to reproduce the issue.

from codemirror-promql.

Nexucis avatar Nexucis commented on May 26, 2024

mmm actually by providing your own implementation of fetchFn, you could just replace /api/v1/ by /siteapi/v1/prom using some string replacement.

First parameter of fetchFn is the requestURI. So you need to change this parameter.

@juliusv, since it's should be quite easy to change the RequestURI by overriding the implementation of fetchFn, I'm wondering if it's worth to make the apiPrefix configurable like I was proposing in my first message. WDYT ?

from codemirror-promql.

stenwolf avatar stenwolf commented on May 26, 2024

thank you for the suggestions, I don't quite understand the fetchFn implementation, does the auto complete functionality need both labels and series to work? Or do I just need to return something like an array of series for it to work?
For example if I'm using this
const promQL = new PromQLExtension().setComplete({ remote: { fetchFn: myHTTPClient } })

where my myHTTPClient is just something as simple as

const myHTTPClient = async () => {
    const resp = await fetch('https://mysite.com/siteapi/v1/prom/series');
    return resp;
};

and resp is something like this

[
        {
            "__name__": "name1",
            "key1": "value1",
            "key2": "value2",
        },
        {
            "__name__": "name1",
            "key1": "value1",
            "key2": "value2",
        }
]

Or is fetchFn something completely different, would you provide an example of what fetchFn looks like please? Thank you very much!

from codemirror-promql.

Nexucis avatar Nexucis commented on May 26, 2024

does the auto complete functionality need both labels and series to work

Yes it is using both endpoints.

I would try more something like that:

const customFetchFn = (input: RequestInfo, init?: RequestInit): Promise<Response> => {
  if(typeof input === 'string') {
    input = input.replace('/api/v1', '/siteapi/v1/prom')
  }
  return fetch(input, init);
};
const promQL = new PromQLExtension().setComplete({ remote: { fetchFn: customFetchFn, url: 'https://mysite.com' } })

I didn't really try if my customFetchFn is working. But I think you can get the point :).

from codemirror-promql.

juliusv avatar juliusv commented on May 26, 2024

@juliusv, since it's should be quite easy to change the RequestURI by overriding the implementation of fetchFn, I'm wondering if it's worth to make the apiPrefix configurable like I was proposing in my first message. WDYT ?

I think it's fine to make it configurable, although /api/v1 should be standard for any backend that wants to call itself Prometheus-compatible, API-wise.

from codemirror-promql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.