Beispiel #1
0
    def PUT(self, cluster_id):
        cluster = self.get_object_or_404(
            Cluster,
            cluster_id,
            log_404=(
                "warning",
                "Error: there is no cluster "
                "with id '{0}' in DB.".format(cluster_id)))

        try:
            network_info = \
                NetworkConfigurationSerializer.serialize_for_cluster(
                    cluster
                )
            logger.info(
                u"Network info:\n{0}".format(
                    json.dumps(network_info, indent=4)
                )
            )
            task_manager = DeploymentTaskManager(
                cluster_id=cluster.id
            )
            task = task_manager.execute()
        except Exception as exc:
            logger.warn(u'ClusterChangesHandler: error while execution'
                        ' deploy task: {0}'.format(str(exc)))
            raise web.badrequest(str(exc))

        return TaskHandler.render(task)
Beispiel #2
0
    def PUT(self, cluster_id):
        """:returns: JSONized Task object.
        :http: * 200 (task successfully executed)
               * 404 (cluster not found in db)
               * 400 (failed to execute task)
        """
        cluster = self.get_object_or_404(
            Cluster,
            cluster_id,
            log_404=(
                "warning",
                "Error: there is no cluster "
                "with id '{0}' in DB.".format(cluster_id)))

        try:
            network_info = \
                NetworkConfigurationSerializer.serialize_for_cluster(
                    cluster
                )
            logger.info(
                u"Network info:\n{0}".format(
                    json.dumps(network_info, indent=4)
                )
            )
            task_manager = DeploymentTaskManager(
                cluster_id=cluster.id
            )
            task = task_manager.execute()
        except Exception as exc:
            logger.warn(u'ClusterChangesHandler: error while execution'
                        ' deploy task: {0}'.format(str(exc)))
            raise web.badrequest(str(exc))

        return TaskHandler.render(task)
Beispiel #3
0
    def PUT(self, cluster_id):
        cluster = self.get_object_or_404(
            Cluster,
            cluster_id,
            log_404=("warning", "Error: there is no cluster "
                     "with id '{0}' in DB.".format(cluster_id)))

        task_manager = DeploymentTaskManager(cluster_id=cluster.id)
        try:
            task = task_manager.execute()
        except Exception as exc:
            logger.warn(u'ClusterChangesHandler: error while execution'
                        ' deploy task: {0}'.format(exc.message))
            raise web.badrequest(exc.message)
        return TaskHandler.render(task)
Beispiel #4
0
 def test_no_node_no_cry(self):
     cluster = self.env.create_cluster(api=True)
     rcvr = rpc.receiver.NailgunReceiver
     manager = DeploymentTaskManager(cluster["id"])
     rcvr.deploy_resp(nodes=[
         {'uid': 666, 'id': 666, 'status': 'discover'}
     ], uuid='no_freaking_way')  # and wrong task also
     self.assertRaises(errors.WrongNodeStatus, manager.execute)
Beispiel #5
0
    def PUT(self, cluster_id):
        cluster = self.get_object_or_404(
            Cluster,
            cluster_id,
            log_404=(
                "warning",
                "Error: there is no cluster "
                "with id '{0}' in DB.".format(cluster_id)
            )
        )

        task_manager = DeploymentTaskManager(cluster_id=cluster.id)
        try:
            task = task_manager.execute()
        except Exception as exc:
            logger.warn(u'ClusterChangesHandler: error while execution'
                        ' deploy task: {0}'.format(exc.message))
            raise web.badrequest(exc.message)
        return TaskHandler.render(task)
Beispiel #6
0
 def test_no_changes_no_cry(self):
     self.env.create(
         cluster_kwargs={},
         nodes_kwargs=[
             {"status": "ready"}
         ]
     )
     cluster_db = self.env.clusters[0]
     cluster_db.clear_pending_changes()
     manager = DeploymentTaskManager(cluster_db.id)
     self.assertRaises(errors.WrongNodeStatus, manager.execute)
Beispiel #7
0
    def PUT(self, cluster_id):
        """:returns: JSONized Task object.
        :http: * 200 (task successfully executed)
               * 404 (cluster not found in db)
               * 400 (failed to execute task)
        """
        cluster = self.get_object_or_404(
            Cluster,
            cluster_id,
            log_404=(
                "warning",
                "Error: there is no cluster "
                "with id '{0}' in DB.".format(cluster_id)
            )
        )

        if cluster.net_provider == 'nova_network':
            net_serializer = NovaNetworkConfigurationSerializer
        elif cluster.net_provider == 'neutron':
            net_serializer = NeutronNetworkConfigurationSerializer

        try:
            network_info = net_serializer.serialize_for_cluster(cluster)
            logger.info(
                u"Network info:\n{0}".format(
                    json.dumps(network_info, indent=4)
                )
            )
            task_manager = DeploymentTaskManager(
                cluster_id=cluster.id
            )
            task = task_manager.execute()
        except Exception as exc:
            logger.warn(u'ClusterChangesHandler: error while execution'
                        ' deploy task: {0}'.format(str(exc)))
            raise web.badrequest(str(exc))

        return TaskHandler.render(task)
 def test_no_node_no_cry(self):
     cluster = self.env.create_cluster(api=True)
     cluster_id = cluster['id']
     manager = DeploymentTaskManager(cluster_id)
     task = Task(name='provision', cluster_id=cluster_id)
     self.db.add(task)
     self.db.commit()
     rpc.receiver.NailgunReceiver.deploy_resp(nodes=[{
         'uid': 666,
         'id': 666,
         'status': 'discover'
     }],
                                              task_uuid=task.uuid)
     self.assertRaises(errors.WrongNodeStatus, manager.execute)