def vmware_push_image_upload(self, target_image_id, provider, credentials): # BuildDispatcher is now the only location for the logic to map a provider to its data and target provider_data = self.get_dynamic_provider_data(provider) if provider_data is None: raise ImageFactoryException( "VMWare instance not found in local configuration file /etc/imagefactory/vsphere.json or as XML or JSON" ) self.generic_decode_credentials(credentials, provider_data, "vsphere") # Image is always here and it is the target_image datafile input_image = self.builder.target_image.data # Example of some JSON for westford_esx # {"westford_esx": {"api-url": "https://vsphere.virt.bos.redhat.com/sdk", "username": "******", "password": "******", # "datastore": "datastore1", "network_name": "VM Network" } } vm_name = "factory-image-" + self.new_image_id helper = VSphereHelper(provider_data['api-url'], self.username, self.password) helper.create_vm(input_image, vm_name, provider_data['compute_resource'], provider_data['datastore'], str(10 * 1024 * 1024 + 2) + "KB", [{ "network_name": provider_data['network_name'], "type": "VirtualE1000" }], "512MB", 1, 'otherLinux64Guest') self.builder.provider_image.identifier_on_provider = vm_name self.builder.provider_account_identifier = self.username self.percent_complete = 100
def vmware_push_image_upload(self, target_image_id, provider, credentials): # BuildDispatcher is now the only location for the logic to map a provider to its data and target provider_data = self.get_dynamic_provider_data(provider) if provider_data is None: raise ImageFactoryException("VMWare instance not found in XML or JSON provided") self.generic_decode_credentials(credentials, provider_data, "vsphere") # Image is always here and it is the target_image datafile input_image = self.builder.target_image.data # Example of some JSON for westford_esx # {"westford_esx": {"api-url": "https://vsphere.virt.bos.redhat.com/sdk", "username": "******", "password": "******", # "datastore": "datastore1", "network_name": "VM Network" } } vm_name = "factory-image-" + self.new_image_id helper = VSphereHelper(provider_data['api-url'], self.username, self.password) # Newer Oz versions introduce a configurable disk size in TDL # We must still detect that it is present and pass it in this call try: disksize=getattr(self.tdlobj, "disksize") except AttributeError: disksize = 10 disksize_str = str(int(disksize)*1024*1024 + 2) + "KB" helper.create_vm(input_image, vm_name, provider_data['compute_resource'], provider_data['datastore'], disksize_str, [ { "network_name": provider_data['network_name'], "type": "VirtualE1000"} ], "512MB", 1, 'otherLinux64Guest') self.builder.provider_image.identifier_on_provider = vm_name self.builder.provider_account_identifier = self.username self.percent_complete = 100
def delete_from_provider(self, builder, provider, credentials, target, parameters): self.log.debug("Deleting vSphere image (%s)" % (self.builder.provider_image.identifier_on_provider)) provider_data = self.get_dynamic_provider_data(provider) if provider_data is None: raise ImageFactoryException("VMWare instance not found in XML or JSON provided") self.generic_decode_credentials(credentials, provider_data, "vsphere") helper = VSphereHelper(provider_data['api-url'], self.username, self.password) # This call raises an exception on error helper.delete_vm(self.builder.provider_image.identifier_on_provider)
def vmware_push_image_upload(self, target_image_id, provider, credentials): # BuildDispatcher is now the only location for the logic to map a provider to its data and target provider_data = self.get_dynamic_provider_data(provider) if provider_data is None: raise ImageFactoryException("VMWare instance not found in local configuration file /etc/imagefactory/vsphere.json or as XML or JSON") self.generic_decode_credentials(credentials, provider_data, "vsphere") # Image is always here and it is the target_image datafile input_image = self.builder.target_image.data # Example of some JSON for westford_esx # {"westford_esx": {"api-url": "https://vsphere.virt.bos.redhat.com/sdk", "username": "******", "password": "******", # "datastore": "datastore1", "network_name": "VM Network" } } vm_name = "factory-image-" + self.new_image_id helper = VSphereHelper(provider_data['api-url'], self.username, self.password) helper.create_vm(input_image, vm_name, provider_data['compute_resource'], provider_data['datastore'], str(10*1024*1024 + 2) + "KB", [ { "network_name": provider_data['network_name'], "type": "VirtualE1000"} ], "512MB", 1, 'otherLinux64Guest') self.builder.provider_image.identifier_on_provider = vm_name self.builder.provider_account_identifier = self.username self.percent_complete = 100