Full Code of devopsspiral/KubeLibrary for AI

master 84532618cbf4 cached
125 files
593.6 KB
168.0k tokens
202 symbols
1 requests
Download .txt
Showing preview only (631K chars total). Download the full file or copy to clipboard to get everything.
Repository: devopsspiral/KubeLibrary
Branch: master
Commit: 84532618cbf4
Files: 125
Total size: 593.6 KB

Directory structure:
gitextract_9_ebzae_/

├── .circleci/
│   └── config.yml
├── .coveragerc
├── .flake8
├── .github/
│   └── pull_request_template.md
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   └── index.html
├── requirements-dev.txt
├── requirements.txt
├── setup.py
├── src/
│   └── KubeLibrary/
│       ├── KubeLibrary.py
│       ├── __init__.py
│       ├── exceptions.py
│       └── version.py
├── test/
│   ├── __init__.py
│   ├── resources/
│   │   ├── cluster_role.json
│   │   ├── cluster_role_bind.json
│   │   ├── configmap.json
│   │   ├── cronjob.json
│   │   ├── cronjob_details.json
│   │   ├── daemonset.json
│   │   ├── daemonset_details.json
│   │   ├── deployment.json
│   │   ├── endpoints.json
│   │   ├── hpa.json
│   │   ├── hpa_details.json
│   │   ├── ingress.json
│   │   ├── ingress_details.json
│   │   ├── jobs.json
│   │   ├── k3d
│   │   ├── multiple_context
│   │   ├── namespaces.json
│   │   ├── node_info.json
│   │   ├── pod.json
│   │   ├── pod_status.json
│   │   ├── pods.json
│   │   ├── pvc.json
│   │   ├── replicaset.json
│   │   ├── role.json
│   │   ├── rolebinding.json
│   │   ├── secrets.json
│   │   ├── service.json
│   │   ├── service_accounts.json
│   │   ├── service_details.json
│   │   └── sts.json
│   └── test_KubeLibrary.py
├── test-objects-chart/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates/
│   │   ├── NOTES.txt
│   │   ├── _helpers.tpl
│   │   ├── cluster_role.yaml
│   │   ├── cluster_role_bind.yaml
│   │   ├── cronjob.yaml
│   │   ├── daemonset.yaml
│   │   ├── deployment.yaml
│   │   ├── hpa.yaml
│   │   ├── ingress.yaml
│   │   ├── job.yml
│   │   ├── role.yaml
│   │   ├── rolebinding.yaml
│   │   ├── service.yaml
│   │   ├── serviceaccount.yaml
│   │   └── tests/
│   │       └── test-connection.yaml
│   └── values.yaml
└── testcases/
    ├── Dockerfile
    ├── cluster_role/
    │   ├── cluster_role.robot
    │   └── cluster_role_kw.robot
    ├── configmap/
    │   ├── configmap.robot
    │   └── configmap_kw.robot
    ├── connect_GKE_clusters.robot
    ├── cronjob/
    │   ├── cronjob.robot
    │   └── cronjob_kw.robot
    ├── custom_objects/
    │   ├── ambassador_crds.robot
    │   └── custom_objects.robot
    ├── daemonset/
    │   ├── daemonsets.robot
    │   └── daemonsets_kw.robot
    ├── deployment/
    │   ├── deployment.robot
    │   └── deployment_kw.robot
    ├── dynamic_client/
    │   ├── dynamic_client.robot
    │   ├── dynamic_client_kw.robot
    │   └── resources/
    │       ├── pod.yaml
    │       ├── pod_generated_name.yaml
    │       ├── svc.yaml
    │       └── svc_lookup.yaml
    ├── exec/
    │   ├── exec.robot
    │   └── exec_kw.robot
    ├── grafana/
    │   ├── demo-UI-test.robot
    │   └── values.yaml
    ├── healthcheck/
    │   ├── healthcheck.robot
    │   └── healthcheck_kw.robot
    ├── horizontalPodAutoscaler/
    │   ├── hpa.robot
    │   └── hpa_kw.robot
    ├── ingress/
    │   ├── ingress.robot
    │   └── ingress_kw.robot
    ├── job/
    │   ├── job.robot
    │   └── job_kw.robot
    ├── namespace/
    │   ├── namespace.robot
    │   └── namespace_kw.robot
    ├── pod/
    │   ├── pod.robot
    │   └── pod_kw.robot
    ├── pvc/
    │   ├── pvc.robot
    │   └── pvc_kw.robot
    ├── reload-config/
    │   ├── reload-config.robot
    │   ├── reload-config_kw.robot
    │   └── sa.yaml
    ├── replicaset/
    │   ├── replicaset.robot
    │   └── replicaset_kw.robot
    ├── requirements.txt
    ├── role/
    │   ├── role.robot
    │   └── role_kw.robot
    ├── secrets/
    │   ├── secret.robot
    │   └── secret_kw.robot
    ├── service/
    │   ├── service.robot
    │   └── service_kw.robot
    ├── service_account/
    │   ├── service_account.robot
    │   └── service_account_kw.robot
    ├── sts/
    │   ├── sts.robot
    │   └── sts_kw.robot
    ├── system_smoke.robot
    ├── system_smoke_kw.robot
    └── test_version.robot

================================================
FILE CONTENTS
================================================

================================================
FILE: .circleci/config.yml
================================================
version: 2.1

orbs:
  python: circleci/python@0.3.2
  k3d: devopsspiral/k3d@0.1.5
jobs:
  build-and-test:
    executor: 
      name: python/default
      tag: "3.9"
    environment:
      PYTHONPATH=./src
    steps:
      - checkout
      - python/load-cache
      - python/install-deps:
          dependency-file: requirements-dev.txt
      - python/save-cache
      - python/test
  lint-and-coverage:
    executor: 
      name: python/default
      tag: "3.9"
    environment:
      PYTHONPATH=./src
    steps:
      - checkout
      - python/install-deps:
          dependency-file: requirements-dev.txt
      - run:
          name: Linter
          command: |
            flake8 src/
            flake8 test/
      - run:
          name: Coverage
          command: |
            coverage run
            coverage report
  test-on-k8s:
    executor: 
      name: python/default
      tag: "3.9"
    environment:
      PYTHONPATH=./src
    steps:
      - setup_remote_docker
      - checkout
      - run:
          name: Build Kubelibrary container image
          command: |
            docker build -t kubelibrary -f testcases/Dockerfile .
      - k3d/k3d-helpers
      - k3d/k3d-up:
          cluster-name: testk3d-2
          k3s-version: latest
          k3s-bin-version: latest
      - k3d/k3d-run:
          step-name: Prerequisites for 2nd cluster
          command: |
            kubectl version
            kubectl create namespace test-ns-2
      - k3d/k3d-up:
          cluster-name: testk3d-1
          k3s-version: latest
          k3s-bin-version: latest
      - k3d/k3d-run:
          step-name: Prerequisites for 1st cluster
          command: |
            sleep 10
            kubectl version
            helm repo add grafana https://grafana.github.io/helm-charts
            helm repo update
            helm install grafana grafana/grafana -f /repo/testcases/grafana/values.yaml
            export KLIB_POD_NAMESPACE=kubelib-tests
            kubectl create namespace $KLIB_POD_NAMESPACE
            kubectl label namespaces kubelib-tests test=test
            helm install kubelib-test /repo/test-objects-chart -n $KLIB_POD_NAMESPACE
      - k3d/k3d-run:
          step-name: Run Other examples
          command: |
            export KLIB_POD_NAMESPACE=kubelib-tests
            # Other tests
            docker run --rm \
            --network container:k3d-${K3D_CLUSTER}-serverlb \
            --volumes-from kubeconfig \
            -e KUBECONFIG=$K3D_KUBECONFIG \
            -e KLIB_POD_PATTERN='busybox.*' \
            -e KLIB_POD_LABELS='job-name=busybox-job' \
            -e KLIB_POD_NAMESPACE=$KLIB_POD_NAMESPACE \
            kubelibrary -i other /testcases/
      - k3d/k3d-run:
          step-name: Run Multi cluster examples
          command: |
            # Multi cluster tests
            kubectl create namespace test-ns-1
            kubectl apply -f /repo/testcases/reload-config/sa.yaml
            MYSA_TOKEN_SECRET=mysa-token
            export K8S_TOKEN=$(kubectl get secret $MYSA_TOKEN_SECRET --template={{.data.token}} | base64 -d)
            kubectl get secret $MYSA_TOKEN_SECRET -o jsonpath="{.data.ca\.crt}" | base64 -d > ca.crt
            export K8S_CA_CRT=/.kube/ca.crt
            export KUBE_CONFIG1=/.kube/testk3d-1
            export KUBE_CONFIG2=/.kube/testk3d-2
            export CLUSTER1_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' k3d-testk3d-1-server-0)
            export CLUSTER2_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' k3d-testk3d-2-server-0)
            export K8S_API_URL="https://$CLUSTER1_IP:6443"
            docker cp kubeconfig:$KUBE_CONFIG1 ~/kubeconfig-testk3d-1.yaml 
            docker cp kubeconfig:$KUBE_CONFIG2 ~/kubeconfig-testk3d-2.yaml 
            sed -i "s#server: https://.*#server: https://$CLUSTER1_IP:6443#g" ~/kubeconfig-testk3d-1.yaml
            sed -i "s#server: https://.*#server: https://$CLUSTER2_IP:6443#g" ~/kubeconfig-testk3d-2.yaml
            docker cp ~/kubeconfig-testk3d-1.yaml kubeconfig:$KUBE_CONFIG1
            docker cp ~/kubeconfig-testk3d-2.yaml kubeconfig:$KUBE_CONFIG2
            docker cp ca.crt kubeconfig:$K8S_CA_CRT
            docker create --rm -it \
            --network k3d-testk3d-1 \
            --volumes-from kubeconfig \
            -e KUBE_CONFIG1=$KUBE_CONFIG1 \
            -e KUBE_CONFIG2=$KUBE_CONFIG2 \
            -e K8S_API_URL=$K8S_API_URL \
            -e K8S_TOKEN=$K8S_TOKEN \
            -e K8S_CA_CRT=$K8S_CA_CRT \
            --name kubelibrary kubelibrary -i reload-config /testcases/
            docker network connect k3d-testk3d-2 kubelibrary
            docker start -a kubelibrary
      - k3d/k3d-run:
          step-name: Run Smoke examples
          command: |
            K8S_VERSION=$(echo ${K3D_CLUSTER_VERSION:1} | cut -d "-" -f1)
            docker run --rm \
            --network container:k3d-${K3D_CLUSTER}-serverlb \
            --volumes-from kubeconfig \
            -e KUBECONFIG=$K3D_KUBECONFIG \
            -e KUBELET_VERSION=$K8S_VERSION \
            kubelibrary -i smoke /testcases/
      - k3d/k3d-run:
          step-name: Run Grafana examples
          command: |
            # Grafana tests
            K8S_VERSION=$(echo ${K3D_CLUSTER_VERSION:1} | cut -d "-" -f1)
            docker run --rm \
            --network container:k3d-${K3D_CLUSTER}-serverlb \
            --volumes-from kubeconfig \
            -e KUBECONFIG=$K3D_KUBECONFIG \
            -e KLIB_POD_PATTERN='grafana.*' \
            -e KLIB_POD_ANNOTATIONS='{"kubelibrary":"testing"}' \
            -e KLIB_POD_LABELS='{"app.kubernetes.io/name":"grafana"}' \
            -e KLIB_POD_NAMESPACE=default \
            -e KLIB_RESOURCE_LIMITS_MEMORY=128Mi \
            -e KLIB_RESOURCE_REQUESTS_CPU=250m \
            -e KLIB_RESOURCE_LIMITS_CPU=500m \
            -e KLIB_RESOURCE_REQUESTS_MEMORY=64Mi \
            -e KUBELET_VERSION=$K8S_VERSION \
            kubelibrary -i grafana /testcases/
  publish-to-pypi:
    executor: 
      name: python/default
      tag: "3.9"
    environment:
      PYTHONPATH=./src
    steps:
      - checkout
      - run:
          name: Verify setup.py version matches tag
          command: |
            SEMVER="${CIRCLE_TAG:1}"
            grep  "## \[$SEMVER\]" CHANGELOG.md
      - run:
          name: Publish on Pypi
          command: |
            pip install twine
            python3 setup.py sdist bdist_wheel
            python3 -m twine upload dist/*
workflows:
  main:
    jobs:
      - build-and-test:
          filters:
            tags:
              only: /.*/
      - lint-and-coverage:
          filters:
            tags:
              only: /.*/
      - test-on-k8s:
          filters:
            tags:
              only: /.*/
      - publish-to-pypi:
          requires:
            - build-and-test
            - lint-and-coverage
            - test-on-k8s
          filters:
            branches:
              ignore: /.*/
            tags:
              only: /^v.*/


================================================
FILE: .coveragerc
================================================
[run]
command_line = -m unittest discover
source =
    src/
[report]
fail_under = 84


================================================
FILE: .flake8
================================================
[flake8]
max-line-length = 160

================================================
FILE: .github/pull_request_template.md
================================================
\<Remember to add meaningful title\>

\<Short description of the PR\>

Fixes #\<issue number\>

