def handle(self, request, data):
        instance_id = data['instance']
        instance = api.compute_api(request).servers.get(instance_id)

        try:
            api.compute_api(request).servers.delete(instance)
        except api_exceptions.ApiException, e:
            messages.error(request,
                           'Unable to terminate %s: %s' %
                           (instance_id, e.message,))
    def test_get_compute_api(self):
        class ComputeClient(object):
            __slots__ = ['auth_token', 'management_url']

        self.mox.StubOutClassWithMocks(OSCompute, 'Compute')
        compute_api = OSCompute.Compute(auth_token=TEST_TOKEN,
                                        management_url=TEST_URL)

        compute_api.client = ComputeClient()

        self.mox.StubOutWithMock(api, 'url_for')
        # called three times?  Looks like a good place for optimization
        api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
        api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)
        api.url_for(IsA(http.HttpRequest), 'nova').AndReturn(TEST_URL)

        self.mox.ReplayAll()

        compute_api = api.compute_api(self.request)

        self.assertIsNotNone(compute_api)
        self.assertEqual(compute_api.client.auth_token, TEST_TOKEN)
        self.assertEqual(compute_api.client.management_url, TEST_URL)

        self.mox.VerifyAll()
def launch(request, tenant_id, image_id):
    def flavorlist():
        try:
            fl = api.extras_api(request).flavors.list()

            # TODO add vcpu count to flavors
            sel = [(f.id, "%s (%svcpu / %sGB Disk / %sMB Ram )" % (f.name, f.vcpus, f.disk, f.ram)) for f in fl]
            return sorted(sel)
        except:
            return [(1, "m1.tiny")]

    def keynamelist():
        try:
            fl = api.extras_api(request).keypairs.list()
            sel = [(f.key_name, f.key_name) for f in fl]
            return sel
        except:
            return []

    image = api.compute_api(request).images.get(image_id)
    tenant = api.get_tenant(request, request.user.tenant)

    form, handled = LaunchForm.maybe_handle(
        request, initial={"flavorlist": flavorlist(), "keynamelist": keynamelist(), "image_id": image_id}
    )
    if handled:
        return handled

    return render_to_response(
        "dash_launch.html",
        {"tenant": tenant, "image": image, "form": form},
        context_instance=template.RequestContext(request),
    )
    def handle(self, request, data):
        image_id = data["image_id"]
        try:
            image = api.compute_api(request).images.get(image_id)
            flavor = api.compute_api(request).flavors.get(data["flavor"])
            api.extras_api(request).servers.create(
                data["name"], image, flavor, user_data=data["user_data"], key_name=data.get("key_name")
            )

            messages.success(
                request,
                "Instance was successfully\
                                       launched.",
            )
            return shortcuts.redirect(request.build_absolute_uri())

        except api_exceptions.ApiException, e:
            messages.error(request, "Unable to launch instance: %s" % e.message)
 def handle(self, request, data):
     instance_id = data['instance']
     try:
         server = api.compute_api(request).servers.get(instance_id)
         server.reboot(openstack.compute.servers.REBOOT_HARD)
         messages.success(request, "Instance rebooting")
     except api_exceptions.ApiException, e:
         messages.error(request,
                    'Unable to reboot instance: %s' % e.message)
 def stub_compute_api(self, count=1):
     self.mox.StubOutWithMock(api, "compute_api")
     compute_api = self.mox.CreateMock(OSCompute.Compute)
     for i in range(count):
         api.compute_api(IsA(http.HttpRequest)).AndReturn(compute_api)
     return compute_api