diff --git a/internal/service/organizations.go b/internal/service/organizations.go index 6a6d3f4..42fa141 100644 --- a/internal/service/organizations.go +++ b/internal/service/organizations.go @@ -3,11 +3,14 @@ package service import ( "context" + "go.infratographer.com/x/events" "go.infratographer.com/x/gidx" "go.equinixmetal.net/infra9-metal-bridge/internal/metal/models" ) +const organizationEvent = "metalorganization" + func (s *service) buildOrganizationRelationships(org *models.OrganizationDetails) (Relationships, error) { relations := Relationships{ Relationships: []Relationship{ @@ -88,7 +91,7 @@ func (s *service) TouchOrganization(ctx context.Context, id gidx.PrefixedID) err return err } - s.processRelationships(ctx, "metal-relation", relationships.Relationships) + s.processRelationships(ctx, organizationEvent, relationships.Relationships) s.syncMemberships(ctx, relationships.Memberships) s.logger.Infow("organization sync complete", "relationships", len(relationships.Relationships), "memberships", len(relationships.Memberships)) @@ -97,5 +100,17 @@ func (s *service) TouchOrganization(ctx context.Context, id gidx.PrefixedID) err } func (s *service) DeleteOrganization(ctx context.Context, id gidx.PrefixedID) error { + err := s.publisher.PublishChange(ctx, organizationEvent, events.ChangeMessage{ + SubjectID: id, + EventType: string(events.DeleteChangeType), + }) + if err != nil { + s.logger.Errorw("error publishing organization delete", + "subject_type", organizationEvent, + "resource.id", id, + "error", err, + ) + } + return nil } diff --git a/internal/service/projects.go b/internal/service/projects.go index 3091e18..496add4 100644 --- a/internal/service/projects.go +++ b/internal/service/projects.go @@ -3,11 +3,14 @@ package service import ( "context" + "go.infratographer.com/x/events" "go.infratographer.com/x/gidx" "go.equinixmetal.net/infra9-metal-bridge/internal/metal/models" ) +const projectEvent = "metalproject" + func (s *service) buildProjectRelationships(project *models.ProjectDetails) (Relationships, error) { relations := Relationships{ Relationships: []Relationship{ @@ -64,7 +67,7 @@ func (s *service) TouchProject(ctx context.Context, id gidx.PrefixedID) error { return err } - s.processRelationships(ctx, "metal-relation", relationships.Relationships) + s.processRelationships(ctx, projectEvent, relationships.Relationships) s.syncMemberships(ctx, relationships.Memberships) s.logger.Infow("project sync complete", "relationships", len(relationships.Relationships), "memberships", len(relationships.Memberships)) @@ -73,5 +76,17 @@ func (s *service) TouchProject(ctx context.Context, id gidx.PrefixedID) error { } func (s *service) DeleteProject(ctx context.Context, id gidx.PrefixedID) error { + err := s.publisher.PublishChange(ctx, projectEvent, events.ChangeMessage{ + SubjectID: id, + EventType: string(events.DeleteChangeType), + }) + if err != nil { + s.logger.Errorw("error publishing project delete", + "subject_type", projectEvent, + "resource.id", id, + "error", err, + ) + } + return nil }