-
Notifications
You must be signed in to change notification settings - Fork 324
Closed
Description
In v2, when I attempt to target an org with and ampersand in the name, the org cannot be found. For example:
$ cf create-org "A & B"
Creating org A & B as dehringer...
OK
TIP: Use 'cf target -o A & B' to target new org
$ cf org "A & B"
Getting info for org A & B as dehringer...
OK
A & B:
domains: sandbox.xyz.com
quota: default (10240M memory limit, Unlimited instance memory limit, 1000 routes, 100 services, paid services allowed)
spaces:
space quotas:
The following code will throw an exception because "A & B" cannot be found:
...
Streams
.wrap(operations.organizations().list())
.map(Organization::getName)
.flatMap(orgName -> {
CloudFoundryOperations orgOperations = new CloudFoundryOperationsBuilder()
.cloudFoundryClient(client)
.target(orgName)
.build();
return orgOperations.spaces().list();
})
.consume(System.out::println);
Exception:
Exception in thread "main" reactor.core.error.ReactorFatalException: java.lang.IllegalArgumentException: Organization A & B does not exist
at reactor.core.error.ReactorFatalException.create(ReactorFatalException.java:35)
at reactor.core.subscriber.ConsumerSubscriber.doError(ConsumerSubscriber.java:128)
at reactor.rx.subscriber.InterruptableSubscriber.doSafeError(InterruptableSubscriber.java:127)
at reactor.rx.subscriber.InterruptableSubscriber.doError(InterruptableSubscriber.java:95)
at reactor.core.subscriber.ConsumerSubscriber.onError(ConsumerSubscriber.java:115)
at reactor.core.subscriber.SubscriberBarrier.doOnSubscriberError(SubscriberBarrier.java:115)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:95)
at reactor.core.publisher.PublisherMap$MapBarrier.doNext(PublisherMap.java:81)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.publisher.PublisherMap$MapBarrier.doNext(PublisherMap.java:81)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.tryEmit(PublisherFlatMap.java:303)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onNext(PublisherFlatMap.java:661)
at reactor.core.subscriber.SubscriberWithContext.onNext(SubscriberWithContext.java:93)
at reactor.core.publisher.ForEachSequencer.accept(ForEachSequencer.java:41)
at reactor.core.publisher.ForEachSequencer$IterableSequencer.accept(ForEachSequencer.java:55)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:600)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:569)
at reactor.core.publisher.PublisherFactory$SubscriberProxy.request(PublisherFactory.java:504)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onSubscribe(PublisherFlatMap.java:655)
at reactor.core.publisher.PublisherFactory$ReactorPublisher.subscribe(PublisherFactory.java:367)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doNext(PublisherFlatMap.java:179)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.tryEmit(PublisherFlatMap.java:303)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onNext(PublisherFlatMap.java:661)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.tryEmit(PublisherFlatMap.java:303)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onNext(PublisherFlatMap.java:661)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.tryEmit(PublisherFlatMap.java:303)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onNext(PublisherFlatMap.java:661)
at reactor.core.subscription.ReactiveSession.emit(ReactiveSession.java:150)
at reactor.core.subscription.ReactiveSession.onNext(ReactiveSession.java:377)
at org.cloudfoundry.client.spring.util.AbstractSpringOperations$2$1.accept(AbstractSpringOperations.java:86)
at org.cloudfoundry.client.spring.util.AbstractSpringOperations$2$1.accept(AbstractSpringOperations.java:78)
at reactor.core.publisher.PublisherFactory$YieldingReactiveSession.request(PublisherFactory.java:772)
at reactor.core.publisher.PublisherFlatMap$BufferSubscriber.onSubscribe(PublisherFlatMap.java:655)
at reactor.core.subscription.ReactiveSession.start(ReactiveSession.java:126)
at reactor.core.publisher.PublisherFactory$SessionPublisher.subscribe(PublisherFactory.java:738)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:83)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doNext(PublisherFlatMap.java:179)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.subscriber.SubscriberWithContext.onNext(SubscriberWithContext.java:93)
at reactor.rx.stream.StreamRange$RangeSequence.accept(StreamRange.java:141)
at reactor.rx.stream.StreamRange$RangeSequence.accept(StreamRange.java:131)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:600)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:569)
at reactor.core.publisher.PublisherFactory$SubscriberProxy.request(PublisherFactory.java:504)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doOnSubscribe(PublisherFlatMap.java:157)
at reactor.core.subscriber.SubscriberBarrier.onSubscribe(SubscriberBarrier.java:68)
at reactor.core.publisher.PublisherFactory$ReactorPublisher.subscribe(PublisherFactory.java:367)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:92)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doNext(PublisherFlatMap.java:179)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.subscriber.SubscriberWithContext.onNext(SubscriberWithContext.java:93)
at reactor.core.publisher.ForEachSequencer.accept(ForEachSequencer.java:41)
at reactor.core.publisher.ForEachSequencer$IterableSequencer.accept(ForEachSequencer.java:55)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:600)
at reactor.core.publisher.PublisherFactory$ForEachBiConsumer.accept(PublisherFactory.java:569)
at reactor.core.publisher.PublisherFactory$SubscriberProxy.request(PublisherFactory.java:504)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doOnSubscribe(PublisherFlatMap.java:157)
at reactor.core.subscriber.SubscriberBarrier.onSubscribe(SubscriberBarrier.java:68)
at reactor.core.publisher.PublisherFactory$ReactorPublisher.subscribe(PublisherFactory.java:367)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:92)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doNext(PublisherFlatMap.java:179)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.rx.stream.StreamTake$TakeAction.doNext(StreamTake.java:79)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
at reactor.core.subscription.ReactiveSession.emit(ReactiveSession.java:150)
at reactor.core.subscription.ReactiveSession.onNext(ReactiveSession.java:377)
at org.cloudfoundry.client.spring.util.AbstractSpringOperations$2$1.accept(AbstractSpringOperations.java:86)
at org.cloudfoundry.client.spring.util.AbstractSpringOperations$2$1.accept(AbstractSpringOperations.java:78)
at reactor.core.publisher.PublisherFactory$YieldingReactiveSession.request(PublisherFactory.java:772)
at reactor.core.subscriber.SubscriberWithDemand.requestMore(SubscriberWithDemand.java:110)
at reactor.rx.stream.StreamTake$TakeAction.doRequest(StreamTake.java:55)
at reactor.core.subscriber.SubscriberBarrier.request(SubscriberBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doOnSubscribe(PublisherFlatMap.java:157)
at reactor.core.subscriber.SubscriberBarrier.onSubscribe(SubscriberBarrier.java:68)
at reactor.core.subscriber.SubscriberBarrier.doOnSubscribe(SubscriberBarrier.java:79)
at reactor.core.subscriber.SubscriberBarrier.onSubscribe(SubscriberBarrier.java:68)
at reactor.core.subscription.ReactiveSession.start(ReactiveSession.java:126)
at reactor.core.publisher.PublisherFactory$SessionPublisher.subscribe(PublisherFactory.java:738)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:83)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.rx.stream.StreamBarrier.subscribe(StreamBarrier.java:52)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:92)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:92)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.core.publisher.PublisherFactory$PublisherBarrier.subscribe(PublisherFactory.java:309)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFactory$PublisherBarrier.subscribe(PublisherFactory.java:309)
at reactor.rx.stream.StreamBarrier$Identity.subscribe(StreamBarrier.java:135)
at reactor.core.publisher.PublisherFlatMap.subscribe(PublisherFlatMap.java:92)
at reactor.rx.Stream$7.subscribe(Stream.java:921)
at reactor.rx.Stream.consume(Stream.java:523)
at com.lmig.cf.licensing.ReportExporter.main(ReportExporter.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: java.lang.IllegalArgumentException: Organization A & B does not exist
at org.cloudfoundry.operations.CloudFoundryOperationsBuilder.failIfLessThanOne(CloudFoundryOperationsBuilder.java:100)
at org.cloudfoundry.operations.CloudFoundryOperationsBuilder.getOrganizationId(CloudFoundryOperationsBuilder.java:122)
at org.cloudfoundry.operations.CloudFoundryOperationsBuilder.build(CloudFoundryOperationsBuilder.java:56)
at com.lmig.cf.licensing.ReportExporter.lambda$main$0(ReportExporter.java:91)
at com.lmig.cf.licensing.ReportExporter$$Lambda$3/1117519786.apply(Unknown Source)
at reactor.core.publisher.PublisherFlatMap$MergeBarrier.doNext(PublisherFlatMap.java:166)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:86)
... 100 more
Caused by: reactor.core.error.Exceptions$ValueCause: Exception while signaling value: A & B
at reactor.core.error.Exceptions.addValueAsLastCause(Exceptions.java:131)
at reactor.core.subscriber.SubscriberBarrier.onNext(SubscriberBarrier.java:95)
... 100 more
It does look like the java client is using a slightly different set of query parameters compared to the CLI when doing this lookup.
I have not tried this with other entities such as apps or spaces so I don't know if this is isolated to just orgs or applies to looking up all entities by name.
Metadata
Metadata
Assignees
Labels
No labels