Merge pull request #267 in YUNIONIO/onecloud from ~QUXUAN/onecloud:hotfix/qx-sec-detail to release/2.0.0

* commit '8fc8d892fae001d5e5e988113a40d8bf4e1b84ad':
  显示安全组规则
This commit is contained in:
邱剑
2018-09-30 10:15:01 +08:00
3 changed files with 15 additions and 9 deletions
+2 -2
View File
@@ -1151,7 +1151,7 @@ func (self *SGuest) getAdminSecgroupName() string {
func (self *SGuest) getSecurityRules() string {
secgrp := self.getSecgroup()
if secgrp != nil {
return secgrp.getSecurityRuleString()
return secgrp.getSecurityRuleString("")
} else {
return options.Options.DefaultSecurityRules
}
@@ -1160,7 +1160,7 @@ func (self *SGuest) getSecurityRules() string {
func (self *SGuest) getAdminSecurityRules() string {
secgrp := self.getAdminSecgroup()
if secgrp != nil {
return secgrp.getSecurityRuleString()
return secgrp.getSecurityRuleString("")
} else {
return options.Options.DefaultAdminSecurityRules
}
+12 -6
View File
@@ -9,6 +9,7 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db"
"yunion.io/x/onecloud/pkg/httperrors"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/pkg/utils"
"yunion.io/x/sqlchemy"
)
@@ -56,7 +57,7 @@ func (self *SSecurityGroup) GetGuests() []SGuest {
func (self *SSecurityGroup) GetExtraDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict {
extra := self.SSharableVirtualResourceBase.GetExtraDetails(ctx, userCred, query)
extra.Add(jsonutils.NewInt(int64(len(self.GetGuests()))), "guest_cnt")
extra.Add(jsonutils.NewString(self.getSecurityRuleString()), "rules")
extra.Add(jsonutils.NewString(self.getSecurityRuleString("")), "rules")
return extra
}
@@ -65,6 +66,8 @@ func (self *SSecurityGroup) GetCustomizeColumns(ctx context.Context, userCred mc
extra.Add(jsonutils.NewInt(int64(len(self.GetGuests()))), "guest_cnt")
extra.Add(jsonutils.NewTimeString(self.CreatedAt), "created_at")
extra.Add(jsonutils.NewString(self.Description), "description")
extra.Add(jsonutils.NewString(self.getSecurityRuleString("in")), "in_rules")
extra.Add(jsonutils.NewString(self.getSecurityRuleString("out")), "out_rules")
return extra
}
@@ -89,9 +92,12 @@ func (manager *SSecurityGroupManager) FetchSecgroupById(secId string) *SSecurity
return nil
}
func (self *SSecurityGroup) getSecurityRules() (rules []SSecurityGroupRule) {
func (self *SSecurityGroup) getSecurityRules(direction string) (rules []SSecurityGroupRule) {
secgrouprules := SecurityGroupRuleManager.Query().SubQuery()
sql := secgrouprules.Query().Filter(sqlchemy.Equals(secgrouprules.Field("secgroup_id"), self.Id))
sql := secgrouprules.Query().Filter(sqlchemy.Equals(secgrouprules.Field("secgroup_id"), self.Id)).Desc("priority")
if len(direction) > 0 && utils.IsInStringArray(direction, []string{"in", "out"}) {
sql = sql.Equals("direction", direction)
}
if err := db.FetchModelObjects(SecurityGroupRuleManager, sql, &rules); err != nil {
log.Errorf("GetGuests fail %s", err)
return nil
@@ -99,8 +105,8 @@ func (self *SSecurityGroup) getSecurityRules() (rules []SSecurityGroupRule) {
return
}
func (self *SSecurityGroup) getSecurityRuleString() string {
secgrouprules := self.getSecurityRules()
func (self *SSecurityGroup) getSecurityRuleString(direction string) string {
secgrouprules := self.getSecurityRules(direction)
var rules []string
for _, rule := range secgrouprules {
rules = append(rules, rule.GetRule())
@@ -138,7 +144,7 @@ func (self *SSecurityGroup) PerformClone(ctx context.Context, userCred mcclient.
return nil, err
//db.OpsLog.LogCloneEvent(self, secgroup, userCred, nil)
}
secgrouprules := self.getSecurityRules()
secgrouprules := self.getSecurityRules("")
for _, rule := range secgrouprules {
secgrouprule := &SSecurityGroupRule{}
secgrouprule.SetModelManager(SecurityGroupRuleManager)
+1 -1
View File
@@ -8,7 +8,7 @@ func init() {
SecGroups = NewComputeManager("secgroup", "secgroups",
[]string{"ID", "Name", "Rules",
"Is_public", "Created_at",
"Guest_cnt", "Description"},
"Guest_cnt", "Description", "in_rules", "out_rules"},
[]string{})
registerCompute(&SecGroups)