Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions pkg/microservice/aslan/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@ import (
"strconv"
"strings"

"github.com/spf13/viper"

configbase "github.com/koderover/zadig/v2/pkg/config"
"github.com/koderover/zadig/v2/pkg/setting"
"github.com/spf13/viper"
)

func DefaultIngressClass() string {
Expand Down Expand Up @@ -246,3 +245,19 @@ func DindImage() string {
func Features() string {
return viper.GetString(setting.FeatureFlag)
}

func GetZadigAgentVersion() (string, error) {
version := viper.GetString(setting.ZadigAgentVersion)
if version != "" {
return strings.TrimPrefix(version, "v"), nil
}
return "", fmt.Errorf("zadig-agent version not found")
}

func GetRepoURL() (string, error) {
url := viper.GetString(setting.ZadigAgentRepoURL)
if url != "" {
return url, nil
}
return "", fmt.Errorf("zadig-agent repo URL not found")
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,14 @@ func (c *WorkflowV4GeneralHookColl) Get(ctx *internalhandler.Context, workflowNa
}

func (c *WorkflowV4GeneralHookColl) Exists(ctx *internalhandler.Context, workflowName, hookName string) (bool, error) {
return singleResultExists(c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}))
if err := c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}); err != nil {
if err.Err() == mongo.ErrNoDocuments {
return false, nil
}
return false, err.Err()
}

return true, nil
}

func (c *WorkflowV4GeneralHookColl) Update(ctx *internalhandler.Context, id string, obj *models.WorkflowV4GeneralHook) error {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,17 +127,13 @@ func (c *WorkflowV4GitHookColl) Get(ctx *internalhandler.Context, workflowName,
}

func (c *WorkflowV4GitHookColl) Exists(ctx *internalhandler.Context, workflowName, hookName string) (bool, error) {
return singleResultExists(c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}))
}

func singleResultExists(result *mongo.SingleResult) (bool, error) {
err := result.Err()
if err == mongo.ErrNoDocuments {
return false, nil
}
if err != nil {
return false, err
if err := c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}); err != nil {
if err.Err() == mongo.ErrNoDocuments {
return false, nil
}
return false, err.Err()
}

return true, nil
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,14 @@ func (c *WorkflowV4JiraHookColl) Create(ctx *internalhandler.Context, obj *model
}

func (c *WorkflowV4JiraHookColl) Exists(ctx *internalhandler.Context, workflowName, hookName string) (bool, error) {
return singleResultExists(c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}))
if err := c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}); err != nil {
if err.Err() == mongo.ErrNoDocuments {
return false, nil
}
return false, err.Err()
}

return true, nil
}

func (c *WorkflowV4JiraHookColl) List(ctx *internalhandler.Context, workflowName string) ([]*models.WorkflowV4JiraHook, error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,14 @@ func (c *WorkflowV4MeegoHookColl) Create(ctx *internalhandler.Context, obj *mode
}

func (c *WorkflowV4MeegoHookColl) Exists(ctx *internalhandler.Context, workflowName, hookName string) (bool, error) {
return singleResultExists(c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}))
if err := c.Collection.FindOne(ctx, bson.M{"workflow_name": workflowName, "name": hookName}); err != nil {
if err.Err() == mongo.ErrNoDocuments {
return false, nil
}
return false, err.Err()
}

return true, nil
}

