Add new Kubernetes resource kind: "CustomResourceDefinition" 19/57219/8
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Tue, 8 May 2018 16:42:08 +0000 (17:42 +0100)
committerRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Thu, 14 Jun 2018 07:15:35 +0000 (07:15 +0000)
commitfa269e3789d19f1335ae9207817203c6ad58cf42
treed08c2f7fdd09d2e1a7a8913732ed8c1f435937ea
parent3b43905b749b65bd229db8f3f1ce10c29f9b9e37
Add new Kubernetes resource kind: "CustomResourceDefinition"

Custom resource definition example in Kubernetes:
  apiVersion: "apiextensions.k8s.io/v1beta"
  kind: CustomResourceDefinition
  metadata:
    name: networks.kubernetes.com
  spec:
    group: kubernetes.com
    version: v1
    scope: Namespaced
    names:
      plural: networks
      singular: network
      kind: Network

Proposed Kubernetes context network definition:
  context:
    custom_resources:
      - name: network        # name of the resource (singular)
        version: v1          # optional, "v1" by default
        scope: Namespaced    # optional, "Namespaced" by default

From this definition, we will extract the Kubernetes parameters:
  - metadata.name: custom_resources.name + "s" + context_name + ".com"
  - spec.group: context_name + ".com"
  - spec.scope: custom_resources.scope
  - spec.version: custom_resources.version
  - spec.names.plural: custom_resources.name + "s"
  - spec.names.singular: custom_resources.name
  - spec.names.kind: custom_resources.name with first capital letter

[1] https://kubernetes.io/docs/concepts/api-extension/custom-resources/

JIRA: YARDSTICK-1163

Change-Id: If8980dc3f6ddf9c6949bf15be8011aa98482ddc9
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
yardstick/benchmark/contexts/kubernetes.py
yardstick/common/constants.py
yardstick/common/exceptions.py
yardstick/common/kubernetes_utils.py
yardstick/orchestrator/kubernetes.py
yardstick/tests/unit/common/test_kubernetes_utils.py [new file with mode: 0644]
yardstick/tests/unit/orchestrator/test_kubernetes.py