Revision b7496c88

b/ci/utils.py
149 149
        self.temp_config = ConfigParser()
150 150
        self.temp_config.optionxform = str
151 151
        self.temp_config.read(temp_config)
152
        if build_id is not None:
153
            self.build_id = build_id
154
        else:
155
            # Find a uniq build_id to use
156
            ids = self.temp_config.sections()
157
            if ids:
158
                max_id = int(max(self.temp_config.sections(), key=int))
159
                self.build_id = max_id + 1
160
            else:
161
                self.build_id = 1
162
        self.logger.info("Will use %s as build id" % _green(self.build_id))
163
        # If build_id doesn't exist create a new one
164
        try:
165
            self.temp_config.add_section(str(self.build_id))
166
            creation_time = time.strftime("%a, %d %b %Y %X", time.localtime())
167
            self.write_config("created", creation_time)
168
        except DuplicateSectionError:
169
            pass
152
        self.build_id = build_id
153
        self.logger.info("Will use \"%s\" as build id" % _green(self.build_id))
170 154

  
171 155
        # Set kamaki cloud
172 156
        if cloud is not None:
......
249 233
    @_check_kamaki
250 234
    def destroy_server(self, wait=True):
251 235
        """Destroy slave server"""
252
        server_id = self.temp_config.getint(str(self.build_id), 'server_id')
236
        server_id = int(self.read_temp_config('server_id'))
253 237
        self.logger.info("Destoying server with id %s " % server_id)
254 238
        self.cyclades_client.delete_server(server_id)
255 239
        if wait:
......
259 243
    def create_server(self, image_id=None, flavor_name=None, ssh_keys=None):
260 244
        """Create slave server"""
261 245
        self.logger.info("Create a new server..")
246

  
247
        # Find a build_id to use
248
        if self.build_id is None:
249
            # If build_id is given use this, else ..
250
            # Find a uniq build_id to use
251
            ids = self.temp_config.sections()
252
            if ids:
253
                max_id = int(max(self.temp_config.sections(), key=int))
254
                self.build_id = max_id + 1
255
            else:
256
                self.build_id = 1
257
        self.logger.debug("New build id \"%s\" was created"
258
                          % _green(self.build_id))
259

  
260
        # Find an image to use
262 261
        if image_id is None:
263 262
            image = self._find_image()
264 263
            self.logger.debug("Will use image \"%s\"" % _green(image['name']))
265 264
            image_id = image["id"]
266 265
        self.logger.debug("Image has id %s" % _green(image_id))
266
        # Find a flavor to use
267 267
        flavor_id = self._find_flavor(flavor_name)
268 268
        server = self.cyclades_client.create_server(
269 269
            self.config.get('Deployment', 'server_name'),
270 270
            flavor_id,
271 271
            image_id)
272 272
        server_id = server['id']
273
        self.write_config('server_id', server_id)
273
        self.write_temp_config('server_id', server_id)
274 274
        self.logger.debug("Server got id %s" % _green(server_id))
275 275
        server_user = server['metadata']['users']
276
        self.write_config('server_user', server_user)
276
        self.write_temp_config('server_user', server_user)
277 277
        self.logger.debug("Server's admin user is %s" % _green(server_user))
278 278
        server_passwd = server['adminPass']
279
        self.write_config('server_passwd', server_passwd)
279
        self.write_temp_config('server_passwd', server_passwd)
280 280

  
281 281
        server = self._wait_transition(server_id, "BUILD", "ACTIVE")
282 282
        self._get_server_ip_and_port(server)
......
347 347
            server_port = 10000 + tmp1 * 256 + tmp2
348 348
        else:
349 349
            server_port = 22
350
        self.write_config('server_ip', server_ip)
350
        self.write_temp_config('server_ip', server_ip)
351 351
        self.logger.debug("Server's IPv4 is %s" % _green(server_ip))
352
        self.write_config('server_port', server_port)
352
        self.write_temp_config('server_port', server_port)
353 353
        self.logger.debug("Server's ssh port is %s" % _green(server_port))
354 354
        self.logger.debug("Access server using \"ssh -p %s %s@%s\"" %
355 355
                          (server_port, server['metadata']['users'], server_ip))
......
384 384
        else:
385 385
            self.logger.debug("No ssh keys found")
386 386

  
387
    def write_config(self, option, value):
387
    def write_temp_config(self, option, value):
388 388
        """Write changes back to config file"""
389
        # If build_id section doesn't exist create a new one
390
        try:
391
            self.temp_config.add_section(str(self.build_id))
392
            creation_time = time.strftime("%a, %d %b %Y %X", time.localtime())
393
            self.write_temp_config("created", creation_time)
394
        except DuplicateSectionError:
395
            pass
389 396
        self.temp_config.set(str(self.build_id), option, str(value))
390 397
        curr_time = time.strftime("%a, %d %b %Y %X", time.localtime())
391 398
        self.temp_config.set(str(self.build_id), "modified", curr_time)
......
393 400
        with open(temp_conf_file, 'wb') as tcf:
394 401
            self.temp_config.write(tcf)
395 402

  
403
    def read_temp_config(self, option):
404
        """Read from temporary_config file"""
405
        # If build_id is None use the latest one
406
        if self.build_id is None:
407
            ids = self.temp_config.sections()
408
            if ids:
409
                self.build_id = int(ids[-1])
410
            else:
411
                self.logger.error("No sections in temporary config file")
412
                sys.exit(1)
413
            self.logger.debug("Will use \"%s\" as build id"
414
                              % _green(self.build_id))
415
        # Read specified option
416
        return self.temp_config.get(str(self.build_id), option)
417

  
396 418
    def setup_fabric(self):
397 419
        """Setup fabric environment"""
398 420
        self.logger.info("Setup fabric parameters..")
399
        fabric.env.user = self.temp_config.get(str(self.build_id),
400
                                               'server_user')
401
        fabric.env.host_string = \
402
            self.temp_config.get(str(self.build_id), 'server_ip')
403
        fabric.env.port = self.temp_config.getint(str(self.build_id),
404
                                                  'server_port')
405
        fabric.env.password = self.temp_config.get(str(self.build_id),
406
                                                   'server_passwd')
421
        fabric.env.user = self.read_temp_config('server_user')
422
        fabric.env.host_string = self.read_temp_config('server_ip')
423
        fabric.env.port = int(self.read_temp_config('server_port'))
424
        fabric.env.password = self.read_temp_config('server_passwd')
407 425
        fabric.env.connection_attempts = 10
408 426
        fabric.env.shell = "/bin/bash -c"
409 427
        fabric.env.disable_known_hosts = True

Also available in: Unified diff