--- /dev/null
+FROM ubuntu:14.04
+
+ARG HTTP_PROXY=${HTTP_PROXY}
+ARG HTTPS_PROXY=${HTTPS_PROXY}
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+ENV CONSUL_IP $CONSUL_IP
+ENV CONSUL_VERSION 1.0.6
+
+# Run Docker build from dkv directory.
+WORKDIR /distributed-kv-store
+
+RUN apt-get update && \
+ apt-get install -y build-essential && \
+ apt-get install -y realpath && \
+ apt-get install -y unzip && \
+ apt-get install -y git && \
+ apt-get install -y curl && \
+ apt-get install -y wget && \
+ git clone https://git.onap.org/music/distributed-kv-store
+
+
+RUN wget -qO /tmp/consul.zip "https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip" && \
+ unzip -d /bin /tmp/consul.zip && \
+ chmod 755 /bin/consul && \
+ rm /tmp/consul.zip
+
+EXPOSE 8200
+EXPOSE 8080
+
+# Change this when deployment gets merged.
+WORKDIR /distributed-kv-store/distributed-kv-store/deployment/
+ADD ./setup-dependency.sh /distributed-kv-store/distributed-kv-store/deployment/
+ADD ./docker-entrypoint.sh /distributed-kv-store/distributed-kv-store/deployment/
+
+WORKDIR /distributed-kv-store/distributed-kv-store
+RUN deployment/setup-dependency.sh
+
+VOLUME /configs
+
+ENTRYPOINT deployment/docker-entrypoint.sh
+#ENTRYPOINT /bin/bash
\ No newline at end of file
+++ /dev/null
-swagger: "2.0"
-info:
- description: "API reference for Distributed Key Value store."
- version: "1.0.0"
- title: "API reference for Distributed Key Value store"
- contact:
- email: "shashank.kumar.shankar@intel.com"
- url: "https://wiki.onap.org/display/DW/Distributed+KV+Store"
- license:
- name: "Apache 2.0"
- url: "http://www.apache.org/licenses/LICENSE-2.0.html"
-basePath: "/v1"
-schemes:
-- "http"
-paths:
- /loadconfigs:
- post:
- tags:
- - "load configuration"
- summary: "Load Key Values by reading configs into Consul"
- description: ""
- consumes:
- - "application/json"
- produces:
- - "application/json"
- parameters:
- - in: "body"
- name: "body"
- description: "Load configuration from file system to be added into Consul"
- required: true
- schema:
- $ref: "#/definitions/LoadRequest"
- responses:
- 200:
- description: "successful operation"
- schema:
- $ref: "#/definitions/LoadResponse"
- /getconfigs:
- get:
- tags:
- - "get all keys"
- summary: "Get all keys present in Consul."
- description: "Returns a list of keys present in Consul."
- produces:
- - "application/json"
- responses:
- 200:
- description: "successful operation"
- schema:
- $ref: "#/definitions/Gets"
- /getconfig/{key}:
- get:
- tags:
- - "get single key"
- summary: "Get value for specific key present in Consul."
- description: "Returns a key and value present in Consul."
- produces:
- - "application/json"
- parameters:
- - name: "key"
- in: "path"
- description: "Key used to query"
- required: true
- type: "string"
- responses:
- 200:
- description: "successful operation"
- schema:
- $ref: "#/definitions/Get"
- /deleteconfig/{key}:
- delete:
- tags:
- - "delete single key"
- summary: "Delete value for specific key present in Consul."
- description: "Deletes a specific key."
- produces:
- - "application/json"
- parameters:
- - name: "key"
- in: "path"
- description: "Key used to delete"
- required: true
- type: "string"
- responses:
- 200:
- description: "successful operation"
- schema:
- $ref: "#/definitions/Delete"
-definitions:
- LoadRequest:
- type: "object"
- properties:
- domain:
- type: "string"
- type:
- $ref: "#/definitions/Type"
- Type:
- type: "object"
- properties:
- file_path:
- type: "string"
- LoadResponse:
- type: "object"
- properties:
- response:
- type: "string"
- Gets:
- type: "object"
- properties:
- response:
- items:
- type: "string"
- Get:
- type: "object"
- properties:
- response:
- type: "string"
- Delete:
- type: "object"
- properties:
- response:
- type: "string"
--- /dev/null
+swagger: "2.0"
+info:
+ description: "API reference for Distributed Key Value store."
+ version: "1.0.0"
+ title: "API reference for Distributed Key Value store"
+ contact:
+ email: "shashank.kumar.shankar@intel.com"
+ url: "https://wiki.onap.org/pages/viewpage.action?pageId=16010913"
+ license:
+ name: "Apache 2.0"
+ url: "http://www.apache.org/licenses/LICENSE-2.0.html"
+basePath: "/v1"
+schemes:
+- "http"
+paths:
+ /register:
+ post:
+ tags:
+ - "Domain"
+ summary: "Endpoint to Register new domain"
+ description: ""
+ consumes:
+ - "application/json"
+ produces:
+ - "application/json"
+ parameters:
+ - in: "body"
+ name: "body"
+ description: "Register new domain."
+ required: true
+ schema:
+ $ref: "#/definitions/RegisterDomainPOSTRequest"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/RegisterDomainPOSTResponse"
+ /register/{token}:
+ get:
+ tags:
+ - "Domain"
+ summary: "Check if domain is registered."
+ description: "Check if domain is registered identified by token."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to query"
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/RegisterDomainGETResponse"
+ delete:
+ tags:
+ - "Domain"
+ summary: "Delete registered domain."
+ description: "Deletes a registered domain identified by token."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to delete"
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/RegisterDomainDELETEResponse"
+ /register/{token}/subdomain:
+ post:
+ tags:
+ - "Subdomain"
+ summary: "Endpoint to Register new subdomain"
+ description: ""
+ consumes:
+ - "application/json"
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to identify domain."
+ required: true
+ type: "string"
+ - in: "body"
+ name: "body"
+ description: "Register new subdomain."
+ required: true
+ schema:
+ $ref: "#/definitions/RegisterSubdomainPOSTRequest"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/RegisterSubdomainPOSTResponse"
+ /register/{token}/subdomain/{subdomain}:
+ delete:
+ tags:
+ - "Subdomain"
+ summary: "Delete registered subdomain."
+ description: "Deletes a registered subdomain identified by token and subdomain."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to delete"
+ required: true
+ type: "string"
+ - name: "subdomain"
+ in: "path"
+ description: "Subdomain used to delete"
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/RegisterSubDomainDELETEResponse"
+ /config:
+ post:
+ tags:
+ - "Config"
+ summary: "Endpoint to upload configuration."
+ description: "Endpoint to upload configuration."
+ consumes:
+ - "multipart/form-data"
+ produces:
+ - "application/json"
+ parameters:
+ - name: "configFile"
+ in: "formData"
+ description: "Config file to be uploaded."
+ required: true
+ type: "file"
+ - name: "token"
+ in: "formData"
+ description: "Token to identify domain to upload config file to."
+ required: true
+ type: "string"
+ - name: "subdomain"
+ in: "formData"
+ description: "Subdomain to identify subdomain to upload config file to."
+ required: false
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigUploadResponse"
+ /config/{token}/{filename}:
+ get:
+ tags:
+ - "Config"
+ summary: "Get config file."
+ description: "Get config file identified by token and filename."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to get config file."
+ required: true
+ type: "string"
+ - name: "filename"
+ in: "path"
+ description: "Filename used to get config file."
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigDomainDOWNLOADResponse"
+ delete:
+ tags:
+ - "Config"
+ summary: "Delete config file."
+ description: "Deletes a config file identified by token and filename."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to delete"
+ required: true
+ type: "string"
+ - name: "filename"
+ in: "path"
+ description: "Filename used to delete"
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigDomainDELETEResponse"
+ /config/{token}/{subdomain}/{filename}:
+ get:
+ tags:
+ - "Config"
+ summary: "Get config file from subdomain."
+ description: "Get config file identified by token, filename and subdomain."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to get config file."
+ required: true
+ type: "string"
+ - name: "subdomain"
+ in: "path"
+ description: "Subdomain used to get config file."
+ required: true
+ type: "string"
+ - name: "filename"
+ in: "path"
+ description: "Filename used to get config file."
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigSubDomainDOWNLOADResponse"
+ delete:
+ tags:
+ - "Config"
+ summary: "Delete config file from subdomain."
+ description: "Deletes a config file identified by token, filename and subdomain."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "token"
+ in: "path"
+ description: "Token used to delete config file."
+ required: true
+ type: "string"
+ - name: "subdomain"
+ in: "path"
+ description: "Subdomain used to delete config file."
+ required: true
+ type: "string"
+ - name: "filename"
+ in: "path"
+ description: "Filename used to delete config file."
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigSubDomainDELETEResponse"
+ /config/load:
+ post:
+ tags:
+ - "Config"
+ summary: "Load config into Consul."
+ description: "Load config into Consul upon hitting the endpoint."
+ consumes:
+ - "application/json"
+ produces:
+ - "application/json"
+ parameters:
+ - in: "body"
+ name: "body"
+ description: "Load configuration from file system to be added into Consul"
+ required: true
+ schema:
+ $ref: "#/definitions/ConfigLoadPOSTRequest"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigLoadPOSTResponse"
+ /config/load-default:
+ get:
+ tags:
+ - "Config"
+ summary: "Load default config into Consul."
+ description: "Load default config into Consul upon hitting the endpoint."
+ produces:
+ - "application/json"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConfigDefaultGETResponse"
+ /getconfigs:
+ get:
+ tags:
+ - "Consul operation"
+ summary: "Get all keys present in Consul."
+ description: "Returns a list of keys present in Consul."
+ produces:
+ - "application/json"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConsulGETAllResponse"
+ /getconfig/{key}:
+ get:
+ tags:
+ - "Consul operation"
+ summary: "Get value for specific key present in Consul."
+ description: "Returns a key and value present in Consul."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "key"
+ in: "path"
+ description: "Key used to query Consul."
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConsulGETResponse"
+ /deleteconfig/{key}:
+ delete:
+ tags:
+ - "Consul operation"
+ summary: "Delete value for specific key present in Consul."
+ description: "Deletes a specific key."
+ produces:
+ - "application/json"
+ parameters:
+ - name: "key"
+ in: "path"
+ description: "Key used to delete"
+ required: true
+ type: "string"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/ConsulDELETEResponse"
+definitions:
+ RegisterDomainPOSTRequest:
+ type: "object"
+ properties:
+ domain:
+ type: "string"
+ RegisterDomainPOSTResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ RegisterDomainGETResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ RegisterDomainDELETEResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ RegisterSubdomainPOSTRequest:
+ type: "object"
+ properties:
+ subdomain:
+ type: "string"
+ RegisterSubdomainPOSTResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ RegisterSubDomainDELETEResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigUploadResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigDomainDOWNLOADResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigDomainDELETEResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigSubDomainDOWNLOADResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigSubDomainDELETEResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigLoadPOSTRequest:
+ type: "object"
+ properties:
+ token:
+ type: "string"
+ filename:
+ type: "string"
+ subdomain:
+ type: "string"
+ ConfigLoadPOSTResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConfigDefaultGETResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConsulGETAllResponse:
+ type: "object"
+ properties:
+ response:
+ items:
+ type: "string"
+ ConsulGETResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"
+ ConsulDELETEResponse:
+ type: "object"
+ properties:
+ response:
+ type: "string"