Giter Club home page Giter Club logo

dva's People

Contributors

alexxa avatar dparalen avatar ipanova avatar liangxiao1 avatar pbartiko avatar skullman avatar vex21 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dva's Issues

update of testcase_32_ephemeral

We'll have to update this test because it seems that Amazon started to pre-format ephemeral devices (now called Instance Store devices) to ext3, while the test in question expects the block device to be empty.

Before the test is adjusted, we'll have to explore whether this change in Instance Store devices is limited to certain regions, or possibly RHEL versions, or whether it is system-wide.

Summary At The End Of Termination Run

It would by great to have list of instances that WERE NOT terminated during termination run - as a summary output at the end of run. User can then scroll up to check what happened. Something like:

dva -c ~/.ssh/dva.yaml terminate -i /tmp/to_terminate.yaml
 i-03f770ae in a region eu-west-1 will be terminated.
The instance i-03f770ae in eu-west-1 region may not be terminated. Modify its 'disableApiTermination' instance attribute and try again.
i-b04db61d in a region eu-west-1 will be terminated.
i-b04db61d eu-west-1 was terminated
i-7b4cb7d6 in a region eu-west-1 will be terminated.
i-7b4cb7d6 eu-west-1 was terminated

Summary of instances that WERE NOT terminated:
i-03f770ae

Or in case everything was fine:

dva -c ~/.ssh/dva.yaml terminate -i /tmp/to_terminate.yaml

i-b04db61d in a region eu-west-1 will be terminated.
i-b04db61d eu-west-1 was terminated
i-7b4cb7d6 in a region eu-west-1 will be terminated.
i-7b4cb7d6 eu-west-1 was terminated

All instances WERE terminated - congratulations, Scrooge.

Error during instance creation

Investigate why the error below happens time to time

ERROR:dva.work.serial_process:unhandled exception: <class 'dva.cloud.base.UnknownCloudException'>(Error during instance creation: timeout in pending state)
ERROR:paramiko.transport:Socket exception: Connection reset by peer (104)

dva terminate doesn't terminate an instance

the terminate function doesn't terminate any instance because of an invalid ostmeam variable value on line 42 of the file dva/work/terminate.py.
Actually, the except statement prevents the error from being shown.
When changed to except None: the error manifests itself and the function finishes without terminating:

[mkovacik@zrnko globe]$ dva -c ~/.pem/validation-staging.yaml terminate -i curl-result.yaml 
There will be 3 termination calls
Traceback (most recent call last):
  File "/usr/bin/dva", line 5, in <module>
    pkg_resources.run_script('dva==0.6', 'dva')
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 483, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 1348, in run_script
    exec(script_code, namespace, namespace)
  File "/usr/lib/python2.7/site-packages/dva-0.6-py2.7.egg/EGG-INFO/scripts/dva", line 146, in <module>

  File "build/bdist.linux-x86_64/egg/aaargh/app.py", line 176, in run
  File "/usr/lib/python2.7/site-packages/dva-0.6-py2.7.egg/EGG-INFO/scripts/dva", line 112, in terminate

  File "build/bdist.linux-x86_64/egg/dva/work/terminate.py", line 42, in main
NameError: global name 'ostmeam' is not defined
[mkovacik@zrnko globe]$

implement a release-engineering bus listener

RH release engineering adopts a process similar to Fedmsg. Thus we need to implement an event listener for image-built announcement messages. The listener should trigger the validation command for incoming events and post result messages back on the bus. The format of the message is still under discussion. Also Fedora Cloud Community might want to adopt our test harness in case the listener supports the Fedimg messaging as well.

'dva summary' for skipped hvm amis instance types shows as failure

When you run 'dva summary' for hvm amis it shows instance type failure creation instead of 'skipped instance type creation as it is not supported in this region'. this could be a bit misleading:
dva summary -i res65.txt
AMI: ami-xxxxxxxxx
AMI: ami-zzzzzzzzz
!! Failed stage create_instance (cc1.4xlarge)
!! Failed stage create_instance (cg1.4xlarge)
AMI: ami-yyyyyyyyy
!! Failed stage create_instance (cc2.8xlarge)
!! Failed stage create_instance (cr1.8xlarge)
!! Failed stage create_instance (hi1.4xlarge)
!! Failed stage create_instance (cc1.4xlarge)
!! Failed stage create_instance (cg1.4xlarge)

start the wiki

Start with pages describing how the validation input looks like and how to validate single OS release.

update README.md

the docs need enhancing:

  • what the tool is/does
  • sample data-/hwp-file
  • sample execution steps

Check the number of tests executed for product version

Execution of many tests is limited only to a certain product and version, this is taken care of by an attribute called "applicable" which is defined in every test case object.

The whole test suite should remain the same between two minor versions and if there is a change of number of tests executed, it's something that needs to be reviewed. Test cases are often added for a newer minor version, but the number definitely shouldn't get lower, unless there is a very good reason behind it.

It happened to us recently that because of a wrong "applicable" attribute definition, a test case ceased to be executed and we only noticed that later.

Deliverables:

  1. gather number of test cases that are executed for each product and version, and save this information somewhere in the data directory.
  2. create a mechanism that would check the expected number of test cases for the given product/version that is being validated, and provide a warning if the expected number didn't match the number of tests actually executed.

For every new version, a review will have to be made to make sure all the applicable test cases are really executed and the data file will need to be updated.

convert dva to python3

