diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..8b75562 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,523 @@ +version: 2.1 + +checkout: + post: + - > + if [ -n "$CI_PULL_REQUEST" ]; then + PR_ID=${CI_PULL_REQUEST##*/} + git fetch origin +refs/pull/$PR_ID/merge: + git checkout -qf FETCH_HEAD + fi + +executors: + + py27: + docker: + - image: circleci/python:2.7 + + py36: + docker: + - image: circleci/python:3.6 + + wagon_generator: + machine: + image: ubuntu-1604:201903-01 + + cloudify-machine: + machine: + image: ubuntu-1604:201903-01 + + cloudify-machine-510: + machine: + image: ubuntu-1604:201903-01 + +commands: + + run_unittest_py27: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: install tox + command: pip install --user tox + - run: + name: Run Flake8 + command: /home/circleci/.local/bin/tox -e flake8 + - run: + name: run unitests with py27 + command: /home/circleci/.local/bin/tox -e nosetest + + run_unittest_py36: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: install tox + command: pip install --user tox + - run: + name: Run Flake8 + command: /home/circleci/.local/bin/tox -e flake8 + - run: + name: run unitests with py36 + command: /home/circleci/.local/bin/tox -e nosetest + + check_py3_compat: + steps: + - run: + name: install futurize + command: pip install future --user + - run: + name: find python3-incompatible code + command: | + FUTURIZE="futurize ." + while read line; do + [[ "$line" =~ ^#.* ]] && continue + FUTURIZE="${FUTURIZE} ${line}" + done<.circleci/py3fixers + echo "Running: $FUTURIZE" + $FUTURIZE>futurize_diffs + - run: + name: check that there is no python3-incompatible code + command: | + if [[ -s futurize_diffs ]]; then + echo "Python-3-incompatible code found" + cat futurize_diffs + exit 1 + fi + + validate_documentation: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: Download pip + command: curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" + - run: + name: Install pip + command: sudo python get-pip.py + - run: + name: Install virtualenv + command: pip install --user virtualenv + - run: + name: Init virtualenv + command: virtualenv env + - run: + name: install tox + command: pip install --user pygithub pyyaml==3.10 + - run: + name: upgrade setuptools + command: pip install --upgrade setuptools + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - attach_workspace: + at: workspace + - run: python .circleci/validate_docs.py + + validate_version: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: Download pip + command: curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" + - run: + name: Install pip + command: sudo python get-pip.py + - run: + name: Install virtualenv + command: pip install --user virtualenv + - run: + name: Init virtualenv + command: virtualenv env + - run: + name: install tox + command: pip install --user pygithub pyyaml==3.10 + - run: + name: upgrade setuptools + command: pip install --upgrade setuptools + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - attach_workspace: + at: workspace + - run: python .circleci/validate_version.py + + generate_py27py36_wagon: + steps: + - run: + name: Create Workspace Build directory. + command: mkdir -p workspace/build + - run: + name: Build py27py36 Wagon + command: | + git clone https://github.com/cloudify-cosmo/cloudify-wagon-build-containers.git + docker build -t cloudify-centos-7-wagon-builder cloudify-wagon-build-containers/centos_7_py2py3 + docker run -v ~/project/:/packaging cloudify-centos-7-wagon-builder + - run: + name: copy wagon to workspace + command: cp *.wgn workspace/build/ + - persist_to_workspace: + root: workspace + paths: + - build/* + + generate_rhel_py27py36_wagon: + steps: + - run: + name: Create Workspace Build directory. + command: mkdir -p workspace/build + - run: + name: Build RHEL py27py36 Wagon + command: | + git clone https://github.com/cloudify-cosmo/cloudify-wagon-build-containers.git + docker build -t cloudify-redhat-7-wagon-builder cloudify-wagon-build-containers/redhat_7_py2py3 --build-arg USERNAME="$USERNAME" --build-arg PASSWORD="$PASSWORD" + docker run -v ~/project/:/packaging cloudify-redhat-7-wagon-builder + - run: + name: copy wagon to workspace + command: cp *.wgn workspace/build/ + - persist_to_workspace: + root: workspace + paths: + - build/* + + build_archive: + steps: + - attach_workspace: + at: workspace + - run: + name: Create Workspace Build directory. + command: mkdir -p workspace/build + - run: + name: Build Bundle + command: | + git clone https://github.com/cloudify-incubator/cloudify-ecosystem-test.git + pip install -e cloudify-ecosystem-test + python -c 'from ecosystem_cicd_tools import packaging; packaging.build_plugins_bundle_with_workspace()' + - persist_to_workspace: + root: workspace + paths: + - build/* + + release_plugin: + steps: + - attach_workspace: + at: workspace + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: Download pip + command: curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" + - run: + name: Install pip + command: sudo python get-pip.py + - run: + name: Install virtualenv + command: pip install --user virtualenv + - run: + name: Init virtualenv + command: virtualenv env + - run: + name: install tox + command: pip install --user pygithub pyyaml==3.10 + - run: + name: upgrade setuptools + command: pip install --upgrade setuptools + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - attach_workspace: + at: workspace + - run: python .circleci/package_release.py + + run_integration_tests_505: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule update --init --recursive + - attach_workspace: + at: workspace + - run: + name: update pip + command: pip install -U pip + - run: + name: install cloudify + command: | + pip install -r test-requirements.txt + - run: + name: download manager docker image + command: wget http://repository.cloudifysource.org/cloudify/5.0.5/ga-release/cloudify-docker-manager-5.0.5.tar + - run: + name: load docker image + command: docker load -i cloudify-docker-manager-5.0.5.tar + - run: + name: retain space by dumping the tar + command: rm cloudify-docker-manager-5.0.5.tar + - run: + name: show images + command: docker images + - run: + name: start docker container + command: docker run --name cfy_manager -d --restart unless-stopped -v /sys/fs/cgroup:/sys/fs/cgroup:ro --tmpfs /run --tmpfs /run/lock --security-opt seccomp:unconfined --cap-add SYS_ADMIN --network host cloudifyplatform/premium-cloudify-manager-aio + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - run: pytest -s .circleci/test_examples.py + + run_integration_tests_510: + steps: + - run: + name: "Pull Submodules" + command: | + git submodule update --init --recursive --remote + - attach_workspace: + at: workspace + - run: + name: update pip + command: pip install -U pip + - run: + name: install cloudify + command: | + pip install -r test-requirements.txt + - run: + name: download manager docker image + command: wget http://repository.cloudifysource.org/cloudify/5.1.0/.dev1-release/cloudify-manager-aio-docker-5.1.0.dev1.tar + - run: + name: load docker image + command: docker load -i cloudify-manager-aio-docker-5.1.0.dev1.tar + - run: + name: retain space by dumping the tar + command: rm cloudify-manager-aio-docker-5.1.0.dev1.tar + - run: + name: show images + command: docker images + - run: + name: start docker container + command: docker run --name cfy_manager -d --restart unless-stopped -v /sys/fs/cgroup:/sys/fs/cgroup:ro --device /dev/net/tun --tmpfs /run --tmpfs /run/lock --security-opt seccomp:unconfined --cap-add SYS_ADMIN --network host cloudify-manager-aio:latest + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - run: pytest -s .circleci/test_examples.py + + merge_docs: + steps: + - attach_workspace: + at: workspace + - run: + name: "Pull Submodules" + command: | + git submodule init + git submodule update --remote --recursive + - run: + name: Download pip + command: curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" + - run: + name: Install pip + command: sudo python get-pip.py + - run: + name: Install virtualenv + command: pip install --user virtualenv + - run: + name: Init virtualenv + command: virtualenv env + - run: + name: install tox + command: pip install --user pygithub pyyaml==3.10 + - run: + name: upgrade setuptools + command: pip install --upgrade setuptools + - run: + name: install local project + command: pip install https://github.com/cloudify-incubator/cloudify-ecosystem-test/archive/latest.zip + - attach_workspace: + at: workspace + - run: python .circleci/merge_docs.py + +jobs: + + unittests_py27: + executor: py27 + steps: + - checkout + - run_unittest_py27 + + unittests_py36: + executor: py36 + steps: + - checkout + - run_unittest_py36 + + py3_compat: + executor: py27 + steps: + - checkout + - check_py3_compat + + validate_version: + executor: py27 + steps: + - checkout + - validate_version + + validate_documentation: + executor: py27 + steps: + - checkout + - validate_documentation + + wagon: + executor: wagon_generator + steps: + - checkout + - generate_py27py36_wagon + + rhel_wagon: + executor: wagon_generator + steps: + - checkout + - generate_rhel_py27py36_wagon + + build-bundle: + executor: wagon_generator + steps: + - checkout + - build_archive + + integration_tests_505: + executor: cloudify-machine + environment: + CLOUDIFY_SSL_TRUST_ALL: true + IAAS: vsphere + steps: + - checkout + - run_integration_tests_505 + + integration_tests_510: + executor: cloudify-machine-510 + environment: + CLOUDIFY_SSL_TRUST_ALL: true + IAAS: vsphere + steps: + - checkout + - run_integration_tests_510 + + release: + executor: py27 + steps: + - checkout + - release_plugin + + merge_docs: + executor: py27 + steps: + - checkout + - merge_docs + +workflows: + version: 2.1 + tests: + jobs: + - py3_compat + - unittests_py27 + - unittests_py36 + - validate_version + - validate_documentation + - wagon: + filters: + branches: + only: /([0-9\.]*\-build|master|dev)/ + - rhel_wagon: + filters: + branches: + only: /([0-9\.]*\-build|master|dev)/ + requires: + - py3_compat + - build-bundle: + filters: + branches: + only: /master/ + requires: + - wagon + - rhel_wagon + - integration_tests_505: + requires: + - build-bundle + - unittests_py27 + filters: + branches: + only: /([0-9\.]*\-build|master|dev)/ + - integration_tests_510: + requires: + - build-bundle + - unittests_py27 + - unittests_py36 + filters: + branches: + only: /([0-9\.]*\-build|master|dev)/ + - release: + filters: + branches: + only: /master/ + requires: + - validate_version + - validate_documentation + - integration_tests_505 + - integration_tests_510 + - merge_docs: + filters: + branches: + only: /master/ + requires: + - release + - validate_documentation + nightly: + triggers: + - schedule: + cron: "0 1 * * *" + filters: + branches: + only: + - master + jobs: + - py3_compat + - unittests_py27 + - unittests_py36 + - validate_version + - wagon: + filters: + branches: + only: /([0-9\.]*\-build|master)/ + - rhel_wagon: + filters: + branches: + only: /([0-9\.]*\-build|master)/ + - integration_tests_505: + requires: + - wagon + - rhel_wagon + filters: + branches: + only: /([0-9\.]*\-build|master)/ + - integration_tests_510: + requires: + - wagon + - rhel_wagon + filters: + branches: + only: /([0-9\.]*\-build|master)/ diff --git a/.circleci/merge_docs.py b/.circleci/merge_docs.py new file mode 100644 index 0000000..2d748ac --- /dev/null +++ b/.circleci/merge_docs.py @@ -0,0 +1,4 @@ +from ecosystem_cicd_tools.github_stuff import merge_documentation_pulls + +if __name__ == '__main__': + merge_documentation_pulls() diff --git a/.circleci/package_release.py b/.circleci/package_release.py new file mode 100644 index 0000000..6df2b13 --- /dev/null +++ b/.circleci/package_release.py @@ -0,0 +1,13 @@ +from os import path, pardir +from ecosystem_cicd_tools.release import plugin_release_with_latest +from ecosystem_cicd_tools.validations import get_plugin_yaml_version + + +plugin_yaml = path.join( + path.abspath(path.join(path.dirname(__file__), pardir)), + 'plugin.yaml') + + +if __name__ == '__main__': + plugin_release_with_latest( + 'tosca-vcloud-plugin', get_plugin_yaml_version(plugin_yaml)) diff --git a/.circleci/py3fixers b/.circleci/py3fixers new file mode 100644 index 0000000..e7d124a --- /dev/null +++ b/.circleci/py3fixers @@ -0,0 +1,24 @@ +--stage1 +-f lib2to3.fixes.fix_getcwdu +-f lib2to3.fixes.fix_long +-f lib2to3.fixes.fix_nonzero +-f lib2to3.fixes.fix_input +-f lib2to3.fixes.fix_raw_input +-f lib2to3.fixes.fix_itertools +-f lib2to3.fixes.fix_itertools_imports +-f lib2to3.fixes.fix_exec +-f lib2to3.fixes.fix_operator +-f libfuturize.fixes.fix_execfile +-f libpasteurize.fixes.fix_newstyle +-f lib2to3.fixes.fix_filter +# fix_dict is not idempotent +# -f lib2to3.fixes.fix_dict +-f lib2to3.fixes.fix_map +-f lib2to3.fixes.fix_zip +-f lib2to3.fixes.fix_xrange +-f lib2to3.fixes.fix_basestring +-f libfuturize.fixes.fix_cmp +-f libfuturize.fixes.fix_division_safe +-f lib2to3.fixes.fix_metaclass +-f libfuturize.fixes.fix_unicode_keep_u + diff --git a/.circleci/test_examples.py b/.circleci/test_examples.py new file mode 100644 index 0000000..c7e2525 --- /dev/null +++ b/.circleci/test_examples.py @@ -0,0 +1,28 @@ +######## +# Copyright (c) 2014-2019 Cloudify Platform Ltd. All rights reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +import pytest + +blueprint_list = [] + + +@pytest.fixture(scope='function', params=blueprint_list) +def blueprint_examples(**_): + pass + + +def test_blueprints(blueprint_examples): + assert blueprint_examples is None diff --git a/.circleci/validate_docs.py b/.circleci/validate_docs.py new file mode 100644 index 0000000..0aea36b --- /dev/null +++ b/.circleci/validate_docs.py @@ -0,0 +1,4 @@ +from ecosystem_cicd_tools.validations import validate_documentation_pulls + +if __name__ == '__main__': + validate_documentation_pulls() diff --git a/.circleci/validate_version.py b/.circleci/validate_version.py new file mode 100644 index 0000000..988e75c --- /dev/null +++ b/.circleci/validate_version.py @@ -0,0 +1,12 @@ +from os import path, pardir +from ecosystem_cicd_tools.validations import validate_plugin_version + +package_dir = path.join( + path.abspath( + path.join(path.dirname(__file__), pardir) + ) +) + + +if __name__ == '__main__': + validate_plugin_version(package_dir) diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1117cce..0000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: python -sudo: false -python: - - "2.7" -env: - - TOX_ENV=pep8 - - TOX_ENV=py27-unittests -install: - - pip install tox -script: - - tox -e $TOX_ENV -notifications: - flowdock: 1f4ec6febcf1ac9b35ae6c1f0049471f diff --git a/plugin.yaml b/plugin.yaml index 7eeaed7..bfe0fcc 100644 --- a/plugin.yaml +++ b/plugin.yaml @@ -8,7 +8,7 @@ plugins: data_types: - cloudify.datatypes.vlcoud.config: + cloudify.datatypes.vcloud.config: properties: username: type: string @@ -82,7 +82,7 @@ data_types: Only applicable for a private cloud service with self-signed certificates. Defaults to True - cloudify.datatypes.vlcoud.server_key: + cloudify.datatypes.vcloud.server_key: properties: key: type: string @@ -95,7 +95,7 @@ data_types: description: > The user name. - cloudify.datatypes.vlcoud.server_customization: + cloudify.datatypes.vcloud.server_customization: properties: public_keys: type: string @@ -128,7 +128,7 @@ data_types: description: > The script executor. The default is /bin/bash. - cloudify.datatypes.vlcoud.server_hardware: + cloudify.datatypes.vcloud.server_hardware: properties: cpu: type: integer @@ -141,7 +141,7 @@ data_types: description: > The VM memory size, in MB. - cloudify.datatypes.vlcoud.server: + cloudify.datatypes.vcloud.server: properties: name: type: string @@ -159,17 +159,17 @@ data_types: description: > The vApp templates catalog. guest_customization: - type: cloudify.datatypes.vlcoud.server_customization + type: cloudify.datatypes.vcloud.server_customization required: false description: > The guest customization section hardware: - type: cloudify.datatypes.vlcoud.server_hardware + type: cloudify.datatypes.vcloud.server_hardware required: false description: > The key-value hardware customization section, including: - cloudify.datatypes.vlcoud.network_dhcp: + cloudify.datatypes.vcloud.network_dhcp: properties: dhcp_range: type: string @@ -187,7 +187,7 @@ data_types: description: > The maximum lease, in seconds. - cloudify.datatypes.vlcoud.network: + cloudify.datatypes.vcloud.network: properties: edge_gateway: type: string @@ -224,11 +224,11 @@ data_types: description: > The DNS suffix. dhcp: - type: cloudify.datatypes.vlcoud.network_dhcp + type: cloudify.datatypes.vcloud.network_dhcp description: > The DHCP settings. - cloudify.datatypes.vlcoud.port: + cloudify.datatypes.vcloud.port: properties: network: type: string @@ -257,7 +257,7 @@ data_types: Specifies whether the interface is the primary interface (true or false). - cloudify.datatypes.vlcoud.floatingip: + cloudify.datatypes.vcloud.floatingip: properties: edge_gateway: type: string @@ -271,7 +271,7 @@ data_types: The public IP address. If not specified, the public IP is allocated from the pool of free public IPs. - cloudify.datatypes.vlcoud.nat: + cloudify.datatypes.vcloud.nat: properties: edge_gateway: type: string @@ -285,7 +285,7 @@ data_types: The public IP. If not specified, the public IP is allocated from the pool of free public IPs. - cloudify.datatypes.vlcoud.security_group: + cloudify.datatypes.vcloud.security_group: properties: edge_gateway: type: string @@ -293,7 +293,7 @@ data_types: description: > The vCloud gateway name. - cloudify.datatypes.vlcoud.volume: + cloudify.datatypes.vcloud.volume: properties: name: type: string @@ -306,7 +306,7 @@ data_types: description: > Volume size - cloudify.datatypes.vlcoud.private_key: + cloudify.datatypes.vcloud.private_key: properties: create_file: type: string @@ -314,7 +314,7 @@ data_types: description: > Whether to save the file. Use with auto_generate: true. - cloudify.datatypes.vlcoud.public_key: + cloudify.datatypes.vcloud.public_key: properties: key: type: string @@ -342,14 +342,14 @@ node_types: description: > Resource Id server: - type: cloudify.datatypes.vlcoud.server + type: cloudify.datatypes.vcloud.server management_network: type: string default: "" description: > The management network name. vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -376,7 +376,7 @@ node_types: derived_from: cloudify.nodes.Network properties: network: - type: cloudify.datatypes.vlcoud.network + type: cloudify.datatypes.vcloud.network use_external_resource: type: boolean default: false @@ -387,7 +387,7 @@ node_types: description: > Resource Id vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -405,9 +405,9 @@ node_types: derived_from: cloudify.nodes.Port properties: port: - type: cloudify.datatypes.vlcoud.port + type: cloudify.datatypes.vcloud.port vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -423,9 +423,9 @@ node_types: derived_from: cloudify.nodes.VirtualIP properties: floatingip: - type: cloudify.datatypes.vlcoud.floatingip + type: cloudify.datatypes.vcloud.floatingip vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -443,7 +443,7 @@ node_types: description: > Use predefined resource nat: - type: cloudify.datatypes.vlcoud.nat + type: cloudify.datatypes.vcloud.nat description: > The key-value NAT configuration. rules: @@ -457,7 +457,7 @@ node_types: DNAT. type - The list of NAT types. Can be SNAT, DNAT or both. vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -474,7 +474,7 @@ node_types: derived_from: cloudify.nodes.SecurityGroup properties: security_group: - type: cloudify.datatypes.vlcoud.security_group + type: cloudify.datatypes.vcloud.security_group description: > The key-value SecurityGroup configuration rules: @@ -494,7 +494,7 @@ node_types: log_traffic - Used to capture traffic. true or false. description - The rule description. vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -514,11 +514,11 @@ node_types: description: > Use to auto-generate the key. private_key: - type: cloudify.datatypes.vlcoud.private_key + type: cloudify.datatypes.vcloud.private_key description: > The key-value private key configuration public_key: - type: cloudify.datatypes.vlcoud.public_key + type: cloudify.datatypes.vcloud.public_key description: > The key-value public key configuration interfaces: @@ -543,7 +543,7 @@ node_types: description: > Device name volume: - type: cloudify.datatypes.vlcoud.volume + type: cloudify.datatypes.vcloud.volume description: > The key-value volume configuration default: {} @@ -557,7 +557,7 @@ node_types: description: > Resource Id vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: @@ -589,7 +589,7 @@ node_types: description: > Resource Id vcloud_config: - type: cloudify.datatypes.vlcoud.config + type: cloudify.datatypes.vcloud.config interfaces: cloudify.interfaces.lifecycle: create: diff --git a/setup.py b/setup.py index 537b5b2..ae6613b 100644 --- a/setup.py +++ b/setup.py @@ -32,6 +32,6 @@ 'pycrypto==2.6.1', # used in volume creation 'paramiko>=1.18.3', - 'fabric>=1.13.1,<2.0', # 2+ branch has API changes + 'fabric>=1.13.1,<2.0', # 2+ branch has API changes ] ) diff --git a/tox.ini b/tox.ini index 69fd006..a5d9a67 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py27-unittests, pep8, validate +envlist = nosetest, flake8 minversion = 1.6 skipsdist = True @@ -9,10 +9,10 @@ envdir = .tox/devenv deps = -rtest-requirements.txt -rdev-requirements.txt -[testenv:py27-unittests] +[testenv:nosetest] commands = nosetests tests/unittests --cover-html --with-coverage --cover-package=vcloud_plugin_common --cover-package=vcloud_network_plugin --cover-package=vcloud_server_plugin --cover-package=vcloud_storage_plugin -[testenv:pep8] +[testenv:flake8] commands= flake8 tests flake8 vcloud_network_plugin @@ -27,10 +27,3 @@ commands= ignore = exclude=.venv,.tox,dist,*egg,etc,build filename=*.py - -[testenv:validate] -deps = - cloudify==4.5 - {[testenv]deps} -commands = - cfy blueprint validate examples/blueprint.yaml