Coder Social home page Coder Social logo

azure / meta-azure-service-broker Goto Github PK

View Code? Open in Web Editor NEW
39.0 17.0 44.0 1.05 MB

A service broker to manage multiple Azure services in Cloud Foundry

License: Apache License 2.0

JavaScript 99.80% Shell 0.11% Makefile 0.05% TypeScript 0.01% Dockerfile 0.03%

meta-azure-service-broker's Introduction

Meta Azure Service Broker

Build Status

Cloud Foundry on Azure is generally available. If you want to try it, please follow the guidance.

Overview

You need an Azure account. With the account, you need to prepare a service principal and SQL Database on Azure which will be used in the deployment of the service broker. For the service offerings and plans, please refer to each specific service.

How to deploy and use

How to tag resources

The provided services

The services provided by the broker:

The user-provided services:

Troubleshooting

Have troubles? Check out our Troubleshooting Doc

Contribute

More information

Custom Services in Cloud Foundry

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

meta-azure-service-broker's People

Contributors

abelhu avatar arschles avatar bingosummer avatar craigwiand avatar danhigham avatar dave-read avatar dawu415 avatar erniebilling avatar gossion avatar krancour avatar microsoft-github-policy-service[bot] avatar mszcool avatar niroyb avatar patrickcrocker avatar pivotal-jleung avatar rseroter avatar sagupta1001 avatar seanmck avatar sebastus avatar thomas1206 avatar tomconte avatar zhongyi-zhang 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  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

meta-azure-service-broker's Issues

postgresqldb and mysqldb modules do not provision databases

Contrasted with the existing sqldb module, which creates SQL Servers and databases on those servers, the new postgresqld and mysqldb modules provision servers only; and not databases...

I believe this is something of a problem because, generally speaking, a database is what a user or application seeks to provision and bind to. The requirement that the database live on a server is just an incidental detail.

Related: the bind operation for both of these new modules is returning the server admin's credentials. This probably isn't ideal either. It would be preferable to create a new set of credentials for each application that binds, and in this way, those credentials can be revoked upon unbind.

Installing the tile version 1.10.0 on PCF 2.2 seems to hang on `Installing any new modules (package.json)` when running the deploy broker errand

After hanging for about 15 minutes on Installing any new modules (package.json), we receive the following error:

Stderr Error staging application azure-service-broker-1.10.0: timed out after 15 minute(s)

We have tried this 4 times already but cannot seem to find the problem.

Some other notes - we have tried:

  1. Downloading the 1.10.0 release here, fill in the manifest.yml and pushed it to the same foundation. It fails at the same location.

  2. Downloading the 1.10.0 release here, fill in the manifest.yml, vendor the packages via npm install and pushed it to the same foundation. It works.

What is odd is that the tile's service broker app that gets pushed already has the vendored dependencies. We verified this by ssh'ing onto the deploy errand VM and checking the zip file.

Any ideas on what might be happening?

