{
   "packages":[
      {
         "packagingVersion":"3.0",
         "description":"Adobe I/O API gateway",
         "framework":false,
         "maintainer":"dunguyen@adobe.com",
         "name":"apigateway",
         "postInstallNotes":"API Gateway has been installed. You might have to stop marathon-lb app if installed due to conflicts on the ports.",
         "postUninstallNotes":"API Gateway has been uninstalled",
         "scm":"https://github.com/adobe-apiplatform/apigateway",
         "tags":[
            "api",
            "gateway",
            "server"
         ],
         "version":"1.1.0",
         "website":"https://github.com/adobe-apiplatform/apigateway",
         "selected":true,
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "apigateway-docker":"adobeapiplatform/apigateway:1.1.0"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiB7e3NlcnZpY2UuY3B1c319LAogICJtZW0iOiB7e3NlcnZpY2UubWVtfX0sCiAgImluc3RhbmNlcyI6IHt7c2VydmljZS5pbnN0YW5jZXN9fSwKICAiY29uc3RyYWludHMiOiBbCiAgICBbImhvc3RuYW1lIiwgIlVOSVFVRSJdCiAgXSwKICAiYWNjZXB0ZWRSZXNvdXJjZVJvbGVzIjogWwogICAgInNsYXZlX3B1YmxpYyIKICBdLAogICJlbnYiOiB7CiAgICAiTE9HX0xFVkVMIjogInt7YWR2YW5jZWQubG9nTGV2ZWx9fSIsCiAgICAiTUFSQVRIT05fSE9TVCI6ICJ7e2Vudmlyb25tZW50Lm1hcmF0aG9uSG9zdH19IiwKICAgICJBV1NfQUNDRVNTX0tFWV9JRCI6ICJ7e2FkdmFuY2VkLnJlbW90ZUNvbmZpZ0FXU0tleX19IiwKICAgICJBV1NfU0VDUkVUX0FDQ0VTU19LRVkiOiAie3thZHZhbmNlZC5yZW1vdGVDb25maWdBV1NTZWNyZXR9fSIsCiAgICAiUkVNT1RFX0NPTkZJRyI6ICJ7e2FkdmFuY2VkLnJlbW90ZUNvbmZpZ319IiwKICAgICJSRU1PVEVfQ09ORklHX0dFTkVSQVRFRCI6ICJ7e2FkdmFuY2VkLnJlbW90ZUNvbmZpZ0dlbmVyYXRlZH19IgogIH0sCiAgImNvbnRhaW5lciI6IHsKICAgICJ0eXBlIjogIkRPQ0tFUiIsCiAgICAiZG9ja2VyIjogewogICAgICAiaW1hZ2UiOiAie3tyZXNvdXJjZS5hc3NldHMuY29udGFpbmVyLmRvY2tlci5hcGlnYXRld2F5LWRvY2tlcn19IiwKICAgICAgIm5ldHdvcmsiOiAiSE9TVCIKICAgIH0sCiAgICAidm9sdW1lcyI6IFsKICAgICAgewogICAgICAgICJjb250YWluZXJQYXRoIjogInt7YWR2YW5jZWQudm9sdW1lQ29udGFpbmVyUGF0aH19IiwKICAgICAgICAiaG9zdFBhdGgiOiAie3thZHZhbmNlZC52b2x1bWVIb3N0UGF0aH19IiwKICAgICAgICAibW9kZSI6ICJSTyIKICAgICAgfQogICAgXQogIH0sCiAgImhlYWx0aENoZWNrcyI6IFsKICAgIHsKICAgICAgInBhdGgiOiAiL2hlYWx0aC1jaGVjayIsCiAgICAgICJwb3J0IjogODAsCiAgICAgICJwcm90b2NvbCI6ICJIVFRQIiwKICAgICAgImdyYWNlUGVyaW9kU2Vjb25kcyI6IDEyMCwKICAgICAgImludGVydmFsU2Vjb25kcyI6IDE1LAogICAgICAidGltZW91dFNlY29uZHMiOiAxMCwKICAgICAgIm1heENvbnNlY3V0aXZlRmFpbHVyZXMiOiAyCiAgICB9CiAgXSwKICAibGFiZWxzIjogewogICAgIkRDT1NfU0VSVklDRV9OQU1FIjogInt7c2VydmljZS5uYW1lfX0iLAogICAgIkRDT1NfU0VSVklDRV9TQ0hFTUUiOiAiaHR0cCIsCiAgICAiRENPU19TRVJWSUNFX1BPUlRfSU5ERVgiOiAiMCIKICB9Cn0K"
         },
         "config":{
            "properties":{
               "service":{
                  "description":"Service configuration for API Gateway",
                  "type":"object",
                  "properties":{
                     "name":{
                        "description":"Display name for the service on the DC/OS dashboard",
                        "type":"string",
                        "default":"apigateway"
                     },
                     "cpus":{
                        "description":"CPU allocation for the API Gateway instance",
                        "type":"number",
                        "default":0.5,
                        "minimum":0.1
                     },
                     "mem":{
                        "description":"Memory (MB) allocation for the API Gateway instance",
                        "type":"number",
                        "default":256.0,
                        "minimum":128.0
                     },
                     "instances":{
                        "description":"Number of API Gateway instances to deploy (one per public agent)",
                        "type":"integer",
                        "default":1
                     }
                  },
                  "required":[
                     "name",
                     "cpus",
                     "mem",
                     "instances"
                  ]
               },
               "environment":{
                  "description":"Environment configuration for API Gateway",
                  "properties":{
                     "marathonHost":{
                        "description":"Specify Marathon endpoint URL to include app name endpoints. This is used for service discovery.",
                        "type":"string",
                        "default":"http://marathon.mesos:8080"
                     }
                  }
               },
               "advanced":{
                  "description":"Advanced configuration for API Gateway service",
                  "type":"object",
                  "properties":{
                     "logLevel":{
                        "description":"Specify API Gateway log level (info or debug)",
                        "type":"string",
                        "default":"info"
                     },
                     "remoteConfigAWSKey":{
                        "description":"AWS key if using remote config with S3 source",
                        "type":"string"
                     },
                     "remoteConfigAWSSecret":{
                        "description":"AWS secret if using remote config with S3 source",
                        "type":"string"
                     },
                     "remoteConfig":{
                        "description":"Remote config sync source for all config files (s3://<path>, file://<path> or /<path>)",
                        "type":"string"
                     },
                     "remoteConfigGenerated":{
                        "description":"Remote config sync source for generated files only (s3://<path>, file://<path> or /<path>)",
                        "type":"string",
                        "default":"/var/tmp/apigateway/"
                     },
                     "volumeContainerPath":{
                        "description":"Path in container to mount for config file sync location",
                        "type":"string",
                        "default":"/var/tmp/apigateway"
                     },
                     "volumeHostPath":{
                        "description":"Path on host to mount for config file sync location",
                        "type":"string",
                        "default":"/var/tmp/apigateway"
                     }
                  },
                  "required":[
                     "logLevel"
                  ]
               }
            }
         },
         "command":null
      },
      {
         "description":"Consul service running on DC/OS",
         "framework":true,
         "maintainer":"dunguyen@adobe.com",
         "minDcosReleaseVersion":"1.8",
         "name":"consul",
         "packagingVersion":"3.0",
         "postInstallNotes":"DC/OS Consul has been successfully installed!",
         "postUninstallNotes":"DC/OS Consul service has been uninstalled.",
         "selected":true,
         "tags":[
            "service",
            "discovery",
            "configuration",
            "orchestration"
         ],
         "version":"0.7.0",
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "consul-docker":"consul:v0.7.0"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiAwLjIsCiAgIm1lbSI6IDUxMiwKICAiaW5zdGFuY2VzIjogMSwKICAiY29udGFpbmVyIjogewogICAgInR5cGUiOiAiRE9DS0VSIiwKICAgICJkb2NrZXIiOiB7CiAgICAgICJpbWFnZSI6ICJ7e3Jlc291cmNlLmFzc2V0cy5jb250YWluZXIuZG9ja2VyLmNvbnN1bC1kb2NrZXJ9fSIsCiAgICAgICJuZXR3b3JrIjogIkJSSURHRSIsCiAgICAgICJwb3J0TWFwcGluZ3MiOiBbCiAgICAgICAgewogICAgICAgICAgImNvbnRhaW5lclBvcnQiOiB7e3NlcnZpY2UuY2xpLXBvcnR9fSwKICAgICAgICAgICJob3N0UG9ydCI6IHt7c2VydmljZS5jbGktcG9ydH19LAogICAgICAgICAgInNlcnZpY2VQb3J0IjogMCwKICAgICAgICAgICJwcm90b2NvbCI6ICJ0Y3AiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IHt7c2VydmljZS5odHRwLXBvcnR9fSwKICAgICAgICAgICJob3N0UG9ydCI6IHt7c2VydmljZS5odHRwLXBvcnR9fSwKICAgICAgICAgICJzZXJ2aWNlUG9ydCI6IDAsCiAgICAgICAgICAicHJvdG9jb2wiOiAidGNwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImNvbnRhaW5lclBvcnQiOiB7e3NlcnZpY2UuZG5zLXBvcnR9fSwKICAgICAgICAgICJob3N0UG9ydCI6IHt7c2VydmljZS5kbnMtcG9ydH19LAogICAgICAgICAgInNlcnZpY2VQb3J0IjogMCwKICAgICAgICAgICJwcm90b2NvbCI6ICJ0Y3AiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiY29udGFpbmVyUG9ydCI6IHt7c2VydmljZS5sYW4tcG9ydH19LAogICAgICAgICAgImhvc3RQb3J0Ijoge3tzZXJ2aWNlLmxhbi1wb3J0fX0sCiAgICAgICAgICAic2VydmljZVBvcnQiOiAwLAogICAgICAgICAgInByb3RvY29sIjogInRjcCIKICAgICAgICB9CiAgICAgIF0KICAgIH0KICB9LAogICJoZWFsdGhDaGVja3MiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIi92MS9zdGF0dXMvbGVhZGVyIiwKICAgICAgInByb3RvY29sIjogIkhUVFAiLAogICAgICAiZ3JhY2VQZXJpb2RTZWNvbmRzIjogMzAsCiAgICAgICJpbnRlcnZhbFNlY29uZHMiOiA2MCwKICAgICAgInRpbWVvdXRTZWNvbmRzIjogMjAsCiAgICAgICJtYXhDb25zZWN1dGl2ZUZhaWx1cmVzIjogMywKICAgICAgInBvcnQiOiA4NTAwCiAgICB9CiAgXSwKICAibGFiZWxzIjogewogICAgIkRDT1NfU0VSVklDRV9OQU1FIjogInt7c2VydmljZS5uYW1lfX0iLAogICAgIkRDT1NfU0VSVklDRV9TQ0hFTUUiOiAiaHR0cCIsCiAgICAiRENPU19TRVJWSUNFX1BPUlRfSU5ERVgiOiAiMSIKICB9Cn0K"
         },
         "config":{
            "type":"object",
            "properties":{
               "service":{
                  "description":"Consul Configuration Properties",
                  "type":"object",
                  "additionalProperties":false,
                  "properties":{
                     "cli-port":{
                        "description":"CLI Port for Consul (default = 8400)",
                        "type":"integer",
                        "default":8400,
                        "minimum":0
                     },
                     "http-port":{
                        "description":"HTTP Port for Consul (default = 8500)",
                        "type":"integer",
                        "default":8500,
                        "minimum":0
                     },
                     "dns-port":{
                        "description":"DNS Port for Consul (default = 8600)",
                        "type":"integer",
                        "default":8600,
                        "minimum":0
                     },
                     "lan-port":{
                        "description":"Serf LAN Port for Consul (default = 8302)",
                        "type":"integer",
                        "default":8302,
                        "minimum":0
                     },
                     "name":{
                        "description":"The name of the Consul service.",
                        "type":"string",
                        "default":"consul"
                     }
                  },
                  "required":[
                     "cli-port",
                     "http-port",
                     "dns-port",
                     "lan-port",
                     "name"
                  ]
               }
            },
            "required":[
               "service"
            ]
         },
         "command":null
      },
      {
         "description":"Registrator service running on DC/OS",
         "framework":true,
         "maintainer":"dunguyen@adobe.com",
         "minDcosReleaseVersion":"1.8",
         "name":"registrator",
         "packagingVersion":"3.0",
         "postInstallNotes":"DC/OS Registrator has been successfully installed!",
         "postUninstallNotes":"DC/OS Registrator service has been uninstalled.",
         "preInstallNotes":"Registrator requires Consul already installed in the same DC/OS cluster.",
         "selected":true,
         "tags":[
            "service",
            "registry",
            "bridge",
            "pluggable"
         ],
         "version":"7.0",
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "registrator-docker":"gliderlabs/registrator"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiAwLjIsCiAgIm1lbSI6IDEwMjQsCiAgImluc3RhbmNlcyI6IDEsCiAgImFyZ3MiOiBbCiAgICAiLXJlc3luYyIsCiAgICAiNSIsCiAgICAiY29uc3VsOi8ve3tzZXJ2aWNlLmNvbnN1bC1sb2NhdGlvbn19Ont7c2VydmljZS5jb25zdWwtcG9ydH19IgogIF0sCiAgImNvbnRhaW5lciI6IHsKICAgICJ0eXBlIjogIkRPQ0tFUiIsCiAgICAiZG9ja2VyIjogewogICAgICAiaW1hZ2UiOiAie3tyZXNvdXJjZS5hc3NldHMuY29udGFpbmVyLmRvY2tlci5yZWdpc3RyYXRvci1kb2NrZXJ9fSIKICAgIH0sCiAgICAidm9sdW1lcyI6IFsKICAgICAgewogICAgICAgICJjb250YWluZXJQYXRoIjogIi90bXAvZG9ja2VyLnNvY2siLAogICAgICAgICJob3N0UGF0aCI6ICIvdmFyL3J1bi9kb2NrZXIuc29jayIsCiAgICAgICAgIm1vZGUiOiAiUk8iCiAgICAgIH0KICAgIF0KICB9LAogICJoZWFsdGhDaGVja3MiOiBbCiAgICB7CiAgICAgICJjb21tYW5kIjogeyAidmFsdWUiOiAiZXhpdCAwIiB9LAogICAgICAicHJvdG9jb2wiOiAiQ09NTUFORCIsCiAgICAgICJncmFjZVBlcmlvZFNlY29uZHMiOiAzMCwKICAgICAgImludGVydmFsU2Vjb25kcyI6IDYwLAogICAgICAidGltZW91dFNlY29uZHMiOiAyMCwKICAgICAgIm1heENvbnNlY3V0aXZlRmFpbHVyZXMiOiAzCiAgICB9CiAgXSwKICAibGFiZWxzIjogewogICAgIkRDT1NfU0VSVklDRV9OQU1FIjogInt7c2VydmljZS5uYW1lfX0iCiAgfQp9Cg=="
         },
         "config":{
            "type":"object",
            "properties":{
               "service":{
                  "description":"Registrator Configuration Properties",
                  "type":"object",
                  "additionalProperties":false,
                  "properties":{
                     "name":{
                        "description":"The name of the Registrator service.",
                        "type":"string",
                        "default":"registrator"
                     },
                     "consul-location":{
                        "description":"Host location of consul cluster.",
                        "type":"string",
                        "default":"consul.marathon.mesos"
                     },
                     "consul-port":{
                        "description":"Host HTTP port of consul cluster.",
                        "type":"string",
                        "default":"8500"
                     }
                  },
                  "required":[
                     "name",
                     "consul-location",
                     "consul-port"
                  ]
               }
            },
            "required":[
               "service"
            ]
         },
         "command":null
      },
      {
         "description":"OpenWhisk Controller service running on DC/OS",
         "framework":true,
         "maintainer":"dunguyen@adobe.com",
         "minDcosReleaseVersion":"1.8",
         "name":"whisk-controller",
         "packagingVersion":"3.0",
         "postInstallNotes":"DC/OS OpenWhisk controller has been successfully installed!",
         "postUninstallNotes":"DC/OS OpenWhisk controller service has been uninstalled.",
         "preInstallNotes":"OpenWhisk Controller requires Kafka, CouchDB, Consul, Registrator and APIGateway already installed in the same DC/OS cluster.",
         "selected":true,
         "tags":[
            "openwhisk",
            "controller",
            "serverless",
            "lambda"
         ],
         "version":"0.1",
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "whisk-controller":"openwhisk/controller"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiB7e3NlcnZpY2UuY3B1c319LAogICJtZW0iOiB7e3NlcnZpY2UubWVtfX0sCiAgImluc3RhbmNlcyI6IHt7c2VydmljZS5pbnN0YW5jZXN9fSwKICAiZW52IjogewoKICAgICJXSElTS19WRVJTSU9OX05BTUUiOiAibG9jYWwiLAogICAgIldISVNLX1ZFUlNJT05fREFURSI6ICIwOS8wMS8yMDE2IiwKICAgICJXSElTS19WRVJTSU9OX0JVSUxETk8iOiAibGF0ZXN0IiwKICAgICJXSElTS19MT0dTX0RJUiI6ICIvbG9ncyIsCgogICAgIlNFUlZJQ0VfQ0hFQ0tfSFRUUCI6ICIvcGluZyIsCiAgICAiU0VSVklDRV9DSEVDS19USU1FT1VUIjogIjJzIiwKICAgICJTRVJWSUNFX0NIRUNLX0lOVEVSVkFMIjogIjE1cyIsCgogICAgIkRCX1BSRUZJWCI6ICJsb2NhbF8iLAogICAgIkRCX1dISVNLX0FDVElPTlMiOiAibG9jYWxfd2hpc2tzIiwKICAgICJEQl9XSElTS19BVVRIUyI6ICJzdWJqZWN0cyIsCgogICAgIktBRktBX05VTVBBUlRJVElPTlMiOiAiMSIsCgogICAgIkRFRkFVTFRMSU1JVFNfQUNUSU9OU19JTlZPS0VTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiREVGQVVMVExJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVCI6ICI1MDAwIiwKICAgICJERUZBVUxUTElNSVRTX1RSSUdHRVJTX0ZJUkVTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiREVGQVVMVExJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVElOU1lTVEVNIjogIjUwMDAiLAogICAgIkRFRkFVTFRMSU1JVFNfQUNUSU9OU19TRVFVRU5DRV9NQVhMRU5HVEgiOiAiMjAiLAogICAgIkxJTUlUU19BQ1RJT05TX0lOVk9LRVNfUEVSSE9VUiI6ICIzNjAwMDAwIiwKICAgICJMSU1JVFNfQUNUSU9OU19JTlZPS0VTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiTElNSVRTX0FDVElPTlNfSU5WT0tFU19DT05DVVJSRU5UIjogIjUwMDAiLAogICAgIkxJTUlUU19UUklHR0VSU19GSVJFU19QRVJNSU5VVEUiOiAiNjAwMDAiLAogICAgIkxJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVElOU1lTVEVNIjogIjUwMDAiLAoKICAgICJDT01QT05FTlRfTkFNRSI6ICJjb250cm9sbGVyIiwKICAgICJQT1JUIjogInt7c2VydmljZS5wb3J0fX0iLAoKICAgICJDT05TVUxTRVJWRVJfSE9TVCI6ICJ7e2NvbnN1bC5sb2NhdGlvbn19IiwKICAgICJDT05TVUxfSE9TVF9QT1JUNCI6ICJ7e2NvbnN1bC5wb3J0fX0iLAoKICAgICJLQUZLQV9IT1NUIjogInt7a2Fma2EubG9jYXRpb259fSIsCiAgICAiS0FGS0FfSE9TVF9QT1JUIjogInt7a2Fma2EucG9ydH19IiwKCiAgICAiREJfUFJPVklERVIiOiAiQ291Y2hEQiIsCiAgICAiREJfUFJPVE9DT0wiOiAiaHR0cCIsCiAgICAiREJfUE9SVCI6ICJ7e2NvdWNoZGIucG9ydH19IiwKICAgICJEQl9IT1NUIjogInt7Y291Y2hkYi5sb2NhdGlvbn19IiwKICAgICJEQl9VU0VSTkFNRSI6ICJ7e2NvdWNoZGIudXNlcm5hbWV9fSIsCiAgICAiREJfUEFTU1dPUkQiOiAie3tjb3VjaGRiLnBhc3N3b3JkfX0iLAoKICAgICJMT0FEQkFMQU5DRVJfQUNUSVZBVElPTkNPVU5UQkVGT1JFTkVYVElOVk9LRVIiOiAiMTAiLAogICAgIlJVTlRJTUVTX01BTklGRVNUIjogIntcInB5dGhvblwiOiBbe1wia2luZFwiOiBcInB5dGhvblwifV0sIFwic3dpZnRcIjogW3tcImRlcHJlY2F0ZWRcIjogdHJ1ZSwgXCJraW5kXCI6IFwic3dpZnRcIn0sIHtcImRlZmF1bHRcIjogdHJ1ZSwgXCJraW5kXCI6IFwic3dpZnQ6M1wifV0sIFwiamF2YVwiOiBbe1wicmVxdWlyZU1haW5cIjogdHJ1ZSwgXCJraW5kXCI6IFwiamF2YVwiLCBcImF0dGFjaGVkXCI6IHtcImF0dGFjaG1lbnRUeXBlXCI6IFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCIsIFwiYXR0YWNobWVudE5hbWVcIjogXCJqYXJmaWxlXCJ9LCBcInNlbnRpbmVsbGVkTG9nc1wiOiBmYWxzZX1dLCBcIm5vZGVqc1wiOiBbe1wia2luZFwiOiBcIm5vZGVqc1wifSwge1wiZGVmYXVsdFwiOiB0cnVlLCBcImtpbmRcIjogXCJub2RlanM6NlwifV19IiwKICAgICJMT0FEQkFMQU5DRVJfSE9TVCI6ICJ7e2FwaWdhdGV3YXkubG9jYXRpb259fSIsCiAgICAiTE9BREJBTEFOQ0VSX0hPU1RfUE9SVCI6ICJ7e2FwaWdhdGV3YXkucG9ydH19IgogIH0sCiAgImNvbnRhaW5lciI6IHsKICAgICJ0eXBlIjogIkRPQ0tFUiIsCiAgICAiZG9ja2VyIjogewogICAgICAiaW1hZ2UiOiAie3tyZXNvdXJjZS5hc3NldHMuY29udGFpbmVyLmRvY2tlci53aGlzay1jb250cm9sbGVyfX0iLAogICAgICAibmV0d29yayI6ICJCUklER0UiLAogICAgICAicG9ydE1hcHBpbmdzIjogWwogICAgICAgIHsKICAgICAgICAgICJjb250YWluZXJQb3J0IjogODg4OCwKICAgICAgICAgICJob3N0UG9ydCI6IHt7c2VydmljZS5wb3J0fX0sCiAgICAgICAgICAic2VydmljZVBvcnQiOiAwLAogICAgICAgICAgInByb3RvY29sIjogInRjcCIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICAidm9sdW1lcyI6IFsKICAgICAgewogICAgICAgICJjb250YWluZXJQYXRoIjogIi9sb2dzIiwKICAgICAgICAiaG9zdFBhdGgiOiAifi90bXAvb3BlbndoaXNrL2NvbnRyb2xsZXIvbG9ncyIsCiAgICAgICAgIm1vZGUiOiAiUlciCiAgICAgIH0KICAgIF0KICB9LAogICJoZWFsdGhDaGVja3MiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIi9waW5nIiwKICAgICAgInByb3RvY29sIjogIkhUVFAiLAogICAgICAiZ3JhY2VQZXJpb2RTZWNvbmRzIjogMzAsCiAgICAgICJpbnRlcnZhbFNlY29uZHMiOiAxNSwKICAgICAgInRpbWVvdXRTZWNvbmRzIjogMiwKICAgICAgIm1heENvbnNlY3V0aXZlRmFpbHVyZXMiOiAzCiAgICB9CiAgXSwKICAibGFiZWxzIjogewogICAgIkRDT1NfU0VSVklDRV9OQU1FIjogInt7c2VydmljZS5uYW1lfX0iCiAgfQp9Cg=="
         },
         "config":{
            "type":"object",
            "properties":{
               "service":{
                  "description":"OpenWhisk controller Configuration Properties",
                  "type":"object",
                  "properties":{
                     "port":{
                        "description":"Host port for OpenWhisk controller (default = 8888).",
                        "type":"integer",
                        "default":8888,
                        "minimum":0
                     },
                     "cpus":{
                        "description":"CPU shares to allocate to each OpenWhisk controller instance.",
                        "type":"number",
                        "minimum":0.1,
                        "default":0.5
                     },
                     "mem":{
                        "description":"Memory (MB) to allocate to each OpenWhisk controller instance.",
                        "type":"number",
                        "minimum":1024.0,
                        "default":2048.0
                     },
                     "instances":{
                        "description":"Number of OpenWhisk controller instances to run.",
                        "type":"integer",
                        "minimum":0,
                        "default":1
                     },
                     "name":{
                        "description":"The name of the OpenWhisk Controller service instance.",
                        "type":"string",
                        "default":"whisk-controller"
                     }
                  },
                  "required":[
                     "port",
                     "cpus",
                     "name",
                     "instances",
                     "mem"
                  ]
               },
               "consul":{
                  "description":"Linked Consul properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of consul cluster.",
                        "type":"string",
                        "default":"consul.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of consul cluster (default = 8500).",
                        "type":"string",
                        "default":"8500"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               },
               "couchdb":{
                  "description":"Linked CouchDB properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of CouchDB cluster.",
                        "type":"string",
                        "default":"whisk-couchdb.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of CouchDB cluster (default = 5984).",
                        "type":"string",
                        "default":"5984"
                     },
                     "username":{
                        "description":"CouchDB username.",
                        "type":"string",
                        "default":"whisk_admin"
                     },
                     "password":{
                        "description":"CouchDB password.",
                        "type":"string",
                        "default":"some_passw0rd"
                     }
                  },
                  "required":[
                     "location",
                     "port",
                     "username",
                     "password"
                  ]
               },
               "kafka":{
                  "description":"Linked Kafka properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of Kafka cluster.",
                        "type":"string",
                        "default":"broker-0.kafka.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of Kafka cluster (default = 9092).",
                        "type":"string",
                        "default":"9092"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               },
               "apigateway":{
                  "description":"Linked API Gateway properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of API Gateway cluster.",
                        "type":"string",
                        "default":"apigateway.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of API Gateway cluster (default = 80).",
                        "type":"string",
                        "default":"80"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               }
            }
         },
         "command":null
      },
      {
         "description":"OpenWhisk CouchDB service running on DC/OS",
         "framework":true,
         "maintainer":"dunguyen@adobe.com",
         "minDcosReleaseVersion":"1.8",
         "name":"whisk-couchdb",
         "packagingVersion":"3.0",
         "postInstallNotes":"DC/OS OpenWhisk CouchDB has been successfully installed!",
         "postUninstallNotes":"DC/OS OpenWhisk CouchDB service has been uninstalled.",
         "selected":true,
         "tags":[
            "database",
            "nosql"
         ],
         "version":"1.6",
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "whisk-couchdb-docker":"adobeapiplatform/whisk-couchdb"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiB7e3NlcnZpY2UuY3B1c319LAogICJtZW0iOiB7e3NlcnZpY2UubWVtfX0sCiAgImluc3RhbmNlcyI6IHt7c2VydmljZS5pbnN0YW5jZXN9fSwKICAiZW52IjogewogICAgIkNPVUNIREJfVVNFUiI6ICJ7e3NlcnZpY2UuY291Y2hkYi11c2VyfX0iLAogICAgIkNPVUNIREJfUEFTU1dPUkQiOiAie3tzZXJ2aWNlLmNvdWNoZGItcGFzc3dvcmR9fSIKICB9LAogICJjb250YWluZXIiOiB7CiAgICAidHlwZSI6ICJET0NLRVIiLAogICAgImRvY2tlciI6IHsKICAgICAgImltYWdlIjogInt7cmVzb3VyY2UuYXNzZXRzLmNvbnRhaW5lci5kb2NrZXIud2hpc2stY291Y2hkYi1kb2NrZXJ9fSIsCiAgICAgICJuZXR3b3JrIjogIkJSSURHRSIsCiAgICAgICJwb3J0TWFwcGluZ3MiOiBbCiAgICAgICAgewogICAgICAgICAgImNvbnRhaW5lclBvcnQiOiB7e3NlcnZpY2UuY291Y2hkYi1wb3J0fX0sCiAgICAgICAgICAiaG9zdFBvcnQiOiB7e3NlcnZpY2UuY291Y2hkYi1wb3J0fX0sCiAgICAgICAgICAic2VydmljZVBvcnQiOiAwLAogICAgICAgICAgInByb3RvY29sIjogInRjcCIKICAgICAgICB9CiAgICAgIF0KICAgIH0sCiAgICAidm9sdW1lcyI6IFsKICAgICAgewogICAgICAgICJjb250YWluZXJQYXRoIjogIi91c3IvbG9jYWwvdmFyL2xpYi9jb3VjaGRiIiwKICAgICAgICAiaG9zdFBhdGgiOiAifi9vcGVud2hpc2svY291Y2hkYiIsCiAgICAgICAgIm1vZGUiOiAiUlciCiAgICAgIH0KICAgIF0KICB9LAogICJoZWFsdGhDaGVja3MiOiBbCiAgICB7CiAgICAgICJwYXRoIjogIi9fc3RhdHMiLAogICAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAgICJncmFjZVBlcmlvZFNlY29uZHMiOiAzMCwKICAgICAgImludGVydmFsU2Vjb25kcyI6IDYwLAogICAgICAidGltZW91dFNlY29uZHMiOiAyMCwKICAgICAgIm1heENvbnNlY3V0aXZlRmFpbHVyZXMiOiAzCiAgICB9CiAgXSwKICAibGFiZWxzIjogewogICAgIkRDT1NfU0VSVklDRV9OQU1FIjogInt7c2VydmljZS5uYW1lfX0iCiAgfQp9Cg=="
         },
         "config":{
            "type":"object",
            "properties":{
               "service":{
                  "description":"OpenWhisk CouchDB Configuration Properties",
                  "type":"object",
                  "additionalProperties":false,
                  "properties":{
                     "couchdb-user":{
                        "description":"CouchDB username.",
                        "type":"string",
                        "default":"whisk_admin"
                     },
                     "couchdb-password":{
                        "description":"CouchDB password.",
                        "type":"string",
                        "default":"some_passw0rd"
                     },
                     "couchdb-port":{
                        "description":"Host port for CouchDB (default = 5984)",
                        "type":"integer",
                        "default":5984,
                        "minimum":0
                     },
                     "cpus":{
                        "description":"CPU shares to allocate to each CouchDB instance.",
                        "type":"number",
                        "minimum":0.1,
                        "default":0.5
                     },
                     "mem":{
                        "description":"Memory (MB) to allocate to each CouchDB instance.",
                        "type":"number",
                        "minimum":512.0,
                        "default":1024.0
                     },
                     "instances":{
                        "description":"Number of CouchDB instances to run.",
                        "type":"integer",
                        "minimum":0,
                        "default":1
                     },
                     "name":{
                        "description":"The name of the CouchDB service instance.",
                        "type":"string",
                        "default":"whisk-couchdb"
                     }
                  },
                  "required":[
                     "couchdb-user",
                     "couchdb-password",
                     "cpus",
                     "name",
                     "instances",
                     "mem"
                  ]
               }
            },
            "required":[
               "service"
            ]
         },
         "command":null
      },
      {
         "description":"OpenWhisk Invoker service running on DC/OS",
         "framework":true,
         "maintainer":"dunguyen@adobe.com",
         "minDcosReleaseVersion":"1.8",
         "name":"whisk-invoker",
         "packagingVersion":"3.0",
         "postInstallNotes":"DC/OS OpenWhisk invoker has been successfully installed!",
         "postUninstallNotes":"DC/OS OpenWhisk invoker service has been uninstalled.",
         "preInstallNotes":"OpenWhisk Invoker requires Kafka, CouchDB, Consul, Registrator and APIGateway already installed in the same DC/OS cluster.",
         "selected":true,
         "tags":[
            "openwhisk",
            "invoker",
            "serverless",
            "lambda"
         ],
         "version":"0.1",
         "releaseVersion":0,
         "resource":{
            "images":{
               "icon-small":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-small.png?raw=true",
               "icon-medium":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-medium.png?raw=true",
               "icon-large":"https://github.com/dcos/dcos-ui/blob/master/plugins/services/src/img/icon-service-default-large.png?raw=true"
            },
            "assets":{
               "container":{
                  "docker":{
                     "whisk-invoker":"openwhisk/invoker"
                  }
               }
            }
         },
         "marathon":{
            "v2AppMustacheTemplate":"ewogICJpZCI6ICIve3tzZXJ2aWNlLm5hbWV9fSIsCiAgImNwdXMiOiB7e3NlcnZpY2UuY3B1c319LAogICJtZW0iOiB7e3NlcnZpY2UubWVtfX0sCiAgImluc3RhbmNlcyI6IHt7c2VydmljZS5pbnN0YW5jZXN9fSwKICAiY29uc3RyYWludHMiOiBbCiAgICBbImhvc3RuYW1lIiwgIlVOSVFVRSJdCiAgXSwKICAiZW52IjogewoKICAgICJXSElTS19WRVJTSU9OX05BTUUiOiAibG9jYWwiLAogICAgIldISVNLX1ZFUlNJT05fREFURSI6ICIwOS8wMS8yMDE2IiwKICAgICJXSElTS19WRVJTSU9OX0JVSUxETk8iOiAibGF0ZXN0IiwKICAgICJXSElTS19MT0dTX0RJUiI6ICIvbG9ncyIsCgogICAgIlNFUlZJQ0VfQ0hFQ0tfSFRUUCI6ICIvcGluZyIsCiAgICAiU0VSVklDRV9DSEVDS19USU1FT1VUIjogIjJzIiwKICAgICJTRVJWSUNFX0NIRUNLX0lOVEVSVkFMIjogIjE1cyIsCgogICAgIkRCX1BSRUZJWCI6ICJsb2NhbF8iLAogICAgIkRCX1dISVNLX0FDVElPTlMiOiAibG9jYWxfd2hpc2tzIiwKICAgICJEQl9XSElTS19BVVRIUyI6ICJzdWJqZWN0cyIsCgogICAgIktBRktBX05VTVBBUlRJVElPTlMiOiAiMSIsCgogICAgIkRFRkFVTFRMSU1JVFNfQUNUSU9OU19JTlZPS0VTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiREVGQVVMVExJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVCI6ICI1MDAwIiwKICAgICJERUZBVUxUTElNSVRTX1RSSUdHRVJTX0ZJUkVTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiREVGQVVMVExJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVElOU1lTVEVNIjogIjUwMDAiLAogICAgIkRFRkFVTFRMSU1JVFNfQUNUSU9OU19TRVFVRU5DRV9NQVhMRU5HVEgiOiAiMjAiLAogICAgIkxJTUlUU19BQ1RJT05TX0lOVk9LRVNfUEVSSE9VUiI6ICIzNjAwMDAwIiwKICAgICJMSU1JVFNfQUNUSU9OU19JTlZPS0VTX1BFUk1JTlVURSI6ICI2MDAwMCIsCiAgICAiTElNSVRTX0FDVElPTlNfSU5WT0tFU19DT05DVVJSRU5UIjogIjUwMDAiLAogICAgIkxJTUlUU19UUklHR0VSU19GSVJFU19QRVJNSU5VVEUiOiAiNjAwMDAiLAogICAgIkxJTUlUU19BQ1RJT05TX0lOVk9LRVNfQ09OQ1VSUkVOVElOU1lTVEVNIjogIjUwMDAiLAoKICAgICJDT01QT05FTlRfTkFNRSI6ICJpbnZva2VyIiwKICAgICJQT1JUIjogInt7c2VydmljZS5wb3J0fX0iLAoKICAgICJDT05TVUxTRVJWRVJfSE9TVCI6ICJ7e2NvbnN1bC5sb2NhdGlvbn19IiwKICAgICJDT05TVUxfSE9TVF9QT1JUNCI6ICJ7e2NvbnN1bC5wb3J0fX0iLAoKICAgICJLQUZLQV9IT1NUIjogInt7a2Fma2EubG9jYXRpb259fSIsCiAgICAiS0FGS0FfSE9TVF9QT1JUIjogInt7a2Fma2EucG9ydH19IiwKCiAgICAiREJfUFJPVklERVIiOiAiQ291Y2hEQiIsCiAgICAiREJfUFJPVE9DT0wiOiAiaHR0cCIsCiAgICAiREJfUE9SVCI6ICJ7e2NvdWNoZGIucG9ydH19IiwKICAgICJEQl9IT1NUIjogInt7Y291Y2hkYi5sb2NhdGlvbn19IiwKICAgICJEQl9VU0VSTkFNRSI6ICJ7e2NvdWNoZGIudXNlcm5hbWV9fSIsCiAgICAiREJfUEFTU1dPUkQiOiAie3tjb3VjaGRiLnBhc3N3b3JkfX0iLAoKICAgICJFREdFX0hPU1QiOiAie3thcGlnYXRld2F5LmxvY2F0aW9ufX0iLAogICAgIldISVNLX0FQSV9IT1NUX05BTUUiOiAie3thcGlnYXRld2F5LmxvY2F0aW9ufX0iLAogICAgIkVER0VfSE9TVF9BUElQT1JUIjogInt7YXBpZ2F0ZXdheS5wb3J0fX0iLAoKICAgICJSVU5USU1FU19NQU5JRkVTVCI6ICJ7XCJweXRob25cIjogW3tcImtpbmRcIjogXCJweXRob25cIn1dLCBcInN3aWZ0XCI6IFt7XCJkZXByZWNhdGVkXCI6IHRydWUsIFwia2luZFwiOiBcInN3aWZ0XCJ9LCB7XCJkZWZhdWx0XCI6IHRydWUsIFwia2luZFwiOiBcInN3aWZ0OjNcIn1dLCBcImphdmFcIjogW3tcInJlcXVpcmVNYWluXCI6IHRydWUsIFwia2luZFwiOiBcImphdmFcIiwgXCJhdHRhY2hlZFwiOiB7XCJhdHRhY2htZW50VHlwZVwiOiBcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiLCBcImF0dGFjaG1lbnROYW1lXCI6IFwiamFyZmlsZVwifSwgXCJzZW50aW5lbGxlZExvZ3NcIjogZmFsc2V9XSwgXCJub2RlanNcIjogW3tcImtpbmRcIjogXCJub2RlanNcIn0sIHtcImRlZmF1bHRcIjogdHJ1ZSwgXCJraW5kXCI6IFwibm9kZWpzOjZcIn1dfSIsCgogICAgIkRPQ0tFUl9SRUdJU1RSWSI6ICIiLAogICAgIkRPQ0tFUl9JTUFHRV9QUkVGSVgiOiAie3tzZXJ2aWNlLmRvY2tlcl9pbWFnZV9wcmVmaXh9fSIsCiAgICAiSU5WT0tFUl9DT05UQUlORVJfTkVUV09SSyI6ICJicmlkZ2UiCiAgfSwKICAiY29udGFpbmVyIjogewogICAgInR5cGUiOiAiRE9DS0VSIiwKICAgICJkb2NrZXIiOiB7CiAgICAgICJpbWFnZSI6ICJ7e3Jlc291cmNlLmFzc2V0cy5jb250YWluZXIuZG9ja2VyLndoaXNrLWludm9rZXJ9fSIsCiAgICAgICJuZXR3b3JrIjogIkJSSURHRSIsCiAgICAgICJwb3J0TWFwcGluZ3MiOiBbCiAgICAgICAgewogICAgICAgICAgImNvbnRhaW5lclBvcnQiOiA4MDg1LAogICAgICAgICAgImhvc3RQb3J0Ijoge3tzZXJ2aWNlLnBvcnR9fSwKICAgICAgICAgICJzZXJ2aWNlUG9ydCI6IDAsCiAgICAgICAgICAicHJvdG9jb2wiOiAidGNwIgogICAgICAgIH0KICAgICAgXQogICAgfSwKICAgICJ2b2x1bWVzIjogWwogICAgICB7CiAgICAgICAgImNvbnRhaW5lclBhdGgiOiAiL2xvZ3MiLAogICAgICAgICJob3N0UGF0aCI6ICJ+L3RtcC9vcGVud2hpc2svaW52b2tlci9sb2dzIiwKICAgICAgICAibW9kZSI6ICJSVyIKICAgICAgfSwKICAgICAgewogICAgICAgICJjb250YWluZXJQYXRoIjogIi92YXIvcnVuL2RvY2tlci5zb2NrIiwKICAgICAgICAiaG9zdFBhdGgiOiAiL3Zhci9ydW4vZG9ja2VyLnNvY2siLAogICAgICAgICJtb2RlIjogIlJXIgogICAgICB9LAogICAgICB7CiAgICAgICAgImNvbnRhaW5lclBhdGgiOiAiL2NvbnRhaW5lcnMiLAogICAgICAgICJob3N0UGF0aCI6ICIvdmFyL2xpYi9kb2NrZXIvY29udGFpbmVycyIsCiAgICAgICAgIm1vZGUiOiAiUlciCiAgICAgIH0KICAgIF0KICB9LAogICJjbWQiOiAiL2Jpbi9zaCAtYyBcIi9pbnZva2VyL2Jpbi9pbnZva2VyIGBob3N0bmFtZSB8IHRyIC1kYyAnMC05J2AgPj4gL2Rldi9zdGRlcnJcIiIsCiAgImhlYWx0aENoZWNrcyI6IFsKICAgIHsKICAgICAgInBhdGgiOiAiL3BpbmciLAogICAgICAicHJvdG9jb2wiOiAiSFRUUCIsCiAgICAgICJncmFjZVBlcmlvZFNlY29uZHMiOiAzMCwKICAgICAgImludGVydmFsU2Vjb25kcyI6IDE1LAogICAgICAidGltZW91dFNlY29uZHMiOiAyLAogICAgICAibWF4Q29uc2VjdXRpdmVGYWlsdXJlcyI6IDMKICAgIH0KICBdLAogICJsYWJlbHMiOiB7CiAgICAiRENPU19TRVJWSUNFX05BTUUiOiAie3tzZXJ2aWNlLm5hbWV9fSIKICB9Cn0K"
         },
         "config":{
            "type":"object",
            "properties":{
               "service":{
                  "description":"OpenWhisk Invoker Configuration Properties",
                  "type":"object",
                  "properties":{
                     "port":{
                        "description":"Host port for OpenWhisk invoker (default = 8085)",
                        "type":"integer",
                        "default":8085,
                        "minimum":0
                     },
                     "cpus":{
                        "description":"CPU shares to allocate to each OpenWhisk invoker instance.",
                        "type":"number",
                        "minimum":0.1,
                        "default":0.5
                     },
                     "mem":{
                        "description":"Memory (MB) to allocate to each OpenWhisk invoker instance.",
                        "type":"number",
                        "minimum":1024.0,
                        "default":2048.0
                     },
                     "instances":{
                        "description":"Number of OpenWhisk invoker instances to run.",
                        "type":"integer",
                        "minimum":0,
                        "default":1
                     },
                     "name":{
                        "description":"The name of the OpenWhisk Invoker service instance.",
                        "type":"string",
                        "default":"whisk-invoker"
                     },
                     "docker_image_prefix":{
                        "description":"The value to be set as DOCKER_IMAGE_PREFIX in environment variables.",
                        "type":"string",
                        "default":"openwhisk"
                     }
                  },
                  "required":[
                     "port",
                     "cpus",
                     "name",
                     "instances",
                     "mem",
                     "docker_image_prefix"
                  ]
               },
               "consul":{
                  "description":"Linked Consul properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of consul cluster.",
                        "type":"string",
                        "default":"consul.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of consul cluster.",
                        "type":"string",
                        "default":"8500"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               },
               "couchdb":{
                  "description":"Linked CouchDB properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of CouchDB cluster.",
                        "type":"string",
                        "default":"whisk-couchdb.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of CouchDB cluster (default = 5984).",
                        "type":"string",
                        "default":"5984"
                     },
                     "username":{
                        "description":"CouchDB username.",
                        "type":"string",
                        "default":"whisk_admin"
                     },
                     "password":{
                        "description":"CouchDB password.",
                        "type":"string",
                        "default":"some_passw0rd"
                     }
                  },
                  "required":[
                     "location",
                     "port",
                     "username",
                     "password"
                  ]
               },
               "kafka":{
                  "description":"Linked Kafka properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of Kafka cluster.",
                        "type":"string",
                        "default":"broker-0.kafka.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of Kafka cluster.",
                        "type":"string",
                        "default":"9092"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               },
               "apigateway":{
                  "description":"Linked API Gateway properties",
                  "type":"object",
                  "properties":{
                     "location":{
                        "description":"Host location of API Gateway cluster.",
                        "type":"string",
                        "default":"apigateway.marathon.mesos"
                     },
                     "port":{
                        "description":"Host HTTP port of API Gateway cluster.",
                        "type":"string",
                        "default":"80"
                     }
                  },
                  "required":[
                     "location",
                     "port"
                  ]
               }
            }
         },
         "command":null
      }
   ]
}