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 }