[Kimchi-devel] [PATCH 0/6 V4] Host's repositories management support

Aline Manera alinefm at linux.vnet.ibm.com
Tue Feb 18 13:40:55 UTC 2014


The tests are failing:

.E...............E
======================================================================
ERROR: test_development_env (test_exception.ExceptionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_exception.py", line 89, in 
test_development_env
     setup_server()
   File "/home/alinefm/kimchi/tests/test_exception.py", line 43, in 
setup_server
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_development_env (test_exception.ExceptionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_exception.py", line 52, in tearDown
     test_server.stop()
AttributeError: 'NoneType' object has no attribute 'stop'

======================================================================
ERROR: test_production_env (test_exception.ExceptionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_exception.py", line 59, in 
test_production_env
     setup_server('production')
   File "/home/alinefm/kimchi/tests/test_exception.py", line 43, in 
setup_server
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_production_env (test_exception.ExceptionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_exception.py", line 52, in tearDown
     test_server.stop()
AttributeError: 'NoneType' object has no attribute 'stop'

======================================================================
ERROR: test_collection (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_packages_update (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_resource (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_screenshot_refresh (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_vm_info (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_vm_list_sorted (test_mockmodel.MockModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_mockmodel.py", line 45, in setUp
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: setUpModule (test_rest)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_rest.py", line 55, in setUpModule
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: test_repository_create (test_model.ModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_model.py", line 888, in 
test_repository_create
     inst.repositories_create(repo)
   File "/home/alinefm/kimchi/src/kimchi/model/host.py", line 329, in create
     raise InvalidOperation("KCHREPOS0006E", {'repo_id': repo_id})
InvalidOperation: KCHREPOS0006E: Repository fedora-fake already exists.

======================================================================
ERROR: test_repository_disable_enable (test_model.ModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_model.py", line 955, in 
test_repository_disable_enable
     inst.repositories_create(repo)
   File "/home/alinefm/kimchi/src/kimchi/model/host.py", line 329, in create
     raise InvalidOperation("KCHREPOS0006E", {'repo_id': repo_id})
InvalidOperation: KCHREPOS0006E: Repository fedora-fake already exists.

======================================================================
ERROR: test_repository_update (test_model.ModelTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_model.py", line 925, in 
test_repository_update
     inst.repositories_create(repo)
   File "/home/alinefm/kimchi/src/kimchi/model/host.py", line 329, in create
     raise InvalidOperation("KCHREPOS0006E", {'repo_id': repo_id})
InvalidOperation: KCHREPOS0006E: Repository fedora-fake already exists.

======================================================================
ERROR: test_server_start (test_server.ServerTests)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_server.py", line 40, in 
test_server_start
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

======================================================================
ERROR: setUpModule (test_plugin)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/alinefm/kimchi/tests/test_plugin.py", line 45, in setUpModule
     model = kimchi.mockmodel.MockModel('/tmp/obj-store-test')
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 62, in __init__
     self.reset()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 82, in reset
     self.host_repositories = MockRepositories()
   File "/home/alinefm/kimchi/src/kimchi/mockmodel.py", line 1083, in 
__init__
     "repo_name": "kimchi_repo_1392167832"}}
TypeError: unhashable type: 'dict'

----------------------------------------------------------------------
Ran 65 tests in 138.520s

FAILED (errors=16)
make[3]: *** [check-local] Error 1
make[3]: Leaving directory `/home/alinefm/kimchi/tests'
make[2]: *** [check-am] Error 2
make[2]: Leaving directory `/home/alinefm/kimchi/tests'
make[1]: *** [check] Error 2
make[1]: Leaving directory `/home/alinefm/kimchi/tests'
make: *** [check-recursive] Error 1
src/kimchi/mockmodel.py:844: trailing whitespace.
+        except:


On 02/17/2014 03:04 PM, Paulo Vital wrote:
> V3 -> V4:
>   * PEP8 compatibility
>   * Fixed bugs regarding exception error system code in mockmodel.py, model/host.py and repository.py
>   * Removed the "enabled" parameter from update_params' list.
>
> V2 -> V3:
>   * PEP8 compatibility
>   * Improved mockmodel.py and model/host.py
>   * Updated API.json and backend files to use new exception error system code
>
> V1 -> V2:
>   * Removed the enable/disable from docs/API.md and src/kimchi/API.json
>   * fixed wrong URI on test_rest.py
>   * PEP8 compatibility
>   * Updated repositories.py to make consistent with docs/API.md
>   * Raised correct exceptions
>   * Changed model/host.py and mockmodel.py to generate repo_id if not provided
>   * Changed mockmodel.py to declare MockRepositories class
>
> V1:
>
> This patch set provides support to host's repositories management operations.
> At this point, an agnostic class is providing support to backend and
> REST API operations. In addition, YUM (for RHEL, Fedora, SLES and OpenSuse)
> and APT (for Debian and Ubuntu) specific classes are provided to support the
> operation os each software update system.
>
> To test the backend execute the following commands:
> $ cd tests
> $ sudo ./run_tests.sh test_model.ModelTests.test_repository_create
> $ sudo ./run_tests.sh test_model.ModelTests.test_repository_update
> $ sudo ./run_tests.sh test_model.ModelTests.test_repository_disable_enable
>
> To test the REST API, execute the following commands (all them are agnostic of the
> host's distro):
>
> 1) Get list of all repositories enabled in the host:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/ -X GET
>
> 2) Create a new repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/ -X POST -d'
> {
>      "repo_id": "fedora-fake",
>      "baseurl": "http://www.fedora.org",
>      "gpgkey": "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-fake-19"
> }
> '
>
> 3) Get information from a specific repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/fedora-fake
>
> 4) Update a specific repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/fedora-fake -X PUT -d'
> {
>      "repo_id":"fedora-fake",
>      "repo_name":"Fedora 19 FAKEs",
>      "baseurl": "http://www.fedora.org/downloads"
> }
> '
>
> 5) Disable a specific repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/fedora-fake/disable -X POST -d ''
>
> 6) Enable a specific repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/fedora-fake/enable -X POST -d ''
>
> 7) Delete a specific repository:
> $ curl -u <USER> -H 'Content-type: application/json' -H 'Accept: application/json' http://localhost:8000/host/repositories/fedora-fake -X DELETE
>
> Paulo Vital (6):
>    Host's repositories management: Update API.md
>    Host's repositories management: Update REST API
>    Host's repositories management: Update backend.
>    Host's repositories management: Update Makefile
>    Host's repositories management: Update test-cases.
>    Host's repositories management: Update error exception messages.
>
>   Makefile.am                |   1 +
>   docs/API.md                |  77 ++++++
>   src/kimchi/API.json        |  76 ++++++
>   src/kimchi/Makefile.am     |   1 +
>   src/kimchi/control/host.py |  21 ++
>   src/kimchi/i18n.py         |  19 ++
>   src/kimchi/mockmodel.py    | 133 ++++++++++
>   src/kimchi/model/host.py   |  54 ++++-
>   src/kimchi/repositories.py | 586 +++++++++++++++++++++++++++++++++++++++++++++
>   tests/test_model.py        | 100 ++++++++
>   tests/test_rest.py         |  33 +++
>   11 files changed, 1100 insertions(+), 1 deletion(-)
>   create mode 100644 src/kimchi/repositories.py
>




More information about the Kimchi-devel mailing list