def _create_deployment_nodes(self, blueprint_id, deployment_id, plan,
                                 node_ids=None):
        """
        create deployment nodes in storage based on a provided blueprint
        :param blueprint_id: blueprint id
        :param deployment_id: deployment id
        :param plan: blueprint plan
        :param node_ids: optionally create only nodes with these ids
        """
        node_ids = node_ids or []
        if not isinstance(node_ids, list):
            node_ids = [node_ids]

        raw_nodes = plan['nodes']
        if node_ids:
            raw_nodes = \
                [node for node in raw_nodes if node['id'] in node_ids]
        for raw_node in raw_nodes:
            num_instances = raw_node['instances']['deploy']
            self.sm.put_node(models.DeploymentNode(
                id=raw_node['name'],
                deployment_id=deployment_id,
                blueprint_id=blueprint_id,
                type=raw_node['type'],
                type_hierarchy=raw_node['type_hierarchy'],
                number_of_instances=num_instances,
                planned_number_of_instances=num_instances,
                deploy_number_of_instances=num_instances,
                host_id=raw_node['host_id'] if 'host_id' in raw_node else None,
                properties=raw_node['properties'],
                operations=raw_node['operations'],
                plugins=raw_node['plugins'],
                plugins_to_install=raw_node.get('plugins_to_install'),
                relationships=self._prepare_node_relationships(raw_node)
            ))
 def _create_deployment_nodes(self, blueprint_id, deployment_id, plan):
     for raw_node in plan['nodes']:
         num_instances = raw_node['instances']['deploy']
         self.sm.put_node(models.DeploymentNode(
             id=raw_node['name'],
             deployment_id=deployment_id,
             blueprint_id=blueprint_id,
             type=raw_node['type'],
             type_hierarchy=raw_node['type_hierarchy'],
             number_of_instances=num_instances,
             planned_number_of_instances=num_instances,
             deploy_number_of_instances=num_instances,
             host_id=raw_node['host_id'] if 'host_id' in raw_node else None,
             properties=raw_node['properties'],
             operations=raw_node['operations'],
             plugins=raw_node['plugins'],
             plugins_to_install=raw_node.get('plugins_to_install'),
             relationships=self._prepare_node_relationships(raw_node)
         ))
    def _create_deployment_nodes(self, blueprint_id, deployment_id, plan):
        for raw_node in plan['nodes']:
            self.sm.put_node(
                models.DeploymentNode(
                    id=raw_node['name'],
                    deployment_id=deployment_id,
                    blueprint_id=blueprint_id,
                    type=raw_node['type'],
                    type_hierarchy=raw_node['type_hierarchy'],
                    number_of_instances=raw_node['instances']['deploy'],
                    host_id=raw_node['host_id']
                    if 'host_id' in raw_node else None,
                    properties=raw_node['properties'],
                    operations=raw_node['operations'],
                    plugins=raw_node['plugins'],
                    plugins_to_install=raw_node.get('plugins_to_install'),
                    relationships=self._prepare_node_relationships(raw_node)))

        self._wait_for_count(expected_count=len(plan['nodes']),
                             query_method=self.sm.get_nodes,
                             deployment_id=deployment_id)