Esempio n. 1
0
def test_adjust_settings_mem_request_min_limit():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-settings-mem
    spec:
      selector:
        matchLabels:
          app: test-adjust-settings-mem
      template:
        metadata:
          labels:
            app: test-adjust-settings-mem
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              resources:
                limits:
                  memory: .25Gi
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-settings-mem:
            settings:
              mem:
                min: .125
                max: .5
                selector: request_min_limit
                limit_min: .1875
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .125}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .125
    # assert non-selector resource is cleared
    all_deps = k_get('deployment')
    dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-mem')))
    assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('limits', {}).get('memory') == '192Mi'
    adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .25}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .25
    all_deps = k_get('deployment')
    dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-mem')))
    assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('limits', {}).get('memory') == '256Mi'
    cleanup_deployment(dep)
Esempio n. 2
0
def test_adjust_specific_container():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-specific-container
    spec:
      selector:
        matchLabels:
          app: test-adjust-specific-container
      template:
        metadata:
          labels:
            app: test-adjust-specific-container
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              env:
                - name: ANYTHING
                  value: everything
            - name: collateral
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              env:
                - name: ANYTHING
                  value: nothing
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-specific-container/collateral:
            env:
              ANYTHING:
                values:
                  - everything
                  - nothing
    """
    setup_deployment(dep)
    adjust_dep(
        cfg, {
            'application': {
                'components': {
                    'test-adjust-specific-container/collateral': {
                        'settings': {
                            'ANYTHING': {
                                'value': 'everything'
                            }
                        }
                    }
                }
            }
        })
    desc = query_dep(cfg)
    assert (desc['application']['components']
            ['test-adjust-specific-container/collateral']['settings']
            ['ANYTHING']['value'] == 'everything')
    cleanup_deployment(dep)
Esempio n. 3
0
def test_adjust_settings_cpu_limits():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-settings-cpu
    spec:
      selector:
        matchLabels:
          app: test-adjust-settings-cpu
      template:
        metadata:
          labels:
            app: test-adjust-settings-cpu
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              resources:
                requests:
                  cpu: .3
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-settings-cpu:
            settings:
              cpu:
                min: .125
                max: .5
                selector: limit
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-cpu': {'settings': {'cpu': {'value': .25}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-cpu']['settings']['cpu']['value'] == .25
    # assert non-selector resource is cleared
    all_deps = k_get('deployment')
    dep_state = next(iter((i for i in all_deps['items'] if i['metadata']['name'] == 'test-adjust-settings-cpu')))
    assert dep_state['spec']['template']['spec']['containers'][0]['resources'].get('requests', {}).get('cpu') is None
    adjust_dep(cfg, {'application': {'components': {'test-adjust-settings-cpu': {'settings': {'cpu': {'value': .125}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-cpu']['settings']['cpu']['value'] == .125
    cleanup_deployment(dep)
Esempio n. 4
0
def test_adjust_env_var_setting():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-env-var-setting
    spec:
      selector:
        matchLabels:
          app: test-adjust-env-var-setting
      template:
        metadata:
          labels:
            app: test-adjust-env-var-setting
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              env:
                - name: ANYTHING
                  value: everything
                - name: NODE_NAME
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-env-var-setting:
            env:
              ANYTHING:
                values:
                  - everything
                  - nothing
    """
    setup_deployment(dep)
    adjust_dep(
        cfg, {
            'application': {
                'components': {
                    'test-adjust-env-var-setting': {
                        'settings': {
                            'ANYTHING': {
                                'value': 'nothing'
                            }
                        }
                    }
                }
            }
        })
    desc = query_dep(cfg)
    assert (desc['application']['components']['test-adjust-env-var-setting']
            ['settings']['ANYTHING']['value'] == 'nothing')
    cleanup_deployment(dep)