Otherwise there are python and gevent libraries errors, which require some workaround to work on newer versions of Fedora.

Implement test result white/black lists

For purpose of a test case error it would be nice to have the option to waive it, esp. in the bugzilla cmd, while still being able to report other tests results.

problem with testcase_33_userdata

Some AMIs fail the testcase_33_userdata, but when the same steps are followed manually, the AMI and userdata actually do work. We'll need to find out why that happens, unfortunately, this test fails in a rather unpredictable manner. Maybe the test takes too long under some circumstances and the operation doesn't finish before the reboot (just a wild guess).

One AMI that failed userdata test regularly was ami-5346943d in ap-northeast-2, so that would be a good place to start the investigation with.

mind the yumlock

In both the userdata testcase and content testcases an already running yum command may result in test case failure. Need to implement yum retries in this case.

instances reboot when validating single test case

... can be reproduced as:

    echo "{ami:  ami-1234, ...}" | dva -l debug validate -t testcase_01_bash_history

The test-stages are separated by reboots. But if only one test stage is required (no tests in other stages) the reboot is not necessary and makes the test run longer

enhance scaling w/r input data size

At the moment, performance of dva w/r data input size is limited by it's design. dva utilizes gevent pools of a single process to handle IO events. This approach is limited by both the number of file-descriptors a process may use and by not utilizing multiple processors/cores of a system to scale. Given Python's threading limitations, utilizing multiprocessing seems the way to take. Possibly, one could distribute the data load by mapping it to a worker-process-pool.

avoid duplication in data/packages files

RHEL releases share the same packages. ATM, there are lots of duplication in data/packages files. Maybe there is a way to avoid it and, for example, have a nested/included structure. Storing it here, like an idea for the future investigation.

Implement instantiation skip

For debugging purposes --- such as debugging a test case against a manually fine-tuned node --- implement instantiation stage skipping.
Actually, there is already one skip in place: --keepalive which avoids terminating instances.

dva terminate: implement the -n switch

For safety reasons, please consider implementing a -n/--no-action switch that would prevent dva terminate from actually terminating the instances, instead, just make it display what would have happened.

RFE - catch exceptions on nonexisting files

dva -c /etc/validation.yaml validate -i ~/git_projects/dva/data.yaml -o ~/validace.yaml -G content --parallel-tests=10

Traceback (most recent call last):
File "/usr/bin/dva", line 5, in dva -c /etc/validation.yaml validate -i ~/git_projects/dva/data.yaml -o ~/validace.yaml -G content --parallel-tests=10
Traceback (most recent call last):
File "/usr/bin/dva", line 5, in
pkg_resources.run_script('dva==0.5', 'dva')
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 492, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 1357, in run_script
exec_(script_code, namespace, namespace)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 47, in exec_
exec("""exec code in globs, locs""")
File "", line 1, in
File "/usr/lib/python2.7/site-packages/dva-0.5-py2.7.egg/EGG-INFO/scripts/dva", line 133, in

File "build/bdist.linux-x86_64/egg/aaargh/app.py", line 176, in run
File "/usr/lib/python2.7/site-packages/dva-0.5-py2.7.egg/EGG-INFO/scripts/dva", line 79, in validate

File "build/bdist.linux-x86_64/egg/dva/work/data_parallel_main.py", line 38, in main
File "build/bdist.linux-x86_64/egg/dva/work/data.py", line 177, in load
File "build/bdist.linux-x86_64/egg/dva/work/data.py", line 102, in record_cloud_config
dva.work.data.ConfigError: config /etc/validation.yaml: [Errno 2] No such file or directory: '/etc/validation.yaml'
pkg_resources.run_script('dva==0.5', 'dva')
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 492, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 1357, in run_script
exec_(script_code, namespace, namespace)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 47, in exec_
exec("""exec code in globs, locs""")
File "", line 1, in
File "/usr/lib/python2.7/site-packages/dva-0.5-py2.7.egg/EGG-INFO/scripts/dva", line 133, in

File "build/bdist.linux-x86_64/egg/aaargh/app.py", line 176, in run
File "/usr/lib/python2.7/site-packages/dva-0.5-py2.7.egg/EGG-INFO/scripts/dva", line 79, in validate

File "build/bdist.linux-x86_64/egg/dva/work/data_parallel_main.py", line 38, in main
File "build/bdist.linux-x86_64/egg/dva/work/data.py", line 177, in load
File "build/bdist.linux-x86_64/egg/dva/work/data.py", line 102, in record_cloud_config
dva.work.data.ConfigError: config /etc/validation.yaml: [Errno 2] No such file or directory: '/etc/validation.yaml'

I believe it's ok to show only line: No such file or directory: '/etc/validation.yaml'

xunit restul translator

We'd like to move away from Bugzilla results rendering. Ideally, we'd keep the results in Jenkins.
This would require some jobs designing for Jenkins wr. multiple products and versions being validated.
However, it should be possible to implement a generic xunit translator, maybe based on the summary command.

dva terminate to gracefully catch and report EC2 errors

For example if you try to terminate instance that has api termination forbidden, you will get operation not permitted xml:

Exception EC2ResponseError: 400 Bad Request

OperationNotPermittedThe instance 'i-fed7dabc' may not be terminated. Modify its 'disableApiTermination' instance attribute and try again.0cb5104d

bugzilla command SSL warning

When I run the bugzilla command, I get this warning:

/usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_.py:133: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecurePlatformWarning

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.