Giter Club home page Giter Club logo

open-service-broker-sdk's Introduction

Open Service Broker SDK

Build Status

A skeleton project for creating new service brokers that implement the Open Service Broker API. Our goal is eventually to make this project a full-featured SDK that handles the subtleties of implementing the API and allows broker authors to focus on the business logic of provisioning and binding to their services.

Purpose

This is intended as a starting point for new broker implementations that will run inside a kubernetes cluster. The intent is for broker implementers to fork this repository and fill in their own broker specific logic/resource definitions into the skeleton that is provided.

We are specifically most interested in brokers that will integrate with the Kubernetes Service Catalog.

Current Status

This project is currently in the pre-alpha phase of its existence. The current usage pattern for this project is to fork/clone it and modify it in order to implement your own broker.

Our next step is to take existing brokers and reimplement them using this project. This will allow us to find pitfalls and bugs as well as determining what the lifecycle of a project based on this SDK should look like.

Running the example

$ make images
$ # start up an openshift/kube cluster
$ # have admin credentials
$ cd install
$ cd <kubernetes|openshift>
$ ./install.sh
$ cd ../../test-scripts
$ ./provision.sh
$ ./bind.sh
$ ./unbind.sh
$ ./deprovision.sh

Developing a new broker

Setting up your fork

  1. Fork the repository
  2. Clone your fork
  3. Run hack/fork-rename.sh <your github org name> <your github repo name>
    • this will rename all the package imports to match your project

Customizing the repo

In writing your own Broker implementation, you will primarily be concerned with the following 3 areas:

  • Broker API implementation - pkg/openservicebroker/operations
  • Broker State Resources - pkg/apis/broker, pkg/registry/broker/serviceinstance
  • Provision Controller implementation - pkg/controller

Broker API Implementation

The main logic of what your broker will do when provision/deprovision/bind/unbind/catalog/lastoperation requests are made is implemented in the pkg/openservicebroker/operations package. These functions are automatically bound to the appropriate API endpoints by the Broker SDK and will be invoked by the Service Catalog.

You can customize this logic to implement whatever actions you want to take in response to requests from the Service Catalog.

The provided implementation executes the following flow:

  1. On provision, a ServiceInstance resource is create. This is a Kubernetes resource that is provided by the Broker SDK itself and stored in a local etcd instance that will be running in the same pod as the Broker. A controller(see next section) will observe the new ServiceInstance and process it to complete the provision operation, and add the Ready condition

  2. On a lastoperation request, the ServiceInstance object conditions will be checked to see if it is Pending, Ready, or Failed.

  3. On bind, the broker confirms the presence of a ServiceInstance with a matching uuid, and if found, returns some credential information associated with the ServiceInstance.

  4. On unbind, the broker confirms the presence of a ServiceInstance with a matching uuid and based the success/failure response on the existence of that object.

  5. On deprovision, the broker deletes the ServiceInstance object. The controller could, but does not currently, take some additional action upon receiving the deletion event.

  6. On a catalog request, the broker returns a valid, but hardcoded, list of catalog entries.

Broker State Resources

The Broker SDK defines its own API group resource which is served by the API server which is part of the Broker process. This API group defines one resource type, a ServiceInstance. This resource is used to store the state of provision requests. Defining additional resources or customization to this resource are expected during usage of the SDK. Since the Broker calls itself to access these resources, no special permissions should need to be granted to users to access the resources, they can be considered internal only. The resources are backed by etcd storage in a local etcd process running in a second container with in the Broker SDK pod that is defined. Real world implementations will need to take into account the backup/restore strategies for this data.

Controller Implementation

The Broker SDK provides a single controller which watches for ServiceInstance objects. This allows it to implement an asynchronous provision flow in which the provision call returns immediately after defining a new ServiceInstance ( effectively a service provision request). The controller is free to implement any business logic necessary to handle the request, such as creating backend resources needed by the service instance being provisioned. Once the service instance is prepared, the controller updates the ServiceInstance object condition to indicate it is ready. This information is used by the lastoperation API when checking on the state of a provision request.

On provision, the current controller implementation simply updates the ServiceInstance to indicate it is ready. On deletion, the controller simply logs the event but a real Broker would be expected to cleanup the provisioned resources here.

open-service-broker-sdk's People

Contributors

bparees avatar jmrodri avatar maleck13 avatar pmorie avatar sabre1041 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-service-broker-sdk's Issues

Support for an osb init tool to allow for different project structure.

Wondering would some form of open-service-broker tool, similar to the cobra cli tool be valuable here?
Allowing for something like:

osb init

That would scaffold the users OSB project based on the structure of the sdk project ensuring the import paths were correct. I guess using the open-service-broker-sdk as a template.
The reason for this is that when setting up my environment to use the sdk, I wanted to have it in my own project structure:

