def delete(self, lv_name): """Delete logical volume; return True.""" lv_name = common.validate_hostname( lv_name) # LV names are always hostnames args = ['lvremove', '-f', '%s/%s' % (self.vg_name, lv_name)] str_args = " ".join(args) msg = "Running " + str_args self.log.debug(msg) try: result = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) except Exception: msg = 'Running command %s failed' % str_args #trace = traceback.format_exec() raise error.SpokeError(msg) data = result.communicate() stdout = data[0] stderr = data[1] msg = "Command stdout was: %s, stderr was: %s" % (stdout, stderr) self.log.debug(msg) if "Volume group \"%s\" not found" % self.vg_name in stderr: msg = "volume group '%s' was not found." % self.vg_name raise error.NotFound(msg) elif "logical volume(s) not found" in stderr: msg = "logical volume '%s' not found." % lv_name raise error.NotFound(msg) # Catch non-specific errors if result.returncode != 0: msg = "Delete command returned non-zero: %s stdout was: %s, stderr was: %s" % \ (result.returncode, stdout, stderr) raise error.LVMError(msg) result = self.get(lv_name) if result['exit_code'] == 3 and result['count'] == 0: result['msg'] = "Deleted %s:" % result['type'] self.log.debug('Result: %s' % result) return result else: msg = 'Delete operation returned OK, but object still there?' raise error.SearchError(msg)
def delete(self): """Delete subnet kv stores; return True.""" if not (self.network and self.mask): msg = 'Please specify ip and mask' raise error.InputError(msg) if self.get()['data'] == []: msg = "cannot delete as already missing" raise error.NotFound, msg # Delete kv stores self.KV.delete(self.kv_aloc) self.KV.delete(self.kv_free) result = self.get() if result['exit_code'] == 3 and result['count'] == 0: result['msg'] = "Deleted %s:" % result['type'] return result else: msg = 'Delete operation returned OK, but object still there?' raise error.SearchError(msg)
def delete(self, mac): """Deletes file self.tftp_root/pxelinux.cfg/01-<mac>""" mac = common.validate_mac(mac) mac_file = string.replace(mac, ":", "-") #Format for use on tftp filesystem dst = self.tftp_dir + self.tftp_prefix + mac_file #Make sure the file exists before deleting if os.path.lexists(dst): self.log.debug('Deleting link to mac %s' % mac) os.unlink(dst) else: msg = "Link to mac %s doesn't exist, can't delete" % mac raise error.NotFound, msg result = self.search(mac) if result['exit_code'] == 3 and result['count'] == 0: result['msg'] = "Deleted %s" % result['type'] return result else: msg = 'Delete operation returned OK, but object still there?' raise error.SearchError(msg)
def delete(self, vm_name): '''Remove a definition from store, will fail on xen if machine is running''' if vm_name == None: msg = "InputError: vm name must be specified with delete." raise error.InputError(msg) try: dom = self.conn.lookupByName(vm_name) except libvirt.libvirtError: msg = "VM definition for %s doesn't exist, can't delete." % vm_name raise error.NotFound(msg) try: dom.undefine() except libvirt.libvirtError: msg = "VM %s is running (shutdown first?), can't delete." % vm_name raise error.VMRunning(msg) #self.conn.close() result = self.get(vm_name) if result['exit_code'] == 3 and result['count'] == 0: result['msg'] = "Deleted %s:" % result['type'] return result else: msg = 'Delete operation returned OK, but object still there?' raise error.SearchError(msg)