Part of the broker app log attached.

           cf logs azure-service-broker-1.10.0 --recent  
           Retrieving logs for app azure-service-broker-1.10.0 in org system / space azure-service-broker-space as system_services...  
             
              2018-12-04T06:09:37.32+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:40.86+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:42.26+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:43.32+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:44.00+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:45.75+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:46.10+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:47.13+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:48.17+0000 [API/1] OUT Updated app with guid e33c053f-f42c-4d3e-bd70-cb15c28c558e ({"environment_json"=>"PRIVATE DATA HIDDEN"})  
              2018-12-04T06:09:50.63+0000 [STG/0] OUT Downloading nodejs_buildpack...  
              2018-12-04T06:09:55.81+0000 [STG/0] OUT Cell 8ae2b586-6c0d-4d48-a140-4eec509a10a8 successfully created container for instance 38b5fbaa-153c-423b-aa59-f92932f36c07  
              2018-12-04T06:09:58.25+0000 [STG/0] OUT -----> Installing binaries  
              2018-12-04T06:10:01.23+0000 [STG/0] OUT  > [96m[1mhttps://opencollective.com/nodemon/donate[0m  
              2018-12-04T06:10:01.65+0000 [STG/0] OUT > [email protected] install /tmp/app/node_modules/bunyan/node_modules/dtrace-provider  
              2018-12-04T06:10:01.65+0000 [STG/0] OUT > node-gyp rebuild || node suppress-error.js  
              2018-12-04T06:10:01.94+0000 [STG/0] OUT   TOUCH Release/obj.target/DTraceProviderStub.stamp  
              2018-12-04T06:10:01.94+0000 [STG/0] OUT make: Leaving directory `/tmp/app/node_modules/bunyan/node_modules/dtrace-provider/build'  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ansi-styles  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/escape-string-regexp  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/has-ansi  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ansi-regex  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/strip-ansi  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/supports-color  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/commander  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-my-json-valid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/generate-function  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/generate-object-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-my-ip-valid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/jsonpointer  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/xtend  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/pinkie-promise  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/pinkie  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/hawk  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/boom  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/hoek  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/cryptiles  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/sntp  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/http-signature  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/jsprim  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/jsprim/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extsprintf  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/json-schema  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/verror  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/verror/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/sshpk  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/asn1  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/sshpk/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/dashdash  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/dashdash/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/getpass  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/getpass/node_modules/assert-plus  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/safer-buffer  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-typedarray  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/json-stringify-safe  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/request/node_modules/node-uuid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/oauth-sign  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/qs  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/stringstream  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/tough-cookie  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/tunnel-agent  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/underscore  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/uuid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/xmldom  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/xpath.js  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest-azure/node_modules/async  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/azure-arm-resource  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/duplexer  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/moment  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest/node_modules/request  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest/node_modules/node-uuid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest/node_modules/qs  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest/node_modules/tough-cookie  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/punycode  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/through  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/tunnel  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms-rest-azure/node_modules/uuid  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mssql  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/generic-pool  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mssql/node_modules/promise  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/asap  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mssql/node_modules/tedious  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mssql/node_modules/babel-runtime  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mssql/node_modules/core-js  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/big-number  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/iconv-lite  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/sprintf  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/nodemon  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/chokidar  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/anymatch  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/micromatch  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/arr-diff  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/array-unique  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/braces  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/arr-flatten  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/braces/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-extendable  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/fill-range  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/fill-range/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-number  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-number/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-buffer  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/repeat-string  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/to-regex-range  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/isobject  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/repeat-element  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/base  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/cache-base  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/collection-visit  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/map-visit  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/object-visit  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/component-emitter  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/get-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/has-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/has-values  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/has-values/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/set-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/set-value/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-plain-object  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/split-string  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/assign-symbols  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extend-shallow/node_modules/is-extendable  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/to-object-path  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/to-object-path/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/union-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/arr-union  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/union-value/node_modules/set-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/union-value/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/unset-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/unset-value/node_modules/has-value  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/unset-value/node_modules/has-values  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/unset-value/node_modules/has-value/node_modules/isobject  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/class-utils  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/class-utils/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-accessor-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-accessor-descriptor/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-data-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-data-descriptor/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/is-descriptor/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/static-extend  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/static-extend/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/object-copy  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/copy-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/object-copy/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/object-copy/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/base/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/base/node_modules/is-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/base/node_modules/is-accessor-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/base/node_modules/is-data-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mixin-deep  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/for-in  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mixin-deep/node_modules/is-extendable  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/pascalcase  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon/node_modules/debug  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ms  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/map-cache  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/source-map  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/source-map-resolve  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/atob  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/decode-uri-component  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/resolve-url  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/source-map-url  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/urix  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/use  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-node  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-node/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-node/node_modules/is-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-node/node_modules/is-accessor-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-node/node_modules/is-data-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-util  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/snapdragon-util/node_modules/kind-of  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/to-regex  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/define-property/node_modules/is-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/define-property/node_modules/is-accessor-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/define-property/node_modules/is-data-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/regex-not  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/safe-regex  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ret  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob/node_modules/is-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob/node_modules/is-accessor-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob/node_modules/is-data-descriptor  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/expand-brackets  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/expand-brackets/node_modules/debug  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/expand-brackets/node_modules/define-property  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/expand-brackets/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/posix-character-classes  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/extglob/node_modules/extend-shallow  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/fragment-cache  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/nanomatch  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/strip-bom  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/v8flags  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/homedir-polyfill  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/parse-passwd  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/yn  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/typescript  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/deep-extend  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/urlencode  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/bcrypt-pbkdf  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/tweetnacl  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/dtrace-provider  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ecc-jsbn  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/jsbn  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/glob  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/inflight  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/mv  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/ncp  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/rimraf  
              2018-12-04T06:10:02.15+0000 [STG/0] OUT [email protected] /tmp/app/node_modules/safe-json-stringify  
              2018-12-04T06:10:02.16+0000 [STG/0] OUT        Installing any new modules (package.json)  
             
Stderr     Error staging application azure-service-broker-1.10.0: timed out after 15 minute(s)  
             

1 errand(s)

Proposal: wherever possible, provide sensible defaults for parameters

There's probably some room for debate in terms of which parameters are affected, but I believe that there are probably several cases where overall user experience can be improved by providing sensibly defaulted parameters (instead of absolutely requiring a user to provide them).

For example...

In provisioning a database server (SQL Server, Postgres server, MySQL server-- applies to all), it's probably not 100% necessary to require the user to provide an admin username and password. In the absence of this information, a username and strong password can easily be generated. By omitting those values, a user carrying out the provisioning who doesn't require administrative access to the server is not burdened with having to provide extraneous details and they're not burdened with a level of access that they neither want nor need. For the use cases where the user carrying out provisioning does care about these details, they are still able to provide them explicitly. (i.e. This proposal isn't a breaking change.)

Some other parameters that this concept might apply to:

  • Firewall rules. Is there a sensible, default firewall rule that can be provided for most services (something permissive)?
  • Database names? In many cases, the name of a database that's being provisioned might not be important to the user provisioning it. In many cases, they might only care that a database exists and that they can access it. They will learn its name by binding to it.

Again... I propose that we not prohibit such parameters from being provided explicitly, but only that we apply sensible defaults so as not to require them for the many use cases in which such information is extraneous.

Postgres JDBC String generation does not allow the insertion of required custom parameters for a successful SSL connection

A Pivotal Customer has reported that they are encountering an issue.

Apparently starting with the Postgres JDBC Driver v. 42.2.5 the SSL behavior changed - see https://www.kobelnet.ch/2019/05/02/configure-java-jdbc-to-connect-to-postgresql-with-jre-certificate-validation

The problem is that currently, the Postgres JDBC String generated by the Azure Service Broker is not allowing the insertion of the required custom parameters in order for the connection to succeed. (rootsslcert - see https://jdbc.postgresql.org/documentation/head/connect.html#connection-parameters).

The workaround is to create a service key, then create a user provided service based on the json payload of the service key but in which the jdbcUrl is altered to add the rootsslcert path to /etc/ssl/certs/ca-certificates.crt, after adding the Microsoft certificate to the trusted certs in PAS).

Only Basic types of Redis and PostgreSQL are created

Hi guys!

We are trying to create Redis and PostreSQL with "Standard types" in Apps Manager.
However, in Azure, it creates Basic type.

Is it bug or misconfiguration on our side?

We are on:

  • PCF Ops Manager v1.11.11.0
  • ERT v1.11.12
  • Microsoft Azure Service Broker v1.5.0

Our Microsoft Azure Service Broker's Default Parameters Config:

For Redis

{
  "parameters": {
      "enableNonSslPort": true,
      "sku": {
          "name": "Basic",
          "family": "C",
          "capacity": 0
      }
  }
}

For PostgreSQL

{
  "postgresqlServerParameters": {
      "allowPostgresqlServerFirewallRules": [
          {
            "ruleName": "Whitelist",
            "startIpAddress": "<Removed for security>",
            "endIpAddress": "<Removed for security>"
          }
      ],
      "properties": {
          "version": "9.6",
          "sslEnforcement": "Enabled",
          "storageMB": 51200
      }
  }
}

Refine the jdbcUrl in sqldb in #34

#34

  1. jdbcUrl credential is not supported for AzureChinaCloud because the sql endpoint is not the same.
  2. We need to find a way to get jdbcUrl from Azure directly. With this, we don't need to concat the string by ourselves.

Failed to compile droplet: Failed to run all supply scripts: exit status 14

Hi,

I'm trying to cf push the service broker as per the instructions here - https://github.com/Azure/meta-azure-service-broker/blob/master/docs/how-admin-deploy-the-broker.md

When I get to the cf push section, i get the following error

npm ERR! Maximum call stack size exceeded
npm ERR! A complete log of this run can be found in:
npm ERR! /home/vcap/.npm/_logs/2019-02-27T14_59_54_913Z-debug.log
**ERROR** Unable to build dependencies: exit status 1
Failed to compile droplet: Failed to run all supply scripts: exit status 14
Exit status 223

unfortunately it does not appear to write the debug log into the location it suggests so I am unsure how to proceed.

Is this an issue anyone else has seen?

unify the name and parameters for each service

  1. Some service name begins with azure, and some doesn't. Please unify the names.
  2. The same parameters such as resource_group_name are using in several brokers when provisioning a service, but they have different name (resource_group_name, resourceGroupName). Please unify these parameters so as not to confuse users.

RedisCache Service

I discovered a possible problem with Azure Service Broker (the one that gets created out of the box with Azure Marketplace PCF install):

default RedisCache config is:

{
  "parameters": {
      "enableNonSslPort": false,
      "sku": {
          "name": "Basic",
          "family": "C",
          "capacity": 0
      }
  }
}

So, non-SSL port is not enabled by default (6379) - and service broker adds both ports to ENV when service is bound, e.g.

{
 "VCAP_SERVICES": {
  "azure-rediscache": [
   {
    "credentials": {
     "hostname": "u50060acf075.redis.cache.windows.net",
     "name": "u50060acf075",
     "port": 6379,
     "primaryKey": "xxxx",
     "redisUrl": "redis://u50060acf075:[email protected]:6379",
     "secondaryKey": "yyyy",
     "sslPort": 6380
    },
    "label": "azure-rediscache",
    "name": "myredis",
    "plan": "basic",
    "provider": null,
    "syslog_drain_url": null,
    "tags": [
     "Azure",
     "Redis",
     "Cache"
    ],
    "volume_mounts": []
   }
  ]
 }
}

Problem is that if nonSSL port is disabled (the case of default Azure Marketplace PCF install):

  • redisUrl is using a wrong port (e.g. port and 6379 instead of sslPort and 6380)
  • and wrong protocol (e.g. redis:// instead of rediss://)

Things work as expected, if we don't enforce SSL. Service broker creates proper port (e.g. 6379) and redisUrl on non-SSL port (e.g. redis://....:6379).

Creating multiple database in a single PGSQL cluster

This is more of a documentation question.

Background:

Platform: PCF
Microsoft Azure Service Broker: v1.5.2
All apps in a given space use the same PGSQL instance/cluster.

Problem:

  • All the apps use the same username, database to connect to the cluster. I would like to create a separate username & database for each CF application connected to the cluster. Is that possible?
  • What is the definition of Basic50, Basic100 plans in PCF? I don't see proper docs on the plans shown in the PCF, whereas in Azure portal I just see Basic, standard and premium plan. I don't understand the connection between these two. Insight on that would be great.

Service broker documentation and steps should define roles and permissions needed for service principal

A service broker (e.g. Storage account broker) runs under the identity of a defined service principal. When the Cloud Foundry administrator deployed, the service principal was delegated certain role assignments: "Virtual Machine Contributor" and "Network Contributor". However, when service brokers are used, the delegated role assignments are not sufficient to take certain actions. This can be seen while following the steps here:
# cf create-service azure-storageblob standard myblobservice -c ./examples/storageblob-example-config.json

Creating service instance myblobservice in org default_organization / space azure as admin...
FAILED
Server error, status code: 502, error code: 10001, message: Service broker error: The client '4c7a94e7-1462-4808-9077-94df41862a82' with object id '4c7a94e7-1462-4808-9077-94df41862a82' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resourcegroups/write' over scope '/subscriptions/c241176f-318e-4552-8e2b-2d26fecf8095/resourcegroups/craigw-CF'.

All Azure service brokers should document the necessary role-based assignments needed for their proper function and the installation guides should include the delegation as part of the setup steps. For more information about Azure Role-Based Access Control, please refer to RBAC: Built-in roles.

Add retry for broker db operation

meta-azure-service-broker currently use azure sql as database to log status of provision,deprovision, etc. of a service. Sometimes it fails to connect to azure sql or fails to insert/rm/update a record, and thus lead the failures of subsequent operations. In this case, a retry is needed.

Version 1.1.0 .pivotal throws Node exception when target SQL Server is unreachable

Running with Ops Manager 1.18.10 on Azure. Installing the tile fails with the following messages:

cf logs azure-service-broker-1.1.0 --recent
Connected, dumping recent logs for app azure-service-broker-1.1.0 in org system / space azure-service-broker-space as system_services...

2016-12-08T02:34:55.08+0000 [APP/0]      OUT > [email protected] start /home/vcap/app
2016-12-08T02:34:55.67+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mStarting to collect the service offering and plans of each service module...
2016-12-08T02:34:55.67+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39m[34m[1msqlserver[22m[39m[32m - [39mLoading schema
2016-12-08T02:34:55.75+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mAdding listeners for the service azure-documentdb...
2016-12-08T02:34:55.76+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mAdding listeners for the service azure-rediscache...
2016-12-08T02:34:55.77+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mAdding listeners for the service azure-servicebus...
2016-12-08T02:34:55.77+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mAdding listeners for the service azure-sqldb...
2016-12-08T02:34:55.79+0000 [APP/0]      OUT [90m2:34:55 AM[39m[32m - [39mINFO [32m - [39m[34m[1mMeta Azure Service Broker[22m[39m[32m - [39mAdding listeners for the service azure-storage...
2016-12-08T02:34:55.90+0000 [APP/0]      ERR timers.js:327
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     throw new TypeError('"callback" argument must be a function');
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     ^
2016-12-08T02:34:55.90+0000 [APP/0]      ERR TypeError: "callback" argument must be a function
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at exports.setTimeout (timers.js:327:11)
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at /home/vcap/app/lib/broker/db/sqlserver/sqlserver.js:19:16
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at /home/vcap/app/node_modules/mssql/lib/main.js:287:20
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at /home/vcap/app/node_modules/mssql/lib/tedious.js:432:20
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at /home/vcap/app/node_modules/generic-pool/lib/generic-pool.js:340:9
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at Connection.<anonymous> (/home/vcap/app/node_modules/mssql/lib/tedious.js:381:26)
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at Connection.g (events.js:292:16)
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at emitOne (events.js:96:13)
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at Connection.emit (events.js:188:7)
2016-12-08T02:34:55.90+0000 [APP/0]      ERR     at Connection.socketError (/home/vcap/app/node_modules/tedious/lib/connection.js:571:14)
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Linux 4.4.0-45-generic
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! argv "/home/vcap/app/.heroku/node/bin/node" "/home/vcap/app/.heroku/node/bin/npm" "start"
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! node v7.2.0
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! npm  v3.10.9
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! code ELIFECYCLE
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! [email protected] start: `node index.js`
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Exit status 1
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! 
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Failed at the [email protected] start script 'node index.js'.
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Make sure you have the latest version of node.js and npm installed.
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! If you do, this is most likely a problem with the meta-azure-service-broker package,
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! not with npm itself.
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Tell the author that this fails on your system:
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR!     node index.js
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! You can get information on how to open an issue for this project with:
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR!     npm bugs meta-azure-service-broker
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! Or if that isn't available, you can get their info via:
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR!     npm owner ls meta-azure-service-broker
2016-12-08T02:34:55.97+0000 [APP/0]      ERR npm ERR! There is likely additional logging output above.
2016-12-08T02:34:55.98+0000 [APP/0]      ERR npm ERR! Please include the following file with any support request:
2016-12-08T02:34:55.98+0000 [APP/0]      ERR npm ERR!     /home/vcap/app/npm-debug.log
2016-12-08T02:34:55.98+0000 [APP/0]      OUT Exit status 1

Deprecated package warnings during npm install

Running npm install on a fresh system yields these warnings:

meta-azure-service-broker>npm install
npm WARN deprecated [email protected]: use uuid module instead
npm WARN deprecated [email protected]: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated [email protected]: use uuid module instead
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.

Errors connecting to Azure PostgreSQL service when using VCAP_SERVICES parameters

We were testing applications where the connection properties exposed via the VCAP_SERVICES environment variable were used to connect to Azure PostgreSQL service instances.

While the jdbcUrl properties seem to work for Java applications, we saw connection errors with drivers that used the connection properties in the following ways:

  • Using the individual properties to build a connection string. For example in python: connect_string_from_properties = "host={0} user={1} dbname={2} password={3} sslmode {4}".format(host, user, dbname, password, sslmode)

  • Using the uri directly for drivers that support creating a connection from a uri. For example in Python: psycopg2.connect(uri)

  • Parsing the uri property to extract the individual components of the URI. For example in python: uri_parts = urisplit(uri)

When consuming the uri directly the error referenced an invalid port, which looks to be triggered by the @ symbol not being escaped between the username and server name. For example dbadmin@myserver in:

postgres://dbadmin@myserver:Passw%[email protected]:5432/testdb

When consuming the individual credentials properties the connection error was that the username needed to be in the form of user@server. This looks to be caused by the username being returned as just the username rather than combined into user@server.

If the user@server were fixed the next error was that the password was not valid which looks to be because the encoded version of the password is returned in the password property, which would be an issue when the password were used directly as a connection parameter (e.g. host={0} user={1} dbname={2} password={3} ...) instead of within a URI/URL.

cf enable-service-access azure-postgresqldb is not work

Hello,

I'm use azure service broker 1.10.1 and PCF 2.2, when I run cf marketplace command I cannot find azure-postgresqldb, then I run command: cf enable-service-access azure-postgresqldb, it returns "$ cf enable-service-access azure-postgresqldb
Enabling access to all plans of service azure-postgresqldb for all orgs as admin...
FAILED
Service offering azure-postgresqldb not found"

Creating services on West Europe region times out

Hi,

Using the service broker to create services on the West Europe region often times out. This happens very often while trying to create azure-sqldb instances.

That's the response I get:
Server error, status code: 504, error code: 10001, message: The request to the service broker timed out: https://azure-service-broker.apps.pcfdomain/v2/service_instances/UUID?accepts_incomplete=true

This is the log I get from the service broker:
warn: [common] msRestRequest : {"statusCode":504,"body":{"error":{"code":"GatewayTimeout","message":"The gateway did not receive a response from 'Microsoft.Sql' within the specified time period."}},"headers":{"cache-control":"no-cache","pragma":"no-cache","content-type":"application/json; charset=utf-8","expires":"-1","x-ms-failure-cause":"service","x-ms-request-id":"","x-ms-correlation-request-id":"","x-ms-routing-request-id":"WESTEUROPE:20171116T135836Z:","strict-transport-security":"max-age=31536000; includeSubDomains","date":"Thu, 16 Nov 2017 13:58:35 GMT","connection":"close","content-length":"141"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"management.azure.com","port":null,"hostname":"management.azure.com","hash":null,"search":"?api-version=2014-04-01-preview","query":"api-version=2014-04-01-preview","pathname":"//subscriptions/X/resourceGroups/azure-service-broker/providers/Microsoft.Sql/servers/XXXX","path":"//subscriptions/X/resourceGroups/azure-service-broker/providers/Microsoft.Sql/servers/XXXX?api-version=2014-04-01-preview","href":"https://management.azure.com//subscriptions/X/resourceGroups/azure-service-broker/providers/Microsoft.Sql/servers/XXXX?api-version=2014-04-01-preview"},"method":"PUT","headers":{"Content-Type":"application/json; charset=UTF-8","Accept":"application/json","x-ms-return-client-request-id":true,"x-ms-client-request-id":"X","Authorization":"Bearer X"

Maybe making the timeout configurable would be a good idea? Switching it over to a region like East US solves the problem.

Make deployable to Kubernetes

The kubernetes-incubator/service-catalog adapts OSB brokers to a k8s-native workflow. i.e. It allows off-cluster, managed services (like those managed by this broker) to be provisioned and bound by creating k8s resources.

The docs in this repo assume the operator is deloying to CF, but if there is any other aspect of this broker that couples it to CF-only, it's not immediately evident to me. It seems that with the addition of a Dockerfile and a Helm chart, this could be easily deployable to a Kubernetes cluster instead, where the service-catalog and this broker could be used as an on-ramp to Azure services.

Azure Redis cache doesn't support updating service instance

As per Open Service Broker API, you can implement PATCH /v2/service_instances/:instance_id to allow updating an existing service broker instance. This doesn't seem to be supported by Azure Redis service:

cf update-service [service-instance-name] -c '[parameters JSON]'
Updating service instance [service-instance-name] as [username]...
FAILED
Server error, status code: 504, error code: 10001, message: The request to the service broker timed out: [service-instance-url]

Looking at https://github.com/Azure/meta-azure-service-broker/blob/master/lib/services/azurerediscache/index.js, the Handlers.update is never defined.

The workaround is to delete existing service instance and provision a new one with the desired set of parameters.

When it comes to implementation details, looks like the same REST API endpoint on Azure Redis side can be leveraged for both "create" and "update" operations (former is already supported): https://docs.microsoft.com/en-us/rest/api/redis/redis/create

Invalid .npmrc confi causes ENOTCACHED error

Hi,

I noticed that the line offline=true in the .npmrc file causes the following error (on two distinct machines):

C02W10MUHTD8:meta-azure-service-broker ----$ npm install
npm ERR! code ENOTCACHED
npm ERR! request to https://registry.npmjs.org/async failed: cache mode is 'only-if-cached' but no cached response available.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/-----/.npm/_logs/2019-02-15T10_31_33_339Z-debug.log

It works fine when I remove the line (I noticed that this line has been added because of #199 but I didn't encounter that problem)

Azure IoT Hub binding support

Allow to handle device communication via amqp,mqtt,https using Azure Iot Hub services.
Provide a binding for spring cloud stream (Source,Sink,..)

Configuration parameter name Azure resource group is not consistent

The name of the parameter used to provide the name of the Azure resource group is not consistent.

The name is resourceGroup for

  • Redis Cache
  • DocumentDB
  • SQLDb

The name is resource_group_name for

  • Storage
  • Service Bus

Could a consistent name be used? This will help as more services get added in the future.

Mark

Update Tile stemcell

The current version of the Azure service broker is on Stemcell 3263. Can you move to the latest 3312 on the next release?

azure-sqldb-failover-group module: unbinding issue in ExistingDatabaseInFailoverGroup plan

Unbinding in ExistingDatabaseInFailoverGroup plan fails for an earlier deletion of the corresponding SecondaryDatabaseWithFailoverGroup plan instance. Because it fails to delete the user created in binding as the database is no longer existed on Azure.
Normally, an ExistingDatabaseInFailoverGroup instance should be deleted before the SecondaryDatabaseWithFailoverGroup instance. But the mechanism is design for multiple CF clusters scenario. We can't ensure that order inside a broker.
Possible solution: with ExistingDatabaseInFailoverGroup plan, unbinding can give up deleting the user if the database on Azure is no longer existed and return success.

Redis Cache Service Plan on PCF

I could not create Standard services for Azure Redis even I select standard.
default SKU is created any time when I tried to create it from PCF Apps Manager.

Are there any mean to selectable service plans for Redis Cache?
It looks developer needs to define the SKU every time.

Deleting a sql db service does not delete the appropriate sql server on azure

While we are allowed to provision new sql serves and new sql databases using the broker, when a delete-service command is issue, it appears that the sql database is deleted but the server continues to stay active. Why does this happen? Should a user be able to create and delete both databases and sql servers on demand without using the portal?

E.g.

▶ cf ds afcea-sql-server -f
Deleting service afcea-sql-server in org afcea-west / space usmc as admin...
OK

Delete in progress. Use 'cf services' or 'cf service afcea-sql-server' to check operation status.

When I go into the Microsoft Azure portal, I am able to see the database and server that I asked to be deleted from cloud foundry.

STATUS
Available
SERVER NAME
afcea-sql-server.database.windows.net

Example for using azure storage client needs to incude step to modify service name

https://github.com/Azure/meta-azure-service-broker/blob/master/docs/azure-storage-blob.md#binding
Step 1 instructs to just build and push. If you follow the previous examples you will get a failure to start the application. In the logs you will see:

2016-08-30T15:55:20.01+0000 [APP/0] ERR Traceback (most recent call last):
2016-08-30T15:55:20.01+0000 [APP/0] ERR File "demo.py", line 15, in
2016-08-30T15:55:20.01+0000 [APP/0] ERR account_name = vcap_services[service_name][0]['credentials']['storage_account_name']
2016-08-30T15:55:20.01+0000 [APP/0] ERR KeyError: 'azurestorageblob'

This is because the service name is hard coded in the sample app as azurestorageblob but in the examples in the walkthrough the name used is azure-storageblob with a hypen.

Please update to either:

  • change the sample code here to include the hyphen
  • include a step in the walkthrough to change
  • change the walkthrough to use azurestorageblob

Authentication not working after service created

When I create a service with a "sqlServerParamerters" configuration section like:

	"location": "eastus",
	"properties": {
		"administratorLogin": "admin",
		"administratorLoginPassword": "P455w0rd"
	}

my login is denied with those credentials.

If I inspect my VCAP_SERVICES for a service binding to this service "administratorLogin" and "administratorLoginPassword" are shown to be present in the JSON, but null.

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.