blob: 9691d3ab9d004bb313259ea0627098e526cdc147 [file] [log] [blame] [view]
# 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.