2014-09-19 1 views
0

Lorsque j'utilise cloudify (2.7) pour déployer une application, il includs deux services (par exemple le service Un service DependsOn B), voici l'app-application.groovyService cloudify DependsOn autre service

application { 
    name "app" 

    service { 
     name = "B" 
    } 

    service { 
     name = "A" 
     dependsOn = [ "B" ] 
    } 
} 

lorsque la le service B a 2 instances, une des instances du service B est disponible, le service A commence à invoquer l'événement start, mais le service A dépend de toutes les instances du service B, a-t-il une configuration pour le résoudre?

Répondre

0

Copie ma réponse de https://groups.google.com/forum/#!topic/cloudify-developers/TZzwfzY-rLY:

Le comportement par défaut dans Cloudify 2.7 est de démarrer un service une fois qu'il ya au-moins une instance en cours d'exécution de tous les services dont il dépend. Si vous souhaitez attendre toutes les instances d'un autre service (ou d'une autre logique de dépendance), vous devez l'implémenter dans vos scripts de cycle de vie. Vous pouvez accéder à l'état d'autres services utilisant le contexte de service API: http://getcloudify.org/guide/2.7/developing/the_service_context_api.html

Par exemple, vous pouvez ajouter un événement « préinstaller » qui utilise l'API waitForInstances() pour attendre le nombre de cas. Notez que cette API vous donne accès à des instances qui n'ont peut-être pas encore démarré. Vous pouvez vérifier l'état actuel d'une instance en appelant:

serviceInstance.getMonitors (« USM_State »)

Les valeurs possibles de USM_State sont disponibles ici: https://github.com/CloudifySource/cloudify/blob/master/dsl/src/main/java/org/cloudifysource/dsl/internal/CloudifyConstants.java#L35

donc une valeur de 2 indique une instance en cours d'exécution.

+0

Ceci est très utile merci – chaoluo

Questions connexes