#Introduction Report ##Glance
###Code architecture
(Glance registry is an optional layer organizing secure communication between the database abstraction layer and and the controller.)
###References to sqlalchemy
The references to sqlalchemy can be found in db.sqlalchemy.api. As done in Nova project, we should copy/paste the code and edit it accordingly.
Here is the methodology used by Jonathan Pastor with Nova:
- Copy/paste the
db.api.pyfile - Run the project
- Modify the code depending upon the errors raised
- CURL requests to Nova API endpoints
- Until all endpoints work with
ROME
As suggested by Jonathan, we should use the same approach to update the references to sqlalchemy in Glance.
###Update ROME to add new DB queries
As Nova is bigger than Glance, it is possible that every DB queries needed by Glance are already implemented in ROME. However we will need to test every endpoint and add the missing queries if needed.
##Test procedures
As we edit the database API, we run all the tests available in tests.unit.v2.test_registry_api.py.
All the tests in this file create fixtures and test all the features of the API by sending query using RPC protocol.
##Gantt
##Bilans périodiques ####Bilan du travail réalisé à la date du 17/11/2015
- Ce qu'on voulait faire
- virer les références à db.sqlalchemy dans les test unitaires
- créer une couche d'abstraction db.api implémentée soit pas sqlalchemy soit discovery
- dupliquer discovery et modifier les sessions
- Les problèmes/découvertes
- Jonathan a découvert qu'un fichier de configuration existe pour définir le back-end employé (dans
glance-api.conf) - erreurs de configuration dues à des packages ou fichiers de configurations manquants
- vraisemblable problème d'import dans ROME (oslo.db semble ne pas exister, ce serait plutot oslo_db) -> A faire remonter à Jonathan
- Jonathan a découvert qu'un fichier de configuration existe pour définir le back-end employé (dans
- Ce qu'on a/va réalisé
- fait : dupliquer discovery et modifier les sessions (utilisation des sessions de ROME)
- fork ROME et tester des modifications d'import
- réaliser notre propre classe de test unitaire
####Bilan du travail réalisé au 22/11/2015
-
Les problèmes/découvertes
- modifié le back-end dans glance-api.conf lorsque devstack était installé, ça a fonctionné. Avec glance installé seul, ça ne marche pas… pour les expériences, back-end changé en dur dans le code.
- problèmes de configuration
- nous arrivons à exécuter enfin les tests de la nouvelle implémentation. En revanche les tests échouent du à beaucoup d'erreurs que nous travaillons à débugger
-
Ce qu'on a/va réalisé
- modifié le back-end dans glance-api.conf lorsque devstack était installé, ça a fonctionné. Avec glance installé seul, ça ne marche pas… pour les expériences, back-end changé en dur dans le code.
- abandon de l'implementation d'une interface au profit de la solution ci-dessus.
- besoin d'un composant pour les communications RPC ? après réinstallation au propre de glance, problème a disparu : on conserve les tests unitaires pour tester et on abandonne l'idée de créér nos propres tests unitaires
####Bilan du travail réalisé au 28/11/2015
-
Les problèmes/découvertes
- La base de donnée Redis semble vide ce qui nous génère une erreur sur laquelle nous travaillons actuellement.
-
Ce qu'on a/va réalisé
- modifications dans Glance pour utiliser les modèles de Rome ou appeler des méthodes de Rome qui n'ont pas le même nom dans SQLAlchemy.
- Ajout des méthodes présentes dans GlanceBase de SQLAlchemy dans les modèles de ROME.
####Bilan du travail réalisé au 7/12/2015
-
Les problèmes/découvertes
- D'autres tests (suppression d'images etc.) ne passent pas
-
Ce qu'on a/va réalisé
- Tous les tests de création d'images fonctionnent
####Bilan du travail réalisé au 16/12/2015
-
Les problèmes/découvertes
- Certains tests de récupération d'image
image_get_allavec différents filtres en paramètres, ne fonctionnent pas. - Le test
image_updatene fonctionne pas.
- Certains tests de récupération d'image
-
Ce qu'on a/va réalisé
- 21 tests sur 41 passent.
- Nous allons tester ce Glance modifié avec Devstack en gardant ces 21/41 tests verts pour voir si c'est suffisant pour que les fonctionnalités principales de Devstack marchent.
- Écrire des tests unitaires dans ROME, en lien avec toutes les modifications que nous avons faites.
- Envoyer une pull request pour valider et intégrer notre code.
##Nova
###Changes made in db.discovery.api to use ROME
-
get_session
- returns a
RomeSessioninstead of a standardSQLAlchemysession.
- returns a
-
model_query
- returns
RomeQueryinstead of standard query.
- returns
-
service_create
-
Uses a lock (DLM) to create the service in a distributed context. Releases the lock after creation.
-
Call
service_create_to create the service.
-
-
service_create_
- Replaces
nova.db.sqlalchemy.models.Service().update(values)and uses insteadmodel_queryand key/value system.
- Replaces
-
service_update
- Checks that new values has key
report_countand thatvalues.report_count == service_ref.report_count, ???? otherwise doesn't update the service. - Adds
session.add(service_ref). ???
- Checks that new values has key
-
compute_node_get_all
- Uses
RomeQueryto return all compute nodes in a key/value way.
- Uses
-
compute_node_update
- Adds
session.add(compute_ref)"to ease the session management" ????
- Adds
-
floating_ip_deallocate
- Adds
session.add(result)"to ease the session management" ????
- Adds
-
fixed_ip_associate, fixed_ip_associate_pool
- Logs the info in the log file.
Add a lock before the action and additionals checkings regarding generatedfixed_ip.
- Logs the info in the log file.
-
fixed_ip_disassociate_all_by_timeout, fixed_ip_get_by_instance, fixed_ip_update, instance_get_all, instance_get_all_by_filters, network_get_associated_fixed_ips, block_device_mapping_update_or_create, _security_group_create, flavor_get_all, aggregate_get_by_metadata_key, aggregate_update, aggregate_metadata_add, action_event_finish, instance_group_update, instance_group_update
- Implements methods that used to be in
IMPLclass with a hard coded implementation.
- Implements methods that used to be in

