pkg/cmd/serviceaccount/phases/delete/aadapplication.go (49 lines of code) (raw):

package phases import ( "context" "github.com/pkg/errors" "monis.app/mlog" "github.com/Azure/azure-workload-identity/pkg/cmd/serviceaccount/options" "github.com/Azure/azure-workload-identity/pkg/cmd/serviceaccount/phases/workflow" ) const ( aadApplicationPhaseName = "aad-application" ) type aadApplicationPhase struct { } // NewAADApplicationPhase creates a new phase to delete an AAD application func NewAADApplicationPhase() workflow.Phase { p := &aadApplicationPhase{} return workflow.Phase{ Name: aadApplicationPhaseName, Aliases: []string{"app"}, Description: "Delete the Azure Active Directory (AAD) application and its underlying service principal", PreRun: p.prerun, Run: p.run, Flags: []string{ options.AADApplicationName.Flag, options.AADApplicationObjectID.Flag, }, } } func (p *aadApplicationPhase) prerun(data workflow.RunData) error { deleteData, ok := data.(DeleteData) if !ok { return errors.Errorf("invalid data type %T", data) } if deleteData.AADApplicationName() == "" && deleteData.AADApplicationObjectID() == "" { return options.OneOfFlagsIsRequiredError(options.AADApplicationName.Flag, options.AADApplicationObjectID.Flag) } return nil } func (p *aadApplicationPhase) run(ctx context.Context, data workflow.RunData) error { deleteData := data.(DeleteData) l := mlog.WithValues( "name", deleteData.AADApplicationName(), "objectID", deleteData.AADApplicationObjectID(), ).WithName(aadApplicationPhaseName) if err := deleteData.AzureClient().DeleteApplication(ctx, deleteData.AADApplicationObjectID()); err != nil { return errors.Wrap(err, "failed to delete application") } l.Info("deleted aad application") return nil }