~cbehrens/nova/search-api

« back to all changes in this revision

Viewing changes to nova/api/openstack/servers.py

compute_api.get_all should be able to recurse zones (bug 744217).
Also, allow to build more than one instance at once with zone_aware_scheduler types.
Other cleanups with regards to zone aware scheduler...
 

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
 
77
77
        builder - the response model builder
78
78
        """
79
 
        reservation_id = req.str_GET.get('reservation_id')
 
79
        query_str = req.str_GET
 
80
        reservation_id = query_str.get('reservation_id')
 
81
        project_id = query_str.get('project_id')
 
82
        fixed_ip = query_str.get('fixed_ip')
 
83
        recurse_zones = utils.bool_from_str(query_str.get('recurse_zones'))
80
84
        instance_list = self.compute_api.get_all(
81
 
                                            req.environ['nova.context'],
82
 
                                            reservation_id=reservation_id)
 
85
                req.environ['nova.context'],
 
86
                reservation_id=reservation_id,
 
87
                project_id=project_id,
 
88
                fixed_ip=fixed_ip,
 
89
                recurse_zones=recurse_zones)
83
90
        limited_list = self._limit_items(instance_list, req)
84
91
        builder = self._get_view_builder(req)
85
92
        servers = [builder.build(inst, is_detail)['server']
111
118
        extra_values = None
112
119
        result = None
113
120
        try:
114
 
            extra_values, result = self.helper.create_instance(
115
 
                                    req, body, self.compute_api.create)
 
121
            extra_values, instances = self.helper.create_instance(
 
122
                    req, body, self.compute_api.create)
116
123
        except faults.Fault, f:
117
124
            return f
118
125
 
119
 
        instances = result
120
 
 
121
 
        (inst, ) = instances
 
126
        # We can only return 1 instance via the API, if we happen to
 
127
        # build more than one...  instances is a list, so we'll just
 
128
        # use the first one..
 
129
        inst = instances[0]
122
130
        for key in ['instance_type', 'image_ref']:
123
131
            inst[key] = extra_values[key]
124
132