go/svc: finish porting services to Bazel
The following services were never ported:
- cmc-proxy
- arista-proxy
- m6220-proxy
- topo
They now build.
Change-Id: I0688bfe43cdff946e6662e21969ef539382c0e86
diff --git a/go/svc/topo/BUILD.bazel b/go/svc/topo/BUILD.bazel
index 5e4abff..93c92a5 100644
--- a/go/svc/topo/BUILD.bazel
+++ b/go/svc/topo/BUILD.bazel
@@ -1,18 +1,4 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
-load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
-
-proto_library(
- name = "proto_proto",
- srcs = ["config.proto"],
- visibility = ["//visibility:public"],
-)
-
-go_proto_library(
- name = "proto_go_proto",
- importpath = "code.hackerspace.pl/hscloud/go/svc/topo",
- proto = ":proto_proto",
- visibility = ["//visibility:public"],
-)
go_library(
name = "go_default_library",
@@ -20,19 +6,18 @@
"main.go",
"service.go",
],
- embed = [":proto_go_proto"],
importpath = "code.hackerspace.pl/hscloud/go/svc/topo",
visibility = ["//visibility:private"],
deps = [
"//go/mirko:go_default_library",
- "//go/proto/infra:go_default_library",
"//go/statusz:go_default_library",
+ "//go/svc/topo/assets:go_default_library",
"//go/svc/topo/graph:go_default_library",
"//go/svc/topo/proto:go_default_library",
"//go/svc/topo/state:go_default_library",
+ "//proto/infra:go_default_library",
"@com_github_digitalocean_go_netbox//netbox:go_default_library",
"@com_github_digitalocean_go_netbox//netbox/client:go_default_library",
- "@com_github_gobuffalo_packr//:go_default_library",
"@com_github_golang_glog//:go_default_library",
"@com_github_golang_protobuf//proto:go_default_library",
"@ml_vbom_util//sortorder:go_default_library",
diff --git a/go/svc/topo/assets/BUILD b/go/svc/topo/assets/BUILD
new file mode 100644
index 0000000..f8d186b
--- /dev/null
+++ b/go/svc/topo/assets/BUILD
@@ -0,0 +1,17 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//extras:embed_data.bzl", "go_embed_data")
+
+go_embed_data(
+ name = "assets",
+ srcs = glob(["*.js"]),
+ package = "assets",
+ flatten = True,
+)
+
+# keep
+go_library(
+ name = "go_default_library",
+ srcs = [":assets"],
+ importpath = "code.hackerspace.pl/hscloud/go/svc/topo/assets",
+ visibility = ["//go/svc/topo:__pkg__"],
+)
diff --git a/go/svc/topo/main.go b/go/svc/topo/main.go
index 4affd57..4efe878 100644
--- a/go/svc/topo/main.go
+++ b/go/svc/topo/main.go
@@ -13,9 +13,8 @@
"github.com/golang/glog"
"github.com/golang/protobuf/proto"
- pb "code.hackerspace.pl/hscloud/go/svc/topo/proto"
-
"code.hackerspace.pl/hscloud/go/svc/topo/graph"
+ pb "code.hackerspace.pl/hscloud/go/svc/topo/proto"
"code.hackerspace.pl/hscloud/go/svc/topo/state"
)
diff --git a/go/svc/topo/proto/BUILD.bazel b/go/svc/topo/proto/BUILD.bazel
index 01007dd..b56fa57 100644
--- a/go/svc/topo/proto/BUILD.bazel
+++ b/go/svc/topo/proto/BUILD.bazel
@@ -1,8 +1,22 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+ name = "proto_proto",
+ srcs = ["topo.proto"],
+ visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+ name = "proto_go_proto",
+ importpath = "code.hackerspace.pl/hscloud/go/svc/topo/proto",
+ proto = ":proto_proto",
+ visibility = ["//visibility:public"],
+)
go_library(
name = "go_default_library",
- srcs = ["generate.go"],
+ embed = [":proto_go_proto"],
importpath = "code.hackerspace.pl/hscloud/go/svc/topo/proto",
visibility = ["//visibility:public"],
)
diff --git a/go/svc/topo/proto/generate.go b/go/svc/topo/proto/generate.go
deleted file mode 100644
index f760a61..0000000
--- a/go/svc/topo/proto/generate.go
+++ /dev/null
@@ -1,3 +0,0 @@
-//go:generate protoc -I.. ../config.proto --go_out=plugins=grpc:.
-
-package proto
diff --git a/go/svc/topo/config.proto b/go/svc/topo/proto/topo.proto
similarity index 87%
rename from go/svc/topo/config.proto
rename to go/svc/topo/proto/topo.proto
index 33aadbe..3f6e404 100644
--- a/go/svc/topo/config.proto
+++ b/go/svc/topo/proto/topo.proto
@@ -1,6 +1,7 @@
syntax = "proto3";
-package proto;
+package topo;
+option go_package = "code.hackerspace.pl/hscloud/go/svc/topo/proto";
message Config {
repeated Switch switch = 1;
diff --git a/go/svc/topo/service.go b/go/svc/topo/service.go
index 571eb97..fbbee92 100644
--- a/go/svc/topo/service.go
+++ b/go/svc/topo/service.go
@@ -7,13 +7,15 @@
"sort"
"strings"
+ "vbom.ml/util/sortorder"
+
"code.hackerspace.pl/hscloud/go/mirko"
- ipb "code.hackerspace.pl/hscloud/go/proto/infra"
"code.hackerspace.pl/hscloud/go/statusz"
+ ipb "code.hackerspace.pl/hscloud/proto/infra"
+
+ "code.hackerspace.pl/hscloud/go/svc/topo/assets"
"code.hackerspace.pl/hscloud/go/svc/topo/graph"
"code.hackerspace.pl/hscloud/go/svc/topo/state"
- "github.com/gobuffalo/packr"
- "vbom.ml/util/sortorder"
)
type Service struct {
@@ -103,8 +105,19 @@
`
func (s *Service) Setup(m *mirko.Mirko) {
- assets := packr.NewBox("./assets")
- m.HTTPMux().Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(assets)))
+ m.HTTPMux().Handle("/assets/", http.StripPrefix("/assets/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ data, ok := assets.Data[r.RequestURI]
+ if !ok {
+ http.NotFound(w, r)
+ return
+ }
+
+ if strings.HasSuffix(r.RequestURI, ".js") {
+ w.Header().Set("Content-Type", "text/javascript")
+ }
+
+ w.Write(data)
+ })))
m.HTTPMux().HandleFunc("/debug/graphviz", s.httpHandleGraphviz)
statusz.AddStatusPart("Switch Ports", switchportsFragment, s.statusHandleSwitchports)
statusz.AddStatusPart("Topology", topologyFragment, func(ctx context.Context) interface{} {
diff --git a/go/svc/topo/state/BUILD.bazel b/go/svc/topo/state/BUILD.bazel
index 81985d2..680e087 100644
--- a/go/svc/topo/state/BUILD.bazel
+++ b/go/svc/topo/state/BUILD.bazel
@@ -7,8 +7,8 @@
visibility = ["//visibility:public"],
deps = [
"//go/pki:go_default_library",
- "//go/proto/infra:go_default_library",
"//go/svc/topo/proto:go_default_library",
+ "//proto/infra:go_default_library",
"@org_golang_google_grpc//:go_default_library",
],
)
diff --git a/go/svc/topo/state/state.go b/go/svc/topo/state/state.go
index 232f9b0..08403e7 100644
--- a/go/svc/topo/state/state.go
+++ b/go/svc/topo/state/state.go
@@ -7,10 +7,10 @@
"google.golang.org/grpc"
- ipb "code.hackerspace.pl/hscloud/go/proto/infra"
- pb "code.hackerspace.pl/hscloud/go/svc/topo/proto"
-
"code.hackerspace.pl/hscloud/go/pki"
+ ipb "code.hackerspace.pl/hscloud/proto/infra"
+
+ pb "code.hackerspace.pl/hscloud/go/svc/topo/proto"
)
type SwitchportState struct {