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) {
|
||||
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)
|
||||
}
|
||||
|
|
17
flake.nix
17
flake.nix
|
@ -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}" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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)
|
||||
return
|
||||
}
|
||||
|
||||
log.Println("[handleHookCreateSwitch] got switch", members, h)
|
||||
|
||||
// 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
|
||||
}
|
||||
}
|
||||
|
||||
member, err := pkApi.GetMember(front)
|
||||
sw, err := pkApi.GetSwitch(h.SystemID, h.ID)
|
||||
if err != nil {
|
||||
log.Printf("[handleHookCreateSwitch] pk member fetch failed, skipping named requirements")
|
||||
} else {
|
||||
go dsiApi.UpdateFrontField(member.Name)
|
||||
log.Println("[handleHookCreateSwitch] switch fetch failed:", err)
|
||||
return
|
||||
}
|
||||
|
||||
go promCountSwitches(h, members)
|
||||
log.Println("[handleHookCreateSwitch] got switch", sw.Members)
|
||||
log.Println("[handleHookCreateSwitch] system id", h.SystemID, " -- switch id", h.ID)
|
||||
|
||||
front := &PluralKitMember{
|
||||
UUID: "00000000-0000-0000-0000-000000000000",
|
||||
Name: "???",
|
||||
}
|
||||
|
||||
if len(sw.Members) != 0 {
|
||||
front = &sw.Members[0]
|
||||
}
|
||||
|
||||
go dsiApi.UpdateFrontField(front.Name)
|
||||
go promCountSwitches(h, sw.Members)
|
||||
// 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()
|
||||
)
|
||||
|
||||
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
|
||||
}
|
||||
|
|
|
@ -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
1
result
Symbolic link
|
@ -0,0 +1 @@
|
|||
/nix/store/cnnxb0z1g23wmaaigskrbdxfa566n97h-docker-image-plapkit.tar.gz
|
Loading…
Add table
Reference in a new issue