Before merge following needs to be applied:
- [ ] At least one example testcase added in testcases/
- [ ] Library Documentation regenerated according to [Generate docs](https://github.com/devopsspiral/KubeLibrary#generate-docs)
- [ ] PR entry added in CHANGELOG.md in **In progress** section
- [ ] All new testcases tagged as **prerelease** along other tags to exclude it from execution until released on PyPI
- [ ] Coverage threshold increased in [.coveragerc](https://github.com/devopsspiral/KubeLibrary/blob/master/.coveragerc) if new coverage is higher than actual, see the lint-and-coverage step in CI
```
fail_under = 86
```


================================================
FILE: .gitignore
================================================
.venv
.idea
.vscode
.coverage
*.pyc
*.pyo
src/robotframework_kubelibrary.egg-info/
dist/
build/

log.html
output.xml
report.html


================================================
FILE: CHANGELOG.md
================================================
# Change Log
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## In progress

## [0.8.10] - 2025-12-16
### Added
- Add a keyword to get the Kubernetes Cluster Version

## [0.8.9] - 2025-07-17
### Fixed
- Fixed proxy settings which are now handled by kubernetes python client

## [0.8.8] - 2024-10-07
### Added
- update create keyword to return created object [#143](https://github.com/devopsspiral/KubeLibrary/pull/143) by [@aisonaku]

## [0.8.7] - 2023-11-19
### Added
- update read_namespaced_pod_log keyword with new optional parameter 'since_seconds' [#136](https://github.com/devopsspiral/KubeLibrary/pull/136) by [@LissaGreense] 
- google-auth>=2.5.0 [#138](https://github.com/devopsspiral/KubeLibrary/pull/138) by [@angegar] 

## [0.8.6] - 2023-05-27
### Added
- add new keyword to list all namespaced custom objects [#133] (https://github.com/devopsspiral/KubeLibrary/pull/133) by [@kutayy]
## [0.8.5] - 2023-04-22
### Fixed
- Fixed no_proxy setting

## [0.8.4] - 2023-04-10
### Fixed
- Fixed proxy setting
- Deprecating batch/v1beta1, discovery.k8s.io/v1beta1 

## [0.8.3] - 2022-12-19
revert

- Add proxy configuration fetched from `HTTP_PROXY` or `http_proxy` environment variable by [@LissaGreense]
## [0.8.0] - 2022-10-27
### Added
- Add function list_namespaced_stateful_set_by_pattern [#114](https://github.com/devopsspiral/KubeLibrary/pull/113) by [@siaomingjeng](https://github.com/siaomingjeng)
- Add function list_namespaced_persistent_volume_claim_by_pattern [#112](https://github.com/devopsspiral/KubeLibrary/pull/112) by [@siaomingjeng](https://github.com/siaomingjeng)

### Changed
- batchv1_beta1 deprecated
- ci uses latest default k8s and latest k3s
- octopus test helm chart removed as not working
## [0.7.0] - 2022-04-01
### Added
- Added keyword for handling kubectl exec [#102](https://github.com/devopsspiral/KubeLibrary/pull/101) by [@MarcinMaciaszek](https://github.com/MarcinMaciaszek)
### Changed
- networkingv1api used instead of extensionsv1beta1
## [0.6.2] - 2022-02-25

### Fixed
- Fix the kubernetes lib version (21.7.0) to still support extension/v1beta1 (ingress)

## [0.6.1] - 2022-01-27
### Changed
- Refactored setup.py & requirements, moved library scope to GLOBAL, sperated exceptions [#101](https://github.com/devopsspiral/KubeLibrary/pull/101) by [@MarcinMaciaszek](https://github.com/MarcinMaciaszek)

### Fixed
- Generate keyword documentation without a kubernetes cluster [#103](https://github.com/devopsspiral/KubeLibrary/pull/103) by [bli74](https://github.com/bli74)
## [0.6.0] - 2021-11-30
### Changed
- Helpers and keywords unification [#75](https://github.com/devopsspiral/KubeLibrary/pull/75) by [@m-wcislo](https://github.com/m-wcislo)
## [0.5.0] - 2021-10-03
### Added
- Dynamic client support and some utilities [#93](https://github.com/devopsspiral/KubeLibrary/pull/93) by [@mertkayhan](https://github.com/mertkayhan)
- Keyword for getting Horizontal Pod Autoscalers [#80](https://github.com/devopsspiral/KubeLibrary/pull/80 )by [@Nilsty](https://github.com/Nilsty)
- Keyword for list cluster role and cluster role binding [#58](https://github.com/devopsspiral/KubeLibrary/pull/58) by [@satish-nubolab](https://github.com/satish-nubolab)
- Keyword for getiing role and rolebinding [#56](https://github.com/devopsspiral/KubeLibrary/pull/56) by [@satish-nubolab](https://github.com/satish-nubolab)
- Bearer token authentication [#39](https://github.com/devopsspiral/KubeLibrary/pull/39) by [@m-wcislo](https://github.com/m-wcislo)
- Keyoword for create and delete a cronjob [#71](https://github.com/devopsspiral/KubeLibrary/pull/71) by [@satish-nubolab](https://github.com/satish-nubolab)
- Keywords for get replicaset in a namespace [#82](https://github.com/devopsspiral/KubeLibrary/pull/92) by [@hello2ray](https://github.com/hello2ray)
## [0.4.0] - 2021-03-12
### Added
- Kubeconfig context support [#36](https://github.com/devopsspiral/KubeLibrary/pull/36) by [@m-wcislo](https://github.com/m-wcislo)
- Keyword for getting secrets [#31](https://github.com/devopsspiral/KubeLibrary/pull/31 )by [@Nilsty](https://github.com/Nilsty)
- Keyword for cluster healthcheck [#40](https://github.com/devopsspiral/KubeLibrary/pull/40) by [@satish-nubolab](https://github.com/satish-nubolab)
- Extend cluster healthcheck [#47](https://github.com/devopsspiral/KubeLibrary/pull/47) by [@mika-b](https://github.com/mika-b)
- Keyword for list ingress [#38](https://github.com/devopsspiral/KubeLibrary/pull/38) by [@satish-nubolab](https://github.com/satish-nubolab)
- Keyword for list cronjob [#48](https://github.com/devopsspiral/KubeLibrary/pull/48) by [@satish-nubolab](https://github.com/satish-nubolab)
- Keyword for list daemonset [#50](https://github.com/devopsspiral/KubeLibrary/pull/50) by [@satish-nubolab](https://github.com/satish-nubolab)
- Keyword for CustomObjectsApi [#54](https://github.com/devopsspiral/KubeLibrary/pull/54) by [@mika-b](https://github.com/mika-b)
- Example tests for Ambassador CRDs [#63](https://github.com/devopsspiral/KubeLibrary/pull/63) by [@Nilsty](https://github.com/Nilsty)

### Fixed
- Fix for cert validation disabling not being possible for all api clients [#61](https://github.com/devopsspiral/KubeLibrary/pull/61) by [@m-wcislo](https://github.com/m-wcislo)

### Fixed
- cert_validation=False was not affecting all used APIs
## [0.3.0] - 2021-02-01

### Added
- CI implementation [#14](https://github.com/devopsspiral/KubeLibrary/pull/14) by [@m-wcislo](https://github.com/m-wcislo)
- keywords to list deployments [#13](https://github.com/devopsspiral/KubeLibrary/pull/13) by [@Nilsty](https://github.com/Nilsty)
- keywords for get/create/delete service accounts [#28](https://github.com/devopsspiral/KubeLibrary/pull/28) by [@kutayy](https://github.com/kutayy)


## [0.2.0] - 2020-09-03

### Added
- Update docs with latest libdoc version [#11](https://github.com/devopsspiral/KubeLibrary/pull/11) by [@Nilsty](https://github.com/Nilsty)
- Example test case to connect to a GKE cluster [#10](https://github.com/devopsspiral/KubeLibrary/pull/10) by [@Nilsty](https://github.com/Nilsty)
- Adding label selectors [#9](https://github.com/devopsspiral/KubeLibrary/pull/9) by [@Nilsty](https://github.com/Nilsty)
- Adding keyword to Reload the configuration of the KubeLibrary [#8](https://github.com/devopsspiral/KubeLibrary/pull/8) by [@Nilsty](https://github.com/Nilsty)
- Adding keyword and tests for "Get Pod Logs" [#7](https://github.com/devopsspiral/KubeLibrary/pull/7) by [@Nilsty](https://github.com/Nilsty)
- Adding keyword to read jobs [#6](https://github.com/devopsspiral/KubeLibrary/pull/6) by [@Nilsty](https://github.com/Nilsty)


## [0.1.4] - 2020-07-28

### Added
- pod generic testcases added, should be extended in future
- add kw for getting configmaps, update docs [#5](https://github.com/devopsspiral/KubeLibrary/pull/5) by [@Nilsty](https://github.com/Nilsty)

### Changed
- reorganized library functions to getters, filters and asserts
- python unit tests


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
We welcome contributions of all types including:
* Proposing new features
* Reporting a bug
* Fixing a bug
* Enhancing documentation
* Materials describing the usage of KubeLibrary that we could link from this repository

## Reporting issues
We use [GitHub issues](https://github.com/devopsspiral/KubeLibrary/issues) for reporting bugs, feature proposals and discussions.
When reporting a bug, please include following information:

* Summary of the problem and context
* Steps to reproduce. We are mostly using k3s/k3d and kind as a test clusters, if you could reproduce your problem there that 
would be easier for others to follow. Attach logs, files and anything that was used and might be helpful in investigation.
* What you expected
* What actually happened
* Comments, including your understanding of a problem, possible fix, etc.

## Pull Request checklist
* Create an issue first if you expect the topic needs some more discussion.
* Provide meaningful subject of a PR so that it could become commit message.
* Provide good description, context and link to issues which are resolved.
* Create examples of new funtionality. We keep them in testcases/ dir, and they are all executed as a part of CI. 
This is part of our documentation and verification. We encourage you to use existing test setup (helm deployed services) but suggestions for
change or adding new ones are ok.
* It would be perfect to write unit tests for what you are adding. It is not always needed for simple k8s object getters, but are mandatory
 for more complex logic.


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 DevOps Spiral

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# KubeLibrary
[![CircleCI Build Status](https://circleci.com/gh/devopsspiral/KubeLibrary.svg?style=shield)](https://circleci.com/gh/devopsspiral/KubeLibrary)[![PyPI](https://img.shields.io/pypi/v/robotframework-kubelibrary)](https://pypi.org/project/robotframework-kubelibrary/)[![PyPi downloads](https://img.shields.io/pypi/dm/robotframework-kubelibrary.svg)](https://pypi.python.org/pypi/robotframework-kubelibrary)[![GitHub License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://raw.githubusercontent.com/devopsspiral/k3d-orb/master/LICENSE)[![Slack](https://img.shields.io/badge/slack-robotframework%2F%23kubernetes-blue)](https://robotframework.slack.com/archives/C017AKKS06R)


RobotFramework library for testing Kubernetes cluster

## Quick start

```
# install library itself
pip install robotframework-kubelibrary

# export KUBECONFIG
export KUBECONFIG=~/.kube/config

# run example tests
pip install robotframework-requests
git clone https://github.com/devopsspiral/KubeLibrary.git
cd KubeLibrary
robot -e prerelease testcases
```

## Documentation

[Library docs](http://devopsspiral.com/KubeLibrary/)

## Example testcase

```
testcases/system_smoke.robot

*** Settings ***
(1)Resource          ./system_smoke_kw.robot

*** Variables ***
(2)${KUBELET_VERSION}     %{KUBELET_VERSION}
${NUM_NODES}           2
${NUM_WORKERS}         1

*** Test Cases ***

(3)Pods in kube-system are ok
(4)    [Documentation]  Test if all pods in kube-system initiated correctly and are running or succeeded
(5)    [Tags]    cluster    smoke
(6)    Given kubernetes API responds
(7)    When getting all pods names in "kube-system"
(8)    Then all pods in "kube-system" are running or succeeded

```

1 - keyword definitions in separate file relative to testcase file

2 - defining local variable taking value from environment variable

3 - testcase definition

4 - Documentation/comments

5 - Tags, you can include (-i) and exclude (-e) tests by tag.

6(7,8) - Given, When, Then clause. It is only way of organizing your test steps, given, when, then are just omitted, real keywords definition needs to match 'kubernetes API responds', 'getting all pods names in ...' etc.(see testcases/system_smoke_kw.robot)

7 - kube-system in quotes is treated as parameter for 'getting all pods names in ...' keyword.

More examples in testcases/ directory.

To see all the tests passing execute below commands.


### Cluster Tests
```
# run cluster tests
robot -i cluster -e prerelease testcases/
```

### Grafana Tests
```
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana -f testcases/grafana/values.yaml

# run grafana tests
export KLIB_POD_PATTERN='grafana.*'
export KLIB_POD_ANNOTATIONS='{"kubelibrary":"testing"}'
export KLIB_POD_NAMESPACE=default

robot -i grafana -e prerelease testcases/
```
### Other Tests
These tests require the kubelib-test helm-chart to be installed in your test cluster.
```
# run other library tests
export KLIB_POD_PATTERN='busybox.*'
export KLIB_POD_NAMESPACE=kubelib-tests
export KLIB_POD_LABELS='job-name=busybox-job'

kubectl create namespace $KLIB_POD_NAMESPACE
kubectl label namespaces kubelib-tests test=test
helm install kubelib-test ./test-objects-chart -n $KLIB_POD_NAMESPACE

robot -i other -e prerelease testcases/
```
### Multi Cluster Tests
These tests require more than one cluster and utilize [KinD](https://kind.sigs.k8s.io/) as a setup.
[Download KinD and install it.](https://kind.sigs.k8s.io/docs/user/quick-start/)
```
# Create Test Cluster 1
kind create cluster --kubeconfig ./cluster1-conf --name kind-cluster-1

# Create namespace in Test Cluster 1
kubectl create namespace test-ns-1 --context kind-kind-cluster-1 --kubeconfig ./cluster1-conf
# For bearer token auth
kubectl apply -f testcases/reload-config/sa.yaml
MYSA_TOKEN_SECRET=$(kubectl get sa mysa -o jsonpath="{.secrets[0].name}")
export K8S_TOKEN=$(kubectl get secret $MYSA_TOKEN_SECRET --template={{.data.token}} | base64 -d)
kubectl get secret $MYSA_TOKEN_SECRET -o jsonpath="{.data.ca\.crt}" | base64 -d > ca.crt
export K8S_API_URL=$(kubectl config view -o jsonpath='{.clusters[0].cluster.server}')
export K8S_CA_CRT=./ca.crt

# Create Test Cluster 2
kind create cluster --kubeconfig ./cluster2-conf --name kind-cluster-2

# Create namespace in Test Cluster 2
kubectl create namespace test-ns-2 --context kind-kind-cluster-2 --kubeconfig ./cluster2-conf

robot -i reload-config -e prerelease testcases/

# Clean up
kind delete cluster --name kind-cluster-1
kind delete cluster --name kind-cluster-2
```

## Keywords documentation

Keywords documentation can be found in docs/.

## Proxy configuration

To access cluster via proxy set `http_proxy` or `HTTP_PROXY` environment variable. 

In similar way you can set `no_proxy` or `NO_PROXY` variable to specify hosts that should be excluded from proxying.

**IMPORTANT:** Lowercase environment variables have higher priority than uppercase

## Further reading

[DevOps spiral article on KubeLibrary](https://devopsspiral.com/articles/k8s/robotframework-kubelibrary/)

[KubeLibrary: Testing Kubernetes with RobotFramework  | Humanitec](https://humanitec.com/blog/kubelibrary-testing-kubernetes-with-robotframework)

[RobotFramework User Guide](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html)

## Development

```
# clone repo
git clone https://github.com/devopsspiral/KubeLibrary.git
cd KubeLibrary

# create virtualenv
virtualenv .venv
. .venv/bin/activate
pip install -r requirements-dev.txt
```

Create keyword and test file, import KubeLibrary using below to point to library under development.

```
*** Settings ***

Library    ../src/KubeLibrary/KubeLibrary.py
```

For development cluster you can use k3s/k3d as described in [DevOps spiral article on K3d and skaffold](https://devopsspiral.com/articles/k8s/k3d-skaffold/).

### Generate docs

```
(
    # To generate keyword documentation a connection
    # to a cluster is not necessary. Skip to load a
    # cluster configuration.
    #
    # Set the variable local for the libdoc call only
    export INIT_FOR_LIBDOC_ONLY=1
    python -m robot.libdoc src/KubeLibrary docs/index.html
)
```


================================================
FILE: docs/index.html
================================================
<!doctype html>
<html id="library-documentation-top" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=0">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="-1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="Generator" content>
<script type="text/javascript">
libdoc = {"specversion": 3, "name": "KubeLibrary", "doc": "<p>KubeLibrary is a Robot Framework test library for Kubernetes.</p>\n<p>The approach taken by this library is to provide easy to access kubernetes objects representation that can be then accessed to define highlevel keywords for tests.</p>\n<h2 id=\"Kubeconfigs\">Kubeconfigs</h2>\n<p>By default ~/.kube/config is used. Kubeconfig location can also be passed by setting KUBECONFIG environment variable or as Library argument.</p>\n<pre>\n<b>***</b> Settings <b>***</b>\nLibrary           KubeLibrary          /path/to/kubeconfig\n</pre>\n<h2 id=\"Context\">Context</h2>\n<p>By default current context from kubeconfig is used. Setting multiple contexts in different test suites allows working on multiple clusters.</p>\n<pre>\n<b>***</b> Settings <b>***</b>\nLibrary           KubeLibrary          context=k3d-k3d-cluster2\n</pre>\n<h2 id=\"Bearer token authentication\">Bearer token authentication</h2>\n<p>It is possible to authenticate using bearer token by passing API url, bearer token and optionally CA certificate.</p>\n<pre>\n<b>***</b> Settings <b>***</b>\nLibrary           KubeLibrary          api_url=%{K8S_API_URL}    bearer_token=%{K8S_TOKEN}    ca_cert=%{K8S_CA_CRT}\n</pre>\n<h2 id=\"In cluster execution\">In cluster execution</h2>\n<p>If tests are supposed to be executed from within cluster, KubeLibrary can be configured to use standard token authentication. Just set incluster parameter to True.</p>\n<h2 id=\"Auth methods precedence\">Auth methods precedence</h2>\n<p>If enabled, auth methods takes precedence in following order: 1. Incluster 2. Bearer Token 3. Kubeconfig</p>\n<pre>\n<b>***</b> Settings <b>***</b>\nLibrary           KubeLibrary          None    True\n</pre>", "version": "0.8.9", "generated": "2025-12-08T13:55:48+00:00", "type": "LIBRARY", "scope": "GLOBAL", "docFormat": "HTML", "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/__init__.py", "lineno": 28, "tags": [], "inits": [{"name": "__init__", "args": [{"name": "kube_config", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "kube_config=None"}, {"name": "context", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "context=None"}, {"name": "api_url", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "api_url=None"}, {"name": "bearer_token", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "bearer_token=None"}, {"name": "ca_cert", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "ca_cert=None"}, {"name": "incluster", "type": null, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "incluster=False"}, {"name": "cert_validation", "type": null, "defaultValue": "True", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cert_validation=True"}], "returnType": null, "doc": "<p>KubeLibrary can be configured with several optional arguments.</p>\n<ul>\n<li><code>kube_config</code>: Path pointing to kubeconfig of target Kubernetes cluster.</li>\n<li><code>context</code>: Active context. If None current_context from kubeconfig is used.</li>\n<li><code>api_url</code>: K8s API url, used for bearer token authenticaiton.</li>\n<li><code>bearer_token</code>: Bearer token, used for bearer token authenticaiton. Do not include 'Bearer ' prefix.</li>\n<li><code>ca_cert</code>: Optional CA certificate file path, used for bearer token authenticaiton.</li>\n<li><code>incuster</code>: Default False. Indicates if used from within k8s cluster. Overrides kubeconfig.</li>\n<li><code>cert_validation</code>: Default True. Can be set to False for self-signed certificates.</li>\n</ul>\n<p>Environment variables:</p>\n<ul>\n<li>INIT_FOR_LIBDOC_ONLY: Set to '1' to generate keyword documentation and skip to load a kube config..</li>\n</ul>", "shortdoc": "KubeLibrary can be configured with several optional arguments. - ``kube_config``:   Path pointing to kubeconfig of target Kubernetes cluster. - ``context``:   Active context. If None current_context from kubeconfig is used. - ``api_url``:   K8s API url, used for bearer token authenticaiton. - ``bearer_token``:   Bearer token, used for bearer token authenticaiton. Do not include 'Bearer ' prefix. - ``ca_cert``:   Optional CA certificate file path, used for bearer token authenticaiton. - ``incuster``:   Default False. Indicates if used from within k8s cluster. Overrides kubeconfig. - ``cert_validation``:   Default True. Can be set to False for self-signed certificates.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/__init__.py", "lineno": 74}], "keywords": [{"name": "Assert Container Has Env Vars", "args": [{"name": "container", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "container"}, {"name": "env_vars_json", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "env_vars_json"}], "returnType": null, "doc": "<p>Assert container has env vars.</p>\n<p>Returns True/False</p>\n<ul>\n<li><code>container</code>: Container object.</li>\n<li><code>env_var_json</code>: JSON representing env vars i.e.: {\"EXAMPLE_VAR\": \"examplevalue\"}</li>\n</ul>", "shortdoc": "Assert container has env vars.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 914}, {"name": "Assert Pod Has Annotations", "args": [{"name": "pod", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "pod"}, {"name": "annotations_json", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "annotations_json"}], "returnType": null, "doc": "<p>Assert pod has annotations.</p>\n<p>Returns True/False</p>\n<ul>\n<li><code>pod</code>: Pod object.</li>\n<li><code>annotations_json</code>: JSON representing annotations</li>\n</ul>", "shortdoc": "Assert pod has annotations.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 887}, {"name": "Assert Pod Has Labels", "args": [{"name": "pod", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "pod"}, {"name": "labels_json", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "labels_json"}], "returnType": null, "doc": "<p>Assert pod has labels.</p>\n<p>Returns True/False</p>\n<ul>\n<li><code>pod</code>: Pod object.</li>\n<li><code>labels_json</code>: JSON representing labels</li>\n</ul>", "shortdoc": "Assert pod has labels.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 861}, {"name": "Create", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Creates resource instances based on the provided configuration.</p>\n<p>If the resource is namespaced (ie, not cluster-level), then one of <code>namespace</code>, <code>label_selector</code>, or <code>field_selector</code> is required. If the resource is cluster-level, then one of <code>name</code>, <code>label_selector</code>, or <code>field_selector</code> is required. Can be optionally given a kubernetes manifest (<code>body</code>) which respects the above considerations.</p>\n<p>Returns created object</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Creates resource instances based on the provided configuration.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 165}, {"name": "Create Cron Job In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "body", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "body"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use create_namespaced_cron_job.</p>\n<p>Creates cron_job in a namespace</p>\n<p>Returns created cron_job</p>\n<ul>\n<li><code>body</code>: Cron_job object.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use create_namespaced_cron_job.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1682, "deprecated": true}, {"name": "Create Namespaced Cron Job", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "body", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "body"}], "returnType": null, "doc": "<p>Creates cron_job in a namespace</p>\n<p>Returns created cron_job</p>\n<ul>\n<li><code>body</code>: Cron_job object.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Creates cron_job in a namespace", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1670}, {"name": "Create Namespaced Service Account", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "body", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "body"}], "returnType": null, "doc": "<p>Creates service account in a namespace</p>\n<p>Returns created service account</p>\n<ul>\n<li><code>body</code>: Service Account object.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Creates service account in a namespace", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1213}, {"name": "Create Service Account In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "body", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "body"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use create_namespaced_service_account.</p>\n<p>Creates service account in a namespace</p>\n<p>Returns created service account</p>\n<ul>\n<li><code>body</code>: Service Account object.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use create_namespaced_service_account.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1226, "deprecated": true}, {"name": "Delete", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Deletes resource instances based on the provided configuration.</p>\n<p>Can be optionally given a <code>namespace</code>, <code>name</code>, <code>label_selector</code>, <code>body</code> and <code>field_selector</code>.</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Deletes resource instances based on the provided configuration.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 185}, {"name": "Delete Cron Job In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use delete_namespaced_cron_job.</p>\n<p>Deletes cron_job in a namespace</p>\n<p>Returns V1 status</p>\n<ul>\n<li><code>name</code>: Cron Job name</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use delete_namespaced_cron_job.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1708, "deprecated": true}, {"name": "Delete Namespaced Cron Job", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Deletes cron_job in a namespace</p>\n<p>Returns V1 status</p>\n<ul>\n<li><code>name</code>: Cron Job name</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Deletes cron_job in a namespace", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1696}, {"name": "Delete Namespaced Service Account", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Deletes service account in a namespace</p>\n<p>Returns V1status</p>\n<ul>\n<li><code>name</code>: Service Account name</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Deletes service account in a namespace", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1241}, {"name": "Delete Service Account In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use delete_namespaced_service_account.</p>\n<p>Deletes service account in a namespace</p>\n<p>Returns V1status</p>\n<ul>\n<li><code>name</code>: Service Account name</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use delete_namespaced_service_account.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1255, "deprecated": true}, {"name": "Evaluate Callable From K8s Client", "args": [{"name": "attr_name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "attr_name"}, {"name": "args", "type": null, "defaultValue": null, "kind": "VAR_POSITIONAL", "required": false, "repr": "*args"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Evaluates a callable from kubernetes client.</p>\n<p>Returns the output of the client callable.</p>\n<ul>\n<li><code>attr_name</code>: Callable name</li>\n<li><code>*args</code>: Positional arguments for argument forwarding</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Evaluates a callable from kubernetes client.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 122}, {"name": "Filter By Key", "args": [{"name": "objects", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "objects"}, {"name": "key", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "key"}, {"name": "match", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "match"}], "returnType": null, "doc": "<p>Filter object with key matching value for list of k8s objects.</p>\n<p>Returns list of objects.</p>\n<ul>\n<li><code>objects</code>: List of k8s objects</li>\n<li><code>key</code>: Key to match</li>\n<li><code>match</code>: Value of the key based on which objects will be included</li>\n</ul>", "shortdoc": "Filter object with key matching value for list of k8s objects.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 713}, {"name": "Filter Configmap Names", "args": [{"name": "configmaps", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "configmaps"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. See examples in TBD. Filter configmap  names for list of configmaps. Returns list of strings.</p>\n<ul>\n<li><code>configmaps</code>: List of configmap objects</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. See examples in TBD. Filter configmap  names for list of configmaps. Returns list of strings. - ``configmaps``:   List of configmap objects", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 765, "deprecated": true}, {"name": "Filter Containers Images", "args": [{"name": "containers", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "containers"}], "returnType": null, "doc": "<p>Filters container images for given lists of containers.</p>\n<p>Returns list of images.</p>\n<ul>\n<li><code>containers</code>: List of containers</li>\n</ul>", "shortdoc": "Filters container images for given lists of containers.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 800}, {"name": "Filter Containers Resources", "args": [{"name": "containers", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "containers"}], "returnType": null, "doc": "<p>Filters container resources for given lists of containers.</p>\n<p>Returns list of resources.</p>\n<ul>\n<li><code>containers</code>: List of containers</li>\n</ul>", "shortdoc": "Filters container resources for given lists of containers.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 811}, {"name": "Filter Deployments Names", "args": [{"name": "deployments", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "deployments"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. See examples in TBD. Returns list of strings.</p>\n<ul>\n<li><code>deployments</code>: List of deployments objects</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. See examples in TBD. Returns list of strings. - ``deployments``:   List of deployments objects", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 727, "deprecated": true}, {"name": "Filter Endpoints Names", "args": [{"name": "endpoints", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "endpoints"}], "returnType": null, "doc": "<p>Filter endpoints names for list of endpoints. Returns list of strings.</p>\n<ul>\n<li><code>endpoints</code>:</li>\n</ul>\n<p>List of endpoint objects</p>", "shortdoc": "Filter endpoints names for list of endpoints. Returns list of strings. - ``endpoints``: List of endpoint objects", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 774}, {"name": "Filter Names", "args": [{"name": "objects", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "objects"}], "returnType": null, "doc": "<p>Filter .metadata.name for list of k8s objects.</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>objects</code>: List of k8s objects</li>\n</ul>", "shortdoc": "Filter .metadata.name for list of k8s objects.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 703}, {"name": "Filter Pods Containers By Name", "args": [{"name": "pods", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "pods"}, {"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}], "returnType": null, "doc": "<p>Filters pods containers by name for given list of pods.</p>\n<p>Returns lists of containers (flattens).</p>\n<ul>\n<li><code>pods</code>: List of pods objects</li>\n</ul>", "shortdoc": "Filters pods containers by name for given list of pods.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 783}, {"name": "Filter Pods Containers Statuses By Name", "args": [{"name": "pods", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "pods"}, {"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}], "returnType": null, "doc": "<p>Filters pods containers statuses by container name for given list of pods.</p>\n<p>Returns lists of containers statuses.</p>\n<ul>\n<li><code>pods</code>: List of pods objects</li>\n</ul>", "shortdoc": "Filters pods containers statuses by container name for given list of pods.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 822}, {"name": "Filter Pods Names", "args": [{"name": "pods", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "pods"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. See examples in TBD. Filter pod names for list of pods.</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>pods</code>: List of pods objects</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. See examples in TBD. Filter pod names for list of pods.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 743, "deprecated": true}, {"name": "Filter Replicasets Names", "args": [{"name": "replicasets", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "replicasets"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. See examples in TBD. Returns list of strings.</p>\n<ul>\n<li><code>replicasets</code>: List of replicasets objects</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. See examples in TBD. Returns list of strings. - ``replicasets``:   List of replicasets objects", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 735, "deprecated": true}, {"name": "Filter Service Accounts Names", "args": [{"name": "service_accounts", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "service_accounts"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. See examples in TBD. Filter service accounts names for list of service accounts.</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>service_accounts</code>: List of service accounts objects</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. See examples in TBD. Filter service accounts names for list of service accounts.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 754, "deprecated": true}, {"name": "Generate Alphanumeric Str", "args": [{"name": "size", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "size"}], "returnType": null, "doc": "<p>Generates a random alphanumeric string with given size.</p>\n<p>Returns a string.</p>\n<ul>\n<li><code>size</code>: Desired size of the output string</li>\n</ul>", "shortdoc": "Generates a random alphanumeric string with given size.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 111}, {"name": "Get", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Retrieves resource instances based on the provided parameters.</p>\n<p>Can be optionally given a <code>namespace</code>, <code>name</code>, <code>label_selector</code>, <code>body</code> and <code>field_selector</code>.</p>\n<p>Returns a resource list.</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Retrieves resource instances based on the provided parameters.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 148}, {"name": "Get Cluster Custom Object", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}, {"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}], "returnType": null, "doc": "<p>Get cluster level custom object.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'scheduling.k8s.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>plural</code>: e.g. 'priorityclasses'</li>\n<li><code>name</code>: e.g. 'system-node-critical'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/{plural}/{name}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "Get cluster level custom object.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1584}, {"name": "Get Cluster Role Bindings", "args": [], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_cluster_role_binding.</p>\n<p>Gets a list of cluster_role_bindings.</p>\n<p>Returns list of cluster_role_bindings.</p>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_cluster_role_binding.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1488, "deprecated": true}, {"name": "Get Cluster Roles", "args": [], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_cluster_role.</p>\n<p>Gets a list of cluster_roles.</p>\n<p>Returns list of cluster_roles.</p>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_cluster_role.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1470, "deprecated": true}, {"name": "Get Configmaps In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_config_map_by_pattern. Gets configmaps matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of configmaps.</p>\n<ul>\n<li><code>name_pattern</code>: configmap name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_config_map_by_pattern. Gets configmaps matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 471, "deprecated": true}, {"name": "Get Cron Job Details In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_cron_job.</p>\n<p>Gets cron job details in given namespace.</p>\n<p>Returns Cron job object representation.</p>\n<ul>\n<li><code>name</code>: Name of cron job.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_cron_job.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1391, "deprecated": true}, {"name": "Get Cron Jobs In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_cron_job.</p>\n<p>Gets cron jobs in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_cron_job.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1363, "deprecated": true}, {"name": "Get Custom Object In Namespace", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}, {"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use get_namespaced_custom_object.</p>\n<p>Get custom object in namespace.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'k8s.cni.cncf.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>namespace</code>: Namespace, e.g. 'default'</li>\n<li><code>plural</code>: e.g. 'network-attachment-definitions'</li>\n<li><code>name</code>: e.g. 'my-network'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use get_namespaced_custom_object.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1646, "deprecated": true}, {"name": "Get Daemonset Details In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_daemon_set.</p>\n<p>Gets deamonset details in given namespace.</p>\n<p>Returns daemonset object representation.</p>\n<ul>\n<li><code>name</code>: Name of the daemonset</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_daemon_set.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1447, "deprecated": true}, {"name": "Get Daemonsets In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_daemon_set.</p>\n<p>Gets a list of available daemonsets.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of deaemonsets.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_daemon_set.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1419, "deprecated": true}, {"name": "Get Deployments In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_deployment_by_pattern. Gets deployments matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of deployments.</p>\n<ul>\n<li><code>name_pattern</code>: deployment name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_deployment_by_pattern. Gets deployments matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 541, "deprecated": true}, {"name": "Get Dynamic Resource", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}], "returnType": null, "doc": "<p>Returns a dynamic resource based on the provided api version and kind.</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n</ul>", "shortdoc": "Returns a dynamic resource based on the provided api version and kind.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 138}, {"name": "Get Endpoints In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_endpoints.</p>\n<p>Gets endpoint details in given namespace.</p>\n<p>Returns Endpoint object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Match</td>\n<td>${endpoint_details.subsets[0].addresses[0].target_ref.name}</td>\n<td>pod-name-123456</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of endpoint.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_endpoints.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1080, "deprecated": true}, {"name": "Get Healthcheck", "args": [{"name": "endpoint", "type": null, "defaultValue": "/readyz", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "endpoint=/readyz"}, {"name": "verbose", "type": null, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verbose=False"}], "returnType": null, "doc": "<p>Performs GET on /readyz or /livez for simple health check.</p>\n<p>Can be used to verify the readiness/current status of the API server Returns tuple of (response data, response status and response headers)</p>\n<ul>\n<li><code>endpoint</code>: /readyz, /livez or induvidual endpoints like '/livez/etcd'. defaults to /readyz</li>\n<li><code>verbose</code>: More detailed output.</li>\n</ul>\n<p><a href=\"https://kubernetes.io/docs/reference/using-api/health-checks\">https://kubernetes.io/docs/reference/using-api/health-checks</a></p>", "shortdoc": "Performs GET on /readyz or /livez for simple health check.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1271}, {"name": "Get Healthy Nodes Count", "args": [{"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Counts node with KubeletReady and status True.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Can be used to check number of healthy nodes. Can be used as prerequisite in tests.</p>", "shortdoc": "Counts node with KubeletReady and status True.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 353}, {"name": "Get Hpa Details In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_horizontal_pod_autoscaler.</p>\n<p>Gets Horizontal Pod Autoscaler details in given namespace.</p>\n<p>Returns Horizontal Pod Autoscaler object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As integers</td>\n<td>${hpa_details.spec.target_cpu_utilization_percentage}</td>\n<td>50</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of Horizontal Pod Autoscaler</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_horizontal_pod_autoscaler.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1048, "deprecated": true}, {"name": "Get Hpas In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_horizontal_pod_autoscaler.</p>\n<p>Gets Horizontal Pod Autoscalers in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_horizontal_pod_autoscaler.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1017, "deprecated": true}, {"name": "Get Ingress Details In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_ingress.</p>\n<p>Gets ingress details in given namespace.</p>\n<p>Returns Ingress object representation. Name of ingress.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_ingress.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1337, "deprecated": true}, {"name": "Get Ingresses In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_ingress.</p>\n<p>Gets ingresses in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_ingress.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1313, "deprecated": true}, {"name": "Get Jobs In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_job_by_pattern. Gets jobs matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of jobs.</p>\n<ul>\n<li><code>name_pattern</code>: job name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_job_by_pattern. Gets jobs matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 611, "deprecated": true}, {"name": "Get Kubelet Version", "args": [{"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets list of kubelet versions on each node.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>", "shortdoc": "Gets list of kubelet versions on each node.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1203}, {"name": "Get Namespaced Custom Object", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}, {"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}], "returnType": null, "doc": "<p>Get custom object in namespace.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'k8s.cni.cncf.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>namespace</code>: Namespace, e.g. 'default'</li>\n<li><code>plural</code>: e.g. 'network-attachment-definitions'</li>\n<li><code>name</code>: e.g. 'my-network'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/namespaces/{namespace}/{plural}/{name}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "Get custom object in namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1604}, {"name": "Get Namespaced Pod Exec", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "argv_cmd", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "argv_cmd"}, {"name": "container", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "container=None"}], "returnType": null, "doc": "<p>Exec command on selected container for POD.</p>\n<p>Returns command stdout/stderr</p>\n<ul>\n<li><code>name</code>: pod name</li>\n<li><code>namespace</code>: namespace to check</li>\n<li><code>argv_cmd</code>: command to be executed using argv syntax: [\"/bin/sh\", \"-c\", \"ls\"] it do not use shell as default!</li>\n<li><code>container</code>: container on which we run exec, default: None</li>\n</ul>", "shortdoc": "Exec command on selected container for POD.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 664}, {"name": "Get Namespaces", "args": [{"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespace. Gets a list of available namespaces.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of namespaces names.</p>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespace. Gets a list of available namespaces.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 343, "deprecated": true}, {"name": "Get No Proxy", "args": [], "returnType": null, "doc": "", "shortdoc": "", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 107}, {"name": "Get Pod Logs", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "container", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "container"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_pod_log. Gets container logs of given pod in given namespace.</p>\n<p>Returns logs.</p>\n<ul>\n<li><code>name</code>: Pod name to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n<li><code>container</code>: Container to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_pod_log. Gets container logs of given pod in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 438, "deprecated": true}, {"name": "Get Pod Names In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_pod_by_pattern. Gets pod name matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>name_pattern</code>: Pod name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_pod_by_pattern. Gets pod name matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 368, "deprecated": true}, {"name": "Get Pod Status In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_pod_status.</p>\n<ul>\n<li><code>name</code>: Name of pod.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_pod_status.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 849, "deprecated": true}, {"name": "Get Pods In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_pod_by_pattern. Gets pods matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of pods.</p>\n<ul>\n<li><code>name_pattern</code>: Pod name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_pod_by_pattern. Gets pods matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 402, "deprecated": true}, {"name": "Get Proxy", "args": [], "returnType": null, "doc": "", "shortdoc": "", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 102}, {"name": "Get Pvc Capacity", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_persistent_volume_claim.</p>\n<p>Gets PVC details in given namespace.</p>\n<p>Returns PVC object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As strings</td>\n<td>${pvc.status.capacity.storage}</td>\n<td>1Gi</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of PVC.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_persistent_volume_claim.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1186, "deprecated": true}, {"name": "Get Pvc In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_persistent_volume_claim.</p>\n<p>Gets pvcs in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_persistent_volume_claim.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1156, "deprecated": true}, {"name": "Get Replicasets In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_replica_set_by_pattern. Gets replicasets matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of  replicasets.</p>\n<ul>\n<li><code>name_pattern</code>: replicaset name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_replica_set_by_pattern. Gets replicasets matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 576, "deprecated": true}, {"name": "Get Role Bindings In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_role_binding.</p>\n<p>Gets role_bindings in given namespace.</p>\n<p>Returns list of role_bindings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_role_binding.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1533, "deprecated": true}, {"name": "Get Roles In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_role.</p>\n<p>Gets roles in given namespace.</p>\n<p>Returns list of roles.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_role.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1509, "deprecated": true}, {"name": "Get Secrets In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_secret_by_pattern. Gets secrets matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of secrets.</p>\n<ul>\n<li><code>name_pattern</code>: secret name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_secret_by_pattern. Gets secrets matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 646, "deprecated": true}, {"name": "Get Service Accounts In Namespace", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_service_account_by_pattern. Gets service accounts matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of service accounts.</p>\n<ul>\n<li><code>name_pattern</code>: Service Account name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_service_account_by_pattern. Gets service accounts matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 506, "deprecated": true}, {"name": "Get Service Details In Namespace", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use read_namespaced_service.</p>\n<p>Gets service details in given namespace.</p>\n<p>Returns Service object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As integers</td>\n<td>${service_details.spec.ports[0].port}</td>\n<td>8080</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of service.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use read_namespaced_service.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 986, "deprecated": true}, {"name": "Get Services In Namespace", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_namespaced_service.</p>\n<p>Gets services in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_namespaced_service.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 956, "deprecated": true}, {"name": "K8s Api Ping", "args": [], "returnType": null, "doc": "<p>Performs GET on /api/v1/ for simple check of API availability.</p>\n<p>Returns tuple of (response data, response status, response headers). Can be used as prerequisite in tests.</p>", "shortdoc": "Performs GET on /api/v1/ for simple check of API availability.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 294}, {"name": "K8s Version", "args": [], "returnType": null, "doc": "<p>Performs GET on /version to show the k8s cluster version.</p>\n<p>Returns a dict of kubernetes version information, similar to <span class=\"name\">kubectl version</span>.</p>", "shortdoc": "Performs GET on /version to show the k8s cluster version.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 313}, {"name": "List Cluster Custom Object", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}], "returnType": null, "doc": "<p>Lists cluster level custom objects.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'k8s.cni.cncf.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>plural</code>: e.g. 'network-attachment-definitions'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/{plural}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "Lists cluster level custom objects.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1546}, {"name": "List Cluster Custom Objects", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}], "returnType": null, "doc": "<p><b>DEPRECATED</b> Will be removed in v1.0.0. Use list_cluster_custom_object.</p>\n<p>Lists cluster level custom objects.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'k8s.cni.cncf.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>plural</code>: e.g. 'network-attachment-definitions'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/{plural}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "*DEPRECATED* Will be removed in v1.0.0. Use list_cluster_custom_object.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1564, "deprecated": true}, {"name": "List Cluster Role", "args": [], "returnType": null, "doc": "<p>Gets a list of cluster_roles.</p>\n<p>Returns list of cluster_roles.</p>", "shortdoc": "Gets a list of cluster_roles.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1462}, {"name": "List Cluster Role Binding", "args": [], "returnType": null, "doc": "<p>Gets a list of cluster_role_bindings.</p>\n<p>Returns list of cluster_role_bindings.</p>", "shortdoc": "Gets a list of cluster_role_bindings.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1480}, {"name": "List Namespace", "args": [{"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists available namespaces.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of namespaces.</p>", "shortdoc": "Lists available namespaces.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 333}, {"name": "List Namespaced Config Map By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists configmaps matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of configmaps.</p>\n<ul>\n<li><code>name_pattern</code>: configmap name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Lists configmaps matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 454}, {"name": "List Namespaced Cron Job", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets cron jobs in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets cron jobs in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1350}, {"name": "List Namespaced Custom Object", "args": [{"name": "group", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "group"}, {"name": "version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "version"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "plural", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "plural"}], "returnType": null, "doc": "<p>List custom objects in namespace.</p>\n<p>Returns an object.</p>\n<ul>\n<li><code>group</code>: API Group, e.g. 'k8s.cni.cncf.io'</li>\n<li><code>version</code>: API version, e.g. 'v1'</li>\n<li><code>namespace</code>: Namespace, e.g. 'default'</li>\n<li><code>plural</code>: e.g. 'network-attachment-definitions'</li>\n</ul>\n<p>As in <code>GET /apis/{group}/{version}/namespaces/{namespace}/{plural}</code></p>\n<p><a href=\"https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md\">https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md</a></p>", "shortdoc": "List custom objects in namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1626}, {"name": "List Namespaced Daemon Set", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets a list of available daemonsets.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of deaemonsets.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets a list of available daemonsets.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1406}, {"name": "List Namespaced Deployment By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets deployments matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of deployments.</p>\n<ul>\n<li><code>name_pattern</code>: deployment name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets deployments matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 524}, {"name": "List Namespaced Horizontal Pod Autoscaler", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets Horizontal Pod Autoscalers in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets Horizontal Pod Autoscalers in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1003}, {"name": "List Namespaced Ingress", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets ingresses in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets ingresses in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1302}, {"name": "List Namespaced Job By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets jobs matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of jobs.</p>\n<ul>\n<li><code>name_pattern</code>: job name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets jobs matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 594}, {"name": "List Namespaced Persistent Volume Claim", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets pvcs in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets pvcs in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1097}, {"name": "List Namespaced Persistent Volume Claim By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets pvcs in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n<li><code>name_pattern</code>: pvc name pattern to check</li>\n</ul>", "shortdoc": "Gets pvcs in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1110}, {"name": "List Namespaced Pod By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>List pods matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of pods.</p>\n<ul>\n<li><code>name_pattern</code>: Pod name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "List pods matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 385}, {"name": "List Namespaced Replica Set By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists replicasets matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of  replicasets.</p>\n<ul>\n<li><code>name_pattern</code>: replicaset name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Lists replicasets matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 559}, {"name": "List Namespaced Role", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets roles in given namespace.</p>\n<p>Returns list of roles.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets roles in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1498}, {"name": "List Namespaced Role Binding", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets role_bindings in given namespace.</p>\n<p>Returns list of role_bindings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets role_bindings in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1522}, {"name": "List Namespaced Secret By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists secrets matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of secrets.</p>\n<ul>\n<li><code>name_pattern</code>: secret name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Lists secrets matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 629}, {"name": "List Namespaced Service", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Gets services in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of strings.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets services in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 943}, {"name": "List Namespaced Service Account By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists service accounts matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of service accounts.</p>\n<ul>\n<li><code>name_pattern</code>: Service Account name pattern to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Lists service accounts matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 489}, {"name": "List Namespaced Stateful Set", "args": [{"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists statefulsets in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of  statefulsets.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Lists statefulsets in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1126}, {"name": "List Namespaced Stateful Set By Pattern", "args": [{"name": "name_pattern", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name_pattern"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "label_selector", "type": null, "defaultValue": "", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "label_selector="}], "returnType": null, "doc": "<p>Lists statefulsets matching pattern in given namespace.</p>\n<p>Can be optionally filtered by label. e.g. label_selector=label_key=label_value</p>\n<p>Returns list of  statefulsets.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n<li><code>name_pattern</code>: statefulset name pattern to check</li>\n</ul>", "shortdoc": "Lists statefulsets matching pattern in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1139}, {"name": "Patch", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Patches resource instances based on the provided parameters.</p>\n<p>Can be optionally given a <code>namespace</code>, <code>name</code>, <code>label_selector</code>, <code>body</code> and <code>field_selector</code>.</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Patches resource instances based on the provided parameters.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 200}, {"name": "Read Namespaced Cron Job", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets cron job details in given namespace.</p>\n<p>Returns Cron job object representation.</p>\n<ul>\n<li><code>name</code>: Name of cron job.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets cron job details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1378}, {"name": "Read Namespaced Daemon Set", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets deamonset details in given namespace.</p>\n<p>Returns daemonset object representation.</p>\n<ul>\n<li><code>name</code>: Name of the daemonset</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets deamonset details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1434}, {"name": "Read Namespaced Endpoints", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets endpoint details in given namespace.</p>\n<p>Returns Endpoint object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Match</td>\n<td>${endpoint_details.subsets[0].addresses[0].target_ref.name}</td>\n<td>pod-name-123456</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of endpoint.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets endpoint details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1065}, {"name": "Read Namespaced Horizontal Pod Autoscaler", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets Horizontal Pod Autoscaler details in given namespace.</p>\n<p>Returns Horizontal Pod Autoscaler object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As integers</td>\n<td>${hpa_details.spec.target_cpu_utilization_percentage}</td>\n<td>50</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of Horizontal Pod Autoscaler</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets Horizontal Pod Autoscaler details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1033}, {"name": "Read Namespaced Ingress", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets ingress details in given namespace.</p>\n<p>Returns Ingress object representation. Name of ingress.</p>\n<ul>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets ingress details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1326}, {"name": "Read Namespaced Persistent Volume Claim", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets PVC details in given namespace.</p>\n<p>Returns PVC object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As strings</td>\n<td>${pvc.status.capacity.storage}</td>\n<td>1Gi</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of PVC.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets PVC details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 1171}, {"name": "Read Namespaced Pod Log", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}, {"name": "container", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "container"}, {"name": "since_seconds", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "since_seconds=None"}], "returnType": null, "doc": "<p>Gets container logs of given pod in given namespace.</p>\n<p>Can be optionally filtered by time in seconds. e.g. since_seconds=1000.</p>\n<p>Returns logs.</p>\n<ul>\n<li><code>name</code>: Pod name to check</li>\n<li><code>namespace</code>: Namespace to check</li>\n<li><code>container</code>: Container to check</li>\n</ul>", "shortdoc": "Gets container logs of given pod in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 420}, {"name": "Read Namespaced Pod Status", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Reads pod status in given namespace.</p>\n<ul>\n<li><code>name</code>: Name of pod.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Reads pod status in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 838}, {"name": "Read Namespaced Service", "args": [{"name": "name", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "name"}, {"name": "namespace", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "namespace"}], "returnType": null, "doc": "<p>Gets service details in given namespace.</p>\n<p>Returns Service object representation. Can be accessed using</p>\n<table border=\"1\">\n<tr>\n<td>Should Be Equal As integers</td>\n<td>${service_details.spec.ports[0].port}</td>\n<td>8080</td>\n</tr>\n</table>\n<ul>\n<li><code>name</code>: Name of service.</li>\n<li><code>namespace</code>: Namespace to check</li>\n</ul>", "shortdoc": "Gets service details in given namespace.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 971}, {"name": "Reload Config", "args": [{"name": "kube_config", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "kube_config=None"}, {"name": "context", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "context=None"}, {"name": "api_url", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "api_url=None"}, {"name": "bearer_token", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "bearer_token=None"}, {"name": "ca_cert", "type": null, "defaultValue": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "ca_cert=None"}, {"name": "incluster", "type": null, "defaultValue": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "incluster=False"}, {"name": "cert_validation", "type": null, "defaultValue": "True", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cert_validation=True"}], "returnType": null, "doc": "<p>Reload the KubeLibrary to be configured with different optional arguments. This can be used to connect to a different cluster during the same test.</p>\n<ul>\n<li><code>kube_config</code>: Path pointing to kubeconfig of target Kubernetes cluster.</li>\n<li><code>context</code>: Active context. If None current_context from kubeconfig is used.</li>\n<li><code>api_url</code>: K8s API url, used for bearer token authenticaiton.</li>\n<li><code>bearer_token</code>: Bearer token, used for bearer token authenticaiton. Do not include 'Bearer ' prefix.</li>\n<li><code>ca_cert</code>: Optional CA certificate file path, used for bearer token authenticaiton.</li>\n<li><code>incuster</code>: Default False. Indicates if used from within k8s cluster. Overrides kubeconfig.</li>\n<li><code>cert_validation</code>: Default True. Can be set to False for self-signed certificates.</li>\n</ul>\n<p>Environment variables:</p>\n<ul>\n<li>HTTP_PROXY: Proxy URL</li>\n</ul>", "shortdoc": "Reload the KubeLibrary to be configured with different optional arguments.    This can be used to connect to a different cluster during the same test. - ``kube_config``:   Path pointing to kubeconfig of target Kubernetes cluster. - ``context``:   Active context. If None current_context from kubeconfig is used. - ``api_url``:   K8s API url, used for bearer token authenticaiton. - ``bearer_token``:   Bearer token, used for bearer token authenticaiton. Do not include 'Bearer ' prefix. - ``ca_cert``:   Optional CA certificate file path, used for bearer token authenticaiton. - ``incuster``:   Default False. Indicates if used from within k8s cluster. Overrides kubeconfig. - ``cert_validation``:   Default True. Can be set to False for self-signed certificates.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 230}, {"name": "Replace", "args": [{"name": "api_version", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "api_version"}, {"name": "kind", "type": null, "defaultValue": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "kind"}, {"name": "kwargs", "type": null, "defaultValue": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "returnType": null, "doc": "<p>Replaces resource instances based on the provided parameters.</p>\n<p>Can be optionally given a <code>namespace</code>, <code>name</code>, <code>label_selector</code>, <code>body</code> and <code>field_selector</code>.</p>\n<ul>\n<li><code>api_version</code>: Api version of the desired kubernetes resource</li>\n<li><code>kind</code>: Kind of the desired kubernetes resource</li>\n<li><code>**kwargs</code>: Keyword arguments for argument forwarding</li>\n</ul>", "shortdoc": "Replaces resource instances based on the provided parameters.", "tags": [], "source": "/home/nils/workspace/nilsty/KubeLibrary/src/KubeLibrary/KubeLibrary.py", "lineno": 215}], "typedocs": []}
</script>
    <link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
  </head>
  <body>
    <style>#javascript-disabled{color:#000;background:#eee;border:1px solid #ccc;width:600px;margin:100px auto 0;padding:20px}#javascript-disabled h1{float:none;width:100%}#javascript-disabled ul{font-size:1.2em}#javascript-disabled li{margin:.5em 0}#javascript-disabled b{font-style:italic}</style>

    <div id="javascript-disabled">
      <h1>Opening library documentation failed</h1>
      <ul>
        <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
        <li>
          Make sure you are using a <b>modern enough browser</b>. If using
          Internet Explorer, version 11 is required.
        </li>
        <li>
          Check are there messages in your browser's
          <b>JavaScript error log</b>. Please report the problem if you suspect
          you have encountered a bug.
        </li>
      </ul>
    </div>

    <script type="text/javascript">document.getElementById("javascript-disabled").style.display="none",window.addEventListener("hashchange",function(){document.getElementsByClassName("hamburger-menu")[0].checked=!1},!1),window.addEventListener("hashchange",function(){if(0==window.location.hash.indexOf("#type-")){let e="#type-modal-"+decodeURI(window.location.hash.slice(6)),n=document.querySelector(".data-types").querySelector(e);n&&showModal(n)}},!1);</script>

    <style>:root{--background-color:white;--text-color:black;--border-color:#e0e0e2;--light-background-color:#f3f3f3;--robot-highlight:#00c0b5;--highlighted-color:var(--text-color);--highlighted-background-color:yellow;--less-important-text-color:gray;--link-color:#00e}[data-theme=dark]{--background-color:#1c2227;--text-color:#e2e1d7;--border-color:#4e4e4e;--light-background-color:#002b36;--robot-highlight:yellow;--highlighted-color:var(--background-color);--highlighted-background-color:yellow;--less-important-text-color:#5b6a6f;--link-color:#52adff;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--background-color);color:var(--text-color);margin:0;font-family:system-ui,-apple-system,sans-serif}input,button,select{background:var(--background-color);color:var(--text-color)}a{color:var(--link-color)}.base-container{display:flex}.libdoc-overview{background:#fff;background:var(--background-color);flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.libdoc-overview h4{margin-top:.5rem;margin-bottom:.5rem}.keyword-search-box{border:1px solid var(--border-color);border-radius:3px;justify-content:space-between;height:30px;margin-top:.5rem;display:flex}#tags-shortcuts-container{border:1px solid var(--border-color);border-radius:3px;height:30px;margin-top:.5rem}.search-input{text-indent:4px;border:none;flex:1}.clear-search{border:none}#shortcuts-container{flex-direction:column;height:100%;display:flex}.libdoc-details{max-width:1000px;margin-top:60px;padding-left:2%;padding-right:2%;overflow:auto}.libdoc-title{color:var(--text-color);align-items:center;width:300px;height:36px;margin:.5rem;padding:.5rem;text-decoration:none;display:flex;position:fixed;top:0;left:0}#language-container{z-index:1000;position:fixed;top:0;right:0}#language-container button{border:none;padding-top:15px;padding-right:15px}#language-container svg{width:20px;height:20px}#language-container svg path{stroke:var(--text-color);fill:var(--background-color)}#language-container ul{background-color:var(--background-color);margin:0;padding:10px;list-style:none}#language-container a{cursor:pointer;color:var(--less-important-text-color);text-decoration:none}#language-container a.selected{color:var(--text-color)}.hamburger-menu{z-index:100;display:none;position:fixed}input.hamburger-menu{cursor:pointer;opacity:0;z-index:2;-webkit-touch-callout:none;width:67px;height:46px;display:none;position:fixed;top:0;right:0}span.hamburger-menu{background:#000;background:var(--text-color);z-index:1;transform-origin:4px 0;border-radius:2px;width:31px;height:2px;margin-bottom:5px;transition:transform .3s cubic-bezier(.77,.2,.05,1),opacity .35s;position:fixed;right:20px}span.hamburger-menu-1{transform-origin:0 0;top:14px}span.hamburger-menu-2{top:24px}span.hamburger-menu-3{transform-origin:0 100%;top:34px}input.hamburger-menu:checked~span.hamburger-menu-1{opacity:1;background:var(--text-color);transform:rotate(45deg)translate(2px,-3px)}input.hamburger-menu:checked~span.hamburger-menu-2{opacity:0;transform:rotate(0)scale(.2)}input.hamburger-menu:checked~span.hamburger-menu-3{background:var(--text-color);transform:rotate(-45deg)translate(2px,3px)}.libdoc-title>svg{width:42px;height:42px;padding-top:2px}#robot-svg-path{fill:var(--text-color);stroke:none;fill-opacity:1;fill-rule:nonzero}.keywords-overview{border:1px solid var(--border-color);border-radius:3px;flex-direction:column;flex:1;height:0;max-height:calc(100vh - 60px - .5rem);margin:60px 0 .5rem .5rem;padding-left:.5rem;padding-right:.5rem;display:flex}.keywords-overview-header-row{justify-content:space-between;display:flex}.shortcuts{flex:1;max-width:320px;margin:0;padding-left:0;font-size:.9em;list-style:none;overflow:auto}.shortcuts.keyword-wall{flex:unset}.shortcuts a{white-space:nowrap;color:var(--text-color);padding:.5rem;text-decoration:none;display:block}.shortcuts a:hover{background:var(--light-background-color)}.shortcuts a:first-letter{letter-spacing:.1em;font-weight:700}.shortcuts.keyword-wall a{padding:0 .5rem .5rem 0}.shortcuts.keyword-wall a:after{content:"·";padding-left:.5rem}.enum-type-members,.dt-usages-list{padding-left:1em;list-style:none}.dt-usages-list>li{margin-bottom:.2em}.dt-usages a{color:var(--text-color);font-size:.9em;text-decoration:none;display:inline-block}.dt-usages a:first-letter{letter-spacing:.1em;font-weight:700}.arguments-list-container{margin-bottom:1.33rem;overflow-y:auto}.arguments-list{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:auto auto auto;row-gap:3px;display:inline-grid}.typed-dict-annotation>span,.enum-type-members span,.arguments-list .arg-name{-ms-grid-column:1;white-space:nowrap;border-radius:3px;grid-column:1;justify-self:start;padding-left:.5rem;padding-right:.5rem}.arguments-list .arg-default-container{-ms-grid-column:2;grid-column:2;display:flex}.optional-key{font-style:italic}.arguments-list .arg-default-eq{background:var(--background-color);margin-left:2rem;margin-right:.5rem}.arguments-list .arg-default-value{border-radius:3px;padding-left:.5rem;padding-right:.5rem}.arguments-list .base-arg-data{min-width:150px;display:flex}.arguments-list .arg-type,.return-type .arg-type{-ms-grid-column:3;background:var(--background-color);white-space:nowrap;-webkit-text-size-adjust:none;grid-column:3;margin-left:2rem}.tags .kw-tags{margin-left:2rem;display:flex}.tag-link{cursor:pointer}.tag-link:hover{text-decoration:underline}.arguments-list .arg-kind{color:#0000;text-shadow:0 0 0 var(--less-important-text-color);padding:0;font-size:.8em}@media only screen and (width>=900px){.libdoc-details{z-index:1;background:var(--background-color)}#toggle-keyword-shortcuts{border:1px solid var(--border-color);border-radius:3px;margin-top:3px;margin-bottom:3px}#toggle-keyword-shortcuts:hover{background:var(--light-background-color)}.shortcuts.keyword-wall{flex-wrap:wrap;width:320px;max-width:none;display:flex}}@media only screen and (width>=1200px){.shortcuts.keyword-wall{width:640px}}@media only screen and (width<=899px){.libdoc-overview,#toggle-keyword-shortcuts{display:none}.libdoc-title{border-bottom:1px solid var(--border-color);background:#fff;background:var(--background-color);width:100%;margin:0;padding:.5rem}.libdoc-title>svg{margin-right:60px}.libdoc-details{padding-left:.5rem}input.hamburger-menu,.hamburger-menu{display:block}.hamburger-menu:checked~.libdoc-overview{width:100%;height:100vh;display:block;position:fixed}.keywords-overview{border:none;margin:60px 0 0}.shortcuts{overscroll-behavior:none;max-width:100vw}}.metadata{margin-top:.5rem}.metadata th{text-align:left;padding-right:1em}a.name,span.name{font-style:italic}.libdoc-details a img{border:1px solid #c30!important}a:hover,a:active{color:var(--text-color);text-decoration:underline}a:hover{text-decoration:underline!important}.normal-first-letter:first-letter{letter-spacing:0!important;font-weight:400!important}.shortcut-list-toggle,.tag-list-toggle{margin-bottom:1em;font-size:.9em}input.switch{display:none}.slider{background-color:var(--border-color);width:36px;height:18px;display:inline-block;position:relative;top:5px}.slider:before{background-color:var(--background-color);content:"";width:12px;height:12px;position:absolute;top:3px;left:3px}input.switch:checked+.slider:before{background-color:var(--background-color);left:21px}.keywords{flex-direction:column;display:flex}.kw-overview{flex-direction:column;justify-content:start;display:flex}@media only screen and (width>=899px){.kw-overview{max-width:850px;margin-right:1.5rem}}.kw-docs{flex-direction:column;display:flex;overflow-y:auto}.dt-name:link,.kw-name:link,.dt-name:visited,.kw-name:visited{color:var(--text-color);text-decoration:none}.kw{align-items:baseline;min-width:250px;display:flex}h4{margin-right:.5rem}.keyword-container{border:1px solid var(--border-color);border-radius:3px;flex-direction:column;margin-bottom:.5rem;padding:.5rem 1rem;scroll-margin-top:60px;display:flex}.keyword-container:target{box-shadow:0 0 4px var(--robot-highlight)}.data-type-content,.keyword-content{flex-direction:column;display:flex}.data-type-container{border-top:1px solid var(--border-color);flex-direction:column;margin-bottom:.5rem;padding:.5rem 1rem;scroll-margin-top:60px;display:flex}.kw-row{border:1px solid var(--border-color);border-radius:3px;flex-direction:column;justify-content:start;margin-bottom:.5rem;padding:.5rem 1rem;text-decoration:none;display:flex}.kw a{color:inherit;font-weight:700;text-decoration:none}.args{min-width:200px}.enum-type-members span,.args span,.return-type span,.args a{background:var(--light-background-color);padding:0 .1em;font-family:monospace;font-size:1.1em}.arg-type,span.type,a.type{background:0 0;padding:0;font-size:1em}.typed-dict-item .td-type:after{content:","}.typed-dict-item .td-type:nth-last-child(2):after{content:""}.td-item:before{content:"  ";white-space:pre}.typed-dict-item{background:var(--light-background-color);padding:.4rem;font-family:monospace;font-size:1.1em;display:block}.args span .highlight{background:var(--highlighted-background-color);color:var(--highlighted-color)}.tags,.return-type{align-items:baseline;display:flex}.tags a{color:inherit;padding:0 .1em;text-decoration:none}.footer{font-size:.9em}.doc div>:last-child{margin-bottom:0}.highlight{background:var(--highlighted-background-color);color:var(--highlighted-color)}.data-type{font-style:italic}.no-match{color:var(--less-important-text-color)!important}.no-match .dt-name,.no-match .kw-name{color:var(--less-important-text-color)}.modal-icon{cursor:pointer;background:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" height=\"100%\" width=\"100%\"><path stroke=\"black\" fill=\"none\" stroke-width=\"2px\" stroke-linecap=\"round\" d=\"M1 8 L1 1 L8 1 M16 1 L23 1 L23 8 M23 16 L23 23 L16 23 M8 23 L1 23 L1 16\"></path><path fill=\"black\" stroke=\"none\" stroke-width=\"1px\" transform=\"scale(1.3) translate(-3 -2.5)\" d=\"M19 7.97zm-8 9.2-4-2.3v-4.63l4 2.33v4.6zm1-6.33L8.04 8.53 12 6.25l3.96 2.28L12 10.84zm5 4.03-4 2.3v-4.6l4-2.33v4.63z\"></path></svg>");border:none;width:1rem;height:1rem;margin:0 .25rem;padding:0;font-size:12px;font-weight:600}@media (prefers-color-scheme:dark){.modal-icon{background:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" height=\"100%\" width=\"100%\"><path stroke=\"%23e2e1d7\" fill=\"none\" stroke-width=\"2px\" stroke-linecap=\"round\" d=\"M1 8 L1 1 L8 1 M16 1 L23 1 L23 8 M23 16 L23 23 L16 23 M8 23 L1 23 L1 16\"></path><path fill=\"%23e2e1d7\" stroke=\"none\" stroke-width=\"1px\" transform=\"scale(1.3) translate(-3 -2.5)\" d=\"M19 7.97zm-8 9.2-4-2.3v-4.63l4 2.33v4.6zm1-6.33L8.04 8.53 12 6.25l3.96 2.28L12 10.84zm5 4.03-4 2.3v-4.6l4-2.33v4.63z\"></path></svg>")}}.modal-background,.modal{opacity:0;pointer-events:none;transition:opacity .2s}.modal-background{z-index:1;background-color:#000000b3;position:fixed;inset:0}.modal{background-color:var(--background-color);border:1px solid var(--border-color);z-index:2;border-radius:3px;flex-flow:column;width:720px;max-width:calc(100vw - 2rem);height:calc(100vh - 6rem);margin:0 auto;transition-delay:.1s;display:flex;overflow:auto}.modal-content{margin-bottom:3rem}.modal>.modal-content>.data-type-container{border-top:none}.modal-close-button-wrapper{justify-content:flex-end;display:flex}.modal-close-button-container{width:720px;max-width:calc(100vw - 2rem);margin:0 auto;overflow:auto}.modal-close-button{border:1px solid var(--border-color);cursor:pointer;border-radius:3px;margin:.5rem 0;padding:.25rem .5rem}.modal-background.visible,.modal.visible{opacity:1;pointer-events:all}#data-types-container,.hidden{display:none}</style>
    <style>#introduction-container>h2,.doc>h1,.doc>h2,.section>h1,.section>h2{margin-top:4rem;margin-bottom:1rem}.doc>h3,.section>h3{margin-top:3rem;margin-bottom:1rem}.doc>h4,.section>h4{margin-top:2rem;margin-bottom:1rem}.doc>p,.section>p{margin-top:1rem;margin-bottom:.5rem}.doc>:first-child{margin-top:.1em}.doc table{border-collapse:collapse;empty-cells:show;background:0 0;border:none;font-size:.9em;display:block;overflow-y:auto}.doc table th,.doc table td{border:1px solid var(--border-color);background:0 0;height:1.2em;padding:.1em .3em}.doc table th{text-align:center;letter-spacing:.1em}.doc pre{letter-spacing:.05em;background:var(--light-background-color);border-radius:3px;padding:.3rem;font-size:1.1em;overflow-y:auto}.kwdoc pre{margin-left:-90px}.doc code,.docutils.literal{letter-spacing:.05em;background:var(--light-background-color);border-radius:3px;padding:1px;font-size:1.1em}.doc li{list-style-type:square;list-style-position:inside}.doc img{border:1px solid #ccc}.doc hr{background:#ccc;border:0;height:1px}</style>
    <style>.code .hll{background-color:#ffc}.code{background:#f8f8f8}.code .c{color:#408080;font-style:italic}.code .err{border:1px solid red}.code .k{color:green;font-weight:700}.code .o{color:#666}.code .ch,.code .cm{color:#408080;font-style:italic}.code .cp{color:#bc7a00}.code .cpf,.code .c1,.code .cs{color:#408080;font-style:italic}.code .gd{color:#a00000}.code .ge{font-style:italic}.code .gr{color:red}.code .gh{color:navy;font-weight:700}.code .gi{color:#00a000}.code .go{color:#888}.code .gp{color:navy;font-weight:700}.code .gs{font-weight:700}.code .gu{color:purple;font-weight:700}.code .gt{color:#04d}.code .kc,.code .kd,.code .kn{color:green;font-weight:700}.code .kp{color:green}.code .kr{color:green;font-weight:700}.code .kt{color:#b00040}.code .m{color:#666}.code .s{color:#ba2121}.code .na{color:#7d9029}.code .nb{color:green}.code .nc{color:#00f;font-weight:700}.code .no{color:#800}.code .nd{color:#a2f}.code .ni{color:#999;font-weight:700}.code .ne{color:#d2413a;font-weight:700}.code .nf{color:#00f}.code .nl{color:#a0a000}.code .nn{color:#00f;font-weight:700}.code .nt{color:green;font-weight:700}.code .nv{color:#19177c}.code .ow{color:#a2f;font-weight:700}.code .w{color:#bbb}.code .mb,.code .mf,.code .mh,.code .mi,.code .mo{color:#666}.code .sa,.code .sb,.code .sc,.code .dl{color:#ba2121}.code .sd{color:#ba2121;font-style:italic}.code .s2{color:#ba2121}.code .se{color:#b62;font-weight:700}.code .sh{color:#ba2121}.code .si{color:#b68;font-weight:700}.code .sx{color:green}.code .sr{color:#b68}.code .s1{color:#ba2121}.code .ss{color:#19177c}.code .bp{color:green}.code .fm{color:#00f}.code .vc,.code .vg,.code .vi,.code .vm{color:#19177c}.code .il{color:#666}@media (prefers-color-scheme:dark){.code .hll{background-color:#073642}.code{color:#839496;background:#002b36}.code .c{color:#586e75;font-style:italic}.code .err{color:#839496;background-color:#dc322f}.code .esc,.code .g{color:#839496}.code .k{color:#859900}.code .l,.code .n{color:#839496}.code .o{color:#586e75}.code .x,.code .p{color:#839496}.code .ch,.code .cm{color:#586e75;font-style:italic}.code .cp{color:#d33682}.code .cpf{color:#586e75}.code .c1,.code .cs{color:#586e75;font-style:italic}.code .gd{color:#dc322f}.code .ge{color:#839496;font-style:italic}.code .gr{color:#dc322f}.code .gh{color:#839496;font-weight:700}.code .gi{color:#859900}.code .go,.code .gp{color:#839496}.code .gs{color:#839496;font-weight:700}.code .gu{color:#839496;text-decoration:underline}.code .gt{color:#268bd2}.code .kc,.code .kd{color:#2aa198}.code .kn{color:#cb4b16}.code .kp,.code .kr{color:#859900}.code .kt{color:#b58900}.code .ld{color:#839496}.code .m,.code .s{color:#2aa198}.code .na{color:#839496}.code .nb,.code .nc,.code .no,.code .nd,.code .ni,.code .ne,.code .nf,.code .nl,.code .nn{color:#268bd2}.code .nx,.code .py{color:#839496}.code .nt,.code .nv{color:#268bd2}.code .ow{color:#859900}.code .w{color:#839496}.code .mb,.code .mf,.code .mh,.code .mi,.code .mo,.code .sa,.code .sb,.code .sc,.code .dl{color:#2aa198}.code .sd{color:#586e75}.code .s2,.code .se,.code .sh,.code .si,.code .sx{color:#2aa198}.code .sr{color:#cb4b16}.code .s1,.code .ss{color:#2aa198}.code .bp,.code .fm,.code .vc,.code .vg,.code .vi,.code .vm{color:#268bd2}.code .il{color:#2aa198}}</style>
    <style media="print">body{margin:0;padding:0;font-size:8pt}a{text-decoration:none}#search,#open-search{display:none}</style>

    <div id="root"></div>
    <script type="text/x-handlebars-template" id="base-template">
      <div class="base-container">
        <div id="language-container">
        </div>
        <input
          id="hamburger-menu-input"
          class="hamburger-menu"
          type="checkbox"
        />
        <span class="hamburger-menu hamburger-menu-1"></span>
        <span class="hamburger-menu hamburger-menu-2"></span>
        <span class="hamburger-menu hamburger-menu-3"></span>
        <div class="libdoc-overview"><div id="shortcuts-container"></div></div>
        <div class="libdoc-details">
          <table class="metadata">
            {{#if version}}<tr><th>{{t "libVersion"}}:</th><td
                >{{version}}</td></tr>{{/if}}
            {{#if scope}}<tr><th>{{t "libScope"}}:</th><td
                >{{scope}}</td></tr>{{/if}}
          </table>
          <div id="introduction-container">
            <h2 id="introduction">{{t "intro"}}</h2>
            <div class="doc">{{{doc}}}</div>
          </div>
          <div id="importing-container"></div>
          <div id="keywords-container"></div>
          <div id="data-types-container"></div>
          <div id="footer-container"></div>
        </div>
        <a class="libdoc-title" href="#library-documentation-top">
          <h1>{{name}}</h1>
          <svg
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:cc="http://creativecommons.org/ns#"
            xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
            xmlns:svg="http://www.w3.org/2000/svg"
            xmlns="http://www.w3.org/2000/svg"
            viewBox="0 0 202.4325 202.34125"
            height="42"
            width="42"
            xml:space="preserve"
            version="1.1"
          ><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format
                  >image/svg+xml</dc:format><dc:type
                    rdf:resource="http://purl.org/dc/dcmitype/StillImage"
                  /></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath
                id="clipPath16"
                clipPathUnits="userSpaceOnUse"
              ><path
                  id="path18"
                  d="m 0,161.873 161.946,0 L 161.946,0 0,0 0,161.873 Z"
                /></clipPath></defs><g
              transform="matrix(1.25,0,0,-1.25,0,202.34125)"
              id="g10"
            ><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g
                    transform="translate(52.4477,88.1268)"
                    id="g20"
                  ><path
                      id="robot-svg-path"
                      d="m 0,0 c 0,7.6 6.179,13.779 13.77,13.779 7.6,0 13.779,-6.179 13.779,-13.779 0,-2.769 -2.238,-5.007 -4.998,-5.007 -2.761,0 -4.999,2.238 -4.999,5.007 0,2.078 -1.695,3.765 -3.782,3.765 C 11.693,3.765 9.997,2.078 9.997,0 9.997,-2.769 7.76,-5.007 4.999,-5.007 2.238,-5.007 0,-2.769 0,0 m 57.05,-23.153 c 0,-2.771 -2.237,-5.007 -4.998,-5.007 l -46.378,0 c -2.761,0 -4.999,2.236 -4.999,5.007 0,2.769 2.238,5.007 4.999,5.007 l 46.378,0 c 2.761,0 4.998,-2.238 4.998,-5.007 M 35.379,-2.805 c -1.545,2.291 -0.941,5.398 1.35,6.943 l 11.594,7.83 c 2.273,1.58 5.398,0.941 6.943,-1.332 1.545,-2.29 0.941,-5.398 -1.35,-6.943 l -11.594,-7.83 c -0.852,-0.586 -1.829,-0.87 -2.788,-0.87 -1.607,0 -3.187,0.781 -4.155,2.202 m 31.748,-30.786 c 0,-0.945 -0.376,-1.852 -1.045,-2.522 l -8.617,-8.617 c -0.669,-0.668 -1.576,-1.045 -2.523,-1.045 l -52.833,0 c -0.947,0 -1.854,0.377 -2.523,1.045 l -8.617,8.617 c -0.669,0.67 -1.045,1.577 -1.045,2.522 l 0,52.799 c 0,0.947 0.376,1.854 1.045,2.522 l 8.617,8.619 c 0.669,0.668 1.576,1.044 2.523,1.044 l 52.833,0 c 0.947,0 1.854,-0.376 2.523,-1.044 l 8.617,-8.619 c 0.669,-0.668 1.045,-1.575 1.045,-2.522 l 0,-52.799 z m 7.334,61.086 -11.25,11.25 c -1.705,1.705 -4.018,2.663 -6.428,2.663 l -56.523,0 c -2.412,0 -4.725,-0.959 -6.43,-2.665 L -17.412,27.494 c -1.704,-1.705 -2.661,-4.016 -2.661,-6.427 l 0,-56.515 c 0,-2.411 0.958,-4.725 2.663,-6.428 l 11.25,-11.25 c 1.705,-1.705 4.017,-2.662 6.428,-2.662 l 56.515,0 c 2.41,0 4.723,0.957 6.428,2.662 l 11.25,11.25 c 1.705,1.703 2.663,4.017 2.663,6.428 l 0,56.514 c 0,2.412 -0.958,4.724 -2.663,6.429"
                    /></g></g></g></g></svg>
        </a>
      </div>
    </script>
    <script type="text/x-handlebars-template" id="language-template">
      <button title="{{t 'chooseLanguage'}}">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 420 420">
        <path stroke-width="26"
              d="M209,15a195,195 0 1,0 2,0z"/>
        <path stroke-width="18"
              d="m210,15v390m195-195H15M59,90a260,260 0 0,0 302,0 m0,240 a260,260 0 0,0-302,0M195,20a250,250 0 0,0 0,382 m30,0 a250,250 0 0,0 0-382"/>
      </svg>
      </button>
      <ul class="hidden">
        {{#each languages}}
          <li class="{{#ifEquals this selected}}selected{{/ifEquals}}"><a>{{this}}</a></li>
        {{/each}}
      </ul>
    </script>
    <script type="text/x-handlebars-template" id="importing-template">
      <h2 id="Importing">{{t "importing"}}</h2>
      <div class="keywords">
          {{#each inits}}
          <div class="kw-row">
            <div class="kw-overview">
            {{#if this.args.length}}
                <div class="args">
                  <h4>{{t "arguments"}}</h4>
                  <div class="arguments-list-container">
                    <div class="arguments-list">
                    {{#each this.args}}
                      {{> arg }}
                    {{/each}}
                    </div>
                  </div>
                </div>
            {{/if}}
            {{#if this.doc}}
              <div class="kw-docs">
                <h4>{{t "doc"}}</h4>
                <div class="kwdoc doc">{{{this.doc}}}</div>
              </div>
            {{/if}}
          </div>
          {{/each}}
      </div>
    </script>
    <script type="text/x-handlebars-template" id="shortcuts-template">
      <div class="keywords-overview">
        <div class="keyword-search-box">
          <input
            placeholder="{{t 'search'}}"
            type="text"
            class="search-input"
          />
          <button class="clear-search">&#10005;</button>
        </div>
        {{#if tags.length}}
          <select id="tags-shortcuts-container">
          </select>
        {{/if}}
        <div class="keywords-overview-header-row">
          <h4>{{t "keywords"}}
            (<span id="keyword-statistics-header"></span>)
          </h4>
          <button id="toggle-keyword-shortcuts">+</button>
        </div>
        <ul class="shortcuts" id="keyword-shortcuts-container">
        </ul>
      </div>
    </script>
    <script type="text/x-handlebars-template" id="keyword-shortcuts-template">
      {{#each keywords}}
        {{#unless this.hidden}}
          <li>
            <a
              href="#{{encodeURIComponent this.name}}"
              class="match"
              title="{{value.shortdoc}}"
            >{{this.name}}</a>
          </li>
        {{/unless}}
      {{/each}}
      {{#each keywords}}
        {{#if this.hidden}}
          <li>
            <a
              href="#{{encodeURIComponent this.name}}"
              class="no-match"
              title="{{value.shortdoc}}"
            >{{this.name}}</a>
          </li>
        {{/if}}
      {{/each}}
    </script>
    <script type="text/x-handlebars-template" id="keywords-template">
      <h2 id="Keywords">{{t "keywords"}}</h2>
      <div class="keywords">
          {{#each keywords}}
          {{#unless this.hidden}}
          {{>keyword this}}
          {{/unless}}
          {{/each}}
          {{#each keywords}}
          {{#if this.hidden}}
          {{>keyword this}}
          {{/if}}
          {{/each}}
      </div>
    </script>
    <script type="text/x-handlebars-template" id="keyword-template">
      <div class="keyword-container {{#if hidden}}no-{{/if}}match" id="{{name}}">
         <div class="keyword-name">
              <h2>
              <a class="kw-name" href="#{{encodeURIComponent name}}"
                 title="{{t 'kwLink'}}">{{name}}</a>
              </h2>
         </div>
         <div class="keyword-content">
            <div class="kw-overview">
              {{#if args.length}}
                <div class="args">
                  <h4>{{t "arguments"}}</h4>
                  <div class="arguments-list-container">
                    <div class="arguments-list">
                    {{#each args}}
                      {{> arg this}}
                    {{/each}}
                    </div>
                  </div>
                </div>
              {{/if}}
              {{#if returnType}}
              <div class="return-type">
                <h4>{{t "returnType"}}</h4>
                <span class="arg-type">
                {{>typeInfo returnType}}
                </span>
              </div>
              {{/if}}
            </div>
            {{#if tags.length}}
            <div class="tags">
              <h4>{{t "tags"}}</h4>
              <span class="kw-tags">
              {{#each tags}}
                <span class="tag-link"
                  title="Show keywords with this tag">{{this}}</span>{{#unless @last}},<br>{{/unless}}
              {{/each}}
              </span>
            </div>
          {{/if}}
        </div>
            {{#if doc}}
              <div class="kw-docs">
                <h4>{{t "doc"}}</h4>
                <div class="kwdoc doc">{{{doc}}}</div>
              </div>
            {{/if}}
         </div>
      </div>
    </script>
    <script type="text/x-handlebars-template" id="argument-template">
          <span class="arg-name {{#if required}}arg-required{{else}}arg-optional{{/if}}" title="{{t 'argName'}}">
          {{#ifEquals kind "VAR_POSITIONAL"}}<span class="arg-kind" title="{{t 'varArgs'}}">*</span>{{/ifEquals}}
          {{#ifEquals kind "VAR_NAMED"}}<span class="arg-kind" title="{{t 'varNamedArgs'}}">**</span>{{/ifEquals}}
          {{#ifEquals kind "NAMED_ONLY"}}<span class="arg-kind" title="{{t 'namedOnlyArg'}}">&#x1F3F7;</span>{{/ifEquals}}
          {{#ifEquals kind "POSITIONAL_ONLY"}}<span class="arg-kind" title="{{t 'posOnlyArg'}}">&#x27F6;</span>{{/ifEquals}}
          {{name}}
          </span>
        {{#ifNotNull defaultValue}}
        <div class="arg-default-container">
          <span class="arg-default-eq">=</span>
          <span class="arg-default-value" title="{{t 'defaultTitle'}}">{{defaultValue}}</span>
        </div>
      {{/ifNotNull}}

      {{#if type}}
        <span class="arg-type">
            {{> typeInfo type}}
        </span>
      {{/if}}
    </script>
    <script type="text/x-handlebars-template" id="tags-shortcuts-template">
      <option value="" {{#ifEquals selectedTag ""}}selected{{/ifEquals}}>- Show all tags -</option>
      {{#each tags}}
        <option {{#ifEquals ../selectedTag this}}selected{{/ifEquals}}>{{this}}
        </option>
      {{/each}}
    </script>
    <script type="text/x-handlebars-template" id="type-info-template">
      {{~#if union}}
        {{#each nested}}
          {{> typeInfo this}}
          {{#unless @last}}|{{/unless}}
        {{/each}}
      {{else~}}
        {{#if typedoc~}}
          <a style="cursor: pointer;" class="type" data-typedoc={{typedoc}} title="{{t 'typeInfoDialog'}}">{{name}}</a>
        {{~else}}
          <span class="type">{{name}}</span>
        {{/if}}
        {{#if nested.length}}
        [
        {{~#each nested}}
            {{~> typeInfo this}}
            {{~#unless @last}},&nbsp;{{/unless}}
          {{~/each~}}
          ]
        {{/if~}}
      {{~/if~}}
    </script>
    <script type="text/x-handlebars-template" id="data-types-template">
      {{#if typedocs.length}}
        <h2 id="Data types">{{t "dataTypes"}}</h2>
        <div class="data-types">
          {{#each typedocs}}
            {{> dataType this}}
          {{/each}}
        </div>
      {{/if}}
    </script>
    <script type="text/x-handlebars-template" id="data-type-template">
      <div class="data-type-container {{#if hidden}}no-{{/if}}match" id="type-modal-{{name}}">
         <div class="data-type-name">
              <h2>{{name}} ({{type}})</h2>
         </div>
         <div class="data-type-content">
            {{#if doc}}
              <div class="dt-docs">
                <h4>{{t "doc"}}</h4>
                <div class="dtdoc doc">{{{doc}}}</div>
              </div>
            {{/if}}
            {{#if members}}
              <div class="dt-members">
                <h4>{{t "allowedValues"}}</h4>
                <ul class="enum-type-members">
                  {{#each members}}
                  <li>
                    <span class="enum-member">{{this.name}}</span>
                    {{#ifContains ../accepts "integer"}}
                      &nbsp; (<span class="enum-member">{{value.value}}</span>)
                    {{/ifContains}}
                  </li>
                  {{/each}}
                </ul>
              </div>
            {{else}}
              {{# if items}}
              <div class="dt-items">
                <h4>{{t "dictStructure"}}</h4>
                  <div class="typed-dict-annotation">
                  <span class="typed-dict-item">
                    {
                      {{#each items}}<br><span
                    {{#if required}}
                      class="td-item {{#if required}}required-key{{else}}optional-key{{/if}}"
                      title="{{#if required}}required-key{{else}}optional-key{{/if}}"
                    {{else}}
                      class="td-item"
                    {{/if}}
                   >'${key}': </span>
                     <span class="td-type">&lt;${type}&gt;</span>
                     {{/each}}<br>
                    }</span>
                  </div>
              </div>
              {{/if}}
            {{/if}}
            {{#if accepts.length}}
              <div class="dt-docs">
                <h4>{{t "convertedTypes"}}</h4>
                <ul class="dt-usages-list">
                {{#each accepts}}
                  <li>{{this}}</li>
                {{/each}}
                </ul>
              </div>
            {{/if}}
            {{#if usages.length}}
              <div class="dt-usages">
                <h4>{{t "usages"}}</h4>
                <ul class="dt-usages-list">
                  {{#each usages}}
                    <li><a href="#{{encodeURIComponent this}}">{{this}}</a></li>
                  {{/each}}
                </ul>
              </div>
            {{/if}}
         </div>
      </div>
    </script>
    <script type="text/x-handlebars-template" id="footer-template">
      <p class="footer">
        {{t "generatedBy"}}
        <a
          href="http://robotframework.org/robotframework/#built-in-tools"
        >Libdoc</a>
        {{t "on"}}
        {{generated}}.
      </p>
    </script>
    <script type="module">let e;function t(e,t,r,n){Object.defineProperty(e,t,{get:r,set:n,enumerable:!0,configurable:!0})}function r(e){return e&&e.__esModule?e.default:e}var n,o,i,a,s,l,c,u,h,p,d,f,g,m,v,y,_,k,S,b,w,E,x,C,P,L,A,O,I,N,M,T,R,B,D,j,$,H,F,V,q,U,K,G,W,J,z,X,Y,Z,Q,ee,et,er,en,eo,ei,ea,es,el,ec,eu,eh,ep,ed,ef=globalThis,eg={},em={},ev=ef.parcelRequirefba8;null==ev&&((ev=function(e){if(e in eg)return eg[e].exports;if(e in em){var t=em[e];delete em[e];var r={id:e,exports:{}};return eg[e]=r,t.call(r.exports,r,r.exports),r.exports}var n=Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}).register=function(e,t){em[e]=t},ef.parcelRequirefba8=ev);var ey=ev.register;ey("ieWO2",function(e,r){var n,o,i;t(e.exports,"SourceMapGenerator",()=>n,e=>n=e),t(e.exports,"SourceMapConsumer",()=>o,e=>o=e),t(e.exports,"SourceNode",()=>i,e=>i=e),n=ev("i8dtv").SourceMapGenerator,o=ev("3DjxD").SourceMapConsumer,i=ev("76tK5").SourceNode}),ey("i8dtv",function(e,r){t(e.exports,"SourceMapGenerator",()=>n,e=>n=e);var n,o=ev("jTqXJ"),i=ev("hvjlv"),a=ev("7Tyww").ArraySet,s=ev("je4qX").MappingList;function l(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new a,this._names=new a,this._mappings=new s,this._sourcesContents=null}l.prototype._version=3,l.fromSourceMap=function(e){var t=e.sourceRoot,r=new l({file:e.file,sourceRoot:t});return e.eachMapping(function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=i.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)}),e.sources.forEach(function(n){var o=n;null!==t&&(o=i.relative(t,n)),r._sources.has(o)||r._sources.add(o);var a=e.sourceContentFor(n);null!=a&&r.setSourceContent(n,a)}),r},l.prototype.addMapping=function(e){var t=i.getArg(e,"generated"),r=i.getArg(e,"original",null),n=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,n,o),null==n||(n=String(n),this._sources.has(n)||this._sources.add(n)),null==o||(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:o})},l.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},l.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');n=e.file}var o=this._sourceRoot;null!=o&&(n=i.relative(o,n));var s=new a,l=new a;this._mappings.unsortedForEach(function(t){if(t.source===n&&null!=t.originalLine){var a=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=a.source&&(t.source=a.source,null!=r&&(t.source=i.join(r,t.source)),null!=o&&(t.source=i.relative(o,t.source)),t.originalLine=a.line,t.originalColumn=a.column,null!=a.name&&(t.name=a.name))}var c=t.source;null==c||s.has(c)||s.add(c);var u=t.name;null==u||l.has(u)||l.add(u)},this),this._sources=s,this._names=l,e.sources.forEach(function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=i.join(r,t)),null!=o&&(t=i.relative(o,t)),this.setSourceContent(t,n))},this)},l.prototype._validateMapping=function(e,t,r,n){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!e||!("line"in e)||!("column"in e)||!(e.line>0)||!(e.column>=0)||t||r||n)&&(!e||!("line"in e)||!("column"in e)||!t||!("line"in t)||!("column"in t)||!(e.line>0)||!(e.column>=0)||!(t.line>0)||!(t.column>=0)||!r))throw Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},l.prototype._serializeMappings=function(){for(var e,t,r,n,a=0,s=1,l=0,c=0,u=0,h=0,p="",d=this._mappings.toArray(),f=0,g=d.length;f<g;f++){if(t=d[f],e="",t.generatedLine!==s)for(a=0;t.generatedLine!==s;)e+=";",s++;else if(f>0){if(!i.compareByGeneratedPositionsInflated(t,d[f-1]))continue;e+=","}e+=o.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=o.encode(n-h),h=n,e+=o.encode(t.originalLine-1-c),c=t.originalLine-1,e+=o.encode(t.originalColumn-l),l=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=o.encode(r-u),u=r)),p+=e}return p},l.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=i.relative(t,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},l.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},l.prototype.toString=function(){return JSON.stringify(this.toJSON())},n=l}),ey("jTqXJ",function(e,r){t(e.exports,"encode",()=>n,e=>n=e),t(e.exports,"decode",()=>o,e=>o=e);var n,o,i=ev("Q1Wfs");n=function(e){var t,r="",n=e<0?(-e<<1)+1:(e<<1)+0;do t=31&n,(n>>>=5)>0&&(t|=32),r+=i.encode(t);while(n>0)return r},o=function(e,t,r){var n,o,a,s,l=e.length,c=0,u=0;do{if(t>=l)throw Error("Expected more digits in base 64 VLQ value.");if(-1===(s=i.decode(e.charCodeAt(t++))))throw Error("Invalid base64 digit: "+e.charAt(t-1));a=!!(32&s),s&=31,c+=s<<u,u+=5}while(a)r.value=(o=(n=c)>>1,(1&n)==1?-o:o),r.rest=t}}),ey("Q1Wfs",function(e,r){t(e.exports,"encode",()=>n,e=>n=e),t(e.exports,"decode",()=>o,e=>o=e);var n,o,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n=function(e){if(0<=e&&e<i.length)return i[e];throw TypeError("Must be between 0 and 63: "+e)},o=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}}),ey("hvjlv",function(e,r){t(e.exports,"getArg",()=>n,e=>n=e),t(e.exports,"urlParse",()=>o,e=>o=e),t(e.exports,"isAbsolute",()=>s,e=>s=e),t(e.exports,"normalize",()=>i,e=>i=e),t(e.exports,"join",()=>a,e=>a=e),t(e.exports,"relative",()=>l,e=>l=e),t(e.exports,"toSetString",()=>c,e=>c=e),t(e.exports,"fromSetString",()=>u,e=>u=e),t(e.exports,"compareByOriginalPositions",()=>h,e=>h=e),t(e.exports,"compareByGeneratedPositionsDeflated",()=>p,e=>p=e),t(e.exports,"compareByGeneratedPositionsInflated",()=>d,e=>d=e),t(e.exports,"parseSourceMapInput",()=>f,e=>f=e),t(e.exports,"computeSourceURL",()=>g,e=>g=e),n=function(e,t,r){if(t in e)return e[t];if(3==arguments.length)return r;throw Error('"'+t+'" is a required argument.')};var n,o,i,a,s,l,c,u,h,p,d,f,g,m=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,v=/^data:.+\,.+$/;function y(e){var t=e.match(m);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function _(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function k(e){var t=e,r=y(e);if(r){if(!r.path)return e;t=r.path}for(var n,o=s(t),i=t.split(/\/+/),a=0,l=i.length-1;l>=0;l--)"."===(n=i[l])?i.splice(l,1):".."===n?a++:a>0&&(""===n?(i.splice(l+1,a),a=0):(i.splice(l,2),a--));return(""===(t=i.join("/"))&&(t=o?"/":"."),r)?(r.path=t,_(r)):t}function S(e,t){""===e&&(e="."),""===t&&(t=".");var r=y(t),n=y(e);if(n&&(e=n.path||"/"),r&&!r.scheme)return n&&(r.scheme=n.scheme),_(r);if(r||t.match(v))return t;if(n&&!n.host&&!n.path)return n.host=t,_(n);var o="/"===t.charAt(0)?t:k(e.replace(/\/+$/,"")+"/"+t);return n?(n.path=o,_(n)):o}o=y,i=k,a=S,s=function(e){return"/"===e.charAt(0)||m.test(e)},l=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0||(e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var b=!("__proto__"in Object.create(null));function w(e){return e}function E(e){if(!e)return!1;var t=e.length;if(t<9||95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function x(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}c=b?w:function(e){return E(e)?"$"+e:e},u=b?w:function(e){return E(e)?e.slice(1):e},h=function(e,t,r){var n=x(e.source,t.source);return 0!==n||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)||r||0!=(n=e.generatedColumn-t.generatedColumn)||0!=(n=e.generatedLine-t.generatedLine)?n:x(e.name,t.name)},p=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n||0!=(n=e.generatedColumn-t.generatedColumn)||r||0!==(n=x(e.source,t.source))||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)?n:x(e.name,t.name)},d=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r||0!=(r=e.generatedColumn-t.generatedColumn)||0!==(r=x(e.source,t.source))||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)?r:x(e.name,t.name)},f=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},g=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=y(r);if(!n)throw Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=S(_(n),t)}return k(t)}}),ey("7Tyww",function(e,r){t(e.exports,"ArraySet",()=>n,e=>n=e);var n,o=ev("hvjlv"),i=Object.prototype.hasOwnProperty,a="undefined"!=typeof Map;function s(){this._array=[],this._set=a?new Map:Object.create(null)}s.fromArray=function(e,t){for(var r=new s,n=0,o=e.length;n<o;n++)r.add(e[n],t);return r},s.prototype.size=function(){return a?this._set.size:Object.getOwnPropertyNames(this._set).length},s.prototype.add=function(e,t){var r=a?e:o.toSetString(e),n=a?this.has(e):i.call(this._set,r),s=this._array.length;(!n||t)&&this._array.push(e),n||(a?this._set.set(e,s):this._set[r]=s)},s.prototype.has=function(e){if(a)return this._set.has(e);var t=o.toSetString(e);return i.call(this._set,t)},s.prototype.indexOf=function(e){if(a){var t=this._set.get(e);if(t>=0)return t}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw Error('"'+e+'" is not in the set.')},s.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw Error("No element indexed by "+e)},s.prototype.toArray=function(){return this._array.slice()},n=s}),ey("je4qX",function(e,r){t(e.exports,"MappingList",()=>n,e=>n=e);var n,o=ev("hvjlv");function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){var t,r,n,i,a;(r=(t=this._last).generatedLine,n=e.generatedLine,i=t.generatedColumn,a=e.generatedColumn,n>r||n==r&&a>=i||0>=o.compareByGeneratedPositionsInflated(t,e))?this._last=e:this._sorted=!1,this._array.push(e)},i.prototype.toArray=function(){return this._sorted||(this._array.sort(o.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n=i}),ey("3DjxD",function(e,r){t(e.exports,"SourceMapConsumer",()=>n,e=>n=e);var n,o=ev("hvjlv"),i=ev("4khg5"),a=ev("7Tyww").ArraySet,s=ev("jTqXJ"),l=ev("db1rV").quickSort;function c(e,t){var r=e;return"string"==typeof e&&(r=o.parseSourceMapInput(e)),null!=r.sections?new p(r,t):new u(r,t)}function u(e,t){var r=e;"string"==typeof e&&(r=o.parseSourceMapInput(e));var n=o.getArg(r,"version"),i=o.getArg(r,"sources"),s=o.getArg(r,"names",[]),l=o.getArg(r,"sourceRoot",null),c=o.getArg(r,"sourcesContent",null),u=o.getArg(r,"mappings"),h=o.getArg(r,"file",null);if(n!=this._version)throw Error("Unsupported version: "+n);l&&(l=o.normalize(l)),i=i.map(String).map(o.normalize).map(function(e){return l&&o.isAbsolute(l)&&o.isAbsolute(e)?o.relative(l,e):e}),this._names=a.fromArray(s.map(String),!0),this._sources=a.fromArray(i,!0),this._absoluteSources=this._sources.toArray().map(function(e){return o.computeSourceURL(l,e,t)}),this.sourceRoot=l,this.sourcesContent=c,this._mappings=u,this._sourceMapURL=t,this.file=h}function h(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function p(e,t){var r=e;"string"==typeof e&&(r=o.parseSourceMapInput(e));var n=o.getArg(r,"version"),i=o.getArg(r,"sections");if(n!=this._version)throw Error("Unsupported version: "+n);this._sources=new a,this._names=new a;var s={line:-1,column:0};this._sections=i.map(function(e){if(e.url)throw Error("Support for url field in sections not implemented.");var r=o.getArg(e,"offset"),n=o.getArg(r,"line"),i=o.getArg(r,"column");if(n<s.line||n===s.line&&i<s.column)throw Error("Section offsets must be ordered and non-overlapping.");return s=r,{generatedOffset:{generatedLine:n+1,generatedColumn:i+1},consumer:new c(o.getArg(e,"map"),t)}})}c.fromSourceMap=function(e,t){return u.fromSourceMap(e,t)},c.prototype._version=3,c.prototype.__generatedMappings=null,Object.defineProperty(c.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),c.prototype.__originalMappings=null,Object.defineProperty(c.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),c.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},c.prototype._parseMappings=function(e,t){throw Error("Subclasses must implement _parseMappings")},c.GENERATED_ORDER=1,c.ORIGINAL_ORDER=2,c.GREATEST_LOWER_BOUND=1,c.LEAST_UPPER_BOUND=2,c.prototype.eachMapping=function(e,t,r){switch(r||c.GENERATED_ORDER){case c.GENERATED_ORDER:n=this._generatedMappings;break;case c.ORIGINAL_ORDER:n=this._originalMappings;break;default:throw Error("Unknown order of iteration.")}var n,i=this.sourceRoot;n.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=o.computeSourceURL(i,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,t||null)},c.prototype.allGeneratedPositionsFor=function(e){var t=o.getArg(e,"line"),r={source:o.getArg(e,"source"),originalLine:t,originalColumn:o.getArg(e,"column",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var n=[],a=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,i.LEAST_UPPER_BOUND);if(a>=0){var s=this._originalMappings[a];if(void 0===e.column)for(var l=s.originalLine;s&&s.originalLine===l;)n.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a];else for(var c=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==c;)n.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a]}return n},n=c,u.prototype=Object.create(c.prototype),u.prototype.consumer=c,u.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=o.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return -1},u.fromSourceMap=function(e,t){var r=Object.create(u.prototype),n=r._names=a.fromArray(e._names.toArray(),!0),i=r._sources=a.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=t,r._absoluteSources=r._sources.toArray().map(function(e){return o.computeSourceURL(r.sourceRoot,e,t)});for(var s=e._mappings.toArray().slice(),c=r.__generatedMappings=[],p=r.__originalMappings=[],d=0,f=s.length;d<f;d++){var g=s[d],m=new h;m.generatedLine=g.generatedLine,m.generatedColumn=g.generatedColumn,g.source&&(m.source=i.indexOf(g.source),m.originalLine=g.originalLine,m.originalColumn=g.originalColumn,g.name&&(m.name=n.indexOf(g.name)),p.push(m)),c.push(m)}return l(r.__originalMappings,o.compareByOriginalPositions),r},u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),u.prototype._parseMappings=function(e,t){for(var r,n,i,a,c,u=1,p=0,d=0,f=0,g=0,m=0,v=e.length,y=0,_={},k={},S=[],b=[];y<v;)if(";"===e.charAt(y))u++,y++,p=0;else if(","===e.charAt(y))y++;else{for((r=new h).generatedLine=u,a=y;a<v&&!this._charIsMappingSeparator(e,a);a++);if(i=_[n=e.slice(y,a)])y+=n.length;else{for(i=[];y<a;)s.decode(e,y,k),c=k.value,y=k.rest,i.push(c);if(2===i.length)throw Error("Found a source, but no line and column");if(3===i.length)throw Error("Found a source and line, but no column");_[n]=i}r.generatedColumn=p+i[0],p=r.generatedColumn,i.length>1&&(r.source=g+i[1],g+=i[1],r.originalLine=d+i[2],d=r.originalLine,r.originalLine+=1,r.originalColumn=f+i[3],f=r.originalColumn,i.length>4&&(r.name=m+i[4],m+=i[4])),b.push(r),"number"==typeof r.originalLine&&S.push(r)}l(b,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=b,l(S,o.compareByOriginalPositions),this.__originalMappings=S},u.prototype._findMapping=function(e,t,r,n,o,a){if(e[r]<=0)throw TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw TypeError("Column must be greater than or equal to 0, got "+e[n]);return i.search(e,t,o,a)},u.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},u.prototype.originalPositionFor=function(e){var t={generatedLine:o.getArg(e,"line"),generatedColumn:o.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",o.compareByGeneratedPositionsDeflated,o.getArg(e,"bias",c.GREATEST_LOWER_BOUND));if(r>=0){var n=this._generatedMappings[r];if(n.generatedLine===t.generatedLine){var i=o.getArg(n,"source",null);null!==i&&(i=this._sources.at(i),i=o.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=o.getArg(n,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:o.getArg(n,"originalLine",null),column:o.getArg(n,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},u.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e})},u.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r,n=this._findSourceIndex(e);if(n>=0)return this.sourcesContent[n];var i=e;if(null!=this.sourceRoot&&(i=o.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(r=o.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!r.path||"/"==r.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw Error('"'+i+'" is not in the SourceMap.')},u.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},n=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",c.GREATEST_LOWER_BOUND));if(n>=0){var i=this._originalMappings[n];if(i.source===r.source)return{line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},p.prototype=Object.create(c.prototype),p.prototype.constructor=c,p.prototype._version=3,Object.defineProperty(p.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),p.prototype.originalPositionFor=function(e){var t={generatedLine:o.getArg(e,"line"),generatedColumn:o.getArg(e,"column")},r=i.search(t,this._sections,function(e,t){return e.generatedLine-t.generatedOffset.generatedLine||e.generatedColumn-t.generatedOffset.generatedColumn}),n=this._sections[r];return n?n.consumer.originalPositionFor({line:t.generatedLine-(n.generatedOffset.generatedLine-1),column:t.generatedColumn-(n.generatedOffset.generatedLine===t.generatedLine?n.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},p.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},p.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw Error('"'+e+'" is not in the SourceMap.')},p.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer._findSourceIndex(o.getArg(e,"source"))){var n=r.consumer.generatedPositionFor(e);if(n)return{line:n.line+(r.generatedOffset.generatedLine-1),column:n.column+(r.generatedOffset.generatedLine===n.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},p.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var n=this._sections[r],i=n.consumer._generatedMappings,a=0;a<i.length;a++){var s=i[a],c=n.consumer._sources.at(s.source);c=o.computeSourceURL(n.consumer.sourceRoot,c,this._sourceMapURL),this._sources.add(c),c=this._sources.indexOf(c);var u=null;s.name&&(u=n.consumer._names.at(s.name),this._names.add(u),u=this._names.indexOf(u));var h={source:c,generatedLine:s.generatedLine+(n.generatedOffset.generatedLine-1),generatedColumn:s.generatedColumn+(n.generatedOffset.generatedLine===s.generatedLine?n.generatedOffset.generatedColumn-1:0),originalLine:s.originalLine,originalColumn:s.originalColumn,name:u};this.__generatedMappings.push(h),"number"==typeof h.originalLine&&this.__originalMappings.push(h)}l(this.__generatedMappings,o.compareByGeneratedPositionsDeflated),l(this.__originalMappings,o.compareByOriginalPositions)}}),ey("4khg5",function(e,r){var n,o,i;t(e.exports,"GREATEST_LOWER_BOUND",()=>n,e=>n=e),t(e.exports,"LEAST_UPPER_BOUND",()=>o,e=>o=e),t(e.exports,"search",()=>i,e=>i=e),n=1,o=2,i=function(e,t,r,i){if(0===t.length)return -1;var a=function e(t,r,n,i,a,s){var l=Math.floor((r-t)/2)+t,c=a(n,i[l],!0);return 0===c?l:c>0?r-l>1?e(l,r,n,i,a,s):s==o?r<i.length?r:-1:l:l-t>1?e(t,l,n,i,a,s):s==o?l:t<0?-1:t}(-1,t.length,e,t,r,i||n);if(a<0)return -1;for(;a-1>=0&&0===r(t[a],t[a-1],!0);)--a;return a}}),ey("db1rV",function(e,r){var n;function o(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}t(e.exports,"quickSort",()=>n,e=>n=e),n=function(e,t){!function e(t,r,n,i){if(n<i){var a=Math.round(n+Math.random()*(i-n)),s=n-1;o(t,a,i);for(var l=t[i],c=n;c<i;c++)0>=r(t[c],l)&&o(t,s+=1,c);o(t,s+1,c);var u=s+1;e(t,r,n,u-1),e(t,r,u+1,i)}}(e,t,0,e.length-1)}}),ey("76tK5",function(e,r){t(e.exports,"SourceNode",()=>n,e=>n=e);var n,o=ev("i8dtv").SourceMapGenerator,i=ev("hvjlv"),a=/(\r?\n)/,s="$$$isSourceNode$$$";function l(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[s]=!0,null!=n&&this.add(n)}l.fromStringWithSourceMap=function(e,t,r){var n=new l,o=e.split(a),s=0,c=function(){return e()+(e()||"");function e(){return s<o.length?o[s++]:void 0}},u=1,h=0,p=null;return t.eachMapping(function(e){if(null!==p){if(u<e.generatedLine)d(p,c()),u++,h=0;else{var t=o[s]||"",r=t.substr(0,e.generatedColumn-h);o[s]=t.substr(e.generatedColumn-h),h=e.generatedColumn,d(p,r),p=e;return}}for(;u<e.generatedLine;)n.add(c()),u++;if(h<e.generatedColumn){var t=o[s]||"";n.add(t.substr(0,e.generatedColumn)),o[s]=t.substr(e.generatedColumn),h=e.generatedColumn}p=e},this),s<o.length&&(p&&d(p,c()),n.add(o.splice(s).join(""))),t.sources.forEach(function(e){var o=t.sourceContentFor(e);null!=o&&(null!=r&&(e=i.join(r,e)),n.setSourceContent(e,o))}),n;function d(e,t){if(null===e||void 0===e.source)n.add(t);else{var o=r?i.join(r,e.source):e.source;n.add(new l(e.originalLine,e.originalColumn,o,t,e.name))}}},l.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else if(e[s]||"string"==typeof e)e&&this.children.push(e);else throw TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this},l.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else if(e[s]||"string"==typeof e)this.children.unshift(e);else throw TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this},l.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[s]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},l.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(r=0,t=[];r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},l.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[s]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},l.prototype.setSourceContent=function(e,t){this.sourceContents[i.toSetString(e)]=t},l.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][s]&&this.children[t].walkSourceContents(e);for(var n=Object.keys(this.sourceContents),t=0,r=n.length;t<r;t++)e(i.fromSetString(n[t]),this.sourceContents[n[t]])},l.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e},l.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new o(e),n=!1,i=null,a=null,s=null,l=null;return this.walk(function(e,o){t.code+=e,null!==o.source&&null!==o.line&&null!==o.column?((i!==o.source||a!==o.line||s!==o.column||l!==o.name)&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:t.line,column:t.column},name:o.name}),i=o.source,a=o.line,s=o.column,l=o.name,n=!0):n&&(r.addMapping({generated:{line:t.line,column:t.column}}),i=null,n=!1);for(var c=0,u=e.length;c<u;c++)10===e.charCodeAt(c)?(t.line++,t.column=0,c+1===u?(i=null,n=!1):n&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:t.line,column:t.column},name:o.name})):t.column++}),this.walkSourceContents(function(e,t){r.setSourceContent(e,t)}),{code:t.code,map:r}},n=l});var e_=class{constructor(e=""){this.prefix="robot-framework-",e&&(this.prefix+=e+"-"),this.storage=this.getStorage()}getStorage(){try{return localStorage.setItem(this.prefix,this.prefix),localStorage.removeItem(this.prefix),localStorage}catch(e){return{}}}get(e,t){var r=this.storage[this.fullKey(e)];return void 0===r?t:r}set(e,t){this.storage[this.fullKey(e)]=t}fullKey(e){return this.prefix+e}},ek={};ek=JSON.parse('{"en":{"code":"en","intro":"Introduction","libVersion":"Library version","libScope":"Library scope","importing":"Importing","arguments":"Arguments","doc":"Documentation","keywords":"Keywords","tags":"Tags","returnType":"Return Type","kwLink":"Link to this keyword","argName":"Argument name","varArgs":"Variable number of arguments","varNamedArgs":"Variable number of named arguments","namedOnlyArg":"Named only argument","posOnlyArg":"Positional only argument","defaultTitle":"Default value that is used if no value is given","typeInfoDialog":"Click to show type information","search":"Search","dataTypes":"Data types","allowedValues":"Allowed Values","dictStructure":"Dictionary Structure","convertedTypes":"Converted Types","usages":"Usages","generatedBy":"Generated by","on":"on","chooseLanguage":"Choose language"},"fi":{"code":"fi","intro":"Johdanto","libVersion":"Kirjaston versio","libScope":"Kirjaston laajuus","importing":"Käyttöönotto","arguments":"Argumentit","doc":"Dokumentaatio","keywords":"Avainsanat","tags":"Tagit","returnType":"Paluuarvo","kwLink":"Linkki tähän avainsanaan","argName":"Argumentin nimi","varArgs":"Vaihteleva määrä argumentteja","varNamedArgs":"Vaihteleva määrä nimettyjä argumentteja","namedOnlyArg":"Vain nimettyjä argumentteja","posOnlyArg":"Vain positionaalisia argumentteja","defaultTitle":"Oletusarvo, jota käytetään jos arvoa ei anneta","typeInfoDialog":"Näytä tyyppitieto","search":"Etsi","dataTypes":"Datatyypit","allowedValues":"Sallitut arvot","dictStructure":"Sanakirjarakenne","convertedTypes":"Muunnetut tyypit","usages":"Käyttöpaikat","generatedBy":"Luotu","on":"","chooseLanguage":"Valitse kieli"},"fr":{"code":"fr","intro":"Introduction","libVersion":"Version de la bibliothèque","libScope":"Portée de la bibliothèque","importing":"Importation","arguments":"Arguments","doc":"Documentation","keywords":"Mots-clés","tags":"Tags","returnType":"Type de retour","kwLink":"Lien vers ce mot-clé","argName":"Nom de l\'argument","varArgs":"Nombre variable d\'arguments","varNamedArgs":"Nombre variable d\'arguments nommés","namedOnlyArg":"Argument nommé uniquement","posOnlyArg":"Argument positionnel uniquement","defaultTitle":"Valeur par défaut utilisée si aucune valeur n\'est donnée","typeInfoDialog":"Cliquez pour afficher les informations de type","search":"Rechercher","dataTypes":"Types de données","allowedValues":"Valeurs autorisées","dictStructure":"Structure du dictionnaire","convertedTypes":"Types convertis","usages":"Utilisations","generatedBy":"Généré par","on":"le","chooseLanguage":"Choisir la langue"},"nl":{"code":"nl","intro":"Introductie","libVersion":"Bibliotheekversie","libScope":"Bibliotheekbereik","importing":"Importeren","arguments":"Parameters","doc":"Documentatie","keywords":"Actiewoorden","tags":"Labels","returnType":"Andwoord type","kwLink":"Link naar actiewoord","argName":"Benoemde parameters","varArgs":"Variabel aantal parameters","varNamedArgs":"Variable aantal benoemde parameters","namedOnlyArg":"Alleen benoemde parameters","posOnlyArg":"Aleen positionele parameters","defaultTitle":"Standaard waarde welke wordt gebruikt als geen waarde is gegeven","typeInfoDialog":"Klik om informatie over dit type te zien","search":"Zoeken","dataTypes":"Datatypen","allowedValues":"Geldige waarden","dictStructure":"Woordenboek Structuur","convertedTypes":"Geconverteerde typen","usages":"Gebruikt in","generatedBy":"Gegenereerd door","on":"op","chooseLanguage":"Kies taal"},"pt-BR":{"code":"pt-BR","intro":"Introdução","libVersion":"Versão da Biblioteca","libScope":"Escopo da Biblioteca","importing":"Importação","arguments":"Argumentos","doc":"Documentação","keywords":"Palavras-Chave","tags":"Etiquetas","returnType":"Tipo de Retorno","kwLink":"Ligação para a palavra-chave","argName":"Nome do Argumento","varArgs":"Argumentos em quantidade variável","varNamedArgs":"Argumentos nomeados em quantidade variável","namedOnlyArg":"Apenas argumentos nomeados","posOnlyArg":"Apenas argumentos posicionais","defaultTitle":"Valor padrão que é usado se nenhum tiver sido informado","typeInfoDialog":"Clicar para mostrar informação de tipo","search":"Pesquisar","dataTypes":"Tipos de dados","allowedValues":"Valores permitidos","dictStructure":"Estrutura de Dicionário","convertedTypes":"Tipos Convertidos","usages":"Usos","generatedBy":"Gerado por","on":"ligado","chooseLanguage":"Escolher idioma"},"pt-PT":{"code":"pt-PT","intro":"Introdução","libVersion":"Versão da Biblioteca","libScope":"Âmbito da Biblioteca","importing":"Importação","arguments":"Argumentos","doc":"Documentação","keywords":"Palavras-Chave","tags":"Etiquetas","returnType":"Tipo de Retorno","kwLink":"Ligação para a palavra-chave","argName":"Nome do Argumento","varArgs":"Argumentos em quantidade variável","varNamedArgs":"Argumentos nomeados em quantidade variável","namedOnlyArg":"Apenas argumentos nomeados","posOnlyArg":"Apenas argumentos posicionais","defaultTitle":"Valor por omissão que é usado se nenhum tiver sido dado","typeInfoDialog":"Clicar para mostrar informação de tipo","search":"Procurar","dataTypes":"Tipos de dados","allowedValues":"Valores permitidos","dictStructure":"Estrutura de Dicionário","convertedTypes":"Tipos Convertidos","usages":"Utilização","generatedBy":"Gerado por","on":"ligado","chooseLanguage":"Escolher língua"}}');class eS{constructor(e){this.setLanguage(e)}static getInstance(e){return eS.instance||(eS.instance=new eS(e||"en")),eS.instance}translate(e){return e in this.language?this.language[e]:(console.log("Warning, missing translation for",e),"")}setLanguage(e){if(this.language&&e==this.language.code)return!1;let t=!1;return Object.keys(r(ek)).forEach(n=>{n===e&&(this.language=r(ek)[n],t=!0)}),t}getLanguageCodes(){return Object.keys(r(ek))}currentLanguage(){return this.language.code}}var eb={};n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")},i=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},s=function(){function e(t){var r=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;o(this,e),this.ctx=t,this.iframes=r,this.exclude=n,this.iframesTimeout=i}return i(e,[{key:"getContexts",value:function(){var e=void 0,t=[];return void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):e=Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:e=[],e.forEach(function(e){var r=t.filter(function(t){return t.contains(e)}).length>0;-1!==t.indexOf(e)||r||t.push(e)}),t}},{key:"getIframeContents",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},n=void 0;try{var o=e.contentWindow;if(n=o.document,!o||!n)throw Error("iframe inaccessible")}catch(e){r()}n&&t(n)}},{key:"isIframeBlank",value:function(e){var t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}},{key:"observeIframeLoad",value:function(e,t,r){var n=this,o=!1,i=null,a=function a(){if(!o){o=!0,clearTimeout(i);try{n.isIframeBlank(e)||(e.removeEventListener("load",a),n.getIframeContents(e,t,r))}catch(e){r()}}};e.addEventListener("load",a),i=setTimeout(a,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,r){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch(e){r()}}},{key:"waitForIframes",value:function(e,t){var r=this,n=0;this.forEachIframe(e,function(){return!0},function(e){n++,r.waitForIframes(e.querySelector("html"),function(){--n||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,r,n){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=t.querySelectorAll("iframe"),s=a.length,l=0;a=Array.prototype.slice.call(a);var c=function(){--s<=0&&i(l)};s||c(),a.forEach(function(t){e.matches(t,o.exclude)?c():o.onIframeReady(t,function(e){r(t)&&(l++,n(e)),c()},c)})}},{key:"createIterator",value:function(e,t,r){return document.createNodeIterator(e,t,r,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,r){return!!(e.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_PRECEDING&&(null===t||t.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_FOLLOWING))}},{key:"getIteratorNode",value:function(e){var t=e.previousNode(),r=void 0;return r=null===t?e.nextNode():e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}},{key:"checkIframeFilter",value:function(e,t,r,n){var o=!1,i=!1;return(n.forEach(function(e,t){e.val===r&&(o=t,i=e.handled)}),this.compareNodeIframe(e,t,r))?(!1!==o||i?!1===o||i||(n[o].handled=!0):n.push({val:r,handled:!0}),!0):(!1===o&&n.push({val:r,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,r,n){var o=this;e.forEach(function(e){e.handled||o.getIframeContents(e.val,function(e){o.createInstanceOnIframe(e).forEachNode(t,r,n)})})}},{key:"iterateThroughNodes",value:function(e,t,r,n,o){for(var i,a=this,s=this.createIterator(t,e,n),l=[],c=[],u=void 0,h=void 0;h=(i=a.getIteratorNode(s)).prevNode,u=i.node;)this.iframes&&this.forEachIframe(t,function(e){return a.checkIframeFilter(u,h,e,l)},function(t){a.createInstanceOnIframe(t).forEachNode(e,function(e){return c.push(e)},n)}),c.push(u);c.forEach(function(e){r(e)}),this.iframes&&this.handleOpenIframes(l,e,r,n),o()}},{key:"forEachNode",value:function(e,t,r){var n=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=this.getContexts(),a=i.length;a||o(),i.forEach(function(i){var s=function(){n.iterateThroughNodes(e,i,t,r,function(){--a<=0&&o()})};n.iframes?n.waitForIframes(i,s):s()})}}],[{key:"matches",value:function(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(!r)return!1;var n=!1;return("string"==typeof t?[t]:t).every(function(t){return!r.call(e,t)||(n=!0,!1)}),n}}]),e}(),l=function(){function e(t){o(this,e),this.ctx=t,this.ie=!1;var r=window.navigator.userAgent;(r.indexOf("MSIE")>-1||r.indexOf("Trident")>-1)&&(this.ie=!0)}return i(e,[{key:"log",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&(void 0===r?"undefined":n(r))==="object"&&"function"==typeof r[t]&&r[t]("mark.js: "+e)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var o in t)if(t.hasOwnProperty(o)){var i=t[o],a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i);""!==a&&""!==s&&(e=e.replace(RegExp("("+this.escapeStr(a)+"|"+this.escapeStr(s)+")","gm"+r),n+"("+this.processSynomyms(a)+"|"+this.processSynomyms(s)+")"+n))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":"\x01"})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":"\x02"})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,r){var n=r.charAt(t+1);return/[(|)\\]/.test(n)||""===n?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],n=[];return e.split("").forEach(function(o){r.every(function(r){if(-1!==r.indexOf(o)){if(n.indexOf(r)>-1)return!1;e=e.replace(RegExp("["+r+"]","gm"+t),"["+r+"]"),n.push(r)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,r=this.opt.accuracy,n="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach(function(e){i+="|"+t.escapeStr(e)}),n){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,r=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===r.indexOf(e)&&r.push(e)}):e.trim()&&-1===r.indexOf(e)&&r.push(e)}),{keywords:r.sort(function(e,t){return t.length-e.length}),length:r.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var r=[],n=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var o=t.callNoMatchOnInvalidRanges(e,n),i=o.start,a=o.end;o.valid&&(e.start=i,e.length=a-i,r.push(e),n=a)}),r}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var r=void 0,n=void 0,o=!1;return e&&void 0!==e.start?(n=(r=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?o=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:r,end:n,valid:o}}},{key:"checkWhitespaceRanges",value:function(e,t,r){var n=void 0,o=!0,i=r.length,a=t-i,s=parseInt(e.start,10)-a;return(n=(s=s>i?i:s)+parseInt(e.length,10))>i&&(n=i,this.log("End range automatically set to the max value of "+i)),s<0||n-s<0||s>i||n>i?(o=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===r.substring(s,n).replace(/\s+/g,"")&&(o=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:n,valid:o}}},{key:"getTextNodes",value:function(e){var t=this,r="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){n.push({start:r.length,end:(r+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:r,nodes:n})})}},{key:"matchesExclude",value:function(e){return s.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,r){var n=this.opt.element?this.opt.element:"mark",o=e.splitText(t),i=o.splitText(r-t),a=document.createElement(n);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=o.textContent,o.parentNode.replaceChild(a,o),i}},{key:"wrapRangeInMappedTextNode",value:function(e,t,r,n,o){var i=this;e.nodes.every(function(a,s){var l=e.nodes[s+1];if(void 0===l||l.start>t){if(!n(a.node))return!1;var c=t-a.start,u=(r>a.end?a.end:r)-a.start,h=e.value.substr(0,a.start),p=e.value.substr(u+a.start);if(a.node=i.wrapRangeInTextNode(a.node,c,u),e.value=h+p,e.nodes.forEach(function(t,r){r>=s&&(e.nodes[r].start>0&&r!==s&&(e.nodes[r].start-=u),e.nodes[r].end-=u)}),r-=u,
Download .txt
gitextract_9_ebzae_/

├── .circleci/
│   └── config.yml
├── .coveragerc
├── .flake8
├── .github/
│   └── pull_request_template.md
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs/
│   └── index.html
├── requirements-dev.txt
├── requirements.txt
├── setup.py
├── src/
│   └── KubeLibrary/
│       ├── KubeLibrary.py
│       ├── __init__.py
│       ├── exceptions.py
│       └── version.py
├── test/
│   ├── __init__.py
│   ├── resources/
│   │   ├── cluster_role.json
│   │   ├── cluster_role_bind.json
│   │   ├── configmap.json
│   │   ├── cronjob.json
│   │   ├── cronjob_details.json
│   │   ├── daemonset.json
│   │   ├── daemonset_details.json
│   │   ├── deployment.json
│   │   ├── endpoints.json
│   │   ├── hpa.json
│   │   ├── hpa_details.json
│   │   ├── ingress.json
│   │   ├── ingress_details.json
│   │   ├── jobs.json
│   │   ├── k3d
│   │   ├── multiple_context
│   │   ├── namespaces.json
│   │   ├── node_info.json
│   │   ├── pod.json
│   │   ├── pod_status.json
│   │   ├── pods.json
│   │   ├── pvc.json
│   │   ├── replicaset.json
│   │   ├── role.json
│   │   ├── rolebinding.json
│   │   ├── secrets.json
│   │   ├── service.json
│   │   ├── service_accounts.json
│   │   ├── service_details.json
│   │   └── sts.json
│   └── test_KubeLibrary.py
├── test-objects-chart/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates/
│   │   ├── NOTES.txt
│   │   ├── _helpers.tpl
│   │   ├── cluster_role.yaml
│   │   ├── cluster_role_bind.yaml
│   │   ├── cronjob.yaml
│   │   ├── daemonset.yaml
│   │   ├── deployment.yaml
│   │   ├── hpa.yaml
│   │   ├── ingress.yaml
│   │   ├── job.yml
│   │   ├── role.yaml
│   │   ├── rolebinding.yaml
│   │   ├── service.yaml
│   │   ├── serviceaccount.yaml
│   │   └── tests/
│   │       └── test-connection.yaml
│   └── values.yaml
└── testcases/
    ├── Dockerfile
    ├── cluster_role/
    │   ├── cluster_role.robot
    │   └── cluster_role_kw.robot
    ├── configmap/
    │   ├── configmap.robot
    │   └── configmap_kw.robot
    ├── connect_GKE_clusters.robot
    ├── cronjob/
    │   ├── cronjob.robot
    │   └── cronjob_kw.robot
    ├── custom_objects/
    │   ├── ambassador_crds.robot
    │   └── custom_objects.robot
    ├── daemonset/
    │   ├── daemonsets.robot
    │   └── daemonsets_kw.robot
    ├── deployment/
    │   ├── deployment.robot
    │   └── deployment_kw.robot
    ├── dynamic_client/
    │   ├── dynamic_client.robot
    │   ├── dynamic_client_kw.robot
    │   └── resources/
    │       ├── pod.yaml
    │       ├── pod_generated_name.yaml
    │       ├── svc.yaml
    │       └── svc_lookup.yaml
    ├── exec/
    │   ├── exec.robot
    │   └── exec_kw.robot
    ├── grafana/
    │   ├── demo-UI-test.robot
    │   └── values.yaml
    ├── healthcheck/
    │   ├── healthcheck.robot
    │   └── healthcheck_kw.robot
    ├── horizontalPodAutoscaler/
    │   ├── hpa.robot
    │   └── hpa_kw.robot
    ├── ingress/
    │   ├── ingress.robot
    │   └── ingress_kw.robot
    ├── job/
    │   ├── job.robot
    │   └── job_kw.robot
    ├── namespace/
    │   ├── namespace.robot
    │   └── namespace_kw.robot
    ├── pod/
    │   ├── pod.robot
    │   └── pod_kw.robot
    ├── pvc/
    │   ├── pvc.robot
    │   └── pvc_kw.robot
    ├── reload-config/
    │   ├── reload-config.robot
    │   ├── reload-config_kw.robot
    │   └── sa.yaml
    ├── replicaset/
    │   ├── replicaset.robot
    │   └── replicaset_kw.robot
    ├── requirements.txt
    ├── role/
    │   ├── role.robot
    │   └── role_kw.robot
    ├── secrets/
    │   ├── secret.robot
    │   └── secret_kw.robot
    ├── service/
    │   ├── service.robot
    │   └── service_kw.robot
    ├── service_account/
    │   ├── service_account.robot
    │   └── service_account_kw.robot
    ├── sts/
    │   ├── sts.robot
    │   └── sts_kw.robot
    ├── system_smoke.robot
    ├── system_smoke_kw.robot
    └── test_version.robot
Download .txt
SYMBOL INDEX (202 symbols across 3 files)

FILE: src/KubeLibrary/KubeLibrary.py
  class DynamicClient (line 21) | class DynamicClient(dynamic.DynamicClient):
    method api_client (line 23) | def api_client(self):
  class KubeLibrary (line 28) | class KubeLibrary:
    method __init__ (line 74) | def __init__(self, kube_config=None, context=None, api_url=None, beare...
    method get_proxy (line 102) | def get_proxy():
    method get_no_proxy (line 107) | def get_no_proxy():
    method generate_alphanumeric_str (line 111) | def generate_alphanumeric_str(size):
    method evaluate_callable_from_k8s_client (line 122) | def evaluate_callable_from_k8s_client(attr_name, *args, **kwargs):
    method get_dynamic_resource (line 138) | def get_dynamic_resource(self, api_version, kind):
    method get (line 148) | def get(self, api_version, kind, **kwargs):
    method create (line 165) | def create(self, api_version, kind, **kwargs):
    method delete (line 185) | def delete(self, api_version, kind, **kwargs):
    method patch (line 200) | def patch(self, api_version, kind, **kwargs):
    method replace (line 215) | def replace(self, api_version, kind, **kwargs):
    method reload_config (line 230) | def reload_config(self, kube_config=None, context=None, api_url=None, ...
    method _add_api (line 289) | def _add_api(self, reference, class_name):
    method k8s_api_ping (line 294) | def k8s_api_ping(self):
    method k8s_version (line 313) | def k8s_version(self):
    method list_namespace (line 333) | def list_namespace(self, label_selector=""):
    method get_namespaces (line 343) | def get_namespaces(self, label_selector=""):
    method get_healthy_nodes_count (line 353) | def get_healthy_nodes_count(self, label_selector=""):
    method get_pod_names_in_namespace (line 368) | def get_pod_names_in_namespace(self, name_pattern, namespace, label_se...
    method list_namespaced_pod_by_pattern (line 385) | def list_namespaced_pod_by_pattern(self, name_pattern, namespace, labe...
    method get_pods_in_namespace (line 402) | def get_pods_in_namespace(self, name_pattern, namespace, label_selecto...
    method read_namespaced_pod_log (line 420) | def read_namespaced_pod_log(self, name, namespace, container, since_se...
    method get_pod_logs (line 438) | def get_pod_logs(self, name, namespace, container):
    method list_namespaced_config_map_by_pattern (line 454) | def list_namespaced_config_map_by_pattern(self, name_pattern, namespac...
    method get_configmaps_in_namespace (line 471) | def get_configmaps_in_namespace(self, name_pattern, namespace, label_s...
    method list_namespaced_service_account_by_pattern (line 489) | def list_namespaced_service_account_by_pattern(self, name_pattern, nam...
    method get_service_accounts_in_namespace (line 506) | def get_service_accounts_in_namespace(self, name_pattern, namespace, l...
    method list_namespaced_deployment_by_pattern (line 524) | def list_namespaced_deployment_by_pattern(self, name_pattern, namespac...
    method get_deployments_in_namespace (line 541) | def get_deployments_in_namespace(self, name_pattern, namespace, label_...
    method list_namespaced_replica_set_by_pattern (line 559) | def list_namespaced_replica_set_by_pattern(self, name_pattern, namespa...
    method get_replicasets_in_namespace (line 576) | def get_replicasets_in_namespace(self, name_pattern, namespace, label_...
    method list_namespaced_job_by_pattern (line 594) | def list_namespaced_job_by_pattern(self, name_pattern, namespace, labe...
    method get_jobs_in_namespace (line 611) | def get_jobs_in_namespace(self, name_pattern, namespace, label_selecto...
    method list_namespaced_secret_by_pattern (line 629) | def list_namespaced_secret_by_pattern(self, name_pattern, namespace, l...
    method get_secrets_in_namespace (line 646) | def get_secrets_in_namespace(self, name_pattern, namespace, label_sele...
    method get_namespaced_pod_exec (line 664) | def get_namespaced_pod_exec(self, name, namespace, argv_cmd, container...
    method filter_names (line 703) | def filter_names(self, objects):
    method filter_by_key (line 713) | def filter_by_key(self, objects, key, match):
    method filter_deployments_names (line 727) | def filter_deployments_names(self, deployments):
    method filter_replicasets_names (line 735) | def filter_replicasets_names(self, replicasets):
    method filter_pods_names (line 743) | def filter_pods_names(self, pods):
    method filter_service_accounts_names (line 754) | def filter_service_accounts_names(self, service_accounts):
    method filter_configmap_names (line 765) | def filter_configmap_names(self, configmaps):
    method filter_endpoints_names (line 774) | def filter_endpoints_names(self, endpoints):
    method filter_pods_containers_by_name (line 783) | def filter_pods_containers_by_name(pods, name_pattern):
    method filter_containers_images (line 800) | def filter_containers_images(containers):
    method filter_containers_resources (line 811) | def filter_containers_resources(containers):
    method filter_pods_containers_statuses_by_name (line 822) | def filter_pods_containers_statuses_by_name(pods, name_pattern):
    method read_namespaced_pod_status (line 838) | def read_namespaced_pod_status(self, name, namespace):
    method get_pod_status_in_namespace (line 849) | def get_pod_status_in_namespace(self, name, namespace):
    method assert_pod_has_labels (line 861) | def assert_pod_has_labels(pod, labels_json):
    method assert_pod_has_annotations (line 887) | def assert_pod_has_annotations(pod, annotations_json):
    method assert_container_has_env_vars (line 914) | def assert_container_has_env_vars(container, env_vars_json):
    method list_namespaced_service (line 943) | def list_namespaced_service(self, namespace, label_selector=""):
    method get_services_in_namespace (line 956) | def get_services_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_service (line 971) | def read_namespaced_service(self, name, namespace):
    method get_service_details_in_namespace (line 986) | def get_service_details_in_namespace(self, name, namespace):
    method list_namespaced_horizontal_pod_autoscaler (line 1003) | def list_namespaced_horizontal_pod_autoscaler(self, namespace, label_s...
    method get_hpas_in_namespace (line 1017) | def get_hpas_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_horizontal_pod_autoscaler (line 1033) | def read_namespaced_horizontal_pod_autoscaler(self, name, namespace):
    method get_hpa_details_in_namespace (line 1048) | def get_hpa_details_in_namespace(self, name, namespace):
    method read_namespaced_endpoints (line 1065) | def read_namespaced_endpoints(self, name, namespace):
    method get_endpoints_in_namespace (line 1080) | def get_endpoints_in_namespace(self, name, namespace):
    method list_namespaced_persistent_volume_claim (line 1097) | def list_namespaced_persistent_volume_claim(self, namespace, label_sel...
    method list_namespaced_persistent_volume_claim_by_pattern (line 1110) | def list_namespaced_persistent_volume_claim_by_pattern(self, name_patt...
    method list_namespaced_stateful_set (line 1126) | def list_namespaced_stateful_set(self, namespace, label_selector=""):
    method list_namespaced_stateful_set_by_pattern (line 1139) | def list_namespaced_stateful_set_by_pattern(self, name_pattern, namesp...
    method get_pvc_in_namespace (line 1156) | def get_pvc_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_persistent_volume_claim (line 1171) | def read_namespaced_persistent_volume_claim(self, name, namespace):
    method get_pvc_capacity (line 1186) | def get_pvc_capacity(self, name, namespace):
    method get_kubelet_version (line 1203) | def get_kubelet_version(self, label_selector=""):
    method create_namespaced_service_account (line 1213) | def create_namespaced_service_account(self, namespace, body):
    method create_service_account_in_namespace (line 1226) | def create_service_account_in_namespace(self, namespace, body):
    method delete_namespaced_service_account (line 1241) | def delete_namespaced_service_account(self, name, namespace):
    method delete_service_account_in_namespace (line 1255) | def delete_service_account_in_namespace(self, name, namespace):
    method get_healthcheck (line 1271) | def get_healthcheck(self, endpoint='/readyz', verbose=False):
    method list_namespaced_ingress (line 1302) | def list_namespaced_ingress(self, namespace, label_selector=""):
    method get_ingresses_in_namespace (line 1313) | def get_ingresses_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_ingress (line 1326) | def read_namespaced_ingress(self, name, namespace):
    method get_ingress_details_in_namespace (line 1337) | def get_ingress_details_in_namespace(self, name, namespace):
    method list_namespaced_cron_job (line 1350) | def list_namespaced_cron_job(self, namespace, label_selector=""):
    method get_cron_jobs_in_namespace (line 1363) | def get_cron_jobs_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_cron_job (line 1378) | def read_namespaced_cron_job(self, name, namespace):
    method get_cron_job_details_in_namespace (line 1391) | def get_cron_job_details_in_namespace(self, name, namespace):
    method list_namespaced_daemon_set (line 1406) | def list_namespaced_daemon_set(self, namespace, label_selector=""):
    method get_daemonsets_in_namespace (line 1419) | def get_daemonsets_in_namespace(self, namespace, label_selector=""):
    method read_namespaced_daemon_set (line 1434) | def read_namespaced_daemon_set(self, name, namespace):
    method get_daemonset_details_in_namespace (line 1447) | def get_daemonset_details_in_namespace(self, name, namespace):
    method list_cluster_role (line 1462) | def list_cluster_role(self):
    method get_cluster_roles (line 1470) | def get_cluster_roles(self):
    method list_cluster_role_binding (line 1480) | def list_cluster_role_binding(self):
    method get_cluster_role_bindings (line 1488) | def get_cluster_role_bindings(self):
    method list_namespaced_role (line 1498) | def list_namespaced_role(self, namespace):
    method get_roles_in_namespace (line 1509) | def get_roles_in_namespace(self, namespace):
    method list_namespaced_role_binding (line 1522) | def list_namespaced_role_binding(self, namespace):
    method get_role_bindings_in_namespace (line 1533) | def get_role_bindings_in_namespace(self, namespace):
    method list_cluster_custom_object (line 1546) | def list_cluster_custom_object(self, group, version, plural):
    method list_cluster_custom_objects (line 1564) | def list_cluster_custom_objects(self, group, version, plural):
    method get_cluster_custom_object (line 1584) | def get_cluster_custom_object(self, group, version, plural, name):
    method get_namespaced_custom_object (line 1604) | def get_namespaced_custom_object(self, group, version, namespace, plur...
    method list_namespaced_custom_object (line 1626) | def list_namespaced_custom_object(self, group, version, namespace, plu...
    method get_custom_object_in_namespace (line 1646) | def get_custom_object_in_namespace(self, group, version, namespace, pl...
    method create_namespaced_cron_job (line 1670) | def create_namespaced_cron_job(self, namespace, body):
    method create_cron_job_in_namespace (line 1682) | def create_cron_job_in_namespace(self, namespace, body):
    method delete_namespaced_cron_job (line 1696) | def delete_namespaced_cron_job(self, name, namespace):
    method delete_cron_job_in_namespace (line 1708) | def delete_cron_job_in_namespace(self, name, namespace):

FILE: src/KubeLibrary/exceptions.py
  class BearerTokenWithPrefixException (line 1) | class BearerTokenWithPrefixException(Exception):
    method __init__ (line 5) | def __init__(self):

FILE: test/test_KubeLibrary.py
  class AttributeDict (line 12) | class AttributeDict(object):
    method __init__ (line 21) | def __init__(self, entries):
    method add_entries (line 25) | def add_entries(self, entries):
    method __iter__ (line 35) | def __iter__(self):
    method __getitem__ (line 38) | def __getitem__(self, key):
  function mock_read_daemonset_details_in_namespace (line 45) | def mock_read_daemonset_details_in_namespace(name, namespace):
  function mock_read_service_details_in_namespace (line 53) | def mock_read_service_details_in_namespace(name, namespace):
  function mock_read_hpa_details_in_namespace (line 61) | def mock_read_hpa_details_in_namespace(name, namespace):
  function mock_read_ingress_details_in_namespace (line 69) | def mock_read_ingress_details_in_namespace(name, namespace):
  function mock_read_cron_job_details_in_namespace (line 77) | def mock_read_cron_job_details_in_namespace(name, namespace):
  function mock_list_namespaced_daemonsets (line 85) | def mock_list_namespaced_daemonsets(namespace, watch=False, label_select...
  function mock_list_namespaced_cronjobs (line 93) | def mock_list_namespaced_cronjobs(namespace, watch=False, label_selector...
  function mock_list_namespaced_ingresses (line 101) | def mock_list_namespaced_ingresses(namespace, watch=False, label_selecto...
  function mock_read_namespaced_endpoints (line 109) | def mock_read_namespaced_endpoints(name, namespace):
  function mock_list_namespaced_config_map (line 117) | def mock_list_namespaced_config_map(namespace, watch=False, label_select...
  function mock_list_namespaced_deployments (line 124) | def mock_list_namespaced_deployments(namespace, watch=False, label_selec...
  function mock_list_namespaced_replicasets (line 131) | def mock_list_namespaced_replicasets(namespace, watch=False, label_selec...
  function mock_list_namespaced_statefulsets (line 138) | def mock_list_namespaced_statefulsets(namespace, watch=False, label_sele...
  function mock_list_pvc (line 145) | def mock_list_pvc(namespace, watch=False, label_selector=""):
  function mock_list_cluster_roles (line 153) | def mock_list_cluster_roles(watch=False):
  function mock_list_namespaced_services (line 160) | def mock_list_namespaced_services(namespace, watch=False, label_selector...
  function mock_list_namespaced_hpas (line 168) | def mock_list_namespaced_hpas(namespace, watch=False, label_selector=""):
  function mock_list_namespaced_pod (line 176) | def mock_list_namespaced_pod(namespace, watch=False, label_selector=""):
  function mock_read_namespaced_pod_status (line 184) | def mock_read_namespaced_pod_status(name, namespace):
  function mock_list_cluster_role_bindings (line 192) | def mock_list_cluster_role_bindings(watch=False):
  function mock_list_namespaced_service_accounts (line 199) | def mock_list_namespaced_service_accounts(namespace, watch=False, label_...
  function mock_list_namespaced_jobs (line 207) | def mock_list_namespaced_jobs(namespace, watch=False, label_selector=""):
  function mock_list_namespaced_secrets (line 215) | def mock_list_namespaced_secrets(namespace, watch=False, label_selector=...
  function mock_list_namespaces (line 223) | def mock_list_namespaces(watch=False, label_selector=""):
  function mock_list_node_info (line 230) | def mock_list_node_info(watch=False, label_selector=""):
  function mock_list_namespaced_roles (line 237) | def mock_list_namespaced_roles(namespace, watch=False):
  function mock_list_namespaced_role_bindings (line 245) | def mock_list_namespaced_role_bindings(namespace, watch=False):
  function mock_k8s_version (line 253) | def mock_k8s_version():
  class TestKubeLibrary (line 290) | class TestKubeLibrary(unittest.TestCase):
    method test_KubeLibrary_inits_from_kubeconfig (line 296) | def test_KubeLibrary_inits_from_kubeconfig(self):
    method test_KubeLibrary_inits_with_context (line 302) | def test_KubeLibrary_inits_with_context(self):
    method test_KubeLibrary_fails_for_wrong_context (line 308) | def test_KubeLibrary_fails_for_wrong_context(self):
    method test_inits_all_api_clients (line 315) | def test_inits_all_api_clients(self):
    method test_KubeLibrary_inits_without_cert_validation (line 323) | def test_KubeLibrary_inits_without_cert_validation(self):
    method test_KubeLibrary_inits_with_bearer_token (line 332) | def test_KubeLibrary_inits_with_bearer_token(self):
    method test_inits_with_bearer_token_raises_BearerTokenWithPrefixException (line 342) | def test_inits_with_bearer_token_raises_BearerTokenWithPrefixException...
    method test_KubeLibrary_inits_with_bearer_token_with_ca_crt (line 349) | def test_KubeLibrary_inits_with_bearer_token_with_ca_crt(self):
    method test_KubeLibrary_dynamic_init (line 358) | def test_KubeLibrary_dynamic_init(self):
    method test_KubeLibrary_dynamic_get (line 374) | def test_KubeLibrary_dynamic_get(self):
    method test_KubeLibrary_dynamic_patch (line 388) | def test_KubeLibrary_dynamic_patch(self):
    method test_KubeLibrary_dynamic_replace (line 402) | def test_KubeLibrary_dynamic_replace(self):
    method test_KubeLibrary_dynamic_create (line 416) | def test_KubeLibrary_dynamic_create(self):
    method test_KubeLibrary_dynamic_delete (line 430) | def test_KubeLibrary_dynamic_delete(self):
    method test_generate_alphanumeric_str (line 440) | def test_generate_alphanumeric_str(self):
    method test_evaluate_callable_from_k8s_client (line 444) | def test_evaluate_callable_from_k8s_client(self):
    method test_list_namespaced_pod_by_pattern (line 454) | def test_list_namespaced_pod_by_pattern(self, mock_lnp):
    method test_get_matching_pods_in_namespace (line 465) | def test_get_matching_pods_in_namespace(self, mock_lnp):
    method test_filter_pods_containers_by_name (line 472) | def test_filter_pods_containers_by_name(self, mock_lnp):
    method test_filter_containers_images (line 479) | def test_filter_containers_images(self, mock_lnp):
    method test_filter_pods_containers_statuses_by_name (line 487) | def test_filter_pods_containers_statuses_by_name(self, mock_lnp):
    method test_read_namespaced_pod_status (line 494) | def test_read_namespaced_pod_status(self, mock_lnp):
    method test_filter_containers_resources (line 501) | def test_filter_containers_resources(self, mock_lnp):
    method test_assert_pod_has_labels (line 508) | def test_assert_pod_has_labels(self):
    method test_assert_pod_has_annotations (line 522) | def test_assert_pod_has_annotations(self):
    method test_assert_container_has_env_vars (line 536) | def test_assert_container_has_env_vars(self):
    method test_gather_pods_obejcts_to_json (line 552) | def test_gather_pods_obejcts_to_json(self):
    method test_list_namespace (line 566) | def test_list_namespace(self, mock_lnp):
    method test_list_namespaced_service_account_by_pattern (line 576) | def test_list_namespaced_service_account_by_pattern(self, mock_lnp):
    method test_get_kubelet_version (line 585) | def test_get_kubelet_version(self, mock_lnp):
    method test_list_namespaced_job_by_pattern (line 593) | def test_list_namespaced_job_by_pattern(self, mock_lnp):
    method test_list_namespaced_secret_by_pattern (line 602) | def test_list_namespaced_secret_by_pattern(self, mock_lnp):
    method test_get_namespaced_exec_without_container (line 611) | def test_get_namespaced_exec_without_container(self, mock_stream):
    method test_get_namespaced_exec_with_container (line 622) | def test_get_namespaced_exec_with_container(self, mock_stream):
    method test_get_namespaced_exec_not_argv_and_list (line 635) | def test_get_namespaced_exec_not_argv_and_list(self, mock_stream):
    method test_list_cluster_role (line 649) | def test_list_cluster_role(self, mock_lnp):
    method test_list_cluster_role_binding (line 658) | def test_list_cluster_role_binding(self, mock_lnp):
    method test_list_namespaced_role (line 667) | def test_list_namespaced_role(self, mock_lnp):
    method test_list_namespaced_role_binding (line 676) | def test_list_namespaced_role_binding(self, mock_lnp):
    method test_list_namespaced_deployment_by_pattern (line 685) | def test_list_namespaced_deployment_by_pattern(self, mock_lnp):
    method test_list_namespaced_replica_set_by_pattern (line 694) | def test_list_namespaced_replica_set_by_pattern(self, mock_lnp):
    method test_list_namespaced_persistent_volume_claim (line 703) | def test_list_namespaced_persistent_volume_claim(self, mock_lnp):
    method test_list_namespaced_persistent_volume_claim_by_pattern (line 712) | def test_list_namespaced_persistent_volume_claim_by_pattern(self, mock...
    method test_list_namespaced_stateful_set_by_pattern (line 721) | def test_list_namespaced_stateful_set_by_pattern(self, mock_lnp):
    method test_list_namespaced_service (line 730) | def test_list_namespaced_service(self, mock_service):
    method test_list_namespaced_daemon_set (line 737) | def test_list_namespaced_daemon_set(self, mock_lnp):
    method test_list_namespaced_ingress (line 746) | def test_list_namespaced_ingress(self, mock_lnp):
    method test_list_namespaced_cron_job (line 755) | def test_list_namespaced_cron_job(self, mock_lnp):
    method test_read_namespaced_endpoints (line 764) | def test_read_namespaced_endpoints(self, mock_lnp):
    method test_get_configmaps_in_namespace (line 773) | def test_get_configmaps_in_namespace(self, mock_lnp):
    method test_list_namespaced_horizontal_pod_autoscaler (line 782) | def test_list_namespaced_horizontal_pod_autoscaler(self, mock_lnp):
    method test_read_namespaced_horizontal_pod_autoscaler (line 791) | def test_read_namespaced_horizontal_pod_autoscaler(self, mock_lnp):
    method test_read_namespaced_daemon_set (line 800) | def test_read_namespaced_daemon_set(self, mock_lnp):
    method test_read_namespaced_service (line 809) | def test_read_namespaced_service(self, mock_lnp):
    method test_read_namespaced_ingress (line 818) | def test_read_namespaced_ingress(self, mock_lnp):
    method test_read_namespaced_cron_job (line 827) | def test_read_namespaced_cron_job(self, mock_lnp):
    method test_k8s_version (line 835) | def test_k8s_version(self):
Condensed preview — 125 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (652K chars).
[
  {
    "path": ".circleci/config.yml",
    "chars": 7059,
    "preview": "version: 2.1\n\norbs:\n  python: circleci/python@0.3.2\n  k3d: devopsspiral/k3d@0.1.5\njobs:\n  build-and-test:\n    executor: "
  },
  {
    "path": ".coveragerc",
    "chars": 85,
    "preview": "[run]\ncommand_line = -m unittest discover\nsource =\n    src/\n[report]\nfail_under = 84\n"
  },
  {
    "path": ".flake8",
    "chars": 30,
    "preview": "[flake8]\nmax-line-length = 160"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 727,
    "preview": "\\<Remember to add meaningful title\\>\n\n\\<Short description of the PR\\>\n\nFixes #\\<issue number\\>\n\nBefore merge following n"
  },
  {
    "path": ".gitignore",
    "chars": 129,
    "preview": ".venv\n.idea\n.vscode\n.coverage\n*.pyc\n*.pyo\nsrc/robotframework_kubelibrary.egg-info/\ndist/\nbuild/\n\nlog.html\noutput.xml\nrep"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 7134,
    "preview": "# Change Log\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Change"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1564,
    "preview": "# Contributing\nWe welcome contributions of all types including:\n* Proposing new features\n* Reporting a bug\n* Fixing a bu"
  },
  {
    "path": "LICENSE",
    "chars": 1070,
    "preview": "MIT License\n\nCopyright (c) 2020 DevOps Spiral\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
  },
  {
    "path": "README.md",
    "chars": 6213,
    "preview": "# KubeLibrary\n[![CircleCI Build Status](https://circleci.com/gh/devopsspiral/KubeLibrary.svg?style=shield)](https://circ"
  },
  {
    "path": "docs/index.html",
    "chars": 262131,
    "preview": "<!doctype html>\n<html id=\"library-documentation-top\" lang=\"en\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"te"
  },
  {
    "path": "requirements-dev.txt",
    "chars": 65,
    "preview": "-r requirements.txt\nmock\nflake8\ncoverage\nrobotframework-requests\n"
  },
  {
    "path": "requirements.txt",
    "chars": 79,
    "preview": "google-auth>=2.5.0\nkubernetes>=21.7.0\nrobotframework>=3.2.2\nurllib3-mock>=0.3.3"
  },
  {
    "path": "setup.py",
    "chars": 1209,
    "preview": "from pkg_resources import parse_requirements\nfrom pathlib import Path\nfrom setuptools import setup\n\nexec(open(\"src/KubeL"
  },
  {
    "path": "src/KubeLibrary/KubeLibrary.py",
    "chars": 62878,
    "preview": "import ast\nimport json\nimport re\nimport ssl\nimport urllib3\n\nfrom os import environ\nfrom kubernetes import client, config"
  },
  {
    "path": "src/KubeLibrary/__init__.py",
    "chars": 52,
    "preview": "from .KubeLibrary import KubeLibrary   # noqa: F401\n"
  },
  {
    "path": "src/KubeLibrary/exceptions.py",
    "chars": 181,
    "preview": "class BearerTokenWithPrefixException(Exception):\n\n    ROBOT_SUPPRESS_NAME = True\n\n    def __init__(self):\n        super("
  },
  {
    "path": "src/KubeLibrary/version.py",
    "chars": 19,
    "preview": "version = \"0.8.10\"\n"
  },
  {
    "path": "test/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "test/resources/cluster_role.json",
    "chars": 759,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"rbac.authorization.k8s.io/v1\",\n\t\t\"kind\": \"ClusterRole\",\n\t\t\"metadata\": {\n\t\t\t\"creationTimestamp\": \"2"
  },
  {
    "path": "test/resources/cluster_role_bind.json",
    "chars": 959,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"rbac.authorization.k8s.io/v1\",\n\t\t\"kind\": \"ClusterRoleBinding\",\n\t\t\"metadata\": {\n\t\t\t\"creationTimesta"
  },
  {
    "path": "test/resources/configmap.json",
    "chars": 1013,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"v1\",\n\t\t\"data\": {\n\t\t\t\"game.properties\": \"enemy.types=aliens,monsters\\nplayer.maximum-lives=5    \\n\""
  },
  {
    "path": "test/resources/cronjob.json",
    "chars": 2407,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"batch/v1beta1\",\n\t\t\"kind\": \"CronJob\",\n\t\t\"metadata\": {\n\t\t\t\"creationTimestamp\": \"2021-03-25T04:02:24Z"
  },
  {
    "path": "test/resources/cronjob_details.json",
    "chars": 4683,
    "preview": "{\n    \"apiVersion\": \"batch/v1beta1\",\n    \"kind\": \"CronJob\",\n    \"metadata\": {\n        \"creationTimestamp\": \"2021-04-19T1"
  },
  {
    "path": "test/resources/daemonset.json",
    "chars": 5465,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"apps/v1\",\n\t\t\"kind\": \"DaemonSet\",\n\t\t\"metadata\": {\n\t\t\t\"annotations\": {\n\t\t\t\t\"deprecated.daemonset.tem"
  },
  {
    "path": "test/resources/daemonset_details.json",
    "chars": 9608,
    "preview": "{\n    \"apiVersion\": \"apps/v1\",\n    \"kind\": \"DaemonSet\",\n    \"metadata\": {\n        \"annotations\": {\n            \"deprecat"
  },
  {
    "path": "test/resources/deployment.json",
    "chars": 4847,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"apps/v1\",\n\t\t\"kind\": \"Deployment\",\n\t\t\"metadata\": {\n\t\t\t\"annotations\": {\n\t\t\t\t\"deployment.kubernetes.i"
  },
  {
    "path": "test/resources/endpoints.json",
    "chars": 1015,
    "preview": "[\n{\n    \"apiVersion\": \"v1\",\n    \"kind\": \"Endpoints\",\n    \"metadata\": {\n        \"creationTimestamp\": \"2021-04-08T14:59:12"
  },
  {
    "path": "test/resources/hpa.json",
    "chars": 1411,
    "preview": "[\t\n\t{\n\t\t\"apiVersion\": \"autoscaling/v1\",\n\t\t\"kind\": \"HorizontalPodAutoscaler\",\n\t\t\"metadata\": {\n\t\t\t\"annotations\": {\n\t\t\t\t\"au"
  },
  {
    "path": "test/resources/hpa_details.json",
    "chars": 1372,
    "preview": "{\n\t\"apiVersion\": \"autoscaling/v1\",\n\t\"kind\": \"HorizontalPodAutoscaler\",\n\t\"metadata\": {\n\t\t\"annotations\": {\n\t\t\t\"autoscaling"
  },
  {
    "path": "test/resources/ingress.json",
    "chars": 985,
    "preview": "[\n\t{\n\t\t\"apiVersion\": \"extensions/v1beta1\",\n\t\t\"kind\": \"Ingress\",\n\t\t\"metadata\": {\n\t\t\t\"creationTimestamp\": \"2021-03-25T04:0"
  },
  {
    "path": "test/resources/ingress_details.json",
    "chars": 1489,
    "preview": "{\n    \"apiVersion\": \"extensions/v1beta1\",\n    \"kind\": \"Ingress\",\n    \"metadata\": {\n        \"creationTimestamp\": \"2021-03"
  },
  {
    "path": "test/resources/jobs.json",
    "chars": 10390,
    "preview": "[\n        {\n            \"apiVersion\": \"batch/v1\",\n            \"kind\": \"Job\",\n            \"metadata\": {\n                \""
  },
  {
    "path": "test/resources/k3d",
    "chars": 1075,
    "preview": "apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWakNCL3FB"
  },
  {
    "path": "test/resources/multiple_context",
    "chars": 2122,
    "preview": "apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWekNCL3FB"
  },
  {
    "path": "test/resources/namespaces.json",
    "chars": 1842,
    "preview": "[\n    {\n        \"apiVersion\": \"v1\",\n        \"kind\": \"Namespace\",\n        \"metadata\": {\n            \"creationTimestamp\": "
  },
  {
    "path": "test/resources/node_info.json",
    "chars": 18087,
    "preview": "\n    {\n        \"apiVersion\": \"v1\",\n        \"items\": [\n            {\n                \"apiVersion\": \"v1\",\n                "
  },
  {
    "path": "test/resources/pod.json",
    "chars": 198,
    "preview": "{\n  \"api_version\": \"v1\",\n  \"kind\": \"Pod\",\n  \"metadata\": {\n    \"name\": \"Mock\"\n  },\n  \"spec\": {\n    \"containers\": [\n      "
  },
  {
    "path": "test/resources/pod_status.json",
    "chars": 18940,
    "preview": "{\n    \"api_version\": \"v1\",\n    \"kind\": \"Pod\",\n    \"metadata\": {\n        \"annotations\": {\n            \"checksum/config\": "
  },
  {
    "path": "test/resources/pods.json",
    "chars": 28513,
    "preview": "[\n    {\n        \"api_version\": null,\n        \"kind\": null,\n        \"metadata\": {\n            \"annotations\": null,\n      "
  },
  {
    "path": "test/resources/pvc.json",
    "chars": 2286,
    "preview": "[\n{\n    \"apiVersion\": \"v1\",\n    \"kind\": \"PersistentVolumeClaim\",\n    \"metadata\": {\n        \"creationTimestamp\": \"2021-03"
  },
  {
    "path": "test/resources/replicaset.json",
    "chars": 1487,
    "preview": "[\r\n  {\r\n    \"apiVersion\": \"apps/v1\",\r\n    \"kind\": \"ReplicaSet\",\r\n    \"metadata\": {\r\n      \"creationTimestamp\": \"2021-07-"
  },
  {
    "path": "test/resources/role.json",
    "chars": 1370,
    "preview": " [\n        {\n            \"apiVersion\": \"rbac.authorization.k8s.io/v1\",\n            \"kind\": \"Role\",\n            \"metadata"
  },
  {
    "path": "test/resources/rolebinding.json",
    "chars": 1574,
    "preview": "[\n        {\n            \"apiVersion\": \"rbac.authorization.k8s.io/v1\",\n            \"kind\": \"RoleBinding\",\n            \"me"
  },
  {
    "path": "test/resources/secrets.json",
    "chars": 921,
    "preview": "[\n    {\n        \"apiVersion\": \"v1\",\n        \"data\": {\n            \"admin-password\": \"NERwMHFKcjFtOWtPR0p3UW1GZFFYbXVVRU4"
  },
  {
    "path": "test/resources/service.json",
    "chars": 1168,
    "preview": "[\t\n\t{\n\t\t\"apiVersion\": \"v1\",\n\t\t\"kind\": \"Service\",\n\t\t\"metadata\": {\n\t\t\t\"creationTimestamp\": \"2021-03-17T12:27:33Z\",\n\t\t\t\"man"
  },
  {
    "path": "test/resources/service_accounts.json",
    "chars": 892,
    "preview": "[\n    {\n        \"apiVersion\": \"v1\",\n        \"kind\": \"ServiceAccount\",\n        \"metadata\": {\n            \"creationTimesta"
  },
  {
    "path": "test/resources/service_details.json",
    "chars": 1989,
    "preview": "{\n    \"apiVersion\": \"v1\",\n    \"kind\": \"Service\",\n    \"metadata\": {\n        \"creationTimestamp\": \"2021-04-22T10:24:37Z\",\n"
  },
  {
    "path": "test/resources/sts.json",
    "chars": 1541,
    "preview": "[\n    {\n      \"apiVersion\": \"apps/v1\",\n      \"kind\": \"StatefulSet\",\n      \"metadata\": {\n        \"creationTimestamp\": \"20"
  },
  {
    "path": "test/test_KubeLibrary.py",
    "chars": 44027,
    "preview": "import json\nimport mock\nimport re\nimport ssl\nimport unittest\nfrom KubeLibrary import KubeLibrary\nfrom KubeLibrary.except"
  },
  {
    "path": "test-objects-chart/.helmignore",
    "chars": 342,
    "preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
  },
  {
    "path": "test-objects-chart/Chart.yaml",
    "chars": 916,
    "preview": "apiVersion: v2\nname: test-objects-chart\ndescription: A Helm chart for Kubernetes\n\n# A chart can be either an 'applicatio"
  },
  {
    "path": "test-objects-chart/README.md",
    "chars": 488,
    "preview": "# Helm chart to install requirements for the tests\nWith this helm chart kubernetes objects can be installed to a cluster"
  },
  {
    "path": "test-objects-chart/templates/NOTES.txt",
    "chars": 1625,
    "preview": "1. Get the application URL by running these commands:\n{{- if .Values.ingress.enabled }}\n{{- range $host := .Values.ingre"
  },
  {
    "path": "test-objects-chart/templates/_helpers.tpl",
    "chars": 1957,
    "preview": "{{/* vim: set filetype=mustache: */}}\n{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"test-objects-chart.name\" -}}\n{"
  },
  {
    "path": "test-objects-chart/templates/cluster_role.yaml",
    "chars": 336,
    "preview": "apiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  # \"namespace\" omitted since ClusterRoles are not "
  },
  {
    "path": "test-objects-chart/templates/cluster_role_bind.yaml",
    "chars": 395,
    "preview": "apiVersion: rbac.authorization.k8s.io/v1\n# This cluster role binding allows anyone in the \"manager\" group to read secret"
  },
  {
    "path": "test-objects-chart/templates/cronjob.yaml",
    "chars": 520,
    "preview": "apiVersion: batch/v1\nkind: CronJob\nmetadata:\n  name: hello\n  labels:\n    TestLabel: mytestlabel\nspec:\n  schedule: \"*/1 *"
  },
  {
    "path": "test-objects-chart/templates/daemonset.yaml",
    "chars": 1130,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: fluentd-elasticsearch\n  labels:\n    TestLabel: mytestlabel\nspec:\n "
  },
  {
    "path": "test-objects-chart/templates/deployment.yaml",
    "chars": 1681,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"test-objects-chart.fullname\" . }}\n  labels:\n    {{- i"
  },
  {
    "path": "test-objects-chart/templates/hpa.yaml",
    "chars": 318,
    "preview": "\napiVersion: autoscaling/v1\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: {{ include \"test-objects-chart.fullname\" . }"
  },
  {
    "path": "test-objects-chart/templates/ingress.yaml",
    "chars": 988,
    "preview": "{{- if .Values.ingress.enabled -}}\n{{- $fullName := include \"test-objects-chart.fullname\" . -}}\n{{- $svcPort := .Values."
  },
  {
    "path": "test-objects-chart/templates/job.yml",
    "chars": 797,
    "preview": "apiVersion: batch/v1\nkind: Job\nmetadata:\n  labels:\n    TestLabel: mytestlabel\n  name: busybox-job\nspec:\n  backoffLimit: "
  },
  {
    "path": "test-objects-chart/templates/role.yaml",
    "chars": 196,
    "preview": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: pod-reader\nrules:\n- apiGroups: [\"\"] # \"\" indicates"
  },
  {
    "path": "test-objects-chart/templates/rolebinding.yaml",
    "chars": 624,
    "preview": "apiVersion: rbac.authorization.k8s.io/v1\n# This role binding allows \"jane\" to read pods in the \"default\" namespace.\n# Yo"
  },
  {
    "path": "test-objects-chart/templates/service.yaml",
    "chars": 394,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"test-objects-chart.fullname\" . }}\n  labels:\n    {{- include \""
  },
  {
    "path": "test-objects-chart/templates/serviceaccount.yaml",
    "chars": 229,
    "preview": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"test-objects-"
  },
  {
    "path": "test-objects-chart/templates/tests/test-connection.yaml",
    "chars": 416,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"test-objects-chart.fullname\" . }}-test-connection\"\n  labels:\n{{ "
  },
  {
    "path": "test-objects-chart/values.yaml",
    "chars": 1503,
    "preview": "# Default values for test-objects-chart.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your tem"
  },
  {
    "path": "testcases/Dockerfile",
    "chars": 220,
    "preview": "FROM python:3.9.0-alpine\nCOPY setup.py README.md requirements.txt ./\nCOPY src ./src\nCOPY testcases ./testcases\nRUN pip i"
  },
  {
    "path": "testcases/cluster_role/cluster_role.robot",
    "chars": 192,
    "preview": "*** Settings ***\nResource          ./cluster_role_kw.robot\n\n*** Test Cases ***\nCluster_role test case example\n    [Tags]"
  },
  {
    "path": "testcases/cluster_role/cluster_role_kw.robot",
    "chars": 733,
    "preview": "*** Settings ***\n# For regular execution\nLibrary           KubeLibrary\n# For incluster execution\n#Library           Kube"
  },
  {
    "path": "testcases/configmap/configmap.robot",
    "chars": 336,
    "preview": "*** Settings ***\nResource          ./configmap_kw.robot\n\n*** Test Cases ***\nConfigmap test case example\n    [Tags]    gr"
  },
  {
    "path": "testcases/configmap/configmap_kw.robot",
    "chars": 1218,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/connect_GKE_clusters.robot",
    "chars": 614,
    "preview": "*** Settings ***\nLibrary    OperatingSystem\n\nDocumentation    To have a valid kube_config file for a Google Cloud hosted"
  },
  {
    "path": "testcases/cronjob/cronjob.robot",
    "chars": 559,
    "preview": "*** Settings ***\nResource          ./cronjob_kw.robot\n\n*** Test Cases ***\nJob test case example\n    [Tags]    other\n    "
  },
  {
    "path": "testcases/cronjob/cronjob_kw.robot",
    "chars": 2467,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/custom_objects/ambassador_crds.robot",
    "chars": 1973,
    "preview": "*** Settings ***\nLibrary         KubeLibrary\n\nDocumentation  These are example test cases to check custom resource defin"
  },
  {
    "path": "testcases/custom_objects/custom_objects.robot",
    "chars": 1162,
    "preview": "*** Settings ***\nLibrary         KubeLibrary\n\n*** Test Cases ***\nGet List Of Cluster Custom Objects\n    [Tags]  smoke\n  "
  },
  {
    "path": "testcases/daemonset/daemonsets.robot",
    "chars": 243,
    "preview": "*** Settings ***\nResource          ./daemonsets_kw.robot\n\n*** Test Cases ***\nDaemonsets test case example\n    [Tags]    "
  },
  {
    "path": "testcases/daemonset/daemonsets_kw.robot",
    "chars": 2080,
    "preview": "*** Settings ***\n# For regular execution\nLibrary           KubeLibrary\n# For incluster execution\n#Library           Kube"
  },
  {
    "path": "testcases/deployment/deployment.robot",
    "chars": 229,
    "preview": "*** Settings ***\nResource          ./deployment_kw.robot\n\n*** Test Cases ***\nDeployment test case example\n    [Tags]    "
  },
  {
    "path": "testcases/deployment/deployment_kw.robot",
    "chars": 1386,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/dynamic_client/dynamic_client.robot",
    "chars": 2851,
    "preview": "*** Settings ***\nResource          ./dynamic_client_kw.robot\n\n*** Test Cases ***\nDynamic client test case example\n    [T"
  },
  {
    "path": "testcases/dynamic_client/dynamic_client_kw.robot",
    "chars": 2748,
    "preview": "*** Settings ***\nLibrary           BuiltIn\nLibrary           yaml\nLibrary           OperatingSystem\nLibrary           Co"
  },
  {
    "path": "testcases/dynamic_client/resources/pod.yaml",
    "chars": 299,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  namespace: default\n  name: myapp-pod\n  labels:\n    app: myapp\n    tested: \"false\"\ns"
  },
  {
    "path": "testcases/dynamic_client/resources/pod_generated_name.yaml",
    "chars": 308,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  namespace: default\n  generateName: myapp-pod-\n  labels:\n    app: myapp\n    tested: "
  },
  {
    "path": "testcases/dynamic_client/resources/svc.yaml",
    "chars": 177,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: myservice\n  namespace: default\nspec:\n  selector:\n    app: dummy\n  ports:\n"
  },
  {
    "path": "testcases/dynamic_client/resources/svc_lookup.yaml",
    "chars": 416,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  namespace: default\n  name: svc-lookup\n  labels:\n    app: svc-lookup\nspec:\n  restart"
  },
  {
    "path": "testcases/exec/exec.robot",
    "chars": 1861,
    "preview": "*** Settings ***\nResource      ./exec_kw.robot\nForce Tags    exec    other\n\n*** Variables ***\n${string}            Hello"
  },
  {
    "path": "testcases/exec/exec_kw.robot",
    "chars": 529,
    "preview": "*** Settings ***\n# For regular execution\nLibrary    KubeLibrary\n# For incluster execution\n#Library    KubeLibrary    Non"
  },
  {
    "path": "testcases/grafana/demo-UI-test.robot",
    "chars": 4596,
    "preview": "**** Settings ***\nLibrary          KubeLibrary\nLibrary          Browser\nLibrary          Collections\n\nDocumentation    T"
  },
  {
    "path": "testcases/grafana/values.yaml",
    "chars": 238,
    "preview": "service:\n  type: LoadBalancer\n  port: 3000\npersistence:\n  enabled: true\n  type: pvc\n  size: 1Gi\npodAnnotations:\n  kubeli"
  },
  {
    "path": "testcases/healthcheck/healthcheck.robot",
    "chars": 4292,
    "preview": "*** Settings ***\nLibrary           Collections\nResource          ./healthcheck_kw.robot\n\n*** Test Cases ***\nHealthcheck\n"
  },
  {
    "path": "testcases/healthcheck/healthcheck_kw.robot",
    "chars": 1179,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/horizontalPodAutoscaler/hpa.robot",
    "chars": 212,
    "preview": "*** Settings ***\nResource          ./hpa_kw.robot\n\n*** Test Cases ***\nList Horizontal Pod Autoscalers in namespace\n    ["
  },
  {
    "path": "testcases/horizontalPodAutoscaler/hpa_kw.robot",
    "chars": 898,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/ingress/ingress.robot",
    "chars": 199,
    "preview": "*** Settings ***\nResource          ./ingress_kw.robot\n\n*** Test Cases ***\nIngresses by label\n    [Tags]    other\n    Lis"
  },
  {
    "path": "testcases/ingress/ingress_kw.robot",
    "chars": 1041,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/job/job.robot",
    "chars": 365,
    "preview": "*** Settings ***\nResource          ./job_kw.robot\n\n*** Test Cases ***\nJob test case example\n    [Tags]    other\n    List"
  },
  {
    "path": "testcases/job/job_kw.robot",
    "chars": 2057,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/namespace/namespace.robot",
    "chars": 185,
    "preview": "*** Settings ***\nResource          ./namespace_kw.robot\n\n*** Test Cases ***\nNamespace test case example\n    [Tags]    ot"
  },
  {
    "path": "testcases/namespace/namespace_kw.robot",
    "chars": 679,
    "preview": "*** Settings ***\n# For regular execution\nLibrary           KubeLibrary\n# For incluster execution\n#Library           Kube"
  },
  {
    "path": "testcases/pod/pod.robot",
    "chars": 4366,
    "preview": "*** Settings ***\nResource          ./pod_kw.robot\n\n*** Variables ***\n${KLIB_POD_PATTERN}                 %{KLIB_POD_PATT"
  },
  {
    "path": "testcases/pod/pod_kw.robot",
    "chars": 5609,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/pvc/pvc.robot",
    "chars": 275,
    "preview": "*** Settings ***\nResource          ./pvc_kw.robot\n\n*** Test Cases ***\nList Persitent Volume Claims by label\n    [Tags]  "
  },
  {
    "path": "testcases/pvc/pvc_kw.robot",
    "chars": 986,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/reload-config/reload-config.robot",
    "chars": 998,
    "preview": "*** Settings ***\nResource          ./reload-config_kw.robot\n\nDocumentation    This test requires two k8s clusters runnin"
  },
  {
    "path": "testcases/reload-config/reload-config_kw.robot",
    "chars": 1175,
    "preview": "*** Settings ***\nLibrary           KubeLibrary    %{KUBE_CONFIG1=./cluster1-conf}\n# For development\n#Library           ."
  },
  {
    "path": "testcases/reload-config/sa.yaml",
    "chars": 513,
    "preview": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: mysa\n  labels: \n    source: mysa\n---\napiVersion: rbac.authorizatio"
  },
  {
    "path": "testcases/replicaset/replicaset.robot",
    "chars": 187,
    "preview": "*** Settings ***\nResource          ./replicaset_kw.robot\n\n*** Test Cases ***\nReplicaset test case example\n    [Tags]    "
  },
  {
    "path": "testcases/replicaset/replicaset_kw.robot",
    "chars": 686,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/requirements.txt",
    "chars": 51,
    "preview": "robotframework-requests\nrobotframework-kubelibrary\n"
  },
  {
    "path": "testcases/role/role.robot",
    "chars": 204,
    "preview": "*** Settings ***\nResource          ./role_kw.robot\n\n*** Test Cases ***\nRole test case example\n    [Tags]    other\n    Li"
  },
  {
    "path": "testcases/role/role_kw.robot",
    "chars": 766,
    "preview": "*** Settings ***\n# For regular execution\nLibrary           KubeLibrary\n# For incluster execution\n#Library           Kube"
  },
  {
    "path": "testcases/secrets/secret.robot",
    "chars": 189,
    "preview": "*** Settings ***\nResource          ./secret_kw.robot\n\n*** Test Cases ***\nSecrets test case example\n    [Tags]    grafana"
  },
  {
    "path": "testcases/secrets/secret_kw.robot",
    "chars": 1209,
    "preview": "*** Settings ***\n# For regular execution\nLibrary           KubeLibrary\n# For incluster execution\n#Library           Kube"
  },
  {
    "path": "testcases/service/service.robot",
    "chars": 194,
    "preview": "*** Settings ***\nResource          ./service_kw.robot\n\n*** Test Cases ***\nServices by label\n    [Tags]    other\n    List"
  },
  {
    "path": "testcases/service/service_kw.robot",
    "chars": 1020,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\nLibrary           String\n# For regular "
  },
  {
    "path": "testcases/service_account/service_account.robot",
    "chars": 676,
    "preview": "*** Settings ***\nResource          ./service_account_kw.robot\n\n*** Test Cases ***\nListing Service Accounts\n    [Tags]   "
  },
  {
    "path": "testcases/service_account/service_account_kw.robot",
    "chars": 2101,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/sts/sts.robot",
    "chars": 183,
    "preview": "*** Settings ***\nResource          ./sts_kw.robot\n\n*** Test Cases ***\nStatefulset test case example\n    [Tags]    statef"
  },
  {
    "path": "testcases/sts/sts_kw.robot",
    "chars": 693,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/system_smoke.robot",
    "chars": 2250,
    "preview": "*** Settings ***\nResource          ./system_smoke_kw.robot\n\n*** Variables ***\n${KUBELET_VERSION}     %{KUBELET_VERSION}\n"
  },
  {
    "path": "testcases/system_smoke_kw.robot",
    "chars": 4625,
    "preview": "*** Settings ***\nLibrary           Collections\nLibrary           RequestsLibrary\n# For regular execution\nLibrary        "
  },
  {
    "path": "testcases/test_version.robot",
    "chars": 467,
    "preview": "*** Settings ***\nLibrary    KubeLibrary\n\n*** Test Cases ***\nKubernetes Cluster Version Test\n    [Tags]    prerelease\n   "
  }
]

About this extraction

This page contains the full source code of the devopsspiral/KubeLibrary GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 125 files (593.6 KB), approximately 168.0k tokens, and a symbol index with 202 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!