FIx table name for changes.
2 files changed
tree: 95f1a5a14d0bdb5af070427582fb9c4da89432d1
  1. .gitignore
  2. api.go
  3. bundle.go
  4. data.go
  5. init.go
  6. LICENSE
  7. listener.go
  8. pluginData.go
  9. README.md
README.md

apidGatewayDeploy

This core plugin for apid responds to 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

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.