From c741f028a1cdc513614301be17e35d96bd2529f7 Mon Sep 17 00:00:00 2001 From: ioito Date: Sat, 12 Oct 2019 19:16:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=94=E5=9B=9E=E7=BD=91=E5=8D=A1?= =?UTF-8?q?=E6=89=80=E5=9C=A8=E7=9A=84=E7=BD=91=E7=BB=9C=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/schemas/networkinterfacenetwork.yaml | 6 ++++- pkg/compute/models/networkinterfacenetwork.go | 22 +++++++++++++++++++ pkg/compute/models/networkinterfaces.go | 11 +++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/schemas/networkinterfacenetwork.yaml b/docs/schemas/networkinterfacenetwork.yaml index 5b0b3626b1..f64b7bc573 100644 --- a/docs/schemas/networkinterfacenetwork.yaml +++ b/docs/schemas/networkinterfacenetwork.yaml @@ -5,6 +5,10 @@ NetworkinterfaceNetwork: type: string example: "192.168.0.240" description: 弹性网卡IP地址 + network: + type: string + example: test-network + description: 子网名称 network_id: type: string example: 19b09a31-1884-4b3f-84cd-ac03827c567d @@ -38,4 +42,4 @@ NetworkinterfaceResponse: properties: networkinterfacenetwork: type: object - $ref: '#/NetworkinterfaceNetwork' \ No newline at end of file + $ref: '#/NetworkinterfaceNetwork' diff --git a/pkg/compute/models/networkinterfacenetwork.go b/pkg/compute/models/networkinterfacenetwork.go index 039d7e904e..dc3a2f17e7 100644 --- a/pkg/compute/models/networkinterfacenetwork.go +++ b/pkg/compute/models/networkinterfacenetwork.go @@ -207,3 +207,25 @@ func (manager *SNetworkinterfacenetworkManager) newFromCloudInterfaceAddress(ctx db.OpsLog.LogEvent(&address, db.ACT_CREATE, address.GetShortDesc(ctx), userCred) return nil } + +func (self *SNetworkinterfacenetwork) GetNetwork() (*SNetwork, error) { + network, err := NetworkManager.FetchById(self.NetworkId) + if err != nil { + return nil, err + } + return network.(*SNetwork), nil +} + +func (self *SNetworkinterfacenetwork) GetDetailJson() (jsonutils.JSONObject, error) { + network, err := self.GetNetwork() + if err != nil { + return nil, err + } + return jsonutils.Marshal(map[string]interface{}{ + "network_id": self.NetworkId, + "ip_addr": self.IpAddr, + "primary": self.Primary, + "networkinterface_id": self.NetworkinterfaceId, + "network": network.Name, + }), nil +} diff --git a/pkg/compute/models/networkinterfaces.go b/pkg/compute/models/networkinterfaces.go index c431842a03..ab9f859858 100644 --- a/pkg/compute/models/networkinterfaces.go +++ b/pkg/compute/models/networkinterfaces.go @@ -117,7 +117,16 @@ func (self *SNetworkInterface) GetCustomizeColumns(ctx context.Context, userCred log.Errorf("failed to get network for networkinterface %s(%s) error: %v", self.Name, self.Id, err) return extra } - extra.Add(jsonutils.Marshal(networks), "networks") + networkArray := jsonutils.NewArray() + for _, network := range networks { + detail, err := network.GetDetailJson() + if err != nil { + log.Errorf("failed to get networkinterface network %s detail error: %v", network.IpAddr, err) + return extra + } + networkArray.Add(detail) + } + extra.Add(networkArray, "networks") return extra }