Esempio n. 5
0
def test_encoder_adjust_command():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-encoder-adjust-command
    spec:
      selector:
        matchLabels:
          app: test-encoder-adjust-command
      template:
        metadata:
          labels:
            app: test-encoder-adjust-command
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600", "&&", "echo", "-XX:GCTimeRatio=69"]
    """
    cfg = """
    k8s:
      application:
        components:
          test-encoder-adjust-command:
            command:
              encoder:
                name: jvm
                before:
                  - /bin/sh
                  - -c
                  - sleep 3600
                  - "&&"
                  - echo
                settings:
                  GCTimeRatio:
                    min: 9
                    max: 99
                    step: 10
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {
        'components': {'test-encoder-adjust-command': {'settings': {'GCTimeRatio': {'value': 19}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-encoder-adjust-command']['settings']['GCTimeRatio']['value'] == 19
    cleanup_deployment(dep)
Esempio n. 6
0
def test_encoder_adjust_env_var():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-encoder-adjust-env-var
    spec:
      selector:
        matchLabels:
          app: test-encoder-adjust-env-var
      template:
        metadata:
          labels:
            app: test-encoder-adjust-env-var
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              env:
                - name: JAVA_OPTS
                  value: -XX:GCTimeRatio=69
    """
    cfg = """
    k8s:
      application:
        components:
          test-encoder-adjust-env-var:
            env:
              JAVA_OPTS:
                encoder:
                  name: jvm
                  settings:
                    GCTimeRatio:
                      min: 9
                      max: 99
                      step: 10
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {
        'components': {'test-encoder-adjust-env-var': {'settings': {'GCTimeRatio': {'value': 19}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-encoder-adjust-env-var']['settings']['GCTimeRatio']['value'] == 19
    cleanup_deployment(dep)
Esempio n. 7
0
def test_adjust_settings_mem():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-settings-mem
    spec:
      selector:
        matchLabels:
          app: test-adjust-settings-mem
      template:
        metadata:
          labels:
            app: test-adjust-settings-mem
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              resources:
                limits:
                  memory: .25Gi
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-settings-mem:
            settings:
              mem:
                min: .1
                max: .5
                step: .1
    """
    setup_deployment(dep)
    adjust_dep(cfg,
               {'application': {'components': {'test-adjust-settings-mem': {'settings': {'mem': {'value': .125}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-mem']['settings']['mem']['value'] == .125
    cleanup_deployment(dep)
Esempio n. 8
0
def test_adjust_settings_deployment_config():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-settings-cpu
    spec:
      selector:
        matchLabels:
          app: test-adjust-settings-cpu
      template:
        metadata:
          labels:
            app: test-adjust-settings-cpu
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              resources:
                limits:
                  cpu: .3
    """
    cfg = """
    k8s:
      application:
        components:
          canary:
            deployment: test-adjust-settings-cpu/main
            settings:
              cpu:
                min: .1
                max: .5
                step: .1
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {'components': {'canary': {'settings': {'cpu': {'value': .2}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['canary']['settings']['cpu']['value'] == .2
    cleanup_deployment(dep)
Esempio n. 9
0
def test_adjust_settings_replicas():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-adjust-settings-replicas
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: test-adjust-settings-replicas
      template:
        metadata:
          labels:
            app: test-adjust-settings-replicas
        spec:
          containers:
          - name: main
            image: alpine:latest
            command: ["/bin/sh", "-c", "sleep 3600"]
    """
    cfg = """
    k8s:
      application:
        components:
          test-adjust-settings-replicas:
            settings:
              replicas:
                min: 1
                max: 2
                step: 1
    """
    setup_deployment(dep)
    adjust_dep(cfg,
               {'application': {
                   'components': {'test-adjust-settings-replicas': {'settings': {'replicas': {'value': 1}}}}}})
    desc = query_dep(cfg)
    assert desc['application']['components']['test-adjust-settings-replicas']['settings']['replicas']['value'] == 1
    cleanup_deployment(dep)
Esempio n. 10
0
def test_query_settings_cpu():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-query-settings-cpu
    spec:
      selector:
        matchLabels:
          app: test-query-settings-cpu
      template:
        metadata:
          labels:
            app: test-query-settings-cpu
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600"]
              resources:
                limits:
                  cpu: .3
    """
    cfg = """
    k8s:
      application:
        components:
          test-query-settings-cpu:
            settings:
              cpu:
                min: .1
                max: .5
                step: .1
    """
    setup_deployment(dep)
    desc = query_dep(cfg)
    assert desc['application']['components']['test-query-settings-cpu']['settings']['cpu']['value'] == .3
    cleanup_deployment(dep)
Esempio n. 11
0
def test_encoder_adjust_with_setting_prefix():
    dep = """
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test-encoder-adjust-with-setting-prefix
    spec:
      selector:
        matchLabels:
          app: test-encoder-adjust-with-setting-prefix
      template:
        metadata:
          labels:
            app: test-encoder-adjust-with-setting-prefix
        spec:
          containers:
            - name: main
              image: alpine:latest
              command: ["/bin/sh", "-c", "sleep 3600", "&&", "echo", "-XX:GCTimeRatio=69"]
              env:
                - name: JAVA_OPTS
                  value: -XX:GCTimeRatio=69
    """
    cfg = """
    k8s:
      application:
        components:
          test-encoder-adjust-with-setting-prefix:
            command:
              encoder:
                name: jvm
                before:
                  - /bin/sh
                  - -c
                  - sleep 3600
                  - "&&"
                  - echo
                setting_prefix: cmd-
                settings:
                  GCTimeRatio:
                    min: 9
                    max: 99
                    step: 10
            env:
              JAVA_OPTS:
                encoder:
                  name: jvm
                  setting_prefix: env-
                  settings:
                    GCTimeRatio:
                      min: 9
                      max: 99
                      step: 10
    """
    setup_deployment(dep)
    adjust_dep(cfg, {'application': {
        'components': {'test-encoder-adjust-with-setting-prefix': {
            'settings': {'cmd-GCTimeRatio': {'value': 19}, 'env-GCTimeRatio': {'value': 19}}}}}})
    desc = query_dep(cfg)
    assert (desc['application']['components']['test-encoder-adjust-with-setting-prefix']['settings']['cmd-GCTimeRatio']
            ['value'] == 19)
    assert (desc['application']['components']['test-encoder-adjust-with-setting-prefix']['settings']['env-GCTimeRatio']
            ['value'] == 19)
    cleanup_deployment(dep)