mirror of
https://github.com/kubernetes/client-go.git
synced 2025-09-17 23:57:52 +00:00
Merge pull request #67513 from novas0x2a/expose-port
export a method to expose which ports were forwarded Kubernetes-commit: 4a627e9008a48fff8925131b97e372b2b15f6380
This commit is contained in:
64
Godeps/Godeps.json
generated
64
Godeps/Godeps.json
generated
@@ -272,131 +272,131 @@
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/admissionregistration/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/apps/v1beta2",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authentication/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/authorization/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/autoscaling/v2beta2",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/batch/v2alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/certificates/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/coordination/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/core/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/events/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/extensions/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/imagepolicy/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/networking/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/policy/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/rbac/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/scheduling/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/settings/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1alpha1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/api/storage/v1beta1",
|
||||
"Rev": "f456898a08e4bbc5891694118f3819f324de12ff"
|
||||
"Rev": "7619dea5b21b9d40430236f2d21ce583150d579c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "k8s.io/apimachinery/pkg/api/apitesting",
|
||||
|
@@ -340,3 +340,20 @@ func (pf *PortForwarder) Close() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetPorts will return the ports that were forwarded; this can be used to
|
||||
// retrieve the locally-bound port in cases where the input was port 0. This
|
||||
// function will signal an error if the Ready channel is nil or if the
|
||||
// listeners are not ready yet; this function will succeed after the Ready
|
||||
// channel has been closed.
|
||||
func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error) {
|
||||
if pf.Ready == nil {
|
||||
return nil, fmt.Errorf("no Ready channel provided")
|
||||
}
|
||||
select {
|
||||
case <-pf.Ready:
|
||||
return pf.ports, nil
|
||||
default:
|
||||
return nil, fmt.Errorf("listeners not ready")
|
||||
}
|
||||
}
|
||||
|
@@ -99,8 +99,17 @@ func TestParsePortsAndNew(t *testing.T) {
|
||||
if dialer.dialed {
|
||||
t.Fatalf("%d: expected not dialed", i)
|
||||
}
|
||||
if e, a := test.expected, pf.ports; !reflect.DeepEqual(e, a) {
|
||||
t.Fatalf("%d: ports: expected %#v, got %#v", i, e, a)
|
||||
if _, portErr := pf.GetPorts(); portErr == nil {
|
||||
t.Fatalf("%d: GetPorts: error expected but got nil", i)
|
||||
}
|
||||
|
||||
// mock-signal the Ready channel
|
||||
close(readyChan)
|
||||
|
||||
if ports, portErr := pf.GetPorts(); portErr != nil {
|
||||
t.Fatalf("%d: GetPorts: unable to retrieve ports: %s", i, portErr)
|
||||
} else if !reflect.DeepEqual(test.expected, ports) {
|
||||
t.Fatalf("%d: ports: expected %#v, got %#v", i, test.expected, ports)
|
||||
}
|
||||
if e, a := expectedStopChan, pf.stopChan; e != a {
|
||||
t.Fatalf("%d: stopChan: expected %#v, got %#v", i, e, a)
|
||||
|
Reference in New Issue
Block a user