2016-06-07 43 views
0

我要發展我在cloudify名爲「備份」用我自己的插件自己的工作流程,但是當我跑了工作流程,下面的錯誤發生cloudify自定義工作流缺失cloudify_agent運行時信息

'backup' workflow execution failed: RuntimeError: Workflow failed: Task failed 'script_runner.tasks.run' -> Missing cloudify_agent runtime information. This most likely means that the Compute node never started successfully 

我不理解爲什麼,任何人都可以解決我這個問題? 這裏是我的主要藍圖代碼和插件代碼

我的主要藍圖

tosca_definitions_version: cloudify_dsl_1_2 

imports: 
    - plugins/backup.yaml 
    - types/types.yaml 

node_templates: 

    mynode: 
    type: cloudify.nodes.Compute 
    properties: 
     ip: "ip" 
     agent_config: 
     install_method: none 
     user: "user" 
     key: "key_uri" 

    myapp: 
    type: cloudify.nodes.ApplicationModule 
    interfaces: 
     test_platform_backup: 
     backup: 
      implementation: scripts/backup.sh 
      inputs: 
      port: 6969 
     post_backup: 
      implementation: scripts/post_backup.sh 
    relationships: 
     - type: cloudify.relationships.contained_in 
     target: mynode 

我的插件代碼:

from cloudify.decorators import workflow 
from cloudify.workflows import ctx 
from cloudify.workflows.tasks_graph import forkjoin 

@workflow 
def backup(operation, type_name, operation_kwargs, is_node_operation, **kwargs): 
    graph = ctx.graph_mode() 

    send_event_starting_tasks = {} 
    send_event_done_tasks = {} 

    for node in ctx.nodes: 
     if type_name in node.type_hierarchy: 
      for instance in node.instances: 
       send_event_starting_tasks[instance.id] = instance.send_event('Starting to run operation') 
       send_event_done_tasks[instance.id] = instance.send_event('Done running operation') 

    for node in ctx.nodes: 
     if type_name in node.type_hierarchy: 
      for instance in node.instances: 

       sequence = graph.sequence() 

       if is_node_operation: 
        operation_task = instance.execute_operation(operation, kwargs=operation_kwargs) 
       else: 
        forkjoin_tasks = [] 
        for relationship in instance.relationships: 
         forkjoin_tasks.append(relationship.execute_source_operation(operation)) 
         forkjoin_tasks.append(relationship.execute_target_operation(operation)) 
        operation_task = forkjoin(*forkjoin_tasks) 

       sequence.add(
        send_event_starting_tasks[instance.id], 
        operation_task, 
        send_event_done_tasks[instance.id]) 

    for node in ctx.nodes: 
     for instance in node.instances: 
      for rel in instance.relationships: 

       instance_starting_task = send_event_starting_tasks.get(instance.id) 
       target_done_task = send_event_done_tasks.get(rel.target_id) 

       if instance_starting_task and target_done_task: 
        graph.add_dependency(instance_starting_task, target_done_task) 

    return graph.execute() 

回答

2

看來你的虛擬機沒有啓動。

從你的代碼我不明白你想要做什麼。 您不需要安裝和代理,並且您沒有與虛擬機的光纖連接,但您正嘗試在虛擬機上運行操作。

您應該安裝一個代理,E.g去掉「INSTALL_METHOD:none」或添加架構連接到虛擬機,並運行它的操作。

+0

感謝您的建議。我解決了這個問題在運行備份工作流之前,我沒有在虛擬機上安裝代理 –

相關問題