如何解决通过使用cloudFoundryOperations获取用于Cloud Foundry用户提供者服务的serviceInstanceName和serviceKeyName
im试图获取Cloud Foundry中的UPS凭据: 使用:
Mono<ServiceKey> serviceKey = (Mono<ServiceKey>) cloudFoundryOperations
.services()
.getServiceKey(
GetServiceKeyRequest.builder()
.serviceKeyName("digital_cassandra")
.serviceInstanceName("2a5aa377-e992-4f88-9f85-d9cec5c3bea9")
.build())
.subscribe();
serviceKey.map(serviceKey1 -> {
System.out.println(serviceKey1.getCredentials().toString());
return serviceKey1.getCredentials().get(0);
});
,但未打印任何内容。 如何通过cloudFoundryOperations设置serviceKeyName和serviceInstanceName? 我需要在我的空间中打印所有的serviceKeyName和serviceInstanceName。
解决方法
.serviceInstanceName(“ 2a5aa377-e992-4f88-9f85-d9cec5c3bea9”)
它应该是实际名称,而不是GUID。就像“我的钥匙”或您所谓的钥匙一样。
,但未打印任何内容。如何通过cloudFoundryOperations设置serviceKeyName和serviceInstanceName?
如果只想打印到控制台,请尝试以下操作:
cloudFoundryOperations
.services()
.getServiceKey(GetServiceKeyRequest.builder()
.serviceInstanceName("reservation-db")
.serviceKeyName("cf-mysql")
.build())
.doOnNext(key -> {
System.out.println("Key:");
System.out.println(" " + key.getName() + " (" + key.getId() + ")");
key.getCredentials().forEach((k,v) -> {
System.out.println(" " + k + " => " + v);
});
})
.block();
GetServiceKeyRequest确定查找哪个服务密钥。通过doOnNext
调用,您可以检查但不能使用密钥,可以很好地将其打印出来。然后示例调用.block()
等待结果,这很好,因为这只是一个示例。不过,您不想在实际代码中这样做。您可能希望使用subscribe()
变体之一(也可以将subscribe()
换成doOnNext()
,只取决于您的代码在做什么)。
我需要在我的空间中打印所有的serviceKeyName和serviceInstanceName。
要获取所有服务实例的所有密钥:
cloudFoundryOperations
.services()
.listInstances()
.doOnNext(si -> {
System.out.println(" " + si.getName() + " (" + si.getId() + ")");
})
.flatMap((ServiceInstanceSummary si) -> {
return ops
.services()
.listServiceKeys(ListServiceKeysRequest.builder()
.serviceInstanceName(si.getName())
.build())
.doOnNext(key -> {
System.out.println("Key:");
System.out.println(" " + key.getName() + " (" + key.getId() + ")");
key.getCredentials().forEach((k,v) -> {
System.out.println(" " + k + " => " + v);
});
});
})
.blockLast();
这是枚举所有服务实例,打印名称/ id,然后使用flatMap
出去并获取每个服务实例的服务密钥。然后将它们全部合并为一个Flux<ServiceKey>
。 doOnNext()
仅用于打印。您不必一定要这样做。您可以通过多种方式使用结果,例如将其收集到列表中或订阅它,这对于一个示例来说效果很好。使用最适合您代码的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。