fix fronter, deployment
This commit is contained in:
parent
947600efb7
commit
ce36c069a7
7 changed files with 84 additions and 42 deletions
10
fedi.go
10
fedi.go
|
@ -33,7 +33,7 @@ func NewIceshrimpAPI(baseURL string, token string, fieldName string) IceshrimpAP
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i IceshrimpAPI) UpdateFrontField(newValue string) {
|
func (i IceshrimpAPI) UpdateFrontField(newValue string) {
|
||||||
log.Println("UpdateFrontField")
|
// log.Println("UpdateFrontField")
|
||||||
|
|
||||||
headers := http.Header{}
|
headers := http.Header{}
|
||||||
headers.Add("authorization", fmt.Sprintf("Bearer %s", i.Token))
|
headers.Add("authorization", fmt.Sprintf("Bearer %s", i.Token))
|
||||||
|
@ -71,7 +71,7 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println(fields)
|
// log.Println(fields)
|
||||||
|
|
||||||
for idx, field := range fields.Fields {
|
for idx, field := range fields.Fields {
|
||||||
if field.Name == i.FieldName {
|
if field.Name == i.FieldName {
|
||||||
|
@ -93,9 +93,9 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println(buf.String())
|
// log.Println(buf.String())
|
||||||
|
|
||||||
resp, err = i.Client.Do(&http.Request{
|
_, err = i.Client.Do(&http.Request{
|
||||||
URL: url,
|
URL: url,
|
||||||
Method: "POST",
|
Method: "POST",
|
||||||
Header: headers,
|
Header: headers,
|
||||||
|
@ -105,5 +105,5 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
|
||||||
log.Println("[IceshrimpAPI] update call failed", err)
|
log.Println("[IceshrimpAPI] update call failed", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
json.NewDecoder(os.Stderr).Decode(resp.Body)
|
// json.NewDecoder(os.Stderr).Decode(resp.Body)
|
||||||
}
|
}
|
||||||
|
|
17
flake.nix
17
flake.nix
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
description = "saerro";
|
description = "plapkit";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
@ -8,8 +8,21 @@
|
||||||
|
|
||||||
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
||||||
systems = [ "x86_64-linux" "aarch64-linux" ];
|
systems = [ "x86_64-linux" "aarch64-linux" ];
|
||||||
perSystem = { config, self', pkgs, lib, system, ... }: {
|
perSystem = { config, self', pkgs, lib, system, ... }: rec {
|
||||||
devShells.default = import ./shell.nix { inherit pkgs; };
|
devShells.default = import ./shell.nix { inherit pkgs; };
|
||||||
|
|
||||||
|
packages.default = pkgs.buildGoModule {
|
||||||
|
name = "plapkit";
|
||||||
|
src = ./.;
|
||||||
|
vendorHash = "sha256-YY7Hj7lSq7vEoMEIu/zmweWzd7p7KF+4YCUX2SJ7kwI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.container = pkgs.dockerTools.buildImage {
|
||||||
|
name = "plapkit";
|
||||||
|
config = {
|
||||||
|
Cmd = [ "${packages.default}" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -59,35 +59,27 @@ func postGetHookToken(rw http.ResponseWriter, req *http.Request) {
|
||||||
go handler(payload)
|
go handler(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
const SwitchOut = "00000000-0000-0000-0000-000000000000"
|
|
||||||
|
|
||||||
func handleHookCreateSwitch(h HookPayload) {
|
func handleHookCreateSwitch(h HookPayload) {
|
||||||
members, ok := h.Data["members"].([]interface{})
|
sw, err := pkApi.GetSwitch(h.SystemID, h.ID)
|
||||||
if !ok {
|
if err != nil {
|
||||||
log.Println("[handleHookCreateSwitch] ERR rejected, missing members", h.Data)
|
log.Println("[handleHookCreateSwitch] switch fetch failed:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Println("[handleHookCreateSwitch] got switch", members, h)
|
log.Println("[handleHookCreateSwitch] got switch", sw.Members)
|
||||||
|
log.Println("[handleHookCreateSwitch] system id", h.SystemID, " -- switch id", h.ID)
|
||||||
|
|
||||||
// switch out, stop
|
front := &PluralKitMember{
|
||||||
front := SwitchOut
|
UUID: "00000000-0000-0000-0000-000000000000",
|
||||||
if len(members) != 0 {
|
Name: "???",
|
||||||
front, ok = members[0].(string)
|
|
||||||
if !ok {
|
|
||||||
log.Println("[handleHookCreateSwitch] ERR rejected, first member wasn't a string", members)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
member, err := pkApi.GetMember(front)
|
if len(sw.Members) != 0 {
|
||||||
if err != nil {
|
front = &sw.Members[0]
|
||||||
log.Printf("[handleHookCreateSwitch] pk member fetch failed, skipping named requirements")
|
|
||||||
} else {
|
|
||||||
go dsiApi.UpdateFrontField(member.Name)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
go promCountSwitches(h, members)
|
go dsiApi.UpdateFrontField(front.Name)
|
||||||
|
go promCountSwitches(h, sw.Members)
|
||||||
// TODO: discord nickname updates
|
// TODO: discord nickname updates
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
module.nix
Normal file
1
module.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ ... }: {}
|
29
pluralkit.go
29
pluralkit.go
|
@ -13,6 +13,10 @@ var (
|
||||||
pkApi = NewPluralKit()
|
pkApi = NewPluralKit()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PluralKitSwitch struct {
|
||||||
|
Members []PluralKitMember
|
||||||
|
}
|
||||||
|
|
||||||
type PluralKitMember struct {
|
type PluralKitMember struct {
|
||||||
UUID string `json:"uuid"`
|
UUID string `json:"uuid"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
@ -44,7 +48,7 @@ func (pk *PluralKit) GetMember(id string) (*PluralKitMember, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
return nil, fmt.Errorf("pluralkit did not find member %ss", id)
|
return nil, fmt.Errorf("pluralkit did not find member %s", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
var member PluralKitMember
|
var member PluralKitMember
|
||||||
|
@ -57,3 +61,26 @@ func (pk *PluralKit) GetMember(id string) (*PluralKitMember, error) {
|
||||||
|
|
||||||
return &member, nil
|
return &member, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (pk *PluralKit) GetSwitch(systemID string, switchID string) (*PluralKitSwitch, error) {
|
||||||
|
resp, err := pk.Client.Get(fmt.Sprintf("%s/systems/%s/switches/%s", pk.BaseURL, systemID, switchID))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("fetching pluralkit system %s switch %s failed: %w", systemID, switchID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return nil, fmt.Errorf("pluralkit did not find system %s switch %s", systemID, switchID)
|
||||||
|
}
|
||||||
|
|
||||||
|
var sw PluralKitSwitch
|
||||||
|
err = json.NewDecoder(resp.Body).Decode(&sw)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("malformed json: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, member := range sw.Members {
|
||||||
|
pk.Cache.Add(member.UUID, &member)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &sw, nil
|
||||||
|
}
|
||||||
|
|
|
@ -8,7 +8,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
switchCounter *prometheus.CounterVec = promauto.NewCounterVec(prometheus.CounterOpts{
|
// known high signals, we will set these to zero after.
|
||||||
|
// key is uuid:role
|
||||||
|
knownHighSwitches = map[string]prometheus.Labels{} // tima was here
|
||||||
|
|
||||||
|
switchGauge *prometheus.GaugeVec = promauto.NewGaugeVec(prometheus.GaugeOpts{
|
||||||
Namespace: "plapkit",
|
Namespace: "plapkit",
|
||||||
Name: "switches",
|
Name: "switches",
|
||||||
}, []string{"system", "member", "member_display", "role"})
|
}, []string{"system", "member", "member_display", "role"})
|
||||||
|
@ -19,26 +23,30 @@ var (
|
||||||
}, []string{"system", "member", "member_display"})
|
}, []string{"system", "member", "member_display"})
|
||||||
)
|
)
|
||||||
|
|
||||||
func promCountSwitches(h HookPayload, members []interface{}) {
|
func clearHighSwitches() {
|
||||||
for idx, id := range members {
|
for _, labels := range knownHighSwitches {
|
||||||
|
switchGauge.With(labels).Set(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func promCountSwitches(h HookPayload, members []PluralKitMember) {
|
||||||
|
clearHighSwitches()
|
||||||
|
|
||||||
|
for idx, member := range members {
|
||||||
role := "cofront"
|
role := "cofront"
|
||||||
if idx == 0 {
|
if idx == 0 {
|
||||||
role = "front"
|
role = "front"
|
||||||
}
|
}
|
||||||
|
|
||||||
member := &PluralKitMember{
|
labels := prometheus.Labels{
|
||||||
Name: "switched out",
|
"system": h.SystemID,
|
||||||
|
"member": member.UUID,
|
||||||
|
"member_display": member.Name,
|
||||||
|
"role": role,
|
||||||
}
|
}
|
||||||
|
|
||||||
member2, err := pkApi.GetMember(id.(string))
|
switchGauge.With(labels).Set(1)
|
||||||
if err != nil {
|
knownHighSwitches[member.UUID+":"+role] = labels
|
||||||
member.Name = "%%lookup failed%%"
|
|
||||||
log.Println("[promCountSwitches] WARN lookup failed,", err)
|
|
||||||
} else {
|
|
||||||
member = member2
|
|
||||||
}
|
|
||||||
|
|
||||||
switchCounter.WithLabelValues(h.SystemID, id.(string), member.Name, role).Inc()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
result
Symbolic link
1
result
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
/nix/store/cnnxb0z1g23wmaaigskrbdxfa566n97h-docker-image-plapkit.tar.gz
|
Loading…
Add table
Reference in a new issue