github.com/maleck13/mongo-service-broker

But of course this causes issues as everything is imported from:

github.com/openshift/open-service-broker-sdk

Switching these import paths solved the problem but there were many of them to change.

openshift/brokersdk references?

Trying to get up and running and I'm seeing a lot of unknown references to github.com/openshift/brokersdk. Should these be updated to github.com/openshift/open-service-broker-sdk?

Unit test breaks in master

I get the following:

  github.com/openshift/open-service-broker-sdk/pkg/apis/broker/install
--- FAIL: TestRoundTripTypes (0.00s)
        roundtrip.go:111: starting group "sdkbroker.broker.k8s.io"
        roundtrip.go:141: round tripping sdkbroker.broker.k8s.io/__internal, Kind=ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstanceList v1alpha1.ServiceInstanceList
        roundtrip.go:141: round tripping sdkbroker.broker.k8s.io/__internal, Kind=ServiceInstance
        roundtrip.go:199:       round tripping to sdkbroker.broker.k8s.io/v1alpha1, Kind=ServiceInstance v1alpha1.ServiceInstance
panic: an unexported field was encountered, nested like this:  [recovered]
        panic: an unexported field was encountered, nested like this: int64 [recovered]
        panic: an unexported field was encountered, nested like this: time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: []broker.ServiceInstanceCondition -> broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: broker.ServiceInstanceStatus -> []broker.ServiceInstanceCondition -> broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: broker.ServiceInstance -> broker.ServiceInstanceStatus -> []broker.ServiceInstanceCondition -> broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: *broker.ServiceInstance -> broker.ServiceInstance -> broker.ServiceInstanceStatus -> []broker.ServiceInstanceCondition -> broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64 [recovered]
        panic: an unexported field was encountered, nested like this: *broker.ServiceInstance -> broker.ServiceInstance -> broker.ServiceInstanceStatus -> []broker.ServiceInstanceCondition -> broker.ServiceInstanceCondition -> unversioned.Time -> time.Time -> int64

goroutine 11 [running]:
panic(0xe8a8c0, 0xc420394360)
        /usr/lib/golang/src/runtime/panic.go:500 +0x1a1
testing.tRunner.func1(0xc4200843c0)
        /usr/lib/golang/src/testing/testing.go:579 +0x25d
panic(0xe8a8c0, 0xc420394360)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xf69ac0, 0xc4204f9900, 0x16)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc420394340)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xee7640, 0xc4204f9900, 0x199)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc420394320)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xe982c0, 0xc4204f9a10, 0x199)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc4203942c0)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xe00980, 0xc4204f9a10, 0x197)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc4203942a0)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xef5680, 0xc4202f6540, 0x199)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc420394280)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xf751e0, 0xc4202f6560, 0x199)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc420394220)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xf75500, 0xc4202f6560, 0x199)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc4203941e0)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.makeUsefulPanic(0xe11c00, 0xc4202f6560, 0x1a6)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:96 +0xfc
panic(0xe8a8c0, 0xc4203941c0)
        /usr/lib/golang/src/runtime/panic.go:458 +0x243
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.Equalities.deepValueEqual(0xc4204729c0, 0xe11c00, 0xc4202f6560, 0x1a6, 0xe11c00, 0xc4202f6620, 0x1a6, 0xc420290f20, 0x7, 0x390d9d9633157b00)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:219 +0x590
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.Equalities.deepValueEqual(0xc4204729c0, 0xf75500, 0xc4202f6560, 0x199, 0xf75500, 0xc4202f6620, 0x199, 0xc420290f20, 0x6, 0xfbc9246daa9f300)
        /home/pmorie/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go:186 +0xfab
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect.Equalities.deepValueEqual(0xc4204729c0, 0xf751e0, 0xc4202f6560, 0x199, 0xf751e0, 0xc4202f6620, 0x199, 0xc420290f20, 0x5, 0xc790a10e1b0ffd00)

make images not working

make image is throwing following errors

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x68 pc=0x463447]

goroutine 1 [running]:
panic(0x77be20, 0xc820010150)
	/usr/lib/golang/src/runtime/panic.go:481 +0x3e6
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/kubernetes/cmd/libs/go2idl/conversion-gen/generators.getManualConversionFunctions(0xc82011daa0, 0x0, 0xc820130090)
	/root/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/kubernetes/cmd/libs/go2idl/conversion-gen/generators/conversion.go:130 +0x277
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/kubernetes/cmd/libs/go2idl/conversion-gen/generators.Packages(0xc82011daa0, 0xc820096400, 0x0, 0x0, 0x0)
	/root/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/kubernetes/cmd/libs/go2idl/conversion-gen/generators/conversion.go:251 +0x127d
