From f3f36a2beb60babddc747c3d68ecc7f4162cdf1f Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 4 Aug 2022 13:53:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E5=AE=9E=E4=BE=8B=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=98=BE=E7=A4=BA=E4=B8=BB=E8=A6=81=20VNIC=20?= =?UTF-8?q?=E7=9A=84=20IPv4=20=E5=9C=B0=E5=9D=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/OracleServerExtension.kt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/kotlin/OracleServerExtension.kt b/src/main/kotlin/OracleServerExtension.kt index b2aa6ce..403d34d 100644 --- a/src/main/kotlin/OracleServerExtension.kt +++ b/src/main/kotlin/OracleServerExtension.kt @@ -71,8 +71,28 @@ class OracleServerExtension(private val bot: BaseAbilityBot) : AbilityExtension val profile = getProfileByCallback(upd.callbackQuery.callbackData) val instanceInfo = ServerInstance.fromJson(upd.callbackQuery.callbackData.extraData[JsonFields.ServerInstance]) val client = ComputeClient(profile.getAuthenticationDetailsProvider()) + val networkClient = VirtualNetworkClient(profile.getAuthenticationDetailsProvider()) val instance = client.getInstance(GetInstanceRequest.builder().instanceId(instanceInfo.id).build()).instance + val mainVnic: Vnic? = client.listVnicAttachments( + ListVnicAttachmentsRequest.builder() + .compartmentId(profile.tenantId) + .instanceId(instance.id) + .build() + ).items.let { + if (it.size == 1) { + return@let networkClient.getVnic(GetVnicRequest.builder().vnicId(it.first().vnicId).build()).vnic + } else { + for (vnicAttachment in it) { + val v = networkClient.getVnic(GetVnicRequest.builder().vnicId(vnicAttachment.vnicId).build()).vnic + if (v.isPrimary) { + return@let v + } + } + return@let null + } + } + val keyboardBuilder = InlineKeyboardGroupBuilder() .newRow() .addButton { @@ -108,6 +128,7 @@ class OracleServerExtension(private val bot: BaseAbilityBot) : AbilityExtension 网络带宽:${shape.networkingBandwidthInGbps} Gbps 区域:${instanceInfo.regionId} 可用区 / 容错区:${instanceInfo.availabilityDomain} / ${instanceInfo.faultDomain} + 主要公共 IPv4:${mainVnic?.publicIp ?: "(无主要 VNIC)"} """.trimIndent() ) .chatId(upd.callbackQuery.message.chatId.toString())