| # apidGatewayDeploy |
| |
| This core plugin for [apid](http://github.com/30x/apid) responds to |
| [apidApigeeSync](https://github.com/30x/apidApigeeSync) events and publishes an API that allows clients to |
| deploy and update a locally configured gateway. |
| |
| ## Functional description |
| |
| This plugin simply tracks counters based on called URIs: |
| |
| * `GET /deployments/` - retrieve current deployment |
| * `POST /deployments/` - update deployments |
| |
| See [apidGatewayDeploy-api.yaml]() for full spec. |
| |
| ## Configuration |
| |
| #### gatewaydeploy_debounce_duration |
| Window of time during which deployment changes are gathered before sending to client. |
| Default: "bundles" |
| |
| #### gatewaydeploy_bundle_cleanup_delay |
| Duration between deleting a deployment and deleting it's bundles on disk. |
| Default: "1s" |
| |
| #### gatewaydeploy_download_connection_timeout |
| Duration before a bundle download connection terminates |
| Default: "5m" |
| |
| #### gatewaydeploy_deployment_timeout |
| Duration before bundle download marks deployment as failed (will continue download retries regardless). |
| Default: "10m" |
| |
| #### gatewaydeploy_bundle_dir |
| Relative location from local_storage_path in which to store local bundle files. |
| Default: "5m" |
| |
| (durations note, see: https://golang.org/pkg/time/#ParseDuration) |
| |
| ## Building and running standalone |
| |
| First, install prerequisites: |
| |
| glide install |
| |
| To run an apid test instance with just this plugin installed, change to the `cmd/apidGatewayDeploy` folder. |
| From here, you may create an executable with: |
| |
| go build |
| |
| Alternatively, you may run without creating an executable with: |
| |
| go run main.go |
| |
| Command line options: |
| |
| * -deployments <file path> |
| |
| If you use the `-deployments` option, the server will start using a clean database that contains only the |
| deployments contained in the file specified. |
| |
| The file should be the JSON for an array of deployments. JSON format is: |
| |
| [ |
| { |
| "id": "", |
| "scopeId": "", |
| "created": "", |
| "createdBy": "", |
| "updated": "", |
| "updatedBy": "", |
| "configuration": { |
| "key": "value" |
| }, |
| "bundleConfiguration": { |
| "key": "value" |
| }, |
| "displayName": "", |
| "uri": "" |
| } |
| ] |
| |
| Notes: |
| * id must be unique |
| * uri should point to a bundle file |
| |
| Once the process is running, you should be able to manually give the plugin's API a whirl... |
| |
| curl -i localhost:9000/deployments/ |
| curl -i -X POST localhost:9000/deployments -d '{ ... }' |
| |
| The following may be interesting env vars for configuration: |
| |
| * APID_API_PORT |
| |
| ## Running tests |
| |
| To run the tests, just run: |
| |
| go test |
| |
| To generate coverage, you may run: |
| |
| ./cover.sh |
| |
| Then open `cover.html` with your browser to see details. |