github.com/openshift/open-service-broker-sdk/vendor/k8s.io/gengo/args.(*GeneratorArgs).Execute(0xc820096400, 0xc820016d80, 0x7f43d0, 0x6, 0x89a6e0, 0x0, 0x0)
	/root/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/gengo/args/args.go:165 +0x2f8
main.main()
	/root/go/src/github.com/openshift/open-service-broker-sdk/vendor/k8s.io/kubernetes/cmd/libs/go2idl/conversion-gen/main.go:72 +0x338
make: *** [.generate_files] Error 2

test-scripts/shared.sh: Fails to get broker service ip

root@kube /opt/go/src/open-service-broker-sdk/test-scripts master
# ./provision.sh
Error from server (NotFound): services "brokersdk" not found

The problem is in shared.sh, line 17. Looks like this command just needs the namespace specified. Doing so fixes the issue.

broker_service_ip=`oc get svc brokersdk -o jsonpath={.spec.clusterIP}\`

Instructions/tests for running the service catalog in front of the broker SDK

A service broker is intended to run behind a service catalog which adapts and passes on requests to perform the various actions such as provision and bind. It would useful to be able to test and verify that the broker developed using this sdk was successfully able to integrate with the catalog. To enable this it should be made simple to set up the catalog and register the broker with it. It would then be very useful to have a set of "black box" test that would execute against the broker and validate it was responding as expected. It would also be good if these tests were easy to extend and modify so that they could remain useful throughout the development process.

reason to commit vendor directory?

Is there a reason we commit the vendor directory? On our broker, we simply commit the glide.yaml and glide.lock file and added vendor to .gitignore.

Makefile won't work with a symlinked project

I put all of my projects in $HOME/dev/some/path. For my golang projects I symlink the projects into my $GOPATH.

GOPATH=/home/jesusr/dev
mkdir -p $GOPATH/src/github.com/openshift/
pushd $HOME/dev
git clone [email protected]:jmrodri/open-service-broker-sdk.git
popd
pushd $GOPATH/src/github.com/openshift
ln -s $HOME/dev/open-service-broker-sdk .
popd

Now if you go into the symlinked directory and run make test you get an error:

pushd $GOPATH/src/github.com/openshift/open-service-broker-sdk
[jesusr@speed3 open-service-broker-sdk{master}]$ make test
glide install --strip-vendor --strip-vcs --update-vendored
[WARN]	The --update-vendored flag is deprecated. This now works by default.
[WARN]	The --strip-vcs flag is deprecated. This now works by default.
[WARN]	stat /home/jesusr/dev/open-service-broker-sdk/src: no such file or directory
[WARN]	stat /home/jesusr/dev/open-service-broker-sdk/vendor/src: no such file or directory
[ERROR]	Could not find any of /home/jesusr/dev/open-service-broker-sdk//src, /home/jesusr/dev/open-service-broker-sdk//vendor/src.
[INFO]	As of Glide 0.5/Go 1.5, this is required.
[ERROR]	Without src, cannot continue.
Makefile:142: recipe for target '.init' failed
make: *** [.init] Error 1

Looks like the ROOT tries to figure out where you are and that doesn't work with symlinks.

./provision.sh - the server could not find the requested resource

After installing brokersdk i got this error when doing provision.sh

[root@ip-172-31-39-107 test-scripts]# ./provision.sh 
Internal Server Error: "/broker/sdkbroker.broker.io/v2/service_instances/d5d242c1-164e-11e7-8714-0242ac110002": the server could not find the requested resource
Internal Server Error: "/apis/sdkbroker.broker.k8s.io/v1alpha1/namespaces/brokersdk/serviceinstances": the server could not find the requested resource

Broker logs from begninng. etcd seems to be fine.

[root@ip-172-31-39-107 test-scripts]# oc logs -f brokersdk-zs3rf -c brokersdk
ERROR: logging before flag.Parse: I0513 17:28:48.788990       1 server.go:107] Preparing to run the broker API server
ERROR: logging before flag.Parse: I0513 17:28:48.790096       1 server.go:110] Setting up secure serving options
ERROR: logging before flag.Parse: I0513 17:28:49.111959       1 serving.go:270] Generated self-signed cert (/data/apiserver.crt, /data/apiserver.key)
ERROR: logging before flag.Parse: I0513 17:28:49.605999       1 apiserver.go:108] Creating the Broker API server
ERROR: logging before flag.Parse: I0513 17:28:49.607302       1 apiserver.go:125] Finished installing API groups
ERROR: logging before flag.Parse: I0513 17:28:49.607323       1 apiserver.go:127] Installing service broker api endpoints at /broker/sdkbroker.broker.io
ERROR: logging before flag.Parse: I0513 17:28:49.607771       1 apiserver.go:135] Finished installing broker api endpoints
ERROR: logging before flag.Parse: I0513 17:28:49.607969       1 server.go:172] Running the broker API server
ERROR: logging before flag.Parse: I0513 17:28:49.607989       1 serve.go:85] Serving securely on 0.0.0.0:8443
ERROR: logging before flag.Parse: I0513 17:28:49.608391       1 controller.go:82] Starting broker controller
2017-05-13T17:28:49.635320276Z AUDIT: id="cc14378a-4ac8-40d2-bba7-a97b1a0c5475" ip="::1" method="GET" user="system:apiserver" groups="\"system:masters\"" as="<self>" asgroups="<lookup>" namespace="brokersdk" uri="/apis/sdkbroker.broker.k8s.io/v1alpha1/namespaces/brokersdk/serviceinstances?resourceVersion=0"
2017-05-13T17:28:49.635608586Z AUDIT: id="cc14378a-4ac8-40d2-bba7-a97b1a0c5475" response="200"
2017-05-13T17:28:49.636472063Z AUDIT: id="78f2f2ea-6935-4bd1-b996-0e0baa989857" ip="::1" method="GET" user="system:apiserver" groups="\"system:masters\"" as="<self>" asgroups="<lookup>" namespace="brokersdk" uri="/apis/sdkbroker.broker.k8s.io/v1alpha1/namespaces/brokersdk/serviceinstances?resourceVersion=1&timeoutSeconds=582&watch=true"
2017-05-13T17:28:49.636753739Z AUDIT: id="78f2f2ea-6935-4bd1-b996-0e0baa989857" response="200"
2017-05-13T17:30:33.452500248Z AUDIT: id="112f2934-9889-4c42-9a7a-3ccb64d77e6f" ip="172.31.39.107" method="PUT" user="system:anonymous" groups="\"system:unauthenticated\"" as="<self>" asgroups="<lookup>" namespace="<none>" uri="/broker/sdkbroker.broker.io/v2/service_instances/d5d242c1-164e-11e7-8714-0242ac110002"
ERROR: logging before flag.Parse: E0513 17:30:33.467624       1 webhook.go:185] Failed to make webhook authorizer request: the server could not find the requested resource
2017-05-13T17:30:33.467647816Z AUDIT: id="112f2934-9889-4c42-9a7a-3ccb64d77e6f" response="500"
ERROR: logging before flag.Parse: E0513 17:30:33.467761       1 errors.go:80] the server could not find the requested resource
2017-05-13T17:30:33.543663348Z AUDIT: id="2f05233e-d0fd-4146-b703-fe2732294a44" ip="172.31.39.107" method="GET" user="system:anonymous" groups="\"system:unauthenticated\"" as="<self>" asgroups="<lookup>" namespace="brokersdk" uri="/apis/sdkbroker.broker.k8s.io/v1alpha1/namespaces/brokersdk/serviceinstances"
2017-05-13T17:30:33.549238518Z AUDIT: id="2f05233e-d0fd-4146-b703-fe2732294a44" response="500"
ERROR: logging before flag.Parse: E0513 17:30:33.549220       1 webhook.go:185] Failed to make webhook authorizer request: the server could not find the requested resource
ERROR: logging before flag.Parse: E0513 17:30:33.549381       1 errors.go:80] the server could not find the requested resource

example catalog service classes not working with service catalog

The service catalog wont allow names and ids that do not meet the regex [a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])

It returns the following error when getting the catalog:

'Error syncing catalog from Broker. Error reconciling serviceClass "mongo-db"
      (broker "mongo-service-broker"): ServiceClass.servicecatalog.k8s.io "mongo-db"
      is invalid: [plans[0].name: Invalid value: "gold plan": [-_a-z0-9]+ (e.g. ''plan_name'',
      regex used for validation is ''plan-name''), plans[0].osbGuid: Invalid value:
      "gold_plan_id": [a-zA-Z0-9]([-a-zA-Z0-9]*[a-zA-Z0-9])? (e.g. ''123-abc'',  or
      ''456-DEF'', regex used for validation is ''my-name'')]'

I have a pr coming to fix this.

support for creating openshift and kubernetes objects

One of the areas I find a barrier to getting started in working against the OpenShift API is using the OpenShift client pkg in my code. It seems you need to vendor most of Kubernetes and OpenShift in order to use it.
I would like to be able to create a broker that, in order to provision its services, creates objects via the OpenShift and Kubernetes API.
An early attempt at something similar can be found here:
https://github.com/feedhenry/negotiator (it was started before I knew about the Service Catalog and Open Broker API) but it is essentially a broker.
Is there anything in this project or any plans to make working against the OpenShift API easier from a go broker?

Aside question. Would I be right in thinking that if I wanted to use this I would change the openservicebroker and controller pkg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.