fix fronter, deployment

This commit is contained in:
41666 2024-06-26 17:28:42 -04:00
parent 947600efb7
commit ce36c069a7
7 changed files with 84 additions and 42 deletions

10
fedi.go
View file

@ -33,7 +33,7 @@ func NewIceshrimpAPI(baseURL string, token string, fieldName string) IceshrimpAP
}
func (i IceshrimpAPI) UpdateFrontField(newValue string) {
log.Println("UpdateFrontField")
// log.Println("UpdateFrontField")
headers := http.Header{}
headers.Add("authorization", fmt.Sprintf("Bearer %s", i.Token))
@ -71,7 +71,7 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
return
}
log.Println(fields)
// log.Println(fields)
for idx, field := range fields.Fields {
if field.Name == i.FieldName {
@ -93,9 +93,9 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
return
}
log.Println(buf.String())
// log.Println(buf.String())
resp, err = i.Client.Do(&http.Request{
_, err = i.Client.Do(&http.Request{
URL: url,
Method: "POST",
Header: headers,
@ -105,5 +105,5 @@ func (i IceshrimpAPI) UpdateFrontField(newValue string) {
log.Println("[IceshrimpAPI] update call failed", err)
}
json.NewDecoder(os.Stderr).Decode(resp.Body)
// json.NewDecoder(os.Stderr).Decode(resp.Body)
}

View file

@ -1,5 +1,5 @@
{
description = "saerro";
description = "plapkit";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
@ -8,8 +8,21 @@
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
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; };
packages.default = pkgs.buildGoModule {
name = "plapkit";
src = ./.;
vendorHash = "sha256-YY7Hj7lSq7vEoMEIu/zmweWzd7p7KF+4YCUX2SJ7kwI=";
};
packages.container = pkgs.dockerTools.buildImage {
name = "plapkit";
config = {
Cmd = [ "${packages.default}" ];
};
};
};
};
}

View file

@ -59,35 +59,27 @@ func postGetHookToken(rw http.ResponseWriter, req *http.Request) {
go handler(payload)
}
const SwitchOut = "00000000-0000-0000-0000-000000000000"
func handleHookCreateSwitch(h HookPayload) {
members, ok := h.Data["members"].([]interface{})
if !ok {
log.Println("[handleHookCreateSwitch] ERR rejected, missing members", h.Data)
sw, err := pkApi.GetSwitch(h.SystemID, h.ID)
if err != nil {
log.Println("[handleHookCreateSwitch] switch fetch failed:", err)
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 := SwitchOut
if len(members) != 0 {
front, ok = members[0].(string)
if !ok {
log.Println("[handleHookCreateSwitch] ERR rejected, first member wasn't a string", members)
return
}
front := &PluralKitMember{
UUID: "00000000-0000-0000-0000-000000000000",
Name: "???",
}
member, err := pkApi.GetMember(front)
if err != nil {
log.Printf("[handleHookCreateSwitch] pk member fetch failed, skipping named requirements")
} else {
go dsiApi.UpdateFrontField(member.Name)
if len(sw.Members) != 0 {
front = &sw.Members[0]
}
go promCountSwitches(h, members)
go dsiApi.UpdateFrontField(front.Name)
go promCountSwitches(h, sw.Members)
// TODO: discord nickname updates
}

1
module.nix Normal file
View file

@ -0,0 +1 @@
{ ... }: {}

View file

@ -13,6 +13,10 @@ var (
pkApi = NewPluralKit()
)
type PluralKitSwitch struct {
Members []PluralKitMember
}
type PluralKitMember struct {
UUID string `json:"uuid"`
Name string `json:"name"`
@ -44,7 +48,7 @@ func (pk *PluralKit) GetMember(id string) (*PluralKitMember, error) {
}
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
@ -57,3 +61,26 @@ func (pk *PluralKit) GetMember(id string) (*PluralKitMember, error) {
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
}

View file

@ -8,7 +8,11 @@ import (
)
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",
Name: "switches",
}, []string{"system", "member", "member_display", "role"})
@ -19,26 +23,30 @@ var (
}, []string{"system", "member", "member_display"})
)
func promCountSwitches(h HookPayload, members []interface{}) {
for idx, id := range members {
func clearHighSwitches() {
for _, labels := range knownHighSwitches {
switchGauge.With(labels).Set(0)
}
}
func promCountSwitches(h HookPayload, members []PluralKitMember) {
clearHighSwitches()
for idx, member := range members {
role := "cofront"
if idx == 0 {
role = "front"
}
member := &PluralKitMember{
Name: "switched out",
labels := prometheus.Labels{
"system": h.SystemID,
"member": member.UUID,
"member_display": member.Name,
"role": role,
}
member2, err := pkApi.GetMember(id.(string))
if err != nil {
member.Name = "%%lookup failed%%"
log.Println("[promCountSwitches] WARN lookup failed,", err)
} else {
member = member2
}
switchCounter.WithLabelValues(h.SystemID, id.(string), member.Name, role).Inc()
switchGauge.With(labels).Set(1)
knownHighSwitches[member.UUID+":"+role] = labels
}
}

1
result Symbolic link
View file

@ -0,0 +1 @@
/nix/store/cnnxb0z1g23wmaaigskrbdxfa566n97h-docker-image-plapkit.tar.gz