How to compile the Prometheus UI static binary for Windows? - windows

I am trying to Access GCP Managed Prometheus metrics from Grafana on Windows, for which I need to compile a Windows static binary for the Prometheus UI Frontend so that I can use it as an authentication proxy for Grafana.
I have downloaded the Go source from GitHub as well as Go for Windows v1.19.3.
Running go run main.go resulted in a bunch of errors similar to the following:
main.go:43:2: no required module provides package github.com/GoogleCloudPlatform/prometheus-engine/pkg/ui; to add it:
go get github.com/GoogleCloudPlatform/prometheus-engine/pkg/ui
I whittled these down by running the go get commands as indicated. One such command resulted in a further complaint about git being unavailable, so I added the Windows binary for that as well to the PATH and proceeded with the process. Ultimately however I'm left with the following error:
D:\Go>go get github.com/GoogleCloudPlatform/prometheus-engine/pkg/ui
go: github.com/GoogleCloudPlatform/prometheus-engine/pkg/ui: no matching versions for query "upgrade"
A web search for the error hasn't been of much help. Suspecting some sort of version conflict I've tried with Go v1.18.8 as well, but that results in the same error. Since I'm simply Going about this blindly, having zero prior experience with Go, I'd really appreciate some help in this matter.

Related

Attempting to build a custom terraform provider, encountering errors with the helpers/schema module

I'll start off by saying I'm completely new to Go and having a lot of trouble figuring out its environment.
I'm attempting to make a custom terraform provider by following the instructions in this guide.
When attemping to run go mod tidy after setting up the project files, it is unable to pull in the required modules. This is the error I get:
github.com/hashicorp/terraform/terraform: module github.com/hashicorp/terraform#latest found (v.1.3.2), but does not contain package github.com/hashicorp/terraform/terraform
I get this same error for pretty much all the requirements.
Can someone ELI5 how I'm supposed to setup my Go environment so that I can write a custom tf provider? Thanks.
The guide you are following is terribly outdated (from 2014). Since it was written, they reorganized plugin SDK several times, slightly newer is I believe terraform-plugin-sdk which I don't recommend learning at all. Latest and recommended SDK is called terraform-plugin-framework.
Up to date documentation with examples is here: Implement a Provider with the Terraform Plugin Framework. It will walk you trough environment setup and bootstrapping a new custom provider.

Is there an alternative to get the Golang code completion in VS Code without installing Go?

My goal is to use Go exclusively on Docker. In other words, I try my best not to install Go directly to my computer. And, I am writing the code on a VS Code and use the "Go" extension.
The problem is that when I create a main.go it throws an error:
Failed to find the "go" binary in either GOROOT() or PATH(/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin). Check PATH, or Install Go and reload the window. If PATH isn't what you expected, see https://github.com/golang/vscode-go/issues/971
Is there an alternative to get the code completion feature in VS Code?
This should be achievable using the Remote Development Extension pack. VSCode has good documentation on using containers as your development enviroment. This will allow you to enjoy all of the Go extension's features without needing Go to be installed directly on your machine. You can opt to install the extensions in the container as well.
See Developing inside a Container

Inconsistent internal package errors with go get

I'm trying to go get go.etcd.io/etcd/tools/benchmark.
Previously this has worked, flawlessly. However when I try to do it currently I have alternatively got no errors and I've had it fail on me with:
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/balancer_conn_wrappers.go:28:2: use of internal package google.golang.org/grpc/internal/buffer not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:49:2: use of internal package google.golang.org/grpc/internal/resolver/dns not allowed
go/src/go.etcd.io/etcd/vendor/google.golang.org/grpc/clientconn.go:50:2: use of internal package google.golang.org/grpc/internal/resolver/passthrough not allowed
The first time I ran it on a new go-1.13 installation it worked, but the following times it has failed as above.
The repo has not changed as far as I can tell in the past 8 months and I've tried on various golang versions but all so far have failed (bar the go-1.13 on that first try...).
Any assistance debugging this would be greatly appreciated!
I have both a workaround and an official fix.
The workaround:
Here I defined a go.mod which then used a previous version of the library.
The official fix:
This was fixed upstream and thus no one else should experience this.
I guess you can try by removing vendor folder from the go.etcd.io/etcd repo. Also disable the vendoring mode. It should work.

How to setup react native to use flow?

I was wondering how I have to setup .flowConfig in order to use flow on a React- Native project. I created an empty .flowConfig file but as soon as I include the react-native module in a JS source file and check this file with flow, flow displays a 'not_found' error message.
Follow the instructions on https://flowtype.org/ to create your projects .flowconfig file, you can copy and paste it, you also have to install flow via brew install flow and add the flow binaries to your package.json, once you've done all this, you should be able to manually run flow and check for error types, but, that is not really optimal.
I haven't been able to set up flow on atom without using nuclide, I'm guessing with some digging around the packages you can find something that works that allows for on-the-fly flow checking.
The link provided by #jerome (https://egghead.io/lessons/react-setup-nuclide-to-use-flow-and-eslint-mac) is useful but only for nuclide installation, still worth a watch.
I advise to watch https://egghead.io/lessons/react-setup-nuclide-to-use-flow-and-eslint-mac it explains how to use Flow with Nuclide. I had issue to make flow works and my main mistake was that I didn't install flow (brew install flow). On the official site (https://flowtype.org/docs/getting-started.html) they don't mention you need to install flow (or it is not super obvious if it is the case).
Anyway watch the video it is great, it even explains ESLint :)

Why IntelliJ Idea cannot find location of GO SDK?

I downloaded go1.4.darwin-amd64-osx10.8.tar.gz and extract it on my local directory.
Based on what Installing to a custom location says I added GOROOT in env variable.
Based on what Test your installation says I created a go file.
I finally ran it and I got expected result as following screenshot.
I actually have IntelliJ v.14 however, based on this article I installed Go Language (golang.org) version 0.9.15.3 in my IntelliJ Idea.
I created a Go project and during creation it asked me to add GO SDK. I gave it ~/Desktop/go/sdk however it wasn't able to recognise it. I got this error in Event Log:
14:03:02 IllegalArgumentException: Argument for #NotNull parameter
'virtualFile' of
com/intellij/openapi/projectRoots/impl/ProjectRootContainerImpl.addRoot
must not be null
Any idea how IntelliJ Idea is able to recognize it would be appreciated. Thanks.
Please consider using one of the alpha releases for 0.9.16. I believe that alpha7 could be the more stable one rather than alpha9. You can get them from GitHub releases
The v1.0.0-alpha0 branch is, as the name implies, an alpha release and it's in the early stages of development, that's why there's no release done yet for it as well.
P.S. I'm one of the contributors to the plugin.
Does not allow to use SDK placed in /usr/local/go (perfectly valid and recent SDK) under Mac Yosemite.
Google App Engine does not recognise last valid GAE GO SDK either.
~Desktop/go/sdk doesn't seems a valid path (as it refers to the homedir of the 'Desktop' user): ~/Desktop/go/sdk should work better.
As long as you see in that ~/Desktop/go/sdk folders the subfolders 'api', 'bin', 'blog', ..., that should be the right one for the GO SDK expected by the "golang support plugin".
Some issues exist with that plugin and IntelliJ 14: issues 1169, PR 1172 (fixed for for 1.0.0-alpha).
The other approach is to recompile and install that plugin.
The end result of specifying the Go SDK path should look like:

Resources