def runInstance(self, details=False): self._printContacting() if Image.isImageId(self.vm_image): self._checkImageExists(self.vm_image) self.vm_image = self._prependMarketplaceUrlIfImageId(self.vm_image) elif Image.isDiskId(self.vm_image): self.vm_image = self._createDiskUrlIfDiskId(self.vm_image) elif self._isAliasUrl(self.vm_image): self.vm_image = self._resolveUrl(self.vm_image) else: raise Exceptions.ValidationException('Image reference must be an ' 'Alias URL, Marketplace Image ID or Disk ID: %s' % self.vm_image) printAction('Starting machine(s)') self.printDetail('Using VM template file: %s' % self.vmTemplateFile) vmTpl = self._buildVmTemplate(self.vmTemplateFile) label = (self.instanceNumber > 1) and 'machines' or 'machine' printStep('Starting %s %s' % (self.instanceNumber, label)) self.printDetail('on endpoint: %s' % self.endpoint, Util.VERBOSE_LEVEL_DETAILED) self.printDetail('with template:\n%s' % vmTpl, Util.VERBOSE_LEVEL_DETAILED) for vmNb in range(self.instanceNumber): vmId = self.cloud.vmStart(vmTpl) self.vmIds.append(vmId) networkName, ip = self.getNetworkDetail(vmId) self.vmIdsAndNetwork.append((vmId, networkName, ip)) vmIpPretty = '\t%s ip: %s' % (networkName.title(), ip) printStep('Machine %s (vm ID: %s)\n%s' % (vmNb + 1, vmId, vmIpPretty)) self.instancesDetail.append({'id': vmId, 'ip': ip, 'networkName': networkName}) self._saveVmIds() printStep('Done!') if not details: return self.vmIds else: return self.vmIdsAndNetwork
def _createDiskUrlIfDiskId(self, image): if Image.isDiskId(image): self.pdiskEndpointHostname = VolumeManager.getFQNHostname(self.pdiskEndpoint) return "pdisk:%s/%s" % (self.pdiskEndpoint.rstrip('/'), image) else: return image