Guest User

Untitled

a guest
Dec 19th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.74 KB | None | 0 0
  1.     def _create_server_volume(self, flavor_id, image_id,
  2.                               security_groups, datastore_manager,
  3.                               volume_size, availability_zone,
  4.                               nics, files, volume_type,
  5.                               scheduler_hints):
  6.         LOG.debug("Begin _create_server_volume for id: %s", self.id)
  7.         server = None
  8.         volume_info = self._build_volume_info(datastore_manager,
  9.                                               volume_size=volume_size,
  10.                                               volume_type=volume_type)
  11.         block_device_mapping_v2 = volume_info['block_device']
  12.         try:
  13.             server = self._create_server(flavor_id, image_id, security_groups,
  14.                                          datastore_manager,
  15.                                          block_device_mapping_v2,
  16.                                          availability_zone, nics, files,
  17.                                          scheduler_hints)
  18.             server_id = server.id
  19.             # Save server ID.
  20.             self.update_db(compute_instance_id=server_id)
  21.         except Exception as e:
  22.             log_fmt = "Failed to create server for instance %s"
  23.             exc_fmt = _("Failed to create server for instance %s")
  24.             err = inst_models.InstanceTasks.BUILDING_ERROR_SERVER
  25.             self._log_and_raise(e, log_fmt, exc_fmt, self.id, err)
  26.         LOG.debug("End _create_server_volume for id: %s", self.id)
  27.         return volume_info
  28.  
  29.  
  30.     def _build_volume_info(self, datastore_manager, volume_size=None,
  31.                            volume_type=None):
  32.         volume_info = None
  33.         volume_support = self.volume_support
  34.         device_path = self.device_path
  35.         mount_point = CONF.get(datastore_manager).mount_point
  36.         LOG.debug("trove volume support = %s", volume_support)
  37.         if volume_support:
  38.             try:
  39.                 volume_info = self._create_volume(
  40.                     volume_size, volume_type, datastore_manager)
  41.             except Exception as e:
  42.                 log_fmt = "Failed to create volume for instance %s"
  43.                 exc_fmt = _("Failed to create volume for instance %s")
  44.                 err = inst_models.InstanceTasks.BUILDING_ERROR_VOLUME
  45.                 self._log_and_raise(e, log_fmt, exc_fmt, self.id, err)
  46.         else:
  47.             LOG.debug("device_path = %(path)s\n"
  48.                       "mount_point = %(point)s",
  49.                       {
  50.                           "path": device_path,
  51.                           "point": mount_point
  52.                       })
  53.             volume_info = {
  54.                 'block_device': None,
  55.                 'device_path': device_path,
  56.                 'mount_point': mount_point,
  57.             }
  58.         return volume_info
  59.  
  60.  
  61.     def _create_server(self, flavor_id, image_id, security_groups,
  62.                        datastore_manager, block_device_mapping_v2,
  63.                        availability_zone, nics, files={},
  64.                        scheduler_hints=None):
  65.         userdata = self._prepare_userdata(datastore_manager)
  66.         name = self.hostname or self.name
  67.         bdmap_v2 = block_device_mapping_v2
  68.         config_drive = CONF.use_nova_server_config_drive
  69.  
  70.         server = self.nova_client.servers.create(
  71.             name, image_id, flavor_id, files=files, userdata=userdata,
  72.             security_groups=security_groups, block_device_mapping_v2=bdmap_v2,
  73.             availability_zone=availability_zone, nics=nics,
  74.             config_drive=config_drive, scheduler_hints=scheduler_hints)
  75.         LOG.debug("Created new compute instance %(server_id)s "
  76.                   "for instance %(id)s",
  77.                   {'server_id': server.id, 'id': self.id})
  78.         return server
Advertisement
Add Comment
Please, Sign In to add comment