func (c *WorkflowV4MeegoHookColl) List(ctx *internalhandler.Context, workflowName string) ([]*models.WorkflowV4MeegoHook, error) {
Expand Down
18 changes: 18 additions & 0 deletions pkg/microservice/aslan/core/system/service/private_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ import (
func ListPrivateKeys(encryptedKey, projectName, keyword string, systemOnly bool, log *zap.SugaredLogger) ([]*commonmodels.PrivateKey, error) {
var resp []*commonmodels.PrivateKey
var err error
latestAgentVersion, versionErr := config.GetZadigAgentVersion()
if versionErr != nil {
log.Warnf("failed to get current zadig-agent version: %v", versionErr)
}
privateKeys, err := commonrepo.NewPrivateKeyColl().List(&commonrepo.PrivateKeyArgs{ProjectName: projectName, SystemOnly: systemOnly})
if err != nil {
log.Errorf("PrivateKey.List error: %s", err)
Expand Down Expand Up @@ -70,10 +74,24 @@ func ListPrivateKeys(encryptedKey, projectName, keyword string, systemOnly bool,
if err != nil {
return nil, err
}
if key.Agent != nil && key.ScheduleWorkflow {
key.Agent.ZadigVersion = latestAgentVersion
key.Agent.NeedUpdate = isAgentVersionOutdated(key.Agent.AgentVersion, latestAgentVersion)
}
}
return resp, nil
}

// check agent version
func isAgentVersionOutdated(currentVersion, latestVersion string) bool {
normalizedLatestVersion := strings.TrimPrefix(latestVersion, "v")
if normalizedLatestVersion == "" {
return false
}
normalizedCurrentVersion := strings.TrimPrefix(currentVersion, "v")
return normalizedCurrentVersion != normalizedLatestVersion
}

func ListPrivateKeysInternal(log *zap.SugaredLogger) ([]*commonmodels.PrivateKey, error) {
resp, err := commonrepo.NewPrivateKeyColl().List(&commonrepo.PrivateKeyArgs{})
if err != nil {
Expand Down
47 changes: 6 additions & 41 deletions pkg/microservice/aslan/core/vm/service/vm.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import (
"go.uber.org/zap"
"k8s.io/apimachinery/pkg/util/sets"

commonconfig "github.com/koderover/zadig/v2/pkg/config"
"github.com/koderover/zadig/v2/pkg/microservice/aslan/config"
commonmodels "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/models"
vmmodel "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/common/repository/models/vm"
Expand All @@ -39,8 +38,6 @@ import (
systemservice "github.com/koderover/zadig/v2/pkg/microservice/aslan/core/system/service"
"github.com/koderover/zadig/v2/pkg/setting"
e "github.com/koderover/zadig/v2/pkg/tool/errors"
krkubeclient "github.com/koderover/zadig/v2/pkg/tool/kube/client"
"github.com/koderover/zadig/v2/pkg/tool/kube/getter"
commonjob "github.com/koderover/zadig/v2/pkg/types/job"
)

Expand Down Expand Up @@ -122,11 +119,11 @@ func RecoveryVM(idString, user string, logger *zap.SugaredLogger) (*RecoveryAgen
func generateAgentRecoveryCmd(vm *commonmodels.PrivateKey) (*RecoveryAgentCmd, error) {
cmd := new(RecoveryAgentCmd)

baseURL, err := getRepoURL()
baseURL, err := config.GetRepoURL()
if err != nil {
return nil, fmt.Errorf("failed to get agent repo url, err: %w", err)
}
version, err := getZadigAgentVersion()
version, err := config.GetZadigAgentVersion()
if err != nil {
return nil, fmt.Errorf("failed to get zadig-agent version, error: %s", err)
}
Expand Down Expand Up @@ -230,11 +227,11 @@ func UpgradeAgent(idString, user string, logger *zap.SugaredLogger) (*UpgradeAge
func generateAgentUpgradeCmd(vm *commonmodels.PrivateKey, logger *zap.SugaredLogger) (*UpgradeAgentCmd, error) {
cmd := new(UpgradeAgentCmd)

baseURL, err := getRepoURL()
baseURL, err := config.GetRepoURL()
if err != nil {
return nil, fmt.Errorf("failed to get agent repo url, err: %w", err)
}
version, err := getZadigAgentVersion()
version, err := config.GetZadigAgentVersion()
if err != nil {
return nil, fmt.Errorf("failed to get zadig-agent version, error: %s", err)
}
Expand Down Expand Up @@ -676,11 +673,11 @@ func GenerateAgentAccessCmds(vm *commonmodels.PrivateKey) (*AgentAccessCmds, err
if vm.Agent != nil {
token = vm.Agent.Token
}
baseURL, err := getRepoURL()
baseURL, err := config.GetRepoURL()
if err != nil {
return nil, fmt.Errorf("failed to get agent repo url, err: %w", err)
}
version, err := getZadigAgentVersion()
version, err := config.GetZadigAgentVersion()
if err != nil {
return nil, fmt.Errorf("failed to get zadig-agent version, error: %s", err)
}
Expand Down Expand Up @@ -755,38 +752,6 @@ func GenerateAgentAccessCmds(vm *commonmodels.PrivateKey) (*AgentAccessCmds, err
return resp, nil
}

func getZadigAgentVersion() (string, error) {
ns := commonconfig.Namespace()
kubeClient := krkubeclient.Client()
configMap, found, err := getter.GetConfigMap(ns, "aslan-config", kubeClient)
if err != nil || !found {
return "", fmt.Errorf("failed to get aslan configmap, error: %s", err)
}
if found {
version := configMap.Data["ZADIG_AGENT_VERSION"]
if version != "" {
return strings.TrimPrefix(version, "v"), nil
}
}
return "", fmt.Errorf("zadig-agent version not found")
}

func getRepoURL() (string, error) {
ns := commonconfig.Namespace()
kubeClient := krkubeclient.Client()
configMap, found, err := getter.GetConfigMap(ns, "aslan-config", kubeClient)
if err != nil || !found {
return "", fmt.Errorf("failed to get aslan configmap, error: %s", err)
}
if found {
version := configMap.Data["ZADIG_AGENT_REPO_URL"]
if version != "" {
return version, nil
}
}
return "", fmt.Errorf("zadig-agent repo URL not found")
}

func DownloadTemporaryFile(fileID, token string, c *gin.Context, logger *zap.SugaredLogger) error {
_, err := commonrepo.NewPrivateKeyColl().Find(commonrepo.FindPrivateKeyOption{
Token: token,
Expand Down
16 changes: 8 additions & 8 deletions pkg/microservice/user/core/handler/user/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,10 +335,10 @@ func OpenAPIListUsersBrief(c *gin.Context) {
for _, userInfo := range resp.Users {
briefUserList = append(briefUserList, &types.UserBriefInfo{
LastLoginTime: userInfo.LastLoginTime,
UID: userInfo.Uid,
Account: userInfo.Account,
IdentityType: userInfo.IdentityType,
Name: userInfo.Name,
UID: userInfo.Uid,
Account: userInfo.Account,
IdentityType: userInfo.IdentityType,
Name: userInfo.Name,
})
}

Expand Down Expand Up @@ -395,10 +395,10 @@ func ListUsersBrief(c *gin.Context) {
for _, userInfo := range resp.Users {
briefUserList = append(briefUserList, &types.UserBriefInfo{
LastLoginTime: userInfo.LastLoginTime,
UID: userInfo.Uid,
Account: userInfo.Account,
IdentityType: userInfo.IdentityType,
Name: userInfo.Name,
UID: userInfo.Uid,
Account: userInfo.Account,
IdentityType: userInfo.IdentityType,
Name: userInfo.Name,
})
}

Expand Down
2 changes: 2 additions & 0 deletions pkg/setting/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ const (
ENVLarkPluginID = "LARK_PLUGIN_ID"
ENVLarkPluginSecret = "LARK_PLUGIN_SECRET"
ENVLarkPluginAccessTokenType = "LARK_PLUGIN_ACCESS_TOKEN_TYPE"
ZadigAgentVersion = "ZADIG_AGENT_VERSION"
ZadigAgentRepoURL = "ZADIG_AGENT_REPO_URL"

ENVBuildBaseImage = "BUILD_BASE_IMAGE"

Expand Down
1 change: 1 addition & 0 deletions pkg/tool/kube/containerlog/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func GetContainerLogs(namespace, podName, containerName string, follow bool, tai
if len(pod.Status.ContainerStatuses) == 0 {
return fmt.Errorf("length of container statuses is 0 for pod %s in ns %s", podName, namespace)
}

if pod.Status.ContainerStatuses[0].State.Terminated == nil {
return fmt.Errorf("failed to get pod status' terminated message")
}
Expand Down
Loading