github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/lorry/operations/user/list_system_accounts.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package user 21 22 import ( 23 "context" 24 25 "github.com/go-logr/logr" 26 "github.com/pkg/errors" 27 ctrl "sigs.k8s.io/controller-runtime" 28 29 "github.com/1aal/kubeblocks/pkg/lorry/engines" 30 "github.com/1aal/kubeblocks/pkg/lorry/engines/register" 31 "github.com/1aal/kubeblocks/pkg/lorry/operations" 32 "github.com/1aal/kubeblocks/pkg/lorry/util" 33 ) 34 35 type ListSystemAccounts struct { 36 operations.Base 37 dbManager engines.DBManager 38 logger logr.Logger 39 } 40 41 var listSystemAccounts operations.Operation = &ListSystemAccounts{} 42 43 func init() { 44 err := operations.Register("listsystemaccounts", listSystemAccounts) 45 if err != nil { 46 panic(err.Error()) 47 } 48 } 49 50 func (s *ListSystemAccounts) Init(ctx context.Context) error { 51 dbManager, err := register.GetDBManager() 52 if err != nil { 53 return errors.Wrap(err, "get manager failed") 54 } 55 s.dbManager = dbManager 56 s.logger = ctrl.Log.WithName("listSystemAccounts") 57 return nil 58 } 59 60 func (s *ListSystemAccounts) IsReadonly(ctx context.Context) bool { 61 return true 62 } 63 64 func (s *ListSystemAccounts) Do(ctx context.Context, req *operations.OpsRequest) (*operations.OpsResponse, error) { 65 resp := operations.NewOpsResponse(util.ListSystemAccountsOp) 66 67 result, err := s.dbManager.ListSystemAccounts(ctx) 68 if err != nil { 69 s.logger.Info("executing ListSystemAccounts error", "error", err) 70 return resp, err 71 } 72 73 resp.Data["systemAccounts"] = result 74 return resp.WithSuccess("") 75 }