Flake8 cleanups
Tox can now run the linters test. The linters gate job is added. Change-Id: If39545c928991baa47c919ab6b357bf47ca9ca90
This commit is contained in:
parent
c531a6fb23
commit
9f2f4ec145
@ -92,12 +92,14 @@
|
|||||||
- project:
|
- project:
|
||||||
check:
|
check:
|
||||||
jobs:
|
jobs:
|
||||||
|
- tox-linters
|
||||||
- zuul-tox-docs
|
- zuul-tox-docs
|
||||||
- zuul-operator-build-image
|
- zuul-operator-build-image
|
||||||
- zuul-operator-functional-k8s:
|
- zuul-operator-functional-k8s:
|
||||||
dependencies: zuul-operator-build-image
|
dependencies: zuul-operator-build-image
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
|
- tox-linters
|
||||||
- zuul-tox-docs
|
- zuul-tox-docs
|
||||||
- zuul-operator-upload-image
|
- zuul-operator-upload-image
|
||||||
- zuul-operator-functional-k8s:
|
- zuul-operator-functional-k8s:
|
||||||
|
10
tox.ini
10
tox.ini
@ -1,13 +1,12 @@
|
|||||||
[tox]
|
[tox]
|
||||||
minversion = 1.6
|
minversion = 1.6
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
envlist = pep8
|
envlist = linters,docs
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
install_command = pip install {opts} {packages}
|
install_command = pip install {opts} {packages}
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
|
||||||
commands =
|
commands =
|
||||||
python setup.py testr --slowest --testr-args='{posargs}'
|
python setup.py testr --slowest --testr-args='{posargs}'
|
||||||
|
|
||||||
@ -26,8 +25,8 @@ deps =
|
|||||||
commands =
|
commands =
|
||||||
sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html
|
sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:linters]
|
||||||
whitelist_externals = bash
|
deps = flake8
|
||||||
commands =
|
commands =
|
||||||
flake8 {posargs}
|
flake8 {posargs}
|
||||||
|
|
||||||
@ -40,3 +39,6 @@ commands = {posargs}
|
|||||||
ignore = E124,E125,E129,E252,E402,E741,H,W503,W504
|
ignore = E124,E125,E129,E252,E402,E741,H,W503,W504
|
||||||
show-source = True
|
show-source = True
|
||||||
exclude = .venv,.tox,dist,doc,build,*.egg
|
exclude = .venv,.tox,dist,doc,build,*.egg
|
||||||
|
per-file-ignores =
|
||||||
|
# Allow import * to create a superset of objects
|
||||||
|
zuul_operator/objects.py:F403,F405
|
||||||
|
@ -13,3 +13,5 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from .operator import ZuulOperator
|
from .operator import ZuulOperator
|
||||||
|
|
||||||
|
__all__ = [ZuulOperator]
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import base64
|
|
||||||
|
|
||||||
import pykube
|
import pykube
|
||||||
|
|
||||||
@ -31,7 +30,7 @@ class CertManager:
|
|||||||
kind = objects.get_object('apiextensions.k8s.io/v1beta1',
|
kind = objects.get_object('apiextensions.k8s.io/v1beta1',
|
||||||
'CustomResourceDefinition')
|
'CustomResourceDefinition')
|
||||||
try:
|
try:
|
||||||
obj = kind.objects(self.api).\
|
kind.objects(self.api).\
|
||||||
get(name="certificaterequests.cert-manager.io")
|
get(name="certificaterequests.cert-manager.io")
|
||||||
except pykube.exceptions.ObjectDoesNotExist:
|
except pykube.exceptions.ObjectDoesNotExist:
|
||||||
return False
|
return False
|
||||||
@ -57,5 +56,5 @@ class CertManager:
|
|||||||
self.log.info("Cert-manager is running")
|
self.log.info("Cert-manager is running")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
self.log.info(f"Waiting for Cert-manager")
|
self.log.info("Waiting for Cert-manager")
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
|
# We deliberately import * to create a superset of objects.
|
||||||
from pykube.objects import *
|
from pykube.objects import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,15 +14,11 @@
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import collections
|
import collections
|
||||||
import yaml
|
|
||||||
|
|
||||||
import kopf
|
import kopf
|
||||||
import pykube
|
import pykube
|
||||||
import kubernetes
|
|
||||||
|
|
||||||
from . import objects
|
from . import objects
|
||||||
from . import utils
|
|
||||||
from . import certmanager
|
|
||||||
from .zuul import Zuul
|
from .zuul import Zuul
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +95,8 @@ def create_fn(spec, name, namespace, logger, **kwargs):
|
|||||||
zuul.write_zuul_conf()
|
zuul.write_zuul_conf()
|
||||||
zuul.create_zuul()
|
zuul.create_zuul()
|
||||||
|
|
||||||
#return {'message': 'hello world'} # will be the new status
|
# We can set a status with something like:
|
||||||
|
# return {'message': 'hello world'}
|
||||||
|
|
||||||
|
|
||||||
@kopf.on.update('zuuls', backoff=10)
|
@kopf.on.update('zuuls', backoff=10)
|
||||||
|
@ -31,7 +31,7 @@ class PXC:
|
|||||||
kind = objects.get_object('apiextensions.k8s.io/v1beta1',
|
kind = objects.get_object('apiextensions.k8s.io/v1beta1',
|
||||||
'CustomResourceDefinition')
|
'CustomResourceDefinition')
|
||||||
try:
|
try:
|
||||||
obj = kind.objects(self.api).\
|
kind.objects(self.api).\
|
||||||
get(name="perconaxtradbclusters.pxc.percona.com")
|
get(name="perconaxtradbclusters.pxc.percona.com")
|
||||||
except pykube.exceptions.ObjectDoesNotExist:
|
except pykube.exceptions.ObjectDoesNotExist:
|
||||||
return False
|
return False
|
||||||
@ -62,7 +62,8 @@ class PXC:
|
|||||||
namespace=self.namespace,
|
namespace=self.namespace,
|
||||||
selector={'app.kubernetes.io/instance': 'db-cluster',
|
selector={'app.kubernetes.io/instance': 'db-cluster',
|
||||||
'app.kubernetes.io/component': 'pxc',
|
'app.kubernetes.io/component': 'pxc',
|
||||||
'app.kubernetes.io/name': 'percona-xtradb-cluster'}):
|
'app.kubernetes.io/name':
|
||||||
|
'percona-xtradb-cluster'}):
|
||||||
if obj.obj['status']['phase'] == 'Running':
|
if obj.obj['status']['phase'] == 'Running':
|
||||||
count += 1
|
count += 1
|
||||||
if count == 3:
|
if count == 3:
|
||||||
|
@ -22,7 +22,6 @@ import jinja2
|
|||||||
import kubernetes
|
import kubernetes
|
||||||
from kubernetes.client import Configuration
|
from kubernetes.client import Configuration
|
||||||
from kubernetes.client.api import core_v1_api
|
from kubernetes.client.api import core_v1_api
|
||||||
from kubernetes.client.rest import ApiException
|
|
||||||
from kubernetes.stream import stream
|
from kubernetes.stream import stream
|
||||||
|
|
||||||
from . import objects
|
from . import objects
|
||||||
|
@ -13,9 +13,6 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import base64
|
|
||||||
|
|
||||||
import pykube
|
|
||||||
|
|
||||||
from . import objects
|
from . import objects
|
||||||
from . import utils
|
from . import utils
|
||||||
|
@ -267,7 +267,8 @@ class Zuul:
|
|||||||
|
|
||||||
# Shard the config so we can create a deployment + secret for
|
# Shard the config so we can create a deployment + secret for
|
||||||
# each provider.
|
# each provider.
|
||||||
nodepool_yaml = yaml.safe_load(base64.b64decode(obj.obj['data']['nodepool.yaml']))
|
nodepool_yaml = yaml.safe_load(base64.b64decode(
|
||||||
|
obj.obj['data']['nodepool.yaml']))
|
||||||
|
|
||||||
nodepool_yaml['zookeeper-servers'] = self.parse_zk_string(
|
nodepool_yaml['zookeeper-servers'] = self.parse_zk_string(
|
||||||
self.spec['zookeeper']['hosts'])
|
self.spec['zookeeper']['hosts'])
|
||||||
@ -321,7 +322,8 @@ class Zuul:
|
|||||||
for unused_provider in old_providers - new_providers:
|
for unused_provider in old_providers - new_providers:
|
||||||
self.log.info("Deleting unused provider %s", unused_provider)
|
self.log.info("Deleting unused provider %s", unused_provider)
|
||||||
|
|
||||||
deployment_name = f"nodepool-launcher-{self.name}-{unused_provider}"
|
deployment_name = "nodepool-launcher-"\
|
||||||
|
f"{self.name}-{unused_provider}"
|
||||||
secret_name = f"nodepool-config-{self.name}-{unused_provider}"
|
secret_name = f"nodepool-config-{self.name}-{unused_provider}"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -339,7 +341,8 @@ class Zuul:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def write_registry_conf(self):
|
def write_registry_conf(self):
|
||||||
config_secret = self.spec['registry'].get('config', {}).get('secretName')
|
config_secret = self.spec['registry'].get('config', {}).\
|
||||||
|
get('secretName')
|
||||||
if not config_secret:
|
if not config_secret:
|
||||||
raise kopf.PermanentError("No registry config secret found")
|
raise kopf.PermanentError("No registry config secret found")
|
||||||
|
|
||||||
@ -435,7 +438,8 @@ class Zuul:
|
|||||||
str(timeout),
|
str(timeout),
|
||||||
'/bin/sh',
|
'/bin/sh',
|
||||||
'-c',
|
'-c',
|
||||||
f'while !( echo -n "{expected}" | sha256sum -c - ); do sleep {delay}; done'
|
f'while !( echo -n "{expected}" | sha256sum -c - );'
|
||||||
|
f'do sleep {delay}; done'
|
||||||
]
|
]
|
||||||
resp = utils.pod_exec(self.namespace, obj.name, command)
|
resp = utils.pod_exec(self.namespace, obj.name, command)
|
||||||
self.log.debug("Response: %s", resp)
|
self.log.debug("Response: %s", resp)
|
||||||
|
Loading…
Reference in New Issue
Block a user