add delete event publishes for organization and project, and correct event names
This commit is contained in:
@@ -3,11 +3,14 @@ package service
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"go.infratographer.com/x/events"
|
||||||
"go.infratographer.com/x/gidx"
|
"go.infratographer.com/x/gidx"
|
||||||
|
|
||||||
"go.equinixmetal.net/infra9-metal-bridge/internal/metal/models"
|
"go.equinixmetal.net/infra9-metal-bridge/internal/metal/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const organizationEvent = "metalorganization"
|
||||||
|
|
||||||
func (s *service) buildOrganizationRelationships(org *models.OrganizationDetails) (Relationships, error) {
|
func (s *service) buildOrganizationRelationships(org *models.OrganizationDetails) (Relationships, error) {
|
||||||
relations := Relationships{
|
relations := Relationships{
|
||||||
Relationships: []Relationship{
|
Relationships: []Relationship{
|
||||||
@@ -88,7 +91,7 @@ func (s *service) TouchOrganization(ctx context.Context, id gidx.PrefixedID) err
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
s.processRelationships(ctx, "metal-relation", relationships.Relationships)
|
s.processRelationships(ctx, organizationEvent, relationships.Relationships)
|
||||||
s.syncMemberships(ctx, relationships.Memberships)
|
s.syncMemberships(ctx, relationships.Memberships)
|
||||||
|
|
||||||
s.logger.Infow("organization sync complete", "relationships", len(relationships.Relationships), "memberships", len(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 {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,14 @@ package service
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"go.infratographer.com/x/events"
|
||||||
"go.infratographer.com/x/gidx"
|
"go.infratographer.com/x/gidx"
|
||||||
|
|
||||||
"go.equinixmetal.net/infra9-metal-bridge/internal/metal/models"
|
"go.equinixmetal.net/infra9-metal-bridge/internal/metal/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const projectEvent = "metalproject"
|
||||||
|
|
||||||
func (s *service) buildProjectRelationships(project *models.ProjectDetails) (Relationships, error) {
|
func (s *service) buildProjectRelationships(project *models.ProjectDetails) (Relationships, error) {
|
||||||
relations := Relationships{
|
relations := Relationships{
|
||||||
Relationships: []Relationship{
|
Relationships: []Relationship{
|
||||||
@@ -64,7 +67,7 @@ func (s *service) TouchProject(ctx context.Context, id gidx.PrefixedID) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
s.processRelationships(ctx, "metal-relation", relationships.Relationships)
|
s.processRelationships(ctx, projectEvent, relationships.Relationships)
|
||||||
s.syncMemberships(ctx, relationships.Memberships)
|
s.syncMemberships(ctx, relationships.Memberships)
|
||||||
|
|
||||||
s.logger.Infow("project sync complete", "relationships", len(relationships.Relationships), "memberships", len(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 {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user