Merge "Helm Chart Standardization of uui"
authorMandeep Khinda <Mandeep.Khinda@amdocs.com>
Wed, 28 Mar 2018 19:41:07 +0000 (19:41 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 28 Mar 2018 19:41:07 +0000 (19:41 +0000)
150 files changed:
docs/MSB-OOM-MSC.png [deleted file]
docs/oom_developer_guide.rst
kubernetes/aaf/Chart.yaml
kubernetes/aaf/charts/aaf-cs/.helmignore [new file with mode: 0644]
kubernetes/aaf/charts/aaf-cs/Chart.yaml [new file with mode: 0644]
kubernetes/aaf/charts/aaf-cs/resources/config/aaf-data/identities.dat [moved from kubernetes/aaf/resources/config/aaf-data/identities.dat with 100% similarity]
kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml [new file with mode: 0644]
kubernetes/aaf/charts/aaf-cs/templates/secret.yaml [moved from kubernetes/aaf/templates/aaf-secret.yaml with 86% similarity]
kubernetes/aaf/charts/aaf-cs/templates/service.yaml [new file with mode: 0644]
kubernetes/aaf/charts/aaf-cs/values.yaml [new file with mode: 0644]
kubernetes/aaf/requirements.yaml [new file with mode: 0644]
kubernetes/aaf/templates/aaf-cs-deployment.yaml [deleted file]
kubernetes/aaf/templates/aaf-deployment.yaml [deleted file]
kubernetes/aaf/templates/all-services.yaml [deleted file]
kubernetes/aaf/templates/configmap.yaml [moved from kubernetes/aaf/templates/aaf-configmap.yaml with 86% similarity]
kubernetes/aaf/templates/deployment.yaml [new file with mode: 0644]
kubernetes/aaf/templates/service.yaml [new file with mode: 0644]
kubernetes/aaf/values.yaml
kubernetes/aai/charts/champ/Chart.yaml [new file with mode: 0644]
kubernetes/aai/charts/champ/requirements.yaml [new file with mode: 0644]
kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json [new file with mode: 0644]
kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore [new file with mode: 0644]
kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties [new file with mode: 0644]
kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml [new file with mode: 0644]
kubernetes/aai/charts/champ/templates/configmap.yaml [moved from kubernetes/esr/templates/esr-filebeat-configmap.yaml with 58% similarity]
kubernetes/aai/charts/champ/templates/deployment.yaml [new file with mode: 0644]
kubernetes/aai/charts/champ/templates/secrets.yaml [new file with mode: 0644]
kubernetes/aai/charts/champ/templates/service.yaml [new file with mode: 0644]
kubernetes/aai/charts/champ/values.yaml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/.helmignore [new file with mode: 0644]
kubernetes/aai/charts/gizmo/Chart.yaml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/README.txt [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12 [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/auth/crud_policy.json [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12 [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/crud-api.properties [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/crud-beans.xml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/log/filebeat/filebeat.yml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/log/logback.xml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v11.json [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v12.json [new file with mode: 0644]
kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v13.json [new file with mode: 0644]
kubernetes/aai/charts/gizmo/templates/NOTES.txt [new file with mode: 0644]
kubernetes/aai/charts/gizmo/templates/configmap.yaml [moved from kubernetes/sdc/templates/sdc-log-configmap.yaml with 51% similarity]
kubernetes/aai/charts/gizmo/templates/deployment.yaml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/templates/secrets.yaml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/templates/service.yaml [new file with mode: 0644]
kubernetes/aai/charts/gizmo/values.yaml [new file with mode: 0644]
kubernetes/clamp/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/bulkload/clds-create-db-objects.sql
kubernetes/clamp/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/bulkload/clds-stored-procedures.sql
kubernetes/clamp/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/drop/clds-drop-db-objects.sql
kubernetes/common/dgbuilder/resources/scripts/customSettings.js
kubernetes/esr/.helmignore [new file with mode: 0644]
kubernetes/esr/Chart.yaml
kubernetes/esr/charts/esr-gui/.helmignore [new file with mode: 0644]
kubernetes/esr/charts/esr-gui/Chart.yaml [new file with mode: 0644]
kubernetes/esr/charts/esr-gui/templates/NOTES.txt [new file with mode: 0644]
kubernetes/esr/charts/esr-gui/templates/deployment.yaml [new file with mode: 0644]
kubernetes/esr/charts/esr-gui/templates/service.yaml [new file with mode: 0644]
kubernetes/esr/charts/esr-gui/values.yaml [new file with mode: 0644]
kubernetes/esr/requirements.yaml [new file with mode: 0644]
kubernetes/esr/templates/NOTES.txt [new file with mode: 0644]
kubernetes/esr/templates/configmap.yaml [moved from kubernetes/esr/templates/esr-server-log-configmap.yaml with 67% similarity]
kubernetes/esr/templates/deployment.yaml [new file with mode: 0644]
kubernetes/esr/templates/esr-esrgui-deployment.yaml [deleted file]
kubernetes/esr/templates/esr-esrserver-deployment.yaml [deleted file]
kubernetes/esr/templates/service.yaml [moved from kubernetes/esr/templates/all-services.yaml with 53% similarity]
kubernetes/esr/values.yaml
kubernetes/helm/starters/onap-app/templates/deployment.yaml
kubernetes/msb/charts/msb-consul/templates/service.yaml
kubernetes/msb/charts/msb-discovery/templates/service.yaml
kubernetes/msb/charts/msb-eag/templates/service.yaml
kubernetes/msb/charts/msb-iag/templates/service.yaml
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/create_mso_db-tests.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/create_mso_db-default.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/create_mso_db-demo-dns.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/create_mso_db-demo-vfw.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mariadb_engine_7.7.3-ee.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mysql_create_camunda_admin.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Catalog-schema.sql
kubernetes/mso/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Requests-schema.sql
kubernetes/onap/requirements.yaml
kubernetes/portal/resources/config/mariadb/oom_updates.sql
kubernetes/sdc/.helmignore [new file with mode: 0644]
kubernetes/sdc/Chart.yaml
kubernetes/sdc/charts/sdc-be/.helmignore [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/Chart.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/resources/config/logging/logback.xml [moved from kubernetes/sdc/resources/config/log/be/logback.xml with 100% similarity]
kubernetes/sdc/charts/sdc-be/templates/NOTES.txt [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/templates/configmap.yaml [moved from kubernetes/sdc/templates/sdc-fe-configmap.yaml with 77% similarity]
kubernetes/sdc/charts/sdc-be/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/templates/job.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/templates/service.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-be/values.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/.helmignore [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/Chart.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/NOTES.txt [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/job.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/pv.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/templates/service.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-cs/values.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/.helmignore [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/Chart.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/NOTES.txt [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/job.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/pv.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/pvc.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/templates/service.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-es/values.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/.helmignore [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/Chart.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/resources/config/logging/logback.xml [moved from kubernetes/sdc/resources/config/log/fe/logback.xml with 97% similarity]
kubernetes/sdc/charts/sdc-fe/templates/NOTES.txt [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/templates/configmap.yaml [moved from kubernetes/sdc/templates/sdc-environments-configmap.yaml with 76% similarity]
kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/templates/service.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-fe/values.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/.helmignore [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/Chart.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/templates/NOTES.txt [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/templates/service.yaml [new file with mode: 0644]
kubernetes/sdc/charts/sdc-kb/values.yaml [new file with mode: 0644]
kubernetes/sdc/requirements.yaml [new file with mode: 0644]
kubernetes/sdc/resources/config/environments/AUTO.json
kubernetes/sdc/resources/config/environments/Template.json [deleted file]
kubernetes/sdc/resources/config/sdc-fe/FE_2_setup_configuration.rb [deleted file]
kubernetes/sdc/templates/all-services.yaml [deleted file]
kubernetes/sdc/templates/configmap.yaml [new file with mode: 0644]
kubernetes/sdc/templates/sdc-be.yaml [deleted file]
kubernetes/sdc/templates/sdc-cs.yaml [deleted file]
kubernetes/sdc/templates/sdc-es.yaml [deleted file]
kubernetes/sdc/templates/sdc-fe.yaml [deleted file]
kubernetes/sdc/templates/sdc-kb.yaml [deleted file]
kubernetes/sdc/templates/sdc-pv-pvc.yaml [deleted file]
kubernetes/sdc/values.yaml
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/automated-tests/create_mso_db-tests.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/default/create_mso_db-default.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-dns/create_mso_db-demo-dns.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/bulkload-files/demo-vfw/create_mso_db-demo-vfw.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mariadb_engine_7.7.3-ee.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/camunda/mysql_create_camunda_admin.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Catalog-schema.sql
kubernetes/so/charts/mariadb/resources/config/mariadb/docker-entrypoint-initdb.d/db-sql-scripts/main-schemas/MySQL-Requests-schema.sql
kubernetes/vid/charts/mariadb/resources/config/lf_config/vid-pre-init.sql

diff --git a/docs/MSB-OOM-MSC.png b/docs/MSB-OOM-MSC.png
deleted file mode 100644 (file)
index 7c1e076..0000000
Binary files a/docs/MSB-OOM-MSC.png and /dev/null differ
index 1c18044..c9aa629 100644 (file)
@@ -4,6 +4,7 @@
 
 .. Links
 .. _Helm: https://docs.helm.sh/
+.. _Helm Charts: https://github.com/kubernetes/charts
 .. _Kubernetes: https://Kubernetes.io/
 .. _Docker: https://www.docker.com/
 .. _Nexus: https://nexus.onap.org/#welcome
@@ -14,6 +15,7 @@
 .. _Kubernetes Storage Class: https://Kubernetes.io/docs/concepts/storage/storage-classes/
 .. _Assigning Pods to Nodes: https://Kubernetes.io/docs/concepts/configuration/assign-pod-node/
 
+
 .. _developer-guide-label:
 
 OOM Developer Guide
@@ -64,16 +66,336 @@ ONAP on a single laptop computer.
 
 Helm Charts
 ===========
+A Helm chart is a collection of files that describe a related set of Kubernetes
+resources. A simple chart might be used to deploy something simple, like a
+memcached pod, while a complex chart might contain many micro-service arranged
+in a hierarchy as found in the `aai` ONAP component.
 
-Standard Chart Format
----------------------
+Charts are created as files laid out in a particular directory tree, then they
+can be packaged into versioned archives to be deployed. There is a public
+archive of `Helm Charts`_ on GitHub that includes many technologies applicable
+to ONAP. Some of these charts have been used in ONAP and all of the ONAP charts
+have been created following the guidelines provided.
 
-Helm charts are available in the open-source community for a wide variety of
-common software components which are used in ONAP and where possible.
+The top level of the ONAP charts is shown below:
 
+.. graphviz::
 
-Chart Hierarchy
----------------
+   digraph onap_top_chart {
+      rankdir="LR";
+      {
+        node      [shape=folder]
+        oValues   [label="values.yaml"]
+        oChart    [label="Chart.yaml"]
+        dev       [label="dev.yaml"]
+        prod      [label="prod.yaml"]
+        crb       [label="clusterrolebindings.yaml"]
+        secrets   [label="secrets.yaml"]
+      }
+      {
+        node      [style=dashed]
+        vCom      [label="component"]
+      }
+
+      onap         -> oValues
+      onap         -> oChart
+      onap         -> templates
+      onap         -> resources
+      oValues      -> vCom
+      resources    -> environments
+      environments -> dev
+      environments -> prod
+      templates    -> crb
+      templates    -> secrets
+   }
+
+Within the `values.yaml` file at the `onap` level, one will find a set of
+boolean values that control which of the ONAP components get deployed as shown
+below:
+
+.. code-block:: yaml
+
+  aaf: # Application Authorization Framework
+    enabled: false
+  <...>
+  so: # Service Orchestrator
+    enabled: true
+
+By setting these flags a custom deployment can be created and used during
+deployment by using the `-f` Helm option as follows::
+
+  > helm install local/onap -name development -f dev.yaml
+
+Note that there are one or more example deployment files in the
+`onap/resources/environments/` directory. It is best practice to create a unique
+deployment file for each environment used to ensure consistent behaviour.
+
+To aid in the long term supportability of ONAP, a set of common charts have
+been created (and will be expanded in subsequent releases of ONAP) that can be
+used by any of the ONAP components by including the common component in its
+`requirements.yaml` file. The common components are arranged as follows:
+
+.. graphviz::
+
+   digraph onap_common_chart {
+      rankdir="LR";
+      {
+         node      [shape=folder]
+         mValues   [label="values.yaml"]
+         ccValues  [label="values.yaml"]
+         comValues [label="values.yaml"]
+         comChart  [label="Chart.yaml"]
+         ccChart   [label="Chart.yaml"]
+         mChart    [label="Chart.yaml"]
+
+         mReq      [label="requirements.yaml"]
+         mService  [label="service.yaml"]
+         mMap      [label="configmap.yaml"]
+         ccName    [label="_name.tpl"]
+         ccNS      [label="_namespace.tpl"]
+      }
+      {
+         cCom       [label="common"]
+         mTemp      [label="templates"]
+         ccTemp     [label="templates"]
+      }
+      {
+         more       [label="...",style=dashed]
+      }
+
+      common -> comValues
+      common -> comChart
+      common -> cCom
+      common -> mysql
+      common -> more
+
+      cCom   -> ccChart
+      cCom   -> ccValues
+      cCom   -> ccTemp
+      ccTemp -> ccName
+      ccTemp -> ccNS
+
+      mysql  -> mValues
+      mysql  -> mChart
+      mysql  -> mReq
+      mysql  -> mTemp
+      mTemp  -> mService
+      mTemp  -> mMap
+   }
+
+The common section of charts consists of a set of templates that assist with
+parameter substitution (`_name.tpl` and `_namespace.tpl`) and a set of charts
+for components used throughout ONAP. Initially `mysql` is in the common area but
+this will expand to include other databases like `mariadb-galera`, `postgres`,
+and `cassandra`. Other candidates for common components include `redis` and
+`kafka`.  When the common components are used by other charts they are
+instantiated each time. In subsequent ONAP releases some of the common
+components could be a setup as services that are used by multiple ONAP
+components thus minimizing the deployment and operational costs.
+
+All of the ONAP components have charts that follow the pattern shown below:
+
+.. graphviz::
+
+   digraph onap_component_chart {
+      rankdir="LR";
+      {
+         node      [shape=folder]
+         cValues   [label="values.yaml"]
+         cChart    [label="Chart.yaml"]
+         cService  [label="service.yaml"]
+         cMap      [label="configmap.yaml"]
+         cFiles    [label="config file(s)"]
+      }
+      {
+         cCharts   [label="charts"]
+         cTemp     [label="templates"]
+         cRes      [label="resources"]
+
+      }
+      {
+         sCom       [label="component",style=dashed]
+      }
+
+      component -> cValues
+      component -> cChart
+      component -> cCharts
+      component -> cTemp
+      component -> cRes
+      cTemp     -> cService
+      cTemp     -> cMap
+      cRes      -> config
+      config    -> cFiles
+      cCharts   -> sCom
+   }
+
+Note that the component charts may include a hierarchy of components and in
+themselves can be quite complex.
+
+Configuration of the components varies somewhat from component to component but
+generally follows the pattern of one or more `configmap.yaml` files which can
+directly provide configuration to the containers in addition to processing
+configuration files stored in the `config` directory.  It is the responsibility
+of each ONAP component team to update these configuration files when changes
+are made to the project containers that impact configuration.
+
+The following section describes how the hierarchical ONAP configuration system is
+key to management of such a large system.  
+
+Configuration Management
+========================
+
+ONAP is a large system composed of many components - each of which are complex
+systems in themselves - that needs to be deployed in a number of different
+ways.  For example, within a single operator's network there may be R&D
+deployments under active development, pre-production versions undergoing system
+testing and production systems that are operating live networks.  Each of these
+deployments will differ in significant ways, such as the version of the
+software images deployed.  In addition, there may be a number of application
+specific configuration differences, such as operating system environment
+variables.  The following describes how the Helm configuration management
+system is used within the OOM project to manage both ONAP infrastructure
+configuration as well as ONAP components configuration.
+
+One of the artifacts that OOM/Kubernetes uses to deploy ONAP components is the
+deployment specification, yet another yaml file.  Within these deployment specs
+are a number of parameters as shown in the following mariadb example:
+
+.. code-block:: yaml
+
+  apiVersion: extensions/v1beta1
+  kind: Deployment
+  metadata:
+    name: mariadb
+  spec:
+     <...>
+    template:
+      <...>
+      spec:
+        hostname: mariadb
+        containers:
+        - args:
+          image: nexus3.onap.org:10001/mariadb:10.1.11
+          name: "mariadb"
+          env:
+            - name: MYSQL_ROOT_PASSWORD
+              value: password
+            - name: MARIADB_MAJOR
+              value: "10.1"
+          <...>
+        imagePullSecrets:
+        - name: onap-docker-registry-key
+
+Note that within the deployment specification, one of the container arguments
+is the key/value pair image: nexus3.onap.org:10001/mariadb:10.1.11 which
+specifies the version of the mariadb software to deploy.  Although the
+deployment specifications greatly simplify deployment, maintenance of the
+deployment specifications themselves become problematic as software versions
+change over time or as different versions are required for different
+deployments.  For example, if the R&D team needs to deploy a newer version of
+mariadb than what is currently used in the production environment, they would
+need to clone the deployment specification and change this value.  Fortunately,
+this problem has been solved with the templating capabilities of Helm.
+
+The following example shows how the deployment specifications are modified to
+incorporate Helm templates such that key/value pairs can be defined outside of
+the deployment specifications and passed during instantiation of the component.
+
+.. code-block:: yaml
+
+  apiVersion: extensions/v1beta1
+  kind: Deployment
+  metadata:
+    name: mariadb
+    namespace: "{{ .Values.nsPrefix }}-mso"
+  spec:
+    <...>
+    template:
+      <...>
+      spec:
+        hostname: mariadb
+        containers:
+        - args:
+          image: {{ .Values.image.mariadb }}
+          imagePullPolicy: {{ .Values.pullPolicy }}
+          name: "mariadb"
+          env:
+            - name: MYSQL_ROOT_PASSWORD
+              value: password
+            - name: MARIADB_MAJOR
+              value: "10.1"
+        <...>
+        imagePullSecrets:
+        - name: "{{ .Values.nsPrefix }}-docker-registry-key"apiVersion: extensions/v1beta1
+  kind: Deployment
+  metadata:
+    name: mariadb
+    namespace: "{{ .Values.nsPrefix }}-mso"
+  spec:
+    <...>
+    template:
+      <...>
+      spec:
+        hostname: mariadb
+        containers:
+        - args:
+          image: {{ .Values.image.mariadb }}
+          imagePullPolicy: {{ .Values.pullPolicy }}
+          name: "mariadb"
+          env:
+            - name: MYSQL_ROOT_PASSWORD
+              value: password
+            - name: MARIADB_MAJOR
+              value: "10.1"
+        <...>
+        imagePullSecrets:
+        - name: "{{ .Values.nsPrefix }}-docker-registry-key"
+
+This version of the deployment specification has gone through the process of
+templating values that are likely to change between deployments. Note that the
+image is now specified as: image: {{ .Values.image.mariadb }} instead of a
+string used previously.  During the deployment phase, Helm (actually the Helm
+sub-component Tiller) substitutes the {{ .. }} entries with a variable defined
+in a values.yaml file.  The content of this file is as follows:
+
+.. code-block:: yaml
+
+  nsPrefix: onap
+  pullPolicy: IfNotPresent
+  image:
+    readiness: oomk8s/readiness-check:1.0.0
+    mso: nexus3.onap.org:10001/openecomp/mso:1.0-STAGING-latest
+    mariadb: nexus3.onap.org:10001/mariadb:10.1.11
+
+Within the values.yaml file there is an image section with the key/value pair
+mariadb: nexus3.onap.org:10001/mariadb:10.1.11 which is the same value used in
+the non-templated version.  Once all of the substitutions are complete, the
+resulting deployment specification ready to be used by Kubernetes.
+
+Also note that in this example, the namespace key/value pair is specified in
+the values.yaml file.  This key/value pair will be global across the entire
+ONAP deployment and is therefore a prime example of where configuration
+hierarchy can be very useful.
+
+When creating a deployment template consider the use of default values if
+appropriate.  Helm templating has built in support for DEFAULT values, here is
+an example:
+
+.. code-block:: yaml
+
+  imagePullSecrets:
+  - name: "{{ .Values.nsPrefix | default "onap" }}-docker-registry-key"
+
+The pipeline operator ("|") used here hints at that power of Helm templates in
+that much like an operating system command line the pipeline operator allow
+over 60 Helm functions to be embedded directly into the template (note that the
+Helm template language is a superset of the Go template language).  These
+functions include simple string operations like upper and more complex flow
+control operations like if/else.
+
+
+ONAP Application Configuration
+------------------------------
 
 Dependency Management
 ---------------------
@@ -177,17 +499,32 @@ Nodes
 ~~~~~
 OOM works with both physical and virtual worker machines.
 
-* Virtual Machine Deployments - If ONAP is to be deployed onto a set of virtual machines, the creation of the VMs is outside of the scope of OOM and could be done in many ways, such as
+* Virtual Machine Deployments - If ONAP is to be deployed onto a set of virtual
+  machines, the creation of the VMs is outside of the scope of OOM and could be
+  done in many ways, such as
 
-  * manually, for example by a user using the OpenStack Horizon dashboard or AWS EC2, or
-  * automatically, for example with the use of a OpenStack Heat Orchestration Template which builds an ONAP stack, Azure ARM template, AWS CloudFormation Template, or
-  * orchestrated, for example with Cloudify creating the VMs from a TOSCA template and controlling their life cycle for the life of the ONAP deployment.
+  * manually, for example by a user using the OpenStack Horizon dashboard or
+    AWS EC2, or
+  * automatically, for example with the use of a OpenStack Heat Orchestration
+    Template which builds an ONAP stack, Azure ARM template, AWS CloudFormation
+    Template, or
+  * orchestrated, for example with Cloudify creating the VMs from a TOSCA
+    template and controlling their life cycle for the life of the ONAP
+    deployment.
 
-* Physical Machine Deployments - If ONAP is to be deployed onto physical machines there are several options but the recommendation is to use Rancher along with Helm to associate hosts with a Kubernetes cluster.
+* Physical Machine Deployments - If ONAP is to be deployed onto physical
+  machines there are several options but the recommendation is to use Rancher
+  along with Helm to associate hosts with a Kubernetes cluster.
 
 Pods
 ~~~~
-A group of containers with shared storage and networking can be grouped together into a Kubernetes pod.  All of the containers within a pod are co-located and co-scheduled so they operate as a single unit.  Within ONAP Amsterdam release, pods are mapped one-to-one to docker containers although this may change in the future.  As explained in the Services section below the use of Pods within each ONAP component is abstracted from other ONAP components.
+A group of containers with shared storage and networking can be grouped
+together into a Kubernetes pod.  All of the containers within a pod are
+co-located and co-scheduled so they operate as a single unit.  Within ONAP
+Amsterdam release, pods are mapped one-to-one to docker containers although
+this may change in the future.  As explained in the Services section below the
+use of Pods within each ONAP component is abstracted from other ONAP
+components.
 
 Services
 ~~~~~~~~
@@ -328,10 +665,10 @@ machines).  For example:
   nodeSelector:
     failure-domain.beta.Kubernetes.io/region: {{ .Values.location }}
 
-- "location: West" is specified in the values.yaml file used to deploy
-  one DCAE cluster and  "location: East" is specified in a second values.yaml
+- "location: West" is specified in the `values.yaml` file used to deploy
+  one DCAE cluster and  "location: East" is specified in a second `values.yaml`
   file (see OOM Configuration Management for more information about
-  configuration files like the values.yamlfile).
+  configuration files like the `values.yaml` file).
 
 Node affinity can also be used to achieve geographic redundancy if pods are
 assigned to multiple failure domains. For more information refer to `Assigning
@@ -461,166 +798,142 @@ the database components of each of the projects and the same technique can be
 used for all persistent state information.
 
 
-Configuration Management
-========================
 
-ONAP is a large system composed of many components - each of which are complex
-systems in themselves - that needs to be deployed in a number of different
-ways.  For example, within a single operator's network there may be R&D
-deployments under active development, pre-production versions undergoing system
-testing and production systems that are operating live networks.  Each of these
-deployments will differ in significant ways, such as the version of the
-software images deployed.  In addition, there may be a number of application
-specific configuration differences, such as operating system environment
-variables.  The following describes how the Helm configuration management
-system is used within the OOM project to manage both ONAP infrastructure
-configuration as well as ONAP components configuration.
+Environment Files
+~~~~~~~~~~~~~~~~~
 
-One of the artifacts that OOM/Kubernetes uses to deploy ONAP components is the
-deployment specification, yet another yaml file.  Within these deployment specs
-are a number of parameters as shown in the following mariadb example:
+MSB Integration
+===============
 
-.. code-block:: yaml
+The \ `Microservices Bus
+Project <https://wiki.onap.org/pages/viewpage.action?pageId=3246982>`__ provides
+facilities to integrate micro-services into ONAP and therefore needs to
+integrate into OOM - primarily through Consul which is the backend of
+MSB service discovery. The following is a brief description of how this
+integration will be done:
 
-  apiVersion: extensions/v1beta1
-  kind: Deployment
-  metadata:
-    name: mariadb
-  spec:
-     <...>
-    template:
-      <...>
-      spec:
-        hostname: mariadb
-        containers:
-        - args:
-          image: nexus3.onap.org:10001/mariadb:10.1.11
-          name: "mariadb"
-          env:
-            - name: MYSQL_ROOT_PASSWORD
-              value: password
-            - name: MARIADB_MAJOR
-              value: "10.1"
-          <...>
-        imagePullSecrets:
-        - name: onap-docker-registry-key
+A registrator to push the service endpoint info to MSB service
+discovery. 
 
-Note that within the deployment specification, one of the container arguments
-is the key/value pair image: nexus3.onap.org:10001/mariadb:10.1.11 which
-specifies the version of the mariadb software to deploy.  Although the
-deployment specifications greatly simplify deployment, maintenance of the
-deployment specifications themselves become problematic as software versions
-change over time or as different versions are required for different
-deployments.  For example, if the R&D team needs to deploy a newer version of
-mariadb than what is currently used in the production environment, they would
-need to clone the deployment specification and change this value.  Fortunately,
-this problem has been solved with the templating capabilities of Helm.
+-  The needed service endpoint info is put into the kubernetes yaml file
+   as annotation, including service name, Protocol,version, visual
+   range,LB method, IP, Port,etc.
 
-The following example shows how the deployment specifications are modified to
-incorporate Helm templates such that key/value pairs can be defined outside of
-the deployment specifications and passed during instantiation of the component.
+-  OOM deploy/start/restart/scale in/scale out/upgrade ONAP components
+
+-  Registrator watch the kubernetes event
+
+-  When an ONAP component instance has been started/destroyed by OOM,
+   Registrator get the notification from kubernetes
+
+-  Registrator parse the service endpoint info from annotation and
+   register/update/unregister it to MSB service discovery
+
+-  MSB API Gateway uses the service endpoint info for service routing
+   and load balancing.
+
+Details of the registration service API can be found at \ `Microservice
+Bus API
+Documentation <https://wiki.onap.org/display/DW/Microservice+Bus+API+Documentation>`__.
+
+ONAP Component Registration to MSB
+----------------------------------
+The charts of all ONAP components intending to register against MSB must have
+an annotation in their service(s) template.  A `sdc` example follows:
 
 .. code-block:: yaml
 
-  apiVersion: extensions/v1beta1
-  kind: Deployment
-  metadata:
-    name: mariadb
-    namespace: "{{ .Values.nsPrefix }}-mso"
-  spec:
-    <...>
-    template:
-      <...>
-      spec:
-        hostname: mariadb
-        containers:
-        - args:
-          image: {{ .Values.image.mariadb }}
-          imagePullPolicy: {{ .Values.pullPolicy }}
-          name: "mariadb"
-          env:
-            - name: MYSQL_ROOT_PASSWORD
-              value: password
-            - name: MARIADB_MAJOR
-              value: "10.1"
-        <...>
-        imagePullSecrets:
-        - name: "{{ .Values.nsPrefix }}-docker-registry-key"apiVersion: extensions/v1beta1
-  kind: Deployment
+  apiVersion: v1
+  kind: Service
   metadata:
-    name: mariadb
-    namespace: "{{ .Values.nsPrefix }}-mso"
-  spec:
-    <...>
-    template:
-      <...>
-      spec:
-        hostname: mariadb
-        containers:
-        - args:
-          image: {{ .Values.image.mariadb }}
-          imagePullPolicy: {{ .Values.pullPolicy }}
-          name: "mariadb"
-          env:
-            - name: MYSQL_ROOT_PASSWORD
-              value: password
-            - name: MARIADB_MAJOR
-              value: "10.1"
-        <...>
-        imagePullSecrets:
-        - name: "{{ .Values.nsPrefix }}-docker-registry-key"
+    labels:
+      app: sdc-be
+    name: sdc-be
+    namespace: "{{ .Values.nsPrefix }}"
+    annotations:
+      msb.onap.org/service-info: '[
+        {
+            "serviceName": "sdc",
+            "version": "v1",
+            "url": "/sdc/v1",
+            "protocol": "REST",
+            "port": "8080",
+            "visualRange":"1"
+        },
+        {
+            "serviceName": "sdc-deprecated",
+            "version": "v1",
+            "url": "/sdc/v1",
+            "protocol": "REST",
+            "port": "8080",
+            "visualRange":"1",
+            "path":"/sdc/v1"
+        }
+        ]'
+  ...
 
-This version of the deployment specification has gone through the process of
-templating values that are likely to change between deployments. Note that the
-image is now specified as: image: {{ .Values.image.mariadb }} instead of a
-string used previously.  During the deployment phase, Helm (actually the Helm
-sub-component Tiller) substitutes the {{ .. }} entries with a variable defined
-in a values.yaml file.  The content of this file is as follows:
 
-.. code-block:: yaml
+MSB Integration with OOM
+------------------------
+A preliminary view of the OOM-MSB integration is as follows:
 
-  nsPrefix: onap
-  pullPolicy: IfNotPresent
-  image:
-    readiness: oomk8s/readiness-check:1.0.0
-    mso: nexus3.onap.org:10001/openecomp/mso:1.0-STAGING-latest
-    mariadb: nexus3.onap.org:10001/mariadb:10.1.11
+.. figure:: MSB-OOM-Diagram.png
 
-Within the values.yaml file there is an image section with the key/value pair
-mariadb: nexus3.onap.org:10001/mariadb:10.1.11 which is the same value used in
-the non-templated version.  Once all of the substitutions are complete, the
-resulting deployment specification ready to be used by Kubernetes.
+A message sequence chart of the registration process:
 
-Also note that in this example, the namespace key/value pair is specified in
-the values.yaml file.  This key/value pair will be global across the entire
-ONAP deployment and is therefore a prime example of where configuration
-hierarchy can be very useful.
+.. uml::
 
-When creating a deployment template consider the use of default values if
-appropriate.  Helm templating has built in support for DEFAULT values, here is
-an example:
+  participant "OOM" as oom
+  participant "ONAP Component" as onap
+  participant "Service Discovery" as sd
+  participant "External API Gateway" as eagw
+  participant "Router (Internal API Gateway)" as iagw
 
-.. code-block:: yaml
+  box "MSB" #LightBlue
+    participant sd
+    participant eagw
+    participant iagw
+  end box
 
-  imagePullSecrets:
-  - name: "{{ .Values.nsPrefix | default "onap" }}-docker-registry-key"
+  == Deploy Servcie ==
 
-The pipeline operator ("|") used here hints at that power of Helm templates in
-that much like an operating system command line the pipeline operator allow
-over 60 Helm functions to be embedded directly into the template (note that the
-Helm template language is a superset of the Go template language).  These
-functions include simple string operations like upper and more complex flow
-control operations like if/else.
+  oom -> onap: Deploy
+  oom -> sd:   Register service endpoints
+  sd -> eagw:  Services exposed to external system
+  sd -> iagw:  Services for internal use
 
+  == Component Life-cycle Management ==
 
-ONAP Application Configuration
-------------------------------
+  oom -> onap: Start/Stop/Scale/Migrate/Upgrade
+  oom -> sd:   Update service info
+  sd -> eagw:  Update service info
+  sd -> iagw:  Update service info
 
-Environment Files
-~~~~~~~~~~~~~~~~~
+  == Service Health Check ==
+
+  sd -> onap: Check the health of service
+  sd -> eagw: Update service status
+  sd -> iagw: Update service status
+
+
+MSB Deployment Instructions
+---------------------------
+MSB is helm installable ONAP component which is often automatically deployed.
+To install it individually enter::
+
+  > helm install <repo-name>/msb
+
+.. note::
+  TBD: Vaidate if the following procedure is still required.
+
+Please note that Kubernetes authentication token must be set at
+*kubernetes/kube2msb/values.yaml* so the kube2msb registrator can get the
+access to watch the kubernetes events and get service annotation by
+Kubernetes APIs. The token can be found in the kubectl configuration file
+*~/.kube/config*
+
+More details can be found here `MSB installation <http://onap.readthedocs.io/en/latest/submodules/msb/apigateway.git/docs/platform/installation.html>`__.
 
-MSB Integration
-===============
 .. MISC
 .. ====
 .. Note that although OOM uses Kubernetes facilities to minimize the effort
index 24cb7fd..438835d 100644 (file)
@@ -13,6 +13,6 @@
 # limitations under the License.
 
 apiVersion: v1
-description: A Helm chart for Kubernetes
+description: ONAP Application Authorization Framework
 name: aaf
-version: 1.1.0
+version: 2.0.0
diff --git a/kubernetes/aaf/charts/aaf-cs/.helmignore b/kubernetes/aaf/charts/aaf-cs/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/aaf/charts/aaf-cs/Chart.yaml b/kubernetes/aaf/charts/aaf-cs/Chart.yaml
new file mode 100644 (file)
index 0000000..a0f05c4
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: ONAP AAF cassandra
+name: aaf-cs
+version: 2.0.0
diff --git a/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml b/kubernetes/aaf/charts/aaf-cs/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..80b99b2
--- /dev/null
@@ -0,0 +1,75 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app: {{ include "common.name" . }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+      name: {{ .Release.Name }}
+    spec:
+      hostname: {{ include "common.name" . }}
+      containers:
+      - args:
+        image: "{{ .Values.repository | default .Values.global.repository }}/{{ .Values.image }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}
+        volumeMounts:
+        - mountPath: /data
+          name: aaf-cs-data
+        # disable liveness probe when breakpoints set in debugger
+        # so K8s doesn't restart unresponsive container
+        {{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+        {{ end -}}
+        readinessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+        resources:
+{{ toYaml .Values.resources | indent 12 }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+      {{- end -}}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+      {{- end }}
+
+      volumes:
+        - name: aaf-cs-data
+          secret:
+            secretName: {{ include "common.fullname" . }}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableAafAafCs }}
 apiVersion: v1
 kind: Secret
 metadata:
-  name: aaf-cs-data-secret
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
 type: Opaque
 data:
 {{ (.Files.Glob "resources/config/aaf-cs-data/*").AsSecrets | indent 2 }}
-#{{ end }}
diff --git a/kubernetes/aaf/charts/aaf-cs/templates/service.yaml b/kubernetes/aaf/charts/aaf-cs/templates/service.yaml
new file mode 100644 (file)
index 0000000..facf3ce
--- /dev/null
@@ -0,0 +1,60 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.externalPort }}
+      #Example internal target port if required
+      #targetPort: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+      name: {{ .Values.service.name }}2
+    - port: {{ .Values.service.externalPort3 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
+      name: {{ .Values.service.name }}3
+    - port: {{ .Values.service.externalPort4 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort4 }}
+      name: {{ .Values.service.name }}4
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      targetPort: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.name }}2
+    - port: {{ .Values.service.externalPort3 }}
+      targetPort: {{ .Values.service.internalPort3 }}
+      name: {{ .Values.service.name }}3
+    - port: {{ .Values.service.externalPort4 }}
+      targetPort: {{ .Values.service.internalPort4 }}
+      name: {{ .Values.service.name }}4
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
+  clusterIP: None
diff --git a/kubernetes/aaf/charts/aaf-cs/values.yaml b/kubernetes/aaf/charts/aaf-cs/values.yaml
new file mode 100644 (file)
index 0000000..ea5445f
--- /dev/null
@@ -0,0 +1,94 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  
+# If mountPath is over NFS (e.g. /dockerdata-nfs is NFS mounted between the nodes), uncomment following lines.
+#  persistence:
+#    mountPath: /dockerdata
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: library/cassandra:2.1.17
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# application configuration
+config: {}
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: ClusterIP
+  name: aaf-cs
+  #targetPort
+  internalPort: 7000
+  #port
+  externalPort: 7000
+  
+  internalPort2: 7001
+  externalPort2: 7001
+  internalPort3: 9042
+  externalPort3: 9042
+  internalPort4: 9160
+  externalPort4: 9160
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/aaf/requirements.yaml b/kubernetes/aaf/requirements.yaml
new file mode 100644 (file)
index 0000000..fb4321d
--- /dev/null
@@ -0,0 +1,7 @@
+dependencies:
+  - name: common
+    version: ~2.0.0
+    # local reference to common chart, as it is
+    # a part of this chart's package and will not
+    # be published independently to a repo (at this point)
+    repository: '@local'
diff --git a/kubernetes/aaf/templates/aaf-cs-deployment.yaml b/kubernetes/aaf/templates/aaf-cs-deployment.yaml
deleted file mode 100644 (file)
index 7f8cdb6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableAafAafCs }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: aaf-cs
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  replicas: {{ .Values.aafcsReplicas }}
-  selector:
-    matchLabels:
-      app: aaf-cs
-  template:
-    metadata:
-      labels:
-        app: aaf-cs
-      name: aaf-cs
-    spec:
-      hostname: aaf-cs
-      containers:
-      - args:
-        image: {{ .Values.image.csImage }}:{{ .Values.image.csVersion }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: "aaf-cs"
-        volumeMounts:
-        - mountPath: /data
-          name: aaf-cs-data
-        readinessProbe:
-          tcpSocket:
-            port: 7000
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      volumes:
-        - name: aaf-cs-data
-          secret:
-            secretName: aaf-cs-data-secret
-      imagePullSecrets:
-      - name: {{ .Values.nsPrefix }}-docker-registry-key
-#{{ end }}
diff --git a/kubernetes/aaf/templates/aaf-deployment.yaml b/kubernetes/aaf/templates/aaf-deployment.yaml
deleted file mode 100644 (file)
index 0341344..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableAafAaf }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: aaf
-  name: aaf
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  replicas: {{ .Values.aafReplicas }}
-  selector:
-    matchLabels:
-      app: aaf
-  template:
-    metadata:
-      labels:
-        app: aaf
-      name: aaf
-    spec:
-      initContainers:
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - aaf-cs
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: aaf-readiness
-      containers:
-      - env:
-        - name: CASSANDRA_CLUSTER
-          value: cassandra_container
-        image: {{ .Values.image.aafImage }}:{{ .Values.image.aafVersion }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /data
-          name: aaf-data
-        name: aaf
-        readinessProbe:
-          tcpSocket:
-            port: 8101
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      volumes:
-        - name: aaf-data
-          configMap:
-            name: aaf-data-configmap
-      imagePullSecrets:
-      - name: {{ .Values.nsPrefix }}-docker-registry-key
-#{{ end }}
diff --git a/kubernetes/aaf/templates/all-services.yaml b/kubernetes/aaf/templates/all-services.yaml
deleted file mode 100644 (file)
index 5ccbd25..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableAafAafCs }}
-apiVersion: v1
-kind: Service
-metadata:
-  name: aaf-cs
-  namespace: "{{ .Values.nsPrefix }}"
-  labels:
-    app: aaf-cs
-spec:
-  ports:
-  - name: aaf-cs-port-7000
-    port: 7000
-  - name: aaf-cs-port-7001
-    port: 7001
-  - name: aaf-cs-port-9042
-    port: 9042
-  - name: aaf-cs-port-9160
-    port: 9160
-  selector:
-    app: aaf-cs
-  clusterIP: None
-#{{ end }}
-#{{ if not .Values.disableAafAaf }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: aaf-authz-service
-  namespace: "{{ .Values.nsPrefix }}"
-  labels:
-    app: aaf-authz-service
-spec:
-  ports:
-  - name: aaf-authz-service
-    port: 8101
-    nodePort: {{ .Values.nodePortPrefix }}99
-  selector:
-    app: clamp
-  type: NodePort
-#{{ end }}
\ No newline at end of file
similarity index 86%
rename from kubernetes/aaf/templates/aaf-configmap.yaml
rename to kubernetes/aaf/templates/configmap.yaml
index f89ccec..c7cf9ae 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableAafAaf }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: aaf-data-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
 data:
 {{ (.Files.Glob "resources/config/aaf-data/*").AsConfig | indent 2 }}
-#{{ end }}
diff --git a/kubernetes/aaf/templates/deployment.yaml b/kubernetes/aaf/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..03506b5
--- /dev/null
@@ -0,0 +1,91 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app: {{ include "common.name" . }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+      name: {{ include "common.fullname" . }}
+    spec:
+      initContainers:
+      - command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - aaf-cs
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-readiness
+      containers:
+      - env:
+        - name: CASSANDRA_CLUSTER
+          value: cassandra_container
+        image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        volumeMounts:
+        - mountPath: /data
+          name: aaf-data
+        name: {{ include "common.name" . }}
+        # disable liveness probe when breakpoints set in debugger
+        # so K8s doesn't restart unresponsive container
+        {{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+        {{ end -}}
+        readinessProbe:
+          tcpSocket:
+            port: {{ .Values.service.internalPort }}
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.readiness.periodSeconds }}
+        resources:
+{{ toYaml .Values.resources | indent 12 }}
+      {{- if .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+      {{- end -}}
+      {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+      {{- end }}
+
+      volumes:
+        - name: aaf-data
+          configMap:
+            name: {{ include "common.fullname" . }}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/aaf/templates/service.yaml b/kubernetes/aaf/templates/service.yaml
new file mode 100644 (file)
index 0000000..3f6e1f0
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.externalPort }}
+      #Example internal target port if required
+      #targetPort: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
+  type: {{ .Values.service.type }}
index 088adfe..4f9c1c6 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-nsPrefix: onap
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repository: nexus3.onap.org:10001
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  
+# If mountPath is over NFS (e.g. /dockerdata-nfs is NFS mounted between the nodes), uncomment following lines.
+#  persistence:
+#    mountPath: /dockerdata
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/aaf/authz-service:latest
 pullPolicy: Always
-nodePortPrefix: 302
-aafcsReplicas: 1
-aafReplicas: 1
-image:
-  readiness: oomk8s/readiness-check:1.1.0
-  aafImage: nexus3.onap.org:10001/onap/aaf/authz-service
-  aafVersion: latest
-  csImage: nexus3.onap.org:10001/library/cassandra
-  csVersion: 2.1.17
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# application configuration
+config: {}
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: NodePort
+  name: aaf-authz
+  #targetPort
+  internalPort: 8101
+  #port
+  externalPort: 8101
+  nodePort: 99
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/aai/charts/champ/Chart.yaml b/kubernetes/aai/charts/champ/Chart.yaml
new file mode 100644 (file)
index 0000000..a4ee888
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+description: Champ microservice
+name: champ
+version: 2.0.0
diff --git a/kubernetes/aai/charts/champ/requirements.yaml b/kubernetes/aai/charts/champ/requirements.yaml
new file mode 100644 (file)
index 0000000..9552dfd
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dependencies:
+  - name: common
+    version: ~2.0.0
+    # local reference to common chart, as it is
+    # a part of this chart's package and will not
+    # be published independently to a repo (at this point)
+    repository: '@local'
diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/champ_policy.json
new file mode 100644 (file)
index 0000000..ee04a71
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "roles": [
+               {
+                       "name": "admin",
+                       "functions": [
+                               {
+                                       "name": "search", "methods": [ { "name": "GET" },{ "name": "DELETE" }, { "name": "PUT" }, { "name": "POST" } ]
+                               }
+                       ],
+
+                       "users": [
+                               {
+                                       "username": "CN=ONAP, OU=ONAP, O=ONAP, L=Ottawa, ST=Ontario, C=CA"
+                               }
+                       ]
+               }
+       ]
+}
+
diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore
new file mode 100644 (file)
index 0000000..9eec841
Binary files /dev/null and b/kubernetes/aai/charts/champ/resources/config/appconfig/auth/tomcat_keystore differ
diff --git a/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties b/kubernetes/aai/charts/champ/resources/config/appconfig/champ-api.properties
new file mode 100644 (file)
index 0000000..3b90c55
--- /dev/null
@@ -0,0 +1,6 @@
+keyName=aai-uuid
+sourceOfTruthName=source-of-truth
+createdTsName=aai-created-ts
+lastModTsName=aai-last-mod-ts
+collectionPropertiesKey=properties
+
diff --git a/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml b/kubernetes/aai/charts/champ/resources/config/dynamic/conf/champ-beans.xml
new file mode 100644 (file)
index 0000000..cdf3aad
--- /dev/null
@@ -0,0 +1,62 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns:util="http://www.springframework.org/schema/util"
+xsi:schemaLocation="
+       http://www.springframework.org/schema/beans
+       http://www.springframework.org/schema/beans/spring-beans.xsd
+       http://www.springframework.org/schema/util
+       http://www.springframework.org/schema/util/spring-util.xsd
+       ">
+
+    <!-- Event publisher to pass to the Champ library for logging raw graph
+         events (Kafka implementation). -->
+    <bean id="champEventPublisher" class="org.onap.aai.event.client.KafkaEventPublisher" >
+        <constructor-arg name="hosts" value="global-kafka.{{.Release.Namespace}}:9092" />
+        <constructor-arg name="topic" value="champRawEvents" />
+    </bean>
+
+    <!-- Graph Implementation Configuration-->
+    <util:map id="props" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.Object">
+        <entry key="champcore.event.stream.buffer.capacity" value="50" value-type="java.lang.Integer"/>
+        <entry key="champcore.event.stream.publisher-pool-size" value="10" value-type="java.lang.Integer"/>
+        <entry key="champcore.event.stream.publisher" value-ref="champEventPublisher"/>
+
+        <entry key="graph.name" value="aaigraph.dev"/>
+        <entry key="storage.backend" value="hbase"/>
+        <entry key="storage.hostname" value="hbase.{{.Release.Namespace}}"/>
+
+        <!-- Hbase Config -->
+        <entry key="storage.hbase.ext.hbase.zookeeper.property.clientPort" value="2181"/>
+        <entry key="storage.hbase.ext.zookeeper.znode.parent" value="/hbase"/>
+    </util:map>
+
+    <!-- Janus Implementation -->
+    <bean id="graphBuilder" class="org.onap.aai.champjanus.graph.impl.JanusChampGraphImpl$Builder">
+        <constructor-arg value="aaigraph.dev"/>
+        <constructor-arg ref="props" />
+    </bean>
+
+    <bean id="graphImpl" class="org.onap.aai.champjanus.graph.impl.JanusChampGraphImpl">
+        <constructor-arg ref="graphBuilder" />
+    </bean>
+
+    <bean id="champUUIDService" class="org.onap.champ.service.ChampUUIDService" >
+        <constructor-arg name="graphImpl" ref="graphImpl" />
+    </bean>
+
+    <bean id="cache" class="org.onap.champ.service.ChampTransactionCache" >
+        <constructor-arg name="txTimeOutInSec" value="600" />
+        <constructor-arg name="graphImpl" ref="graphImpl" />
+    </bean>
+
+    <bean id="champDataService" class="org.onap.champ.service.ChampDataService" >
+        <constructor-arg name="champUUIDService" ref="champUUIDService" />
+        <constructor-arg name="graphImpl" ref="graphImpl" />
+        <constructor-arg name="cache" ref="cache" />
+    </bean>
+
+    <bean id="champRestService" class="org.onap.champ.ChampRESTAPI" >
+        <constructor-arg name="champDataService" ref="champDataService" />
+        <constructor-arg name="champAsyncRequestProcessor"><null/></constructor-arg>
+    </bean>
+</beans>
@@ -1,4 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
+# Copyright © 2018 Amdocs, AT&T
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableAaiAaiResources }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: esr-filebeat-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
-#{{ end }}
+{{ tpl (.Files.Glob "resources/config/appconfig/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-dynamic-configmap
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/dynamic/conf/*").AsConfig . | indent 2 }}
diff --git a/kubernetes/aai/charts/champ/templates/deployment.yaml b/kubernetes/aai/charts/champ/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..23314ae
--- /dev/null
@@ -0,0 +1,107 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{ if .Values.liveness.enabled }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end }}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+            - name: CONFIG_HOME
+              value: "/opt/app/champ-service/appconfig"
+            - name: GRAPHIMPL
+              value: "janus-deps"
+            - name: SERVICE_BEANS
+              value: "/opt/app/champ-service/dynamic/conf"
+          volumeMounts:
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - mountPath: /opt/app/champ-service/appconfig/champ-api.properties
+            name: {{ include "common.fullname" . }}-config
+            subPath: champ-api.properties
+          - mountPath: /opt/app/champ-service/appconfig/auth
+            name: {{ include "common.fullname" . }}-secrets
+          - mountPath: /opt/app/champ-service/dynamic/conf/champ-beans.xml
+            name: {{ include "common.fullname" . }}-dynamic-config
+            subPath: champ-beans.xml
+          - mountPath: /logs
+            name: {{ include "common.fullname" . }}-logs
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+
+      volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-config
+          configMap:
+            name: {{ include "common.fullname" . }}-configmap
+            items:
+            - key: champ-api.properties
+              path: champ-api.properties
+        - name: {{ include "common.fullname" . }}-secrets
+          secret:
+            secretName: {{ include "common.fullname" . }}-champ-secrets
+        - name: {{ include "common.fullname" . }}-dynamic-config
+          configMap:
+            name: {{ include "common.fullname" . }}-dynamic-configmap
+            items:
+            - key: champ-beans.xml
+              path: champ-beans.xml
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/aai/charts/champ/templates/secrets.yaml b/kubernetes/aai/charts/champ/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..e939eb9
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "common.fullname" . }}-champ-secrets
+  namespace: {{ include "common.namespace" . }}
+type: Opaque
+data:
+{{ tpl (.Files.Glob "resources/config/appconfig/auth/*").AsSecrets . | indent 2 }}
diff --git a/kubernetes/aai/charts/champ/templates/service.yaml b/kubernetes/aai/charts/champ/templates/service.yaml
new file mode 100644 (file)
index 0000000..93b0fd1
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort}}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort}}
+      name: {{ .Values.service.name }}
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
diff --git a/kubernetes/aai/charts/champ/values.yaml b/kubernetes/aai/charts/champ/values.yaml
new file mode 100644 (file)
index 0000000..91a1e52
--- /dev/null
@@ -0,0 +1,58 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  readinessImage: readiness-check:1.0.0
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+
+# application image
+image: onap/champ:1.2.0
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: false
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: NodePort
+  name: champ
+  externalPort: 78
+  internalPort: 9522
+  nodePort: 78
+
+ingress:
+  enabled: false
+
+resources: {}
diff --git a/kubernetes/aai/charts/gizmo/.helmignore b/kubernetes/aai/charts/gizmo/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/aai/charts/gizmo/Chart.yaml b/kubernetes/aai/charts/gizmo/Chart.yaml
new file mode 100644 (file)
index 0000000..4633b06
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+description: Gizmo service
+name: gizmo
+version: 2.0.0
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/resources/config/README.txt b/kubernetes/aai/charts/gizmo/resources/config/README.txt
new file mode 100644 (file)
index 0000000..5cc0149
--- /dev/null
@@ -0,0 +1,10 @@
+This directory contains all external configuration files that
+need to be mounted into an application container.
+
+See the configmap.yaml in the templates directory for an example
+of how to load (ie map) config files from this directory, into
+Kubernetes, for distribution within the k8s cluster.
+
+See deployment.yaml in the templates directory for an example
+of how the 'config mapped' files are then mounted into the
+containers.
diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12 b/kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12
new file mode 100644 (file)
index 0000000..dbf4fca
Binary files /dev/null and b/kubernetes/aai/charts/gizmo/resources/config/auth/champ-cert.p12 differ
diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/crud_policy.json b/kubernetes/aai/charts/gizmo/resources/config/auth/crud_policy.json
new file mode 100644 (file)
index 0000000..d8b065e
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "roles": [
+    {
+      "name": "admin",
+      "functions": [
+        {
+          "name": "crud", "methods": [ { "name": "GET" },{ "name": "DELETE" }, { "name": "PUT" }, { "name": "POST" }, { "name": "PATCH"} ]
+        }
+      ],
+
+      "users": [
+        {
+          "username": "CN=ONAP, OU=ONAP, O=ONAP, L=Ottawa, ST=Ontario, C=CA"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12 b/kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12
new file mode 100644 (file)
index 0000000..dbf4fca
Binary files /dev/null and b/kubernetes/aai/charts/gizmo/resources/config/auth/datarouter-cert.p12 differ
diff --git a/kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore b/kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore
new file mode 100644 (file)
index 0000000..9eec841
Binary files /dev/null and b/kubernetes/aai/charts/gizmo/resources/config/auth/tomcat_keystore differ
diff --git a/kubernetes/aai/charts/gizmo/resources/config/crud-api.properties b/kubernetes/aai/charts/gizmo/resources/config/crud-api.properties
new file mode 100644 (file)
index 0000000..a86d472
--- /dev/null
@@ -0,0 +1,5 @@
+# CRUD-API configuration
+
+crud.async.request.timeout=60000
+crud.async.response.process.poll.interval=1000
+crud.collection.properties.key=properties
diff --git a/kubernetes/aai/charts/gizmo/resources/config/crud-beans.xml b/kubernetes/aai/charts/gizmo/resources/config/crud-beans.xml
new file mode 100644 (file)
index 0000000..04f1210
--- /dev/null
@@ -0,0 +1,35 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns:util="http://www.springframework.org/schema/util"
+         xsi:schemaLocation="
+                http://www.springframework.org/schema/beans
+                http://www.springframework.org/schema/beans/spring-beans.xsd
+               http://www.springframework.org/schema/util
+                http://www.springframework.org/schema/util/spring-util.xsd
+                ">
+
+     <bean id="champDao" class="org.onap.crud.dao.champ.ChampDao">
+         <constructor-arg name="champUrl" value="https://{{.Release.Name}}-champ.{{.Release.Namespace}}:9522/services/champ-service/v1/"/>
+         <constructor-arg name="certPassword" value="OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10"/>
+     </bean>
+
+         <bean id="dataRouterDAO" class="org.onap.crud.dao.DataRouterDAO">
+         <constructor-arg name="url" value="https://data-router.{{.Release.Namespace}}:9502/services/champ-service/v1/"/>
+         <constructor-arg name="certPassword" value="OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10"/>
+     </bean>
+
+     <!-- Synchronous Mode -->
+     <bean id="graphDataService" class="org.onap.crud.service.CrudGraphDataService" >
+         <constructor-arg name="dao" ref="champDao" />
+         <constructor-arg name="daoForGet" ref="champDao" /> <!--  Using champ for both types of API for now -->
+     </bean>
+
+     <bean id="crudRestService" class="org.onap.crud.service.CrudRestService" init-method="startup" >
+         <constructor-arg name="graphDataService" ref="graphDataService" />
+     </bean>
+
+     <bean id="aaiResourceService" class="org.onap.crud.service.AaiResourceService" init-method="startup" >
+         <constructor-arg name="graphDataService" ref="graphDataService" />
+     </bean>
+
+</beans>
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/resources/config/log/filebeat/filebeat.yml b/kubernetes/aai/charts/gizmo/resources/config/log/filebeat/filebeat.yml
new file mode 100644 (file)
index 0000000..9ad559c
--- /dev/null
@@ -0,0 +1,41 @@
+filebeat.prospectors:
+#it is mandatory, in our case it's log
+- input_type: log
+  #This is the canolical path as mentioned in logback.xml, *.* means it will monitor all files in the directory.
+  paths:
+    - /var/log/onap/*/*/*/*.log
+    - /var/log/onap/*/*/*.log
+    - /var/log/onap/*/*.log
+  #Files older than this should be ignored.In our case it will be 48 hours i.e. 2 days. It is a helping flag for clean_inactive
+  ignore_older: 48h
+  # Remove the registry entry for a file that is more than the specified time. In our case it will be 96 hours, i.e. 4 days. It will help to keep registry records with in limit
+  clean_inactive: 96h
+
+
+# Name of the registry file. If a relative path is used, it is considered relative to the
+# data path. Else full qualified file name.
+#filebeat.registry_file: ${path.data}/registry
+
+
+output.logstash:
+  #List of logstash server ip addresses with port number.
+  #But, in our case, this will be the loadbalancer IP address.
+  #For the below property to work the loadbalancer or logstash should expose 5044 port to listen the filebeat events or port in the property should be changed appropriately.
+  hosts: ["logstash.{{ .Release.Name }}-log:5044"]
+  #If enable will do load balancing among availabe Logstash, automatically.
+  loadbalance: true
+
+  #The list of root certificates for server verifications.
+  #If certificate_authorities is empty or not set, the trusted
+  #certificate authorities of the host system are used.
+  #ssl.certificate_authorities: $ssl.certificate_authorities
+
+  #The path to the certificate for SSL client authentication. If the certificate is not specified,
+  #client authentication is not available.
+  #ssl.certificate: $ssl.certificate
+
+  #The client certificate key used for client authentication.
+  #ssl.key: $ssl.key
+
+  #The passphrase used to decrypt an encrypted key stored in the configured key file
+  #ssl.key_passphrase: $ssl.key_passphrase
diff --git a/kubernetes/aai/charts/gizmo/resources/config/log/logback.xml b/kubernetes/aai/charts/gizmo/resources/config/log/logback.xml
new file mode 100644 (file)
index 0000000..f63afd3
--- /dev/null
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+    <!--<jmxConfigurator /> -->
+    <!-- directory path for all other type logs -->
+    <property name="logDir" value="/var/log/onap" />
+    <property name="componentName" value="aai" />
+    <property name="subComponentName" value="aai-CRUD" />
+    <property name="logDirectory" value="${logDir}/${componentName}/${subComponentName}" />
+    <!--  default eelf log file names -->
+    <property name="generalLogName" value="application" />
+    <property name="errorLogName" value="error" />
+    <property name="metricsLogName" value="metrics" />
+    <property name="auditLogName" value="audit" />
+    <property name="debugLogName" value="debug" />
+    <property name="queueSize" value="256" />
+    <property name="maxFileSize" value="50MB" />
+    <property name="maxHistory" value="30" />
+    <property name="totalSizeCap" value="10GB" />
+    <property name="pattern" value="%d{&quot;yyyy-MM-dd'T'HH:mm:ss.SSSXXX&quot;, UTC}\t[%thread]\t%-5level\t%logger\t%replace(%replace(%replace(%mdc){'\t','\\\\t'}){', ','\t'}){'\n', '\\\\n'}\t%replace(%replace(%msg){'\n', '\\\\n'}){'\t','\\\\t'}%n" />
+    <!-- Example evaluator filter applied against console appender -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <!-- ============================================================================ -->
+    <!-- EELF Appenders -->
+    <!-- ============================================================================ -->
+    <!-- The EELFAppender is used to record events to the general application
+       log -->
+    <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${generalLogName}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="EELF" />
+    </appender>
+    <!-- EELF Audit Appender. This appender is used to record audit engine
+       related logging events. The audit logger and appender are specializations
+       of the EELF application root logger and appender. This can be used to segregate
+       Policy engine events from other components, or it can be eliminated to record
+       these events as part of the application root log. -->
+    <appender name="EELFAudit" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${auditLogName}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="EELFAudit" />
+    </appender>
+    <appender name="EELFMetrics" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${metricsLogName}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="EELFMetrics" />
+    </appender>
+    <appender name="EELFError" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${errorLogName}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+    </appender>
+    <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="EELFError" />
+    </appender>
+    <appender name="EELFDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${debugLogName}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>${maxFileSize}</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <maxHistory>${maxHistory}</maxHistory>
+            <totalSizeCap>${totalSizeCap}</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${pattern}</pattern>
+        </encoder>
+    </appender>
+    <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>${queueSize}</queueSize>
+        <appender-ref ref="EELFDebug" />
+        <includeCallerData>true</includeCallerData>
+    </appender>
+    <!-- ============================================================================ -->
+    <!--  EELF loggers -->
+    <!-- ============================================================================ -->
+    <logger name="com.att.eelf" level="info" additivity="false">
+        <appender-ref ref="asyncEELF" />
+    </logger>
+    <logger name="com.att.eelf.security" level="info" additivity="false">
+        <appender-ref ref="asyncEELFSecurity" />
+    </logger>
+    <logger name="com.att.eelf.perf" level="info" additivity="false">
+        <appender-ref ref="asyncEELFPerformance" />
+    </logger>
+    <logger name="com.att.eelf.server" level="info" additivity="false">
+        <appender-ref ref="asyncEELFServer" />
+    </logger>
+    <logger name="com.att.eelf.policy" level="info" additivity="false">
+        <appender-ref ref="asyncEELFPolicy" />
+    </logger>
+    <logger name="com.att.eelf.debug" level="debug" additivity="false">
+        <appender-ref ref="asyncEELFDebug" />
+    </logger>
+    <logger name="com.att.eelf.audit" level="info" additivity="false">
+        <appender-ref ref="asyncEELFAudit" />
+    </logger>
+    <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="asyncEELFMetrics" />
+    </logger>
+    <logger name="com.att.eelf.error" level="info" additivity="false">
+        <appender-ref ref="asyncEELFError" />
+    </logger>
+    <!-- Spring related loggers -->
+    <logger name="org.springframework" level="WARN" />
+    <logger name="org.springframework.beans" level="WARN" />
+    <logger name="org.springframework.web" level="WARN" />
+    <logger name="com.blog.spring.jms" level="WARN" />
+    <!-- AJSC Services (bootstrap services) -->
+    <logger name="ajsc" level="WARN" />
+    <logger name="ajsc.RouteMgmtService" level="WARN" />
+    <logger name="ajsc.ComputeService" level="WARN" />
+    <logger name="ajsc.VandelayService" level="WARN" />
+    <logger name="ajsc.FilePersistenceService" level="WARN" />
+    <logger name="ajsc.UserDefinedJarService" level="WARN" />
+    <logger name="ajsc.UserDefinedBeansDefService" level="WARN" />
+    <logger name="ajsc.LoggingConfigurationService" level="WARN" />
+    <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+       logging) -->
+    <logger name="ajsc.utils" level="WARN" />
+    <logger name="ajsc.utils.DME2Helper" level="WARN" />
+    <logger name="ajsc.filters" level="WARN" />
+    <logger name="ajsc.beans.interceptors" level="WARN" />
+    <logger name="ajsc.restlet" level="WARN" />
+    <logger name="ajsc.servlet" level="WARN" />
+    <logger name="com.att" level="INFO" />
+    <logger name="com.att.ajsc.csi.logging" level="WARN" />
+    <logger name="com.att.ajsc.filemonitor" level="WARN" />
+    <!-- CRUD Service loggers -->
+    <logger name="org.openecomp.crud" level="INFO" />
+    <!-- Other Loggers that may help troubleshoot -->
+    <logger name="net.sf" level="WARN" />
+    <logger name="org.apache" level="WARN" />
+    <logger name="org.apache.commons.httpclient" level="WARN" />
+    <logger name="org.apache.commons" level="WARN" />
+    <logger name="org.apache.coyote" level="WARN" />
+    <logger name="org.apache.jasper" level="WARN" />
+    <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+       May aid in troubleshooting) -->
+    <logger name="org.apache.camel" level="WARN" />
+    <logger name="org.apache.cxf" level="WARN" />
+    <logger name="org.apache.camel.processor.interceptor" level="WARN" />
+    <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" />
+    <logger name="org.apache.cxf.service" level="WARN" />
+    <logger name="org.restlet" level="WARN" />
+    <logger name="org.apache.camel.component.restlet" level="WARN" />
+    <!-- logback internals logging -->
+    <logger name="ch.qos.logback.classic" level="WARN" />
+    <logger name="ch.qos.logback.core" level="WARN" />
+    <root level="INFO">
+        <appender-ref ref="asyncEELFDebug" />
+    </root>
+</configuration>
diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v11.json b/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v11.json
new file mode 100644 (file)
index 0000000..8d00636
--- /dev/null
@@ -0,0 +1,6 @@
+{
+        "contains-other-v": "java.lang.String",
+        "delete-other-v": "java.lang.String",
+        "SVC-INFRA": "java.lang.String",
+        "prevent-delete": "java.lang.String"
+}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v12.json b/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v12.json
new file mode 100644 (file)
index 0000000..8d00636
--- /dev/null
@@ -0,0 +1,6 @@
+{
+        "contains-other-v": "java.lang.String",
+        "delete-other-v": "java.lang.String",
+        "SVC-INFRA": "java.lang.String",
+        "prevent-delete": "java.lang.String"
+}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v13.json b/kubernetes/aai/charts/gizmo/resources/config/model/edge_properties_v13.json
new file mode 100644 (file)
index 0000000..8d00636
--- /dev/null
@@ -0,0 +1,6 @@
+{
+        "contains-other-v": "java.lang.String",
+        "delete-other-v": "java.lang.String",
+        "SVC-INFRA": "java.lang.String",
+        "prevent-delete": "java.lang.String"
+}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/templates/NOTES.txt b/kubernetes/aai/charts/gizmo/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..24371d0
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "so.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
@@ -1,4 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
+# Copyright © 2018 Amdocs, AT&T
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableSdcSdcBe }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: sdc-log-be-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/log/be/*").AsConfig . | indent 2 }}
+{{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
 ---
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: sdc-filebeat-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-model-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
-#{{ end }}
+{{ tpl (.Files.Glob "resources/config/model/*").AsConfig . | indent 2 }}
 ---
-#{{ if not .Values.disableSdcSdcFe }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: sdc-log-fe-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-log-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/log/fe/*").AsConfig . | indent 2 }}
-#{{ end }}
+{{ tpl (.Files.Glob "resources/config/log/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-filebeat-configmap
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/templates/deployment.yaml b/kubernetes/aai/charts/gizmo/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..80b5390
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{ if .Values.liveness.enabled }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end }}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+            - name: CONFIG_HOME
+              value: /opt/app/crud-service/config/
+            - name: KEY_STORE_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "common.fullname" . }}-pass
+                  key: KEY_STORE_PASSWORD
+            - name: KEY_MANAGER_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ template "common.fullname" . }}-pass
+                  key: KEY_MANAGER_PASSWORD
+            - name: SERVICE_BEANS
+              value: /opt/app/crud-service/dynamic/conf
+          volumeMounts:
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - mountPath: /opt/app/crud-service/config/crud-api.properties
+            subPath: crud-api.properties
+            name: {{ include "common.fullname" . }}-config
+          - mountPath: /opt/app/crud-service/config/model/
+            name: {{ include "common.fullname" . }}-model-config
+          - mountPath: /opt/app/crud-service/config/auth
+            name: {{ include "common.fullname" . }}-auth-secret
+          - mountPath: /opt/app/crud-service/dynamic/conf/crud-beans.xml
+            name: {{ include "common.fullname" . }}-config
+            subPath: crud-beans.xml
+          - mountPath: /var/log/onap
+            name: {{ include "common.fullname" . }}-logs
+          - mountPath: /opt/app/crud-api/bundleconfig/etc/logback.xml
+            name: {{ include "common.fullname" . }}-logback-config
+            subPath: logback.xml
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+
+        - name: filebeat-onap
+          image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          volumeMounts:
+          - mountPath: /usr/share/filebeat/filebeat.yml
+            name: filebeat-conf
+            subPath: filebeat.yml
+          - mountPath: /var/log/onap
+            name: {{ include "common.fullname" . }}-logs
+          - mountPath: /usr/share/filebeat/data
+            name: {{ include "common.fullname" . }}-data-filebeat
+
+      volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-data-filebeat
+          emptyDir: {}
+        - name: filebeat-conf
+          configMap:
+            name: {{ include "common.fullname" . }}-filebeat-configmap
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+        - name: {{ include "common.fullname" . }}-auth-secret
+          secret:
+            secretName: {{ include "common.fullname" . }}-auth
+        - name: {{ include "common.fullname" . }}-config
+          configMap:
+            name: {{ include "common.fullname" . }}-configmap
+            items:
+            - key: crud-api.properties
+              path: crud-api.properties
+            - key: crud-beans.xml
+              path: crud-beans.xml
+        - name: {{ include "common.fullname" . }}-logback-config
+          configMap:
+            name: {{ include "common.fullname" . }}-log-configmap
+            items:
+            - key: logback.xml
+              path: logback.xml
+        - name: {{ include "common.fullname" . }}-model-config
+          configMap:
+            name: {{ include "common.fullname" . }}-model-configmap
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/aai/charts/gizmo/templates/secrets.yaml b/kubernetes/aai/charts/gizmo/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..f5d8ec8
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "common.fullname" . }}-auth
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+data:
+{{ (.Files.Glob "resources/config/auth/*").AsSecrets | indent 2 }}
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "common.fullname" . }}-pass
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+type: Opaque
+data:
+  KEY_STORE_PASSWORD: {{ .Values.config.keyStorePassword | b64enc | quote }}
+  KEY_MANAGER_PASSWORD: {{ .Values.config.keyManagerPassword | b64enc | quote }}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/templates/service.yaml b/kubernetes/aai/charts/gizmo/templates/service.yaml
new file mode 100644 (file)
index 0000000..f88a4e9
--- /dev/null
@@ -0,0 +1,40 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/aai/charts/gizmo/values.yaml b/kubernetes/aai/charts/gizmo/values.yaml
new file mode 100644 (file)
index 0000000..de84285
--- /dev/null
@@ -0,0 +1,60 @@
+# Copyright © 2018 Amdocs, AT&T
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#################################################################
+global:
+  nodePortPrefix: 302
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+
+# application image
+image: "onap/gizmo:1.1-STAGING-latest"
+
+# application configuration
+config:
+  keyStorePassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
+  keyManagerPassword: OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: NodePort
+  name: crud-service
+  internalPort: 9520
+  nodePort: 66
+
+ingress:
+  enabled: false
+
+resources: {}
\ No newline at end of file
index 3312daf..7530d5a 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #
 # Create CLDS database objects (tables, etc.)
 #
index 112cb2b..fb131cc 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #
 # CLDS stored procedures
 #
index 478eaf0..eec9d52 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #
 # Drop CLDS database objects (tables, etc.)
 #
index f09d396..01bbcc7 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 module.exports={
     "name": "Release sdnc1.0",
     "emailAddress": "dguser@onap.org",
diff --git a/kubernetes/esr/.helmignore b/kubernetes/esr/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index a80e699..b47761d 100644 (file)
@@ -13,6 +13,6 @@
 # limitations under the License.
 
 apiVersion: v1
-description: A Helm chart for Kubernetes
+description: ONAP External System Register
 name: esr
-version: 1.0.0
+version: 2.0.0
diff --git a/kubernetes/esr/charts/esr-gui/.helmignore b/kubernetes/esr/charts/esr-gui/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/esr/charts/esr-gui/Chart.yaml b/kubernetes/esr/charts/esr-gui/Chart.yaml
new file mode 100644 (file)
index 0000000..ae53f85
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+description: ONAP External System Register GUI
+name: esr-gui
+version: 2.0.0
diff --git a/kubernetes/esr/charts/esr-gui/templates/NOTES.txt b/kubernetes/esr/charts/esr-gui/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..dde49c1
--- /dev/null
@@ -0,0 +1,16 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
diff --git a/kubernetes/esr/charts/esr-gui/templates/deployment.yaml b/kubernetes/esr/charts/esr-gui/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..747df22
--- /dev/null
@@ -0,0 +1,67 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ include "common.name" . }}
+          image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+            - name: MSB_ADDR
+              value: {{ tpl .Values.msbaddr . }}
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/esr/charts/esr-gui/templates/service.yaml b/kubernetes/esr/charts/esr-gui/templates/service.yaml
new file mode 100644 (file)
index 0000000..6a274b5
--- /dev/null
@@ -0,0 +1,42 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ .Values.service.name }} 
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+    msb.onap.org/service-info: '[
+      {
+          "serviceName": "aai-esr-gui",
+          "version": "v1",
+          "url": "/esr-gui",
+          "protocol": "UI",
+          "port": "{{ .Values.service.internalPort }}",
+          "visualRange":"1"
+      }
+      ]'
+spec:
+  ports:
+    - port: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
diff --git a/kubernetes/esr/charts/esr-gui/values.yaml b/kubernetes/esr/charts/esr-gui/values.yaml
new file mode 100644 (file)
index 0000000..f501399
--- /dev/null
@@ -0,0 +1,74 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  persistence: {}
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/aai/esr-gui:v1.0.0
+pullPolicy: Always
+msbaddr: msb-iag.{{ include "common.namespace" . }}:80
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  name: esr-gui
+  internalPort: 8080
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/esr/requirements.yaml b/kubernetes/esr/requirements.yaml
new file mode 100644 (file)
index 0000000..f639633
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dependencies:
+  - name: common
+    version: ~2.0.0
+    # local reference to common chart, as it is
+    # a part of this chart's package and will not
+    # be published independently to a repo (at this point)
+    repository: '@local'
diff --git a/kubernetes/esr/templates/NOTES.txt b/kubernetes/esr/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..c1c46b1
--- /dev/null
@@ -0,0 +1,13 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ .Chart.Name }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableAaiAaiResources }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: esr-esrserver-log-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-esr-filebeat
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-esr-esrserver-log
+  namespace: {{ include "common.namespace" . }}
 data:
 {{ tpl (.Files.Glob "resources/config/log/esrserver/logback.xml").AsConfig . | indent 2 }}
-#{{ end }}
+
diff --git a/kubernetes/esr/templates/deployment.yaml b/kubernetes/esr/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..c2322d3
--- /dev/null
@@ -0,0 +1,99 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+            - name: MSB_ADDR
+              value: {{ tpl .Values.msbaddr . }}
+          volumeMounts:
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - mountPath: /home/esr/works/logs
+            name: esr-server-logs
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      # side car containers
+        - name: filebeat-onap
+          image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          volumeMounts:
+          - mountPath: /usr/share/filebeat/filebeat.yml
+            name: filebeat-conf
+            subPath: filebeat.yml
+          - mountPath: /home/esr/works/logs
+            name: esr-server-logs
+          - mountPath: /usr/share/filebeat/data
+            name: esr-server-filebeat
+      volumes:
+        - name: localtime
+          hostPath:
+            path: /etc/localtime
+        - name: filebeat-conf
+          configMap:
+            name: {{ include "common.fullname" . }}-esr-filebeat
+        - name: esr-server-logs
+          emptyDir: {}
+        - name: esr-server-filebeat
+          emptyDir: {}
+        - name: esrserver-log
+          configMap:
+            name: {{ include "common.fullname" . }}-esr-esrserver-log
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/esr/templates/esr-esrgui-deployment.yaml b/kubernetes/esr/templates/esr-esrgui-deployment.yaml
deleted file mode 100644 (file)
index 92e26dc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableesrgui }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: esr-esrgui
-  name: esr-esrgui
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: esr-esrgui
-  template:
-    metadata:
-      labels:
-        app: esr-esrgui
-      name: esr-esrgui
-    spec:
-      containers:
-      - image: {{ .Values.esrgui.image }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: esr-esrgui
-        env:
-        - name: MSB_ADDR
-          value: {{ tpl .Values.msbaddr . }}
-        ports:
-        - containerPort: {{ .Values.esrgui.port }}
-        readinessProbe:
-          tcpSocket:
-            port: 8080
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/esr/templates/esr-esrserver-deployment.yaml b/kubernetes/esr/templates/esr-esrserver-deployment.yaml
deleted file mode 100644 (file)
index 3f00edc..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableUuiUui }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: esr-esrserver
-  name: esr-esrserver
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: esr-esrserver
-  template:
-    metadata:
-      labels:
-        app: esr-esrserver
-      name: esr-esrserver
-    spec:
-      containers:
-      - name: esr-esrserver
-        image: {{ .Values.esrserver.image }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        env:
-        - name: MSB_ADDR
-          value: {{ tpl .Values.msbaddr . }}
-        volumeMounts:
-        - name: localtime
-          mountPath: /etc/localtime
-          readOnly: true
-        - mountPath: /home/esr/works/logs
-          name: esr-server-logs
-        ports:
-        - containerPort: {{ .Values.esrserver.port }}
-        readinessProbe:
-          tcpSocket:
-            port: {{ .Values.esrserver.port }}
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      - name: filebeat-onap-esr-server
-        image: {{ .Values.filebeat.image }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /usr/share/filebeat/filebeat.yml
-          subPath: filebeat.yml
-          name: filebeat-conf
-        - mountPath: /home/esr/works/logs
-          name: esr-server-logs
-        - mountPath: /usr/share/filebeat/data
-          name: esr-server-filebeat
-      volumes:
-      - name: localtime
-        hostPath:
-          path: /etc/localtime
-      - name: filebeat-conf
-        configMap:
-          name: esr-filebeat-configmap
-      - name: esr-server-logs
-        emptyDir: {}
-      - name: esr-server-filebeat
-        emptyDir: {}
-#{{ end }}
similarity index 53%
rename from kubernetes/esr/templates/all-services.yaml
rename to kubernetes/esr/templates/service.yaml
index ff6bd95..312a7bd 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableEsrServer }}
 apiVersion: v1
 kind: Service
 metadata:
+  name: {{ .Values.service.name }}
+  namespace: {{ include "common.namespace" . }}
   labels:
-    app: esr-esrserver
-  name: esr-esrserver
-  namespace: "{{ .Values.nsPrefix }}"
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
   annotations:
     msb.onap.org/service-info: '[
       {
@@ -27,42 +29,15 @@ metadata:
           "version": "v1",
           "url": "/api/aai-esr-server/v1",
           "protocol": "REST",
-          "port": "{{.Values.esrserver.port}}",
+          "port": "{{.Values.service.internalPort}}",
           "enable_ssl": true,
           "visualRange":"1"
       }
       ]'
 spec:
   ports:
-  - name: esr-esrserver
-    port: {{.Values.esrserver.port}}
+    - port: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
   selector:
-    app: esr-esrserver
-#{{ end }}
-#{{ if not .Values.disableEsrGui }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: esr-esrgui
-  name: esr-esrgui
-  namespace: "{{ .Values.nsPrefix }}"
-  annotations:
-    msb.onap.org/service-info: '[
-      {
-          "serviceName": "aai-esr-gui",
-          "version": "v1",
-          "url": "/esr-gui",
-          "protocol": "UI",
-          "port": "{{.Values.esrgui.port}}",
-          "visualRange":"1"
-      }
-      ]'
-spec:
-  ports:
-  - name: esr-esrgui
-    port: {{.Values.esrgui.port}}
-  selector:
-    app: esr-esrgui
-#{{ end }}
\ No newline at end of file
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
index 82aa334..3af4917 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-nsPrefix: onap
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+subChartsOnly:
+  enabled: true
+
+# application image
+repository: nexus3.onap.org:10001
+image: onap/aai/esr-server:v1.0.0
 pullPolicy: Always
-nodePortPrefix: 302
-msbaddr: msb-iag.{{ .Values.nsPrefix }}:80
-esrserver:
-  image: nexus3.onap.org:10001/onap/aai/esr-server:v1.0.0
-  port: 9518
-  replicas: 1
-esrgui:
-  image: nexus3.onap.org:10001/onap/aai/esr-gui:v1.0.0
-  port: 8080
-  replicas: 1
-filebeat:
-  image: docker.elastic.co/beats/filebeat:5.5.0
+msbaddr: msb-iag.{{ include "common.namespace" . }}:80
 
+# application configuration
 config:
   logstashServiceName: log-ls
   logstashPort: 5044
 
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  name: esr
+  internalPort: 9518
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
index 0125381..8b2bb4e 100644 (file)
@@ -101,4 +101,4 @@ spec:
 #            - key: application.properties
 #              path: application.properties
       imagePullSecrets:
-      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
index 841d349..86442a2 100644 (file)
@@ -1,7 +1,7 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "common.fullname" . }}
+  name: {{ .Values.service.name }}
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
index 841d349..86442a2 100644 (file)
@@ -1,7 +1,7 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "common.fullname" . }}
+  name: {{ .Values.service.name }}
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
index e438f10..3e4a786 100644 (file)
@@ -1,7 +1,7 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "common.fullname" . }}
+  name: {{ .Values.service.name }}
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
index e438f10..3e4a786 100644 (file)
@@ -1,7 +1,7 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ include "common.fullname" . }}
+  name: {{ .Values.service.name }}
   namespace: {{ include "common.namespace" . }}
   labels:
     app: {{ include "common.name" . }}
index 146ad01..0b3dde5 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index 7d2eed1..ad303db 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../../camunda/mariadb_engine_7.7.3-ee.sql
 
 --
index b5063de..2bb939b 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index 1500105..3206efc 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index b9b8dd6..b7adb4e 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 DROP DATABASE IF EXISTS `camundabpmn`;
 
 CREATE DATABASE `camundabpmn`;
index 3658c6c..40fda9a 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 USE camundabpmn;
 
 INSERT INTO `act_id_group` (`ID_`, `REV_`, `NAME_`, `TYPE_`) VALUES ('camunda-admin',1,'camunda BPM Administrators','SYSTEM');
index ca002fb..d05bc49 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 
     alter table HEAT_TEMPLATE_PARAMS 
         drop 
index f64548e..eff696d 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 
     drop table if exists INFRA_ACTIVE_REQUESTS;
 
index ddb9b7a..2bcf0bf 100644 (file)
@@ -18,7 +18,7 @@
 # > helm repo add local http://127.0.0.1:8879
 dependencies:
   - name: aaf
-    version: ~1.1.0
+    version: ~2.0.0
     repository: '@local'
     condition: aaf.enabled
   - name: aai
@@ -49,7 +49,7 @@ dependencies:
     repository: '@local'
     condition: dcaegen2.enabled
   - name: esr
-    version: ~1.0.0
+    version: ~2.0.0
     repository: '@local'
     condition: esr.enabled
   - name: log
@@ -85,7 +85,7 @@ dependencies:
     repository: '@local'
     condition: robot.enabled
   - name: sdc
-    version: ~0.1.0
+    version: ~2.0.0
     repository: '@local'
     condition: sdc.enabled
   - name: sdnc
index 781b046..1b6d43c 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 USE portal;
 /*
 Any updates required by OOM to the portaldb are made here.
diff --git a/kubernetes/sdc/.helmignore b/kubernetes/sdc/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
index 0fa6ac5..ad56334 100644 (file)
@@ -13,6 +13,6 @@
 # limitations under the License.
 
 apiVersion: v1
-description: A Helm chart for Kubernetes
+description: Service Design and Creation Umbrella Helm charts
 name: sdc
-version: 0.1.0
+version: 2.0.0
diff --git a/kubernetes/sdc/charts/sdc-be/.helmignore b/kubernetes/sdc/charts/sdc-be/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/sdc/charts/sdc-be/Chart.yaml b/kubernetes/sdc/charts/sdc-be/Chart.yaml
new file mode 100644 (file)
index 0000000..9c36487
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: Service Design and Creation Backend API
+name: sdc-be
+version: 2.0.0
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-be/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-be/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..0878f5c
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableSdcSdcFe }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: sdc-fe-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-logging-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/sdc-fe/*").AsConfig . | indent 2 }}
-#{{ end }}
+{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-be/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..4869966
--- /dev/null
@@ -0,0 +1,136 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - "sdc-es"
+        - --container-name
+        - "sdc-cs"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+      - name: {{ include "common.name" . }}-job-completion
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: "{{ .Values.global.pullPolicy | default .Values.pullPolicy }}"
+        command:
+        - /root/job_complete.py
+        args:
+        - --job-name
+        - {{ .Release.Name }}-sdc-cs-config-cassandra
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          - containerPort: {{ .Values.service.internalPort2 }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+          - name: ENVNAME
+            value: {{ .Values.global.env.name }}
+          - name: JAVA_OPTIONS
+            value: ""
+          - name: HOST_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-environments
+            mountPath: /root/chef-solo/environments/
+          - name: {{ include "common.fullname" . }}-localtime
+            mountPath: /etc/localtime
+            readOnly: true
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-logback
+            mountPath: /tmp/logback.xml
+          lifecycle:
+            postStart:
+              exec:
+                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/var/lib/jetty/config/catalog-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+
+        # side car containers
+        - name: {{ include "common.name" . }}-filebeat-onap
+          image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-filebeat-conf
+            mountPath: /usr/share/filebeat/filebeat.yml
+            subPath: filebeat.yml
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-data-filebeat
+            mountPath: /usr/share/filebeat/data
+      volumes:
+        - name: {{ include "common.fullname" . }}-localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-filebeat-conf
+          configMap:
+           name: {{ .Release.Name }}-sdc-filebeat-configmap
+        - name: {{ include "common.fullname" . }}-data-filebeat
+          emptyDir: {}
+        - name: {{ include "common.fullname" . }}-logback
+          configMap:
+            name : {{ include "common.fullname" . }}-logging-configmap
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+        - name:  {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-be/templates/job.yaml b/kubernetes/sdc/charts/sdc-be/templates/job.yaml
new file mode 100644 (file)
index 0000000..7338d2e
--- /dev/null
@@ -0,0 +1,51 @@
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-config-backend
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-job
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}-job
+        release: {{ .Release.Name }}
+    spec:
+      restartPolicy: Never
+      initContainers:
+      - name: {{ include "common.name" . }}-init-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - sdc-be
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+      - name: {{ include "common.name" . }}-job
+        image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.backendInitImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        volumeMounts:
+        - name: {{ include "common.fullname" . }}-environments
+          mountPath: /root/chef-solo/environments/
+        env:
+        - name: ENVNAME
+          value: {{ .Values.global.env.name }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
+      restartPolicy: Never
diff --git a/kubernetes/sdc/charts/sdc-be/templates/service.yaml b/kubernetes/sdc/charts/sdc-be/templates/service.yaml
new file mode 100644 (file)
index 0000000..83e9bb4
--- /dev/null
@@ -0,0 +1,51 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+    msb.onap.org/service-info: '[
+      {
+          "serviceName": "sdc",
+          "version": "v1",
+          "url": "/sdc/v1",
+          "protocol": "REST",
+          "port": "{{ .Values.service.internalPort2 }}",
+          "visualRange":"1"
+      },
+      {
+          "serviceName": "sdc-deprecated",
+          "version": "v1",
+          "url": "/sdc/v1",
+          "protocol": "REST",
+          "port": "{{ .Values.service.internalPort2 }}",
+          "visualRange":"1",
+          "path":"/sdc/v1"
+      }
+      ]'
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.internalPort2 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+      name: {{ .Values.service.name }}2
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      targetPort: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.name }}2
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-be/values.yaml b/kubernetes/sdc/charts/sdc-be/values.yaml
new file mode 100644 (file)
index 0000000..ebd5f8f
--- /dev/null
@@ -0,0 +1,71 @@
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.1
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/sdc-backend:1.2-STAGING-latest
+backendInitImage: onap/sdc-backend-init:1.2-STAGING-latest
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: NodePort
+  name: sdc-be
+  nodePort: "04"
+  internalPort: 8443
+  nodePort2: "05"
+  internalPort2: 8080
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/sdc/charts/sdc-cs/.helmignore b/kubernetes/sdc/charts/sdc-cs/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/sdc/charts/sdc-cs/Chart.yaml b/kubernetes/sdc/charts/sdc-cs/Chart.yaml
new file mode 100644 (file)
index 0000000..9632644
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: Service Design and Creation Cassandra
+name: sdc-cs
+version: 2.0.0
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-cs/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..0878f5c
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-cs/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..10fabae
--- /dev/null
@@ -0,0 +1,88 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          - containerPort: {{ .Values.service.internalPort2 }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+          - name: ENVNAME
+            value: {{ .Values.global.env.name }}
+          - name: HOST_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          - name: CS_PASSWORD
+            valueFrom:
+              secretKeyRef: {name: {{ include "common.fullname" . }}, key: cs_password}
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-data
+            mountPath: /var/lib/cassandra/
+          - name: {{ include "common.fullname" . }}-environments
+            mountPath: /root/chef-solo/environments/
+          - name: {{ include "common.fullname" . }}-localtime
+            mountPath: /etc/localtime
+            readOnly: true
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/lib/jetty/logs
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+      {{- if .Values.persistence.enabled }}
+        - name: {{ include "common.fullname" . }}-data
+          persistentVolumeClaim:
+            claimName: {{ include "common.fullname" . }}
+      {{- else }}
+          emptyDir: {}
+      {{- end }}
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/job.yaml b/kubernetes/sdc/charts/sdc-cs/templates/job.yaml
new file mode 100644 (file)
index 0000000..da2ec3d
--- /dev/null
@@ -0,0 +1,60 @@
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-config-cassandra
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-job
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}-job
+        release: {{ .Release.Name }}
+    spec:
+      restartPolicy: Never
+      initContainers:
+      - name: {{ include "common.name" . }}-init-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - sdc-cs
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+      - name: {{ include "common.name" . }}-job
+        image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.cassandraInitImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        volumeMounts:
+        - name: {{ include "common.fullname" . }}-environments
+          mountPath: /root/chef-solo/environments/
+        env:
+        - name: ENVNAME
+          value: {{ .Values.global.env.name }}
+        - name: SDC_USER
+          valueFrom:
+            secretKeyRef: {name: {{ include "common.fullname" . }}, key: sdc_user}
+        - name: SDC_PASSWORD
+          valueFrom:
+            secretKeyRef: {name: {{ include "common.fullname" . }}, key: sdc_password}
+        - name: CS_PASSWORD
+          valueFrom:
+            secretKeyRef: {name: {{ include "common.fullname" . }}, key: cs_password}
+      volumes:
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
+      restartPolicy: Never
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml b/kubernetes/sdc/charts/sdc-cs/templates/pv.yaml
new file mode 100644 (file)
index 0000000..31230a9
--- /dev/null
@@ -0,0 +1,21 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    name: {{ include "common.fullname" . }}
+spec:
+  capacity:
+    storage: {{ .Values.persistence.size}}
+  accessModes:
+    - {{ .Values.persistence.accessMode }}
+  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
+  hostPath:
+    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}
+{{- end -}}
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml b/kubernetes/sdc/charts/sdc-cs/templates/pvc.yaml
new file mode 100644 (file)
index 0000000..b0cd3bf
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- if .Values.persistence.annotations }}
+  annotations:
+{{ toYaml .Values.persistence.annotations | indent 4 }}
+{{- end }}
+spec:
+  selector:
+    matchLabels:
+      name: {{ include "common.fullname" . }}
+  accessModes:
+    - {{ .Values.persistence.accessMode }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.size }}
+{{- if .Values.persistence.storageClass }}
+{{- if (eq "-" .Values.persistence.storageClass) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ .Values.persistence.storageClass }}"
+{{- end }}
+{{- end }}
+{{- end -}}
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml b/kubernetes/sdc/charts/sdc-cs/templates/secrets.yaml
new file mode 100644 (file)
index 0000000..72d9634
--- /dev/null
@@ -0,0 +1,31 @@
+# Copyright © 2017 Amdocs, Bell Canada
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+type: Opaque
+data:
+  #application user
+  sdc_user: "{{ .Values.secrets.sdc_user }}"
+  sdc_password: "{{ .Values.secrets.sdc_password }}"
+  #default user:
+  cs_password: "{{ .Values.secrets.cs_password }}"
diff --git a/kubernetes/sdc/charts/sdc-cs/templates/service.yaml b/kubernetes/sdc/charts/sdc-cs/templates/service.yaml
new file mode 100644 (file)
index 0000000..a41fc38
--- /dev/null
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.internalPort2 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+      name: {{ .Values.service.name }}2
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      targetPort: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.name }}2
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-cs/values.yaml b/kubernetes/sdc/charts/sdc-cs/values.yaml
new file mode 100644 (file)
index 0000000..5e2b77c
--- /dev/null
@@ -0,0 +1,101 @@
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/sdc-cassandra:1.2-STAGING-latest
+cassandraInitImage: onap/sdc-cassandra-init:1.2-STAGING-latest
+
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+secrets:
+    sdc_user: YXNkY191c2Vy
+    sdc_password: QWExMjM0JV4h
+    cs_password: b25hcDEyMyNAIQ==
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: ClusterIP
+  name: sdc-cs
+  externalPort: 9160
+  internalPort: 9160
+  externalPort2: 9042
+  internalPort2: 9042
+
+
+## Persist data to a persitent volume
+persistence:
+  enabled: true
+
+  ## A manually managed Persistent Volume and Claim
+  ## Requires persistence.enabled: true
+  ## If defined, PVC must be created manually before volume will be bound
+  # existingClaim:
+  volumeReclaimPolicy: Retain
+
+  ## database data Persistent Volume Storage Class
+  ## If defined, storageClassName: <storageClass>
+  ## If set to "-", storageClassName: "", which disables dynamic provisioning
+  ## If undefined (the default) or set to null, no storageClassName spec is
+  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
+  ##   GKE, AWS & OpenStack)
+  ##
+  # storageClass: "-"
+  accessMode: ReadWriteMany
+  size: 2Gi
+  mountPath: /dockerdata-nfs
+  mountSubPath: /sdc/sdc-cs/CS
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/sdc/charts/sdc-es/.helmignore b/kubernetes/sdc/charts/sdc-es/.helmignore
new file mode 100644 (file)
index 0000000..c13e3c8
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-es/Chart.yaml b/kubernetes/sdc/charts/sdc-es/Chart.yaml
new file mode 100644 (file)
index 0000000..f2097a5
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: Service Design and Creation Elasticsearch
+name: sdc-es
+version: 2.0.0
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-es/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-es/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..0878f5c
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
diff --git a/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-es/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..bb08a2a
--- /dev/null
@@ -0,0 +1,102 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - name: {{ include "common.name" . }}-logs-init
+        command:
+        - /bin/bash
+        - "-c"
+        - |
+          mkdir -p /ubuntu-init/ASDC/ASDC-ES/
+          chmod -R 777 /ubuntu-init/
+        image: "{{ .Values.global.ubuntuInitRepository }}/{{ .Values.global.ubuntuInitImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        volumeMounts:
+        - name: {{ include "common.fullname" . }}-logs
+          mountPath: /ubuntu-init/
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          - containerPort: {{ .Values.service.internalPort2 }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            httpGet:
+              path: "_cluster/health?wait_for_status=yellow&timeout=120s"
+              port: {{ .Values.service.internalPort }}
+              scheme: HTTP
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+          - name: ENVNAME
+            value: {{ .Values.global.env.name }}
+          - name: HOST_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          - name: ES_HEAP_SIZE
+            value: {{ .Values.config.elasticHeapSize }}
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-environments
+            mountPath: /root/chef-solo/environments/
+          - name: {{ include "common.fullname" . }}-localtime
+            mountPath: /etc/localtime
+            readOnly: true
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/lib/jetty/logs
+          - name: {{ include "common.fullname" . }}-data
+            mountPath: /usr/share/elasticsearch/data/
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-localtime
+          hostPath:
+            path: /etc/localtime
+      {{- if .Values.persistence.enabled }}
+        - name: {{ include "common.fullname" . }}-data
+          persistentVolumeClaim:
+            claimName: {{ include "common.fullname" . }}
+      {{- else }}
+          emptyDir: {}
+      {{- end }}
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+        - name: {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-es/templates/job.yaml b/kubernetes/sdc/charts/sdc-es/templates/job.yaml
new file mode 100644 (file)
index 0000000..03a21c0
--- /dev/null
@@ -0,0 +1,51 @@
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-config-elasticsearch
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-job
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}-job
+        release: {{ .Release.Name }}
+    spec:
+      restartPolicy: Never
+      initContainers:
+      - name: {{ include "common.name" . }}-init-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - sdc-es
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+      - name: {{ include "common.name" . }}-job
+        image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.elasticInitImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        volumeMounts:
+        - name: {{ include "common.fullname" . }}-environments
+          mountPath: /root/chef-solo/environments/
+        env:
+        - name: ENVNAME
+          value: {{ .Values.global.env.name }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
+      restartPolicy: Never
diff --git a/kubernetes/sdc/charts/sdc-es/templates/pv.yaml b/kubernetes/sdc/charts/sdc-es/templates/pv.yaml
new file mode 100644 (file)
index 0000000..31230a9
--- /dev/null
@@ -0,0 +1,21 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    name: {{ include "common.fullname" . }}
+spec:
+  capacity:
+    storage: {{ .Values.persistence.size}}
+  accessModes:
+    - {{ .Values.persistence.accessMode }}
+  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
+  hostPath:
+    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}
+{{- end -}}
diff --git a/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml b/kubernetes/sdc/charts/sdc-es/templates/pvc.yaml
new file mode 100644 (file)
index 0000000..b0cd3bf
--- /dev/null
@@ -0,0 +1,32 @@
+{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+{{- if .Values.persistence.annotations }}
+  annotations:
+{{ toYaml .Values.persistence.annotations | indent 4 }}
+{{- end }}
+spec:
+  selector:
+    matchLabels:
+      name: {{ include "common.fullname" . }}
+  accessModes:
+    - {{ .Values.persistence.accessMode }}
+  resources:
+    requests:
+      storage: {{ .Values.persistence.size }}
+{{- if .Values.persistence.storageClass }}
+{{- if (eq "-" .Values.persistence.storageClass) }}
+  storageClassName: ""
+{{- else }}
+  storageClassName: "{{ .Values.persistence.storageClass }}"
+{{- end }}
+{{- end }}
+{{- end -}}
diff --git a/kubernetes/sdc/charts/sdc-es/templates/service.yaml b/kubernetes/sdc/charts/sdc-es/templates/service.yaml
new file mode 100644 (file)
index 0000000..a41fc38
--- /dev/null
@@ -0,0 +1,31 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.internalPort2 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+      name: {{ .Values.service.name }}2
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      targetPort: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.name }}2
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-es/values.yaml b/kubernetes/sdc/charts/sdc-es/values.yaml
new file mode 100644 (file)
index 0000000..b32ed11
--- /dev/null
@@ -0,0 +1,101 @@
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+  ubuntuInitRepository: oomk8s
+  ubuntuInitImage: ubuntu-init:1.0.0
+
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/sdc-elasticsearch:1.2-STAGING-latest
+elasticInitImage: onap/sdc-init-elasticsearch:1.2-STAGING-latest
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# application configuration
+config:
+  elasticHeapSize: 1024M
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: ClusterIP
+  name: sdc-es
+  externalPort: 9200
+  internalPort: 9200
+  externalPort2: 9300
+  internalPort2: 9300
+
+## Persist data to a persitent volume
+persistence:
+  enabled: true
+
+  ## A manually managed Persistent Volume and Claim
+  ## Requires persistence.enabled: true
+  ## If defined, PVC must be created manually before volume will be bound
+  # existingClaim:
+  volumeReclaimPolicy: Retain
+
+  ## database data Persistent Volume Storage Class
+  ## If defined, storageClassName: <storageClass>
+  ## If set to "-", storageClassName: "", which disables dynamic provisioning
+  ## If undefined (the default) or set to null, no storageClassName spec is
+  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
+  ##   GKE, AWS & OpenStack)
+  ##
+  # storageClass: "-"
+  accessMode: ReadWriteMany
+  size: 2Gi
+  mountPath: /dockerdata-nfs
+  mountSubPath: /sdc/sdc-es/ES
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/sdc/charts/sdc-fe/.helmignore b/kubernetes/sdc/charts/sdc-fe/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/sdc/charts/sdc-fe/Chart.yaml b/kubernetes/sdc/charts/sdc-fe/Chart.yaml
new file mode 100644 (file)
index 0000000..dc60986
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: Service Design and Creation Front End
+name: sdc-fe
+version: 2.0.0
\ No newline at end of file
@@ -78,9 +78,9 @@
     <!-- Debug log -->\r
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="DEBUG_ROLLING">\r
         <file>${logDirectory}/${debugLogName}.log</file>\r
-        <!-- No need to deny audit messages - they are INFO only, will be denied \r
+        <!-- No need to deny audit messages - they are INFO only, will be denied\r
                         anyway -->\r
-        <!-- Transaction messages filter - deny Transaction messages, there are \r
+        <!-- Transaction messages filter - deny Transaction messages, there are\r
                         some DEBUG level messages among them -->\r
         <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
             <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">\r
diff --git a/kubernetes/sdc/charts/sdc-fe/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-fe/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..c4b9989
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.fullname" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-#{{ if not .Values.disableSdcSdcBe }}
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: sdc-environments-configmap
-  namespace: {{ .Values.nsPrefix }}
+  name: {{ include "common.fullname" . }}-logging-configmap
+  namespace: {{ include "common.namespace" . }}
 data:
-{{ tpl (.Files.Glob "resources/config/environments/*").AsConfig . | indent 2 }}
-#{{ end }}
+{{ tpl (.Files.Glob "resources/config/logging/*").AsConfig . | indent 2 }}
diff --git a/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-fe/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..818a279
--- /dev/null
@@ -0,0 +1,120 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - "sdc-be"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          - containerPort: {{ .Values.service.internalPort2 }}
+          # disable liveness probe when breakpoints set in debugger
+          # so K8s doesn't restart unresponsive container
+          {{- if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+          - name: ENVNAME
+            value: {{ .Values.global.env.name }}
+          - name: HOST_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          - name: JAVA_OPTIONS
+            value: ""
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-environments
+            mountPath: /root/chef-solo/environments/
+          - name: {{ include "common.fullname" . }}-localtime
+            mountPath: /etc/localtime
+            readOnly: true
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-logback
+            mountPath: /tmp/logback.xml
+          lifecycle:
+            postStart:
+              exec:
+                command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/var/lib/jetty/config/catalog-fe/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+
+        # side car containers
+        - name: {{ include "common.name" . }}-filebeat-onap
+          image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-filebeat-conf
+            mountPath: /usr/share/filebeat/filebeat.yml
+            subPath: filebeat.yml
+          - name: {{ include "common.fullname" . }}-logs
+            mountPath: /var/log/onap
+          - name: {{ include "common.fullname" . }}-data-filebeat
+            mountPath: /usr/share/filebeat/data
+      volumes:
+        - name: {{ include "common.fullname" . }}-localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-filebeat-conf
+          configMap:
+            name: {{ .Release.Name }}-sdc-filebeat-configmap
+        - name: {{ include "common.fullname" . }}-data-filebeat
+          emptyDir: {}
+        - name: {{ include "common.fullname" . }}-logback
+          configMap:
+            name : {{ include "common.fullname" . }}-logging-configmap
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+        - name:  {{ include "common.fullname" . }}-logs
+          emptyDir: {}
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-fe/templates/service.yaml b/kubernetes/sdc/charts/sdc-fe/templates/service.yaml
new file mode 100644 (file)
index 0000000..fc7a3c7
--- /dev/null
@@ -0,0 +1,42 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+    msb.onap.org/service-info: '[
+      {
+          "serviceName": "sdc-gui",
+          "version": "v1",
+          "url": "/sdc1",
+          "protocol": "UI",
+          "port": "{{ .Values.service.internalPort }}",
+          "visualRange":"0|1"
+      }
+      ]'
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.internalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.internalPort2 }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+      name: {{ .Values.service.name }}2
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    - port: {{ .Values.service.externalPort2 }}
+      targetPort: {{ .Values.service.internalPort2 }}
+      name: {{ .Values.service.name }}2
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-fe/values.yaml b/kubernetes/sdc/charts/sdc-fe/values.yaml
new file mode 100644 (file)
index 0000000..828ec41
--- /dev/null
@@ -0,0 +1,75 @@
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/sdc-frontend:1.2-STAGING-latest
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  #Example service definition with external, internal and node ports.
+  #Services may use any combination of ports depending on the 'type' of
+  #service being defined.
+  type: NodePort
+  name: sdc-fe
+  nodePort: "06"
+  internalPort: 8181
+  nodePort2: "07"
+  internalPort2: 9443
+
+
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/sdc/charts/sdc-kb/.helmignore b/kubernetes/sdc/charts/sdc-kb/.helmignore
new file mode 100644 (file)
index 0000000..b9208e2
--- /dev/null
@@ -0,0 +1,25 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+
+
+#TODO:REMOVE
+sdc-kb.yaml
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-kb/Chart.yaml b/kubernetes/sdc/charts/sdc-kb/Chart.yaml
new file mode 100644 (file)
index 0000000..2bb4e49
--- /dev/null
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: Service Design and Creation Kibana
+name: sdc-kb
+version: 2.0.0
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-kb/templates/NOTES.txt b/kubernetes/sdc/charts/sdc-kb/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..0878f5c
--- /dev/null
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http://{{ . }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
+  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
+  echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
+{{- end }}
diff --git a/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml b/kubernetes/sdc/charts/sdc-kb/templates/deployment.yaml
new file mode 100644 (file)
index 0000000..73c01f5
--- /dev/null
@@ -0,0 +1,86 @@
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - "sdc-es"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+      containers:
+        - name: {{ include "common.name" . }}
+          image: "{{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          ports:
+          - containerPort: {{ .Values.service.internalPort }}
+          {{if eq .Values.liveness.enabled true }}
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.liveness.periodSeconds }}
+          {{ end -}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.service.internalPort }}
+            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+            periodSeconds: {{ .Values.readiness.periodSeconds }}
+          env:
+          - name: ENVNAME
+            value: {{ .Values.global.env.name }}
+          - name: HOST_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+          - name: ELASTICSEARCH_URL
+            value: "http://{{ .Release.Name }}-{{ index .Values "sdc-es" "service" "name" }}:9200"
+          volumeMounts:
+          - name: {{ include "common.fullname" . }}-environments
+            mountPath: /root/chef-solo/environments/
+          - name: {{ include "common.fullname" . }}-localtime
+            mountPath: /etc/localtime
+            readOnly: true
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+        {{- if .Values.nodeSelector }}
+        nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 10 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+        affinity:
+{{ toYaml .Values.affinity | indent 10 }}
+        {{- end }}
+      volumes:
+        - name: {{ include "common.fullname" . }}-localtime
+          hostPath:
+            path: /etc/localtime
+        - name: {{ include "common.fullname" . }}-environments
+          configMap:
+            name: {{ .Release.Name }}-sdc-environments-configmap
+            defaultMode: 0755
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-kb/templates/service.yaml b/kubernetes/sdc/charts/sdc-kb/templates/service.yaml
new file mode 100644 (file)
index 0000000..0fbaae9
--- /dev/null
@@ -0,0 +1,25 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    {{if eq .Values.service.type "NodePort" -}}
+    - port: {{ .Values.service.externalPort }}
+      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      name: {{ .Values.service.name }}
+    {{- else -}}
+    - port: {{ .Values.service.externalPort }}
+      targetPort: {{ .Values.service.internalPort }}
+      name: {{ .Values.service.name }}
+    {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
\ No newline at end of file
diff --git a/kubernetes/sdc/charts/sdc-kb/values.yaml b/kubernetes/sdc/charts/sdc-kb/values.yaml
new file mode 100644 (file)
index 0000000..b1796f4
--- /dev/null
@@ -0,0 +1,73 @@
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
+  nodePortPrefix: 302
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:1.1.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+#################################################################
+# Application configuration defaults.
+#################################################################
+# application image
+repository: nexus3.onap.org:10001
+image: onap/sdc-kibana:1.2-STAGING-latest
+pullPolicy: Always
+
+# flag to enable debugging - application support required
+debugEnabled: false
+
+# default number of instances
+replicaCount: 1
+
+nodeSelector: {}
+
+affinity: {}
+
+# probe configuration parameters
+liveness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+  # necessary to disable liveness probe when setting breakpoints
+  # in debugger so K8s doesn't restart unresponsive container
+  enabled: true
+
+readiness:
+  initialDelaySeconds: 10
+  periodSeconds: 10
+
+service:
+  type: ClusterIP
+  name: sdc-kb
+  externalPort: 5601
+  internalPort: 5601
+
+
+sdc-es:
+  service:
+    name: sdc-es
+
+ingress:
+  enabled: false
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  #
+  # Example:
+  # Configure resource requests and limits
+  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  # Minimum memory for development is 2 CPU cores and 4GB memory
+  # Minimum memory for production is 4 CPU cores and 8GB memory
+#resources:
+#  limits:
+#    cpu: 2
+#    memory: 4Gi
+#  requests:
+#    cpu: 2
+#    memory: 4Gi
diff --git a/kubernetes/sdc/requirements.yaml b/kubernetes/sdc/requirements.yaml
new file mode 100644 (file)
index 0000000..acca8ef
--- /dev/null
@@ -0,0 +1,4 @@
+dependencies:
+  - name: common
+    version: ~2.0.0
+    repository: '@local'
\ No newline at end of file
index d35590e..5ae381c 100755 (executable)
@@ -1,41 +1,58 @@
 {
-   "name": "AUTO",
-   "description": "OpenSource-AUTO",
-   "cookbook_versions": {
-            "Deploy-SDandC": "= 1.0.0"
-   },
-   "json_class": "Chef::Environment",
-   "chef_type": "environment",
+    "name": "{{ .Values.global.env.name }}",
+    "description": "OpenSource-{{ .Values.global.env.name }}",
+    "cookbook_versions": {
+        "Deploy-SDandC": "= 1.0.0"
+    },
+    "json_class": "Chef::Environment",
+    "chef_type": "environment",
 
-   "default_attributes": {
-        "CS_VIP": "sdc-cs.{{.Values.nsPrefix}}",
-        "BE_VIP": "sdc-be.{{.Values.nsPrefix}}",
-        "FE_VIP": "sdc-fe.{{.Values.nsPrefix}}",
-        "ES_VIP": "sdc-es.{{.Values.nsPrefix}}",
+    "default_attributes": {
+        "disableHttp": false,
+        "CS_VIP": "{{.Release.Name}}-sdc-cs.{{include "common.namespace" .}}",
+        "BE_VIP": "{{.Release.Name}}-sdc-be.{{include "common.namespace" .}}",
+        "FE_VIP": "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}",
+        "ES_VIP": "{{.Release.Name}}-sdc-es.{{include "common.namespace" .}}",
+        "KB_VIP": "{{.Release.Name}}-sdc-kb.{{include "common.namespace" .}}",
         "interfaces": {
             "application": "eth0",
             "private": "eth0"
         },
-                "ECompP": {
-                    "ecomp_rest_url": "http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/auxapi",
-            "ueb_url_list": "dmaap.{{.Values.nsPrefix}}, dmaap.{{.Values.nsPrefix}}",
+        "ECompP": {
+            "ecomp_rest_url": "http://{{.Release.Name}}-portalapps.{{include "common.namespace" .}}:8989/ONAPPORTAL/auxapi",
+            "ueb_url_list": "{{.Release.Name}}-dmaap.{{include "common.namespace" .}}, {{.Release.Name}}-dmaap.{{include "common.namespace" .}}",
             "app_secret": "XftIATw9Jr3VzAcPqt3NnJOu",
             "app_key": "x9UfO7JsDn8BESVX",
             "inbox_name": "ECOMP-PORTAL-INBOX",
-            "ecomp_redirect_url": "http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/login.htm",
+            "ecomp_redirect_url": "http://{{.Release.Name}}-portalapps.{{include "common.namespace" .}}:8989/ONAPPORTAL/login.htm",
             "app_topic_name": "ECOMP-PORTAL-OUTBOX-SDC1",
-                        "decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
+            "decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
         },
         "UEB": {
             "PublicKey": "iPIxkpAMI8qTcQj8",
             "SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
-            "fqdn": ["dmaap.{{.Values.nsPrefix}}", "dmaap.{{.Values.nsPrefix}}"]
+            "fqdn": ["{{.Release.Name}}-dmaap.{{include "common.namespace" .}}", "{{.Release.Name}}-dmaap.{{include "common.namespace" .}}"]
         },
         "Nodes": {
-            "CS": "sdc-cs.{{.Values.nsPrefix}}",
-            "BE": "sdc-be.{{.Values.nsPrefix}}",
-            "FE": "sdc-fe.{{.Values.nsPrefix}}",
-            "ES": "sdc-es.{{.Values.nsPrefix}}"
+            "CS": "{{.Release.Name}}-sdc-cs.{{include "common.namespace" .}}",
+            "BE": "{{.Release.Name}}-sdc-be.{{include "common.namespace" .}}",
+            "FE": "{{.Release.Name}}-sdc-fe.{{include "common.namespace" .}}",
+            "ES": "{{.Release.Name}}-sdc-es.{{include "common.namespace" .}}",
+            "KB": "{{.Release.Name}}-sdc-kb.{{include "common.namespace" .}}"
+        },
+        "Plugins": {
+            "DCAE": {
+                "dcae_discovery_url": "{{.Values.config.environment.dcaeUrl}}",
+                "dcae_source_url": "{{.Values.config.environment.dcaeUrl}}"
+            },
+            "WORKFLOW": {
+                "workflow_discovery_url": "{{.Values.config.environment.workflowUrl}}",
+                "workflow_source_url": "{{.Values.config.environment.workflowUrl}}"
+            }
+        },
+        "VnfRepo": {
+            "vnfRepoPort": "{{.Values.config.environment.vnfRepoPort}}",
+            "vnfRepoHost": "{{.Values.config.environment.vnfRepoHost}}"
         }
     },
     "override_attributes": {
             "cache_dir": "/var/lib/cassandra/saved_caches",
             "log_file": "/var/lib/cassandra/log/system.log",
             "phi_convict_threshold": "8",
-            "commitlog_dir": "/var/lib/cassandra/commitlog"
+            "commitlog_dir": "/var/lib/cassandra/commitlog",
+            "socket_read_timeout": "20000",
+            "socket_connect_timeout": "20000",
+            "titan_connection_timeout": "10000"
         }
     }
-}
+}
\ No newline at end of file
diff --git a/kubernetes/sdc/resources/config/environments/Template.json b/kubernetes/sdc/resources/config/environments/Template.json
deleted file mode 100755 (executable)
index 247e990..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-   "name": "xxx",
-   "description": "OpenSource-xxx",
-   "cookbook_versions": {
-            "Deploy-SDandC": "= 1.0.0"
-   },
-   "json_class": "Chef::Environment",
-   "chef_type": "environment",
-
-   "default_attributes": {
-        "CS_VIP": "yyy",
-        "BE_VIP": "yyy",
-        "FE_VIP": "yyy",
-        "ES_VIP": "yyy",
-        "interfaces": {
-            "application": "eth0",
-            "private": "eth1"
-        },
-               "ECompP": {
-                   "ecomp_rest_url": "http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/auxapi",
-            "ueb_url_list": "dmaap.{{.Values.nsPrefix}},dmaap.{{.Values.nsPrefix}}", 
-            "app_secret": "XftIATw9Jr3VzAcPqt3NnJOu", 
-            "app_key": "x9UfO7JsDn8BESVX", 
-            "inbox_name": "ECOMP-PORTAL-INBOX", 
-            "ecomp_redirect_url": "http://portalapps.{{.Values.nsPrefix}}:8989/ONAPPORTAL/login.htm", 
-            "app_topic_name": "ECOMP-PORTAL-OUTBOX-SDC1",
-                       "decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
-        }, 
-        "UEB": {
-            "PublicKey": "iPIxkpAMI8qTcQj8",
-            "SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
-            "fqdn": ["dmaap.{{.Values.nsPrefix}}", "dmaap.{{.Values.nsPrefix}}"]
-        },
-        "Nodes": {
-            "CS": "yyy",
-            "BE": "yyy",
-            "FE": "yyy",
-            "ES": "yyy"
-        }
-    },
-    "override_attributes": {
-        "FE": {
-            "http_port": "8181",
-            "https_port": "9443"
-        },
-        "BE": {
-            "http_port": "8080",
-            "https_port": "8443"
-        },
-        "elasticsearch": {
-            "cluster_name": "SDC-ES-",
-            "ES_path_home": "/usr/share/elasticsearch",
-            "ES_path_data": "/usr/share/elasticsearch/data",
-            "num_of_replicas": "0",
-            "num_of_shards": "1"
-        },
-
-        "cassandra": {
-            "concurrent_reads": "32",
-            "num_tokens": "256",
-            "data_dir": "/var/lib/cassandra/data",
-            "hinted_handoff_enabled": "true",
-            "cassandra_user": "asdc_user",
-            "cassandra_password": "Aa1234%^!",
-            "concurrent_writes": "32",
-            "cluster_name": "SDC-CS-",
-            "multithreaded_compaction": "false",
-            "cache_dir": "/var/lib/cassandra/saved_caches",
-            "log_file": "/var/lib/cassandra/log/system.log",
-            "phi_convict_threshold": "8",
-            "commitlog_dir": "/var/lib/cassandra/commitlog"
-        }
-    }
-}
-
diff --git a/kubernetes/sdc/resources/config/sdc-fe/FE_2_setup_configuration.rb b/kubernetes/sdc/resources/config/sdc-fe/FE_2_setup_configuration.rb
deleted file mode 100755 (executable)
index 5c233a2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-jetty_base="/var/lib/jetty"
-template "catalog-fe-config" do
-   path "#{jetty_base}/config/catalog-fe/configuration.yaml"
-   source "FE-configuration.yaml.erb"
-   owner "jetty"
-   group "jetty"
-   mode "0755"
-   variables({
-      :fe_host_ip   => node['HOST_IP'],
-      :be_host_ip   => "sdc-be.{{.Values.nsPrefix}}",
-      :catalog_port => node['BE'][:http_port],
-      :ssl_port     => node['BE'][:https_port]
-   })
-end
-
-template "onboarding-fe-config" do
- path "#{jetty_base}/config/onboarding-fe/onboarding_configuration.yaml"
- source "FE-onboarding-configuration.yaml.erb"
- owner "jetty"
- group "jetty"
- mode "0755"
- variables({
-    :catalog_ip   => node['HOST_IP'],
-    :catalog_port => node['BE'][:http_port],
-    :ssl_port     => node['BE'][:https_port]
-})
-end
diff --git a/kubernetes/sdc/templates/all-services.yaml b/kubernetes/sdc/templates/all-services.yaml
deleted file mode 100644 (file)
index 1f0a9a7..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcEs }}
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: sdc-es
-  name: sdc-es
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  ports:
-  - name: sdc-es-port-9200
-    port: 9200
-  - name: sdc-es-port-9300
-    port: 9300
-  selector:
-    app: sdc-es
-  clusterIP: None
-#{{ end }}
-#{{ if not .Values.disableSdcSdcCs }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: sdc-cs
-  name: sdc-cs
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  ports:
-  - name: sdc-cs-port-9042
-    port: 9042
-  - name: sdc-cs-port-9160
-    port: 9160
-  selector:
-    app: sdc-cs
-  clusterIP: None
-#{{ end }}
-#{{ if not .Values.disableSdcSdcKb }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: sdc-kb
-  name: sdc-kb
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  ports:
-  - name: sdc-kb-port-5601
-    port: 5601
-  selector:
-    app: sdc-kb
-  clusterIP: None
-#{{ end }}
-#{{ if not .Values.disableSdcSdcBe }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: sdc-be
-  name: sdc-be
-  namespace: "{{ .Values.nsPrefix }}"
-  annotations:
-    msb.onap.org/service-info: '[
-      {
-          "serviceName": "sdc",
-          "version": "v1",
-          "url": "/sdc/v1",
-          "protocol": "REST",
-          "port": "8080",
-          "visualRange":"1"
-      },
-      {
-          "serviceName": "sdc-deprecated",
-          "version": "v1",
-          "url": "/sdc/v1",
-          "protocol": "REST",
-          "port": "8080",
-          "visualRange":"1",
-          "path":"/sdc/v1"
-      }
-      ]'
-spec:
-  ports:
-  - name: sdc-be-port-8443
-    nodePort: {{ .Values.nodePortPrefix }}04
-    port: 8443
-  - name: sdc-be-port-8080
-    nodePort: {{ .Values.nodePortPrefix }}05
-    port: 8080
-  selector:
-    app: sdc-be
-  type: NodePort
-#{{ end }}
-#{{ if not .Values.disableSdcSdcFe }}
----
-apiVersion: v1
-kind: Service
-metadata:
-  labels:
-    app: sdc-fe
-  name: sdc-fe
-  namespace: "{{ .Values.nsPrefix }}"
-  annotations:
-    msb.onap.org/service-info: '[
-      {
-          "serviceName": "sdc-gui",
-          "version": "v1",
-          "url": "/sdc1",
-          "protocol": "UI",
-          "port": "8181",
-          "visualRange":"0|1"
-      }
-      ]'
-spec:
-  ports:
-  - name: sdc-fe-port-9443
-    nodePort: {{ .Values.nodePortPrefix }}07
-    port: 9443
-  - name: sdc-fe-port-8181
-    nodePort: {{ .Values.nodePortPrefix }}06
-    port: 8181
-  selector:
-    app: sdc-fe
-  type: NodePort
-#{{ end }}
\ No newline at end of file
diff --git a/kubernetes/sdc/templates/configmap.yaml b/kubernetes/sdc/templates/configmap.yaml
new file mode 100644 (file)
index 0000000..f09c482
--- /dev/null
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Release.Name }}-sdc-environments-configmap
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/environments/*").AsConfig . | indent 2 }}
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Release.Name }}-sdc-filebeat-configmap
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/config/log/filebeat/*").AsConfig . | indent 2 }}
\ No newline at end of file
diff --git a/kubernetes/sdc/templates/sdc-be.yaml b/kubernetes/sdc/templates/sdc-be.yaml
deleted file mode 100644 (file)
index 9cf036a..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcBe }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: sdc-be
-  name: sdc-be
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: sdc-be
-  template:
-    metadata:
-      labels:
-        app: sdc-be
-      name: sdc-be
-    spec:
-      initContainers:
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - sdc-es
-        - --container-name
-        - sdc-cs
-        - --container-name
-        - sdc-kb
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-be-readiness
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - dmaap
-        env:
-        - name: NAMESPACE
-          value: {{ .Values.nsPrefix }}
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-dmaap-readiness
-      containers:
-      - env:
-        - name: ENVNAME
-          value: AUTO
-        - name: HOST_IP
-          valueFrom:
-            fieldRef:
-              fieldPath: status.podIP
-        image: {{ .Values.image.sdcBackend }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-be
-        volumeMounts:
-        - mountPath: /usr/share/elasticsearch/data/
-          name: sdc-sdc-es-es
-        - mountPath: /root/chef-solo/environments/
-          name: sdc-environments
-        - mountPath: /etc/localtime
-          name: sdc-localtime
-          readOnly: true
-        - mountPath: /var/lib/jetty/logs
-          name: sdc-logs
-        - mountPath: /var/log/onap
-          name: sdc-logs-2
-        - mountPath: /tmp/logback.xml
-          name: sdc-logback
-        lifecycle:
-          postStart:
-            exec:
-              command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/var/lib/jetty/config/catalog-be/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
-        ports:
-        - containerPort: 8443
-        - containerPort: 8080
-        readinessProbe:
-          tcpSocket:
-            port: 8443
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      - image: {{ .Values.image.filebeat }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: filebeat-onap
-        volumeMounts:
-        - mountPath: /usr/share/filebeat/filebeat.yml
-          name: filebeat-conf
-          subPath: filebeat.yml
-        - mountPath: /var/log/onap
-          name: sdc-logs-2
-        - mountPath: /usr/share/filebeat/data
-          name: sdc-data-filebeat
-      volumes:
-        - name: filebeat-conf
-          configMap:
-           name: sdc-filebeat-configmap
-        - name: sdc-logs-2
-          emptyDir: {}
-        - name: sdc-data-filebeat
-          emptyDir: {}
-        - name: sdc-logback
-          configMap:
-            name : sdc-log-be-configmap
-        - name: sdc-sdc-es-es
-          hostPath:
-            path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/sdc-es/ES
-        - name: sdc-environments
-          configMap:
-            name: sdc-environments-configmap
-            defaultMode: 0755
-        - name: sdc-localtime
-          hostPath:
-            path:  /etc/localtime
-        - name:  sdc-logs
-          hostPath:
-            path:  {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/logs
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/sdc/templates/sdc-cs.yaml b/kubernetes/sdc/templates/sdc-cs.yaml
deleted file mode 100644 (file)
index d41d5f7..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcCs }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: sdc-cs
-  name: sdc-cs
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: sdc-cs
-  template:
-    metadata:
-      labels:
-        app: sdc-cs
-      name: sdc-cs
-    spec:
-      initContainers:
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - sdc-es
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-cs-readiness
-      containers:
-      - env:
-        - name: ENVNAME
-          value: AUTO
-        - name: HOST_IP
-          valueFrom:
-            fieldRef:
-              fieldPath: status.podIP
-        - name: ES_HEAP_SIZE
-          value: "1024M"
-        image: {{ .Values.image.sdcCassandra }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-cs
-        volumeMounts:
-        - mountPath: /var/lib/cassandra/
-          name: sdc-sdc-cs-cs
-        - mountPath: /root/chef-solo/environments/
-          name: sdc-environments
-        - mountPath: /etc/localtime
-          name: sdc-localtime
-          readOnly: true
-        - mountPath: /var/lib/jetty/logs
-          name: sdc-logs
-        ports:
-        - containerPort: 9042
-        - containerPort: 9160
-        readinessProbe:
-          tcpSocket:
-            port: 9160
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      volumes:
-        - name: sdc-sdc-cs-cs
-          persistentVolumeClaim:
-            claimName: sdc-cs-db
-        - name: sdc-environments
-          configMap:
-            name : sdc-environments-configmap
-            defaultMode: 0755
-        - name: sdc-localtime
-          hostPath:
-            path:  /etc/localtime
-        - name:  sdc-logs
-          hostPath:
-            path:  {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/logs
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/sdc/templates/sdc-es.yaml b/kubernetes/sdc/templates/sdc-es.yaml
deleted file mode 100644 (file)
index 0c3f3de..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcEs }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: sdc-es
-  name: sdc-es
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: sdc-es
-  template:
-    metadata:
-      labels:
-        app: sdc-es
-      name: sdc-es
-    spec:
-      initContainers:
-      - name: sdc-logs-init
-        image: {{ .Values.image.ubuntuInit }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        command:
-        - /bin/bash
-        - "-c"
-        - |
-          mkdir -p /ubuntu-init/ASDC/ASDC-ES/
-          mkdir -p /ubuntu-init/ASDC/ASDC-CS/
-          mkdir -p /ubuntu-init/ASDC/ASDC-KB/
-          mkdir -p /ubuntu-init/ASDC/ASDC-BE/
-          mkdir -p /ubuntu-init/ASDC/ASDC-FE/
-          chmod -R 777 /ubuntu-init/
-      containers:
-      - image: {{ .Values.image.sdcElasticsearch }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-es
-        env:
-        - name: ENVNAME
-          value: "AUTO"
-        - name: HOST_IP
-          valueFrom:
-            fieldRef:
-              fieldPath: status.podIP
-        - name: ES_HEAP_SIZE
-          value: "1024M"
-        volumeMounts:
-        - name: sdc-logs
-          mountPath: /ubuntu-init/
-        - mountPath: /root/chef-solo/environments/
-          name: sdc-environments
-        - mountPath: /etc/localtime
-          name: sdc-localtime
-          readOnly: true
-        - mountPath: /var/lib/jetty/logs
-          name: sdc-logs
-        ports:
-        - containerPort: 9200
-        - containerPort: 9300
-        readinessProbe:
-          tcpSocket:
-            port: 9200
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      volumes:
-        - name: sdc-environments
-          configMap :
-            name : sdc-environments-configmap
-            defaultMode: 0755
-        - name: sdc-localtime
-          hostPath:
-            path:  /etc/localtime
-        - name:  sdc-logs
-          hostPath:
-            path:  {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/logs
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/sdc/templates/sdc-fe.yaml b/kubernetes/sdc/templates/sdc-fe.yaml
deleted file mode 100644 (file)
index b61e11f..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcFe }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: sdc-fe
-  name: sdc-fe
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: sdc-fe
-  template:
-    metadata:
-      labels:
-        app: sdc-fe
-      name: sdc-fe
-    spec:
-      initContainers:
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - sdc-es
-        - --container-name
-        - sdc-cs
-        - --container-name
-        - sdc-kb
-        - --container-name
-        - sdc-be
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-fe-readiness
-      containers:
-      - name: sdc-fe
-        env:
-        - name: ENVNAME
-          value: AUTO
-        - name: HOST_IP
-          valueFrom:
-            fieldRef:
-              fieldPath: status.podIP
-        image: {{ .Values.image.sdcFrontend }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        volumeMounts:
-        - mountPath: /usr/share/elasticsearch/data/
-          name: sdc-sdc-es-es
-        - mountPath: /root/chef-solo/environments/
-          name: sdc-environments
-        - mountPath: /etc/localtime
-          name: sdc-localtime
-          readOnly: true
-        - mountPath: /var/lib/jetty/logs
-          name: sdc-logs
-        - mountPath: /var/log/onap
-          name: sdc-logs-2
-        - mountPath: /root/chef-solo/cookbooks/sdc-catalog-fe/recipes/FE_2_setup_configuration.rb
-          name: sdc-fe-config
-          subPath: FE_2_setup_configuration.rb
-        - mountPath: /tmp/logback.xml
-          name: sdc-logback
-        lifecycle:
-          postStart:
-            exec:
-              command: ["/bin/sh", "-c", "export LOG=wait_logback.log; touch $LOG; export SRC=/tmp/logback.xml; export DST=/var/lib/jetty/config/catalog-fe/; while [ ! -e $DST ]; do echo 'Waiting for $DST...' >> $LOG; sleep 5; done; sleep 2; /bin/cp -f $SRC $DST; echo 'Done' >> $LOG"]
-        ports:
-        - containerPort: 9443
-        - containerPort: 8181
-        readinessProbe:
-          tcpSocket:
-            port: 8181
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      - image: {{ .Values.image.filebeat }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: filebeat-onap
-        volumeMounts:
-        - mountPath: /usr/share/filebeat/filebeat.yml
-          name: filebeat-conf
-          subPath: filebeat.yml
-        - mountPath: /var/log/onap
-          name: sdc-logs-2
-        - mountPath: /usr/share/filebeat/data
-          name: sdc-data-filebeat
-      volumes:
-        - name: filebeat-conf
-          configMap:
-           name : sdc-filebeat-configmap
-        - name: sdc-logs-2
-          emptyDir: {}
-        - name: sdc-data-filebeat
-          emptyDir: {}
-        - name: sdc-logback
-          configMap:
-           name : sdc-log-fe-configmap
-        - name: sdc-sdc-es-es
-          hostPath:
-            path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/sdc-es/ES
-        - name: sdc-environments
-          configMap:
-            name: sdc-environments-configmap
-            defaultMode: 0755
-        - name: sdc-localtime
-          hostPath:
-            path:  /etc/localtime
-        - name:  sdc-logs
-          hostPath:
-            path:  {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/logs
-        - name:  sdc-fe-config
-          configMap:
-            name: sdc-fe-configmap
-            defaultMode: 0755
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/sdc/templates/sdc-kb.yaml b/kubernetes/sdc/templates/sdc-kb.yaml
deleted file mode 100644 (file)
index 122781b..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#{{ if not .Values.disableSdcSdcKb }}
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  labels:
-    app: sdc-kb
-  name: sdc-kb
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  selector:
-    matchLabels:
-      app: sdc-kb
-  template:
-    metadata:
-      labels:
-        app: sdc-kb
-      name: sdc-kb
-    spec:
-      initContainers:
-      - command:
-        - /root/ready.py
-        args:
-        - --container-name
-        - sdc-es
-        - --container-name
-        - sdc-cs
-        env:
-        - name: NAMESPACE
-          valueFrom:
-            fieldRef:
-              apiVersion: v1
-              fieldPath: metadata.namespace
-        image: {{ .Values.image.readiness }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-kb-readiness
-      containers:
-      - env:
-        - name: ENVNAME
-          value: AUTO
-        - name: ELASTICSEARCH_URL
-          value: http://sdc-es:9200
-        image: {{ .Values.image.sdcKibana }}
-        imagePullPolicy: {{ .Values.pullPolicy }}
-        name: sdc-kb
-        volumeMounts:
-        - mountPath: /root/chef-solo/environments/
-          name: sdc-environments
-        - mountPath: /etc/localtime
-          name: sdc-localtime
-          readOnly: true
-        - mountPath: /var/lib/jetty/logs
-          name: sdc-logs
-        ports:
-        - containerPort: 5601
-        readinessProbe:
-          tcpSocket:
-            port: 5601
-          initialDelaySeconds: 5
-          periodSeconds: 10
-      volumes:
-        - name: sdc-environments
-          configMap:
-            name: sdc-environments-configmap
-            defaultMode: 0755
-        - name: sdc-localtime
-          hostPath:
-            path:  /etc/localtime
-        - name:  sdc-logs
-          hostPath:
-            path:  {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/logs
-      imagePullSecrets:
-      - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-#{{ end }}
diff --git a/kubernetes/sdc/templates/sdc-pv-pvc.yaml b/kubernetes/sdc/templates/sdc-pv-pvc.yaml
deleted file mode 100644 (file)
index d4dbc1b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-*/}}
-
-#{{ if not .Values.disableSdcSdcCs }}
-apiVersion: v1
-kind: PersistentVolume
-metadata:
-  name: "{{ .Values.nsPrefix }}-sdc"
-  namespace: "{{ .Values.nsPrefix }}"
-  labels:
-    name: "{{ .Values.nsPrefix }}-sdc"
-spec:
-  capacity:
-    storage: 2Gi
-  accessModes:
-    - ReadWriteMany
-  persistentVolumeReclaimPolicy: Retain
-  hostPath:
-    path: {{ .Values.dataRootDir }}/{{ .Values.nsPrefix }}/sdc/sdc-cs/CS
----
-kind: PersistentVolumeClaim
-apiVersion: v1
-metadata:
-  name: sdc-cs-db
-  namespace: "{{ .Values.nsPrefix }}"
-spec:
-  accessModes:
-    - ReadWriteMany
-  resources:
-    requests:
-      storage: 2Gi
-  selector:
-    matchLabels:
-      name: "{{ .Values.nsPrefix }}-sdc"
-#{{ end }}
index 40b3ec3..90a4d28 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-nsPrefix: onap
-pullPolicy: Always
-nodePortPrefix: 302
-dataRootDir: /dockerdata-nfs
-image:
-  readiness: oomk8s/readiness-check:1.1.0
-  sdcKibana: nexus3.onap.org:10001/openecomp/sdc-kibana:v1.1.0
-  sdcFrontend: nexus3.onap.org:10001/openecomp/sdc-frontend:v1.1.0
-  sdcElasticsearch: nexus3.onap.org:10001/openecomp/sdc-elasticsearch:v1.1.0
-  sdcCassandra: nexus3.onap.org:10001/openecomp/sdc-cassandra:v1.1.0
-  sdcBackend: nexus3.onap.org:10001/openecomp/sdc-backend:v1.1.0
-  filebeat: docker.elastic.co/beats/filebeat:5.5.0
-  ubuntuInit: oomk8s/ubuntu-init:1.0.0
+global:
+  persistence: {}
+  env:
+    name: AUTO
+
 config:
   logstashServiceName: log-ls
   logstashPort: 5044
+  environment:
+    dcaeUrl: 10.0.2.15
+    workflowUrl: 10.0.2.15
+    vnfRepoPort: 8702
+    vnfRepoHost: 192.168.50.5
+
+
+
+sdc-es:
+  service:
+    name: sdc-es
\ No newline at end of file
index 146ad01..0b3dde5 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index 7d2eed1..ad303db 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../../camunda/mariadb_engine_7.7.3-ee.sql
 
 --
index b5063de..2bb939b 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index 1500105..3206efc 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 SOURCE ../default/create_mso_db-default.sql
 
 USE `mso_requests`;
index b9b8dd6..b7adb4e 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 DROP DATABASE IF EXISTS `camundabpmn`;
 
 CREATE DATABASE `camundabpmn`;
index 3658c6c..40fda9a 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 USE camundabpmn;
 
 INSERT INTO `act_id_group` (`ID_`, `REV_`, `NAME_`, `TYPE_`) VALUES ('camunda-admin',1,'camunda BPM Administrators','SYSTEM');
index ca002fb..d05bc49 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 
     alter table HEAT_TEMPLATE_PARAMS 
         drop 
index f64548e..eff696d 100644 (file)
@@ -1,3 +1,18 @@
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 
     drop table if exists INFRA_ACTIVE_REQUESTS;
 
index 57b797d..8323a4a 100644 (file)
@@ -1,22 +1,18 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
+/* Copyright © 2017 AT&T, Amdocs, Bell Canada
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 CREATE TABLE IF NOT EXISTS `vid_openecomp_epsdk`.`schema_info` (
    `SCHEMA_ID` VARCHAR(25) NOT NULL,
    `SCHEMA_DESC` VARCHAR(75) NOT NULL,