in pkg/plugins/resources/traditional/store.go [494:602]
func (t *traditionalStore) Delete(ctx context.Context, resource core_model.Resource, fs ...store.DeleteOptionsFunc) error {
opts := store.NewDeleteOptions(fs...)
if opts.Name == core_model.DefaultMesh {
opts.Name += ".universal"
}
name, _, err := util_k8s.CoreNameToK8sName(opts.Name)
if err != nil {
return err
}
switch resource.Descriptor().Name {
case mesh.DataplaneType:
// 不支持删除
case mesh.TagRouteType:
labels := opts.Labels
base := mesh_proto.Base{
Application: labels[mesh_proto.Application],
Service: labels[mesh_proto.Service],
ID: labels[mesh_proto.ID],
ServiceVersion: labels[mesh_proto.ServiceVersion],
ServiceGroup: labels[mesh_proto.ServiceGroup],
}
key := mesh_proto.BuildServiceKey(base)
path := mesh_proto.GetRoutePath(key, consts.TagRoute)
err := t.governance.DeleteConfig(path)
if err != nil {
return err
}
case mesh.ConditionRouteType:
labels := opts.Labels
base := mesh_proto.Base{
Application: labels[mesh_proto.Application],
Service: labels[mesh_proto.Service],
ID: labels[mesh_proto.ID],
ServiceVersion: labels[mesh_proto.ServiceVersion],
ServiceGroup: labels[mesh_proto.ServiceGroup],
}
key := mesh_proto.BuildServiceKey(base)
path := mesh_proto.GetRoutePath(key, consts.ConditionRoute)
err := t.governance.DeleteConfig(path)
if err != nil {
return err
}
case mesh.DynamicConfigType:
labels := opts.Labels
base := mesh_proto.Base{
Application: labels[mesh_proto.Application],
Service: labels[mesh_proto.Service],
ID: labels[mesh_proto.ID],
ServiceVersion: labels[mesh_proto.ServiceVersion],
ServiceGroup: labels[mesh_proto.ServiceGroup],
}
key := mesh_proto.BuildServiceKey(base)
path := mesh_proto.GetOverridePath(key)
_, err := t.governance.GetConfig(path)
if err != nil {
logger.Sugar().Error(err.Error())
return err
}
err = t.governance.DeleteConfig(path)
if err != nil {
return err
}
case mesh.AffinityRouteType:
labels := opts.Labels
base := mesh_proto.Base{
Application: labels[mesh_proto.Application],
Service: labels[mesh_proto.Service],
ID: labels[mesh_proto.ID],
ServiceVersion: labels[mesh_proto.ServiceVersion],
ServiceGroup: labels[mesh_proto.ServiceGroup],
}
key := mesh_proto.BuildServiceKey(base)
path := mesh_proto.GetRoutePath(key, consts.AffinityRoute)
_, err := t.governance.GetConfig(path)
if err != nil {
logger.Sugar().Error(err.Error())
return err
}
err = t.governance.DeleteConfig(path)
if err != nil {
return err
}
case mesh.MappingType:
// service.UpdateMapping()
// service.DeleteMapping()
case mesh.MetaDataType:
// service.DeleteMeta()
default:
path := GenerateCpGroupPath(string(resource.Descriptor().Name), name)
err = t.regClient.DeleteContent(path)
if err != nil {
return err
}
}
if t.eventWriter != nil {
go func() {
t.eventWriter.Send(events.ResourceChangedEvent{
Operation: events.Delete,
Type: resource.Descriptor().Name,
Key: core_model.ResourceKey{
Mesh: opts.Mesh,
Name: name,
},
})
}()
}
return nil
}