~smoser/ubuntu/wily/maas/lp1474417

« back to all changes in this revision

Viewing changes to src/metadataserver/api.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2013-10-04 12:33:05 UTC
  • mto: (1.4.1)
  • mto: This revision was merged to the branch mainline in revision 40.
  • Revision ID: package-import@ubuntu.com-20131004123305-vzkyhovgnvn1arco
Tags: upstream-1.4+bzr1693+dfsg
ImportĀ upstreamĀ versionĀ 1.4+bzr1693+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
    unicode_literals,
10
10
    )
11
11
 
 
12
str = None
 
13
 
12
14
__metaclass__ = type
13
15
__all__ = [
14
16
    'AnonMetaDataHandler',
26
28
from django.core.exceptions import PermissionDenied
27
29
from django.http import HttpResponse
28
30
from django.shortcuts import get_object_or_404
29
 
from metadataserver import logger
30
31
from maasserver.api import store_node_power_parameters
31
32
from maasserver.api_support import (
32
33
    operation,
50
51
    Node,
51
52
    SSHKey,
52
53
    )
 
54
from maasserver.models.tag import Tag
 
55
from maasserver.populate_tags import populate_tags_for_single_node
53
56
from maasserver.preseed import (
54
57
    get_curtin_userdata,
55
58
    get_enlist_preseed,
58
61
    )
59
62
from maasserver.utils import find_nodegroup
60
63
from maasserver.utils.orm import get_one
 
64
from metadataserver import logger
61
65
from metadataserver.enum import COMMISSIONING_STATUS
62
66
from metadataserver.fields import Bin
63
67
from metadataserver.models import (
193
197
 
194
198
    def _store_commissioning_results(self, node, request):
195
199
        """Store commissioning result files for `node`."""
196
 
        script_result = request.POST.get('script_result', None)
 
200
        script_result = int(request.POST.get('script_result', 0))
197
201
        for name, uploaded_file in request.FILES.items():
198
202
            raw_content = uploaded_file.read()
199
203
            if name in BUILTIN_COMMISSIONING_SCRIPTS:
200
204
                postprocess_hook = BUILTIN_COMMISSIONING_SCRIPTS[name]['hook']
201
 
                postprocess_hook(node, raw_content)
 
205
                postprocess_hook(
 
206
                    node=node, output=raw_content,
 
207
                    exit_status=script_result)
202
208
            NodeCommissionResult.objects.store_data(
203
209
                node, name, script_result, Bin(raw_content))
204
210
 
248
254
 
249
255
        node.status = target_status
250
256
        # When moving to a terminal state, remove the allocation.
251
 
        if target_status is not None:
252
 
            node.owner = None
 
257
        node.owner = None
253
258
        node.error = request.POST.get('error', '')
 
259
 
 
260
        # When moving to a successful terminal state, recalculate tags.
 
261
        populate_tags_for_single_node(Tag.objects.all(), node)
 
262
 
 
263
        # Done.
254
264
        node.save()
255
 
 
256
265
        return rc.ALL_OK
257
266
 
258
267
    @operation(idempotent=False)
284
293
 
285
294
        :param item: Sub-path for the attribute, e.g. "local-hostname" to
286
295
            get a handler that returns the logged-in node's hostname.
287
 
        :type item: basestring
 
296
        :type item: unicode
288
297
        :return: A callable that accepts as arguments the logged-in node;
289
298
            the requested metadata version (e.g. "latest"); and `item`.  It
290
299
            returns an HttpResponse.