示例#1
0
                # try to find a dev name that is not already in use by the node
                dev_names_in_use = [ vol.devName for vol in config.volumes.values()
                            if vol.agentId == agentId ]
                dev_name = self.config_parser.get('manager', 'DEV_TARGET')
                while dev_name in dev_names_in_use:
                    # increment the last char from dev_name
                    dev_name = dev_name[:-1] + chr(ord(dev_name[-1]) + 1)
                # attach the volume
                _, dev_name = self.attach_volume(volume.id, node.vmid, dev_name)
            except Exception, ex:
                self.logger.exception("Failed to attach disk to Generic node %s: %s"
                                      % (node.id, ex))
                self.destroy_volume(volume.id)
                raise
            try:
                client.mount_volume(node.ip, self.AGENT_PORT, dev_name, volumeName)
            except client.AgentException, ex:
                self.logger.exception('Failed to configure Generic node %s: %s'
                                      % (node.id, ex))
                self.detach_volume(volume.id)
                self.destroy_volume(volume.id)
                raise
        except Exception, ex:
            self.logger.exception('Failed to create volume: %s.' % ex)
            self._state_set(self.S_ERROR)
            return

        config.volumes[volumeName] = VolumeInfo(volumeName, volume.id,
                                                 volumeSize, agentId, dev_name)
        self._configuration_set(config)
        self.logger.info('Volume %s created and attached' % volume_name)
示例#2
0
 def on_create_volume(self, node, volume):
     client.mount_volume(node.ip, self.AGENT_PORT, volume['dev_name'],
                         volume['vol_name'])