diff options
-rw-r--r-- | cobbler/remote.py | 16 | ||||
-rw-r--r-- | cobbler/webui/CobblerWeb.py | 41 | ||||
-rw-r--r-- | docs/WUI_TODO | 4 |
3 files changed, 48 insertions, 13 deletions
diff --git a/cobbler/remote.py b/cobbler/remote.py index e559ab5..c814a6e 100644 --- a/cobbler/remote.py +++ b/cobbler/remote.py @@ -611,7 +611,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): of the distro, not a handle. """ self.__validate_token(token) - return self.api._config.distros().remove(name) + rc = self.api._config.distros().remove(name) + self.api.serialize() + return rc def profile_remove(self,name,token): """ @@ -619,7 +621,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): of the profile, not a handle. """ self.__validate_token(token) - return self.api._config.profiles().remove(name) + rc = self.api._config.profiles().remove(name) + self.api.serialize() + return rc def system_remove(self,name,token): """ @@ -627,7 +631,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): of the system, not a handle. """ self.__validate_token(token) - return self.api._config.systems().remove(name) + rc = self.api._config.systems().remove(name) + self.api.serialize() + return rc def repo_remove(self,name,token): """ @@ -635,7 +641,9 @@ class CobblerReadWriteXMLRPCInterface(CobblerXMLRPCInterface): of the repo, not a handle. """ self.__validate_token(token) - return self.api._config.repos().remove(name) + rc = self.api._config.repos().remove(name) + self.api.serialize() + return rc def sync(self,token): """ diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py index ed6df8b..53567fb 100644 --- a/cobbler/webui/CobblerWeb.py +++ b/cobbler/webui/CobblerWeb.py @@ -243,6 +243,7 @@ class CobblerWeb(object): if not self.__xmlrpc_setup(): return self.login(message="") + # handle deletes as a special case if new_or_edit == 'edit' and delete1 and delete2: try: self.remote.distro_remove(name,self.token) @@ -285,7 +286,7 @@ class CobblerWeb(object): log_exc() return self.error_page("Error while saving distro: %s" % str(e)) - return self.distro_edit(name=name) + return self.distro_list() # ------------------------------------------------------------------------ # # Systems @@ -308,7 +309,7 @@ class CobblerWeb(object): # FIXME: implement handling of delete1, delete2 + renames def system_save(self, name=None, profile=None, new_or_edit=None, mac=None, ip=None, hostname=None, - kopts=None, ksmeta=None, netboot='n', dhcp_tag=None, **args): + kopts=None, ksmeta=None, netboot='n', dhcp_tag=None, delete1=None, delete2=None, **args): if not self.__xmlrpc_setup(): return self.login(message="") @@ -316,6 +317,16 @@ class CobblerWeb(object): # parameter checking if name is None: return self.error_page("System name parameter is REQUIRED.") + + # handle deletes as a special case + if new_or_edit == 'edit' and delete1 and delete2: + try: + self.remote.system_remove(name,self.token) + except Exception, e: + return self.error_page("could not delete %s, %s" % (name,str(e))) + return self.system_list() + + # more parameter checking if mac is None and ip is None and hostname is None and not is_mac(name): return self.error_page("System must have at least one of MAC/IP/hostname.") if hostname and not ip: @@ -357,7 +368,7 @@ class CobblerWeb(object): # FIXME: get the exact error message and display to the user. log_exc() return self.error_page("Error while saving system: %s" % str(e)) - return self.system_edit( name=name) + return self.system_list() def system_edit(self, name=None): @@ -407,7 +418,7 @@ class CobblerWeb(object): def profile_save(self,new_or_edit=None, name=None,distro=None,kickstart=None,kopts=None, ksmeta=None,virtfilesize=None,virtram=None,virttype=None, - virtpath=None,repos=None,dhcptag=None,**args): + virtpath=None,repos=None,dhcptag=None,delete1=None,delete2=None,**args): if not self.__xmlrpc_setup(): return self.login(message="") @@ -418,6 +429,14 @@ class CobblerWeb(object): if distro is None: return self.error_page("distro is required") + # handle deletes as a special case + if new_or_edit == 'edit' and delete1 and delete2: + try: + self.remote.profile_remove(name,self.token) + except Exception, e: + return self.error_page("could not delete %s, %s" % (name,str(e))) + return self.profile_list() + # grab a reference to the object if new_or_edit == "edit": try: @@ -453,7 +472,7 @@ class CobblerWeb(object): log_exc() return self.error_page("Error while saving profile: %s" % str(e)) - return self.profile_edit(name=name) + return self.profile_list() # ------------------------------------------------------------------------ # # Repos @@ -489,6 +508,16 @@ class CobblerWeb(object): # pre-command parameter checking if name is None: return self.error_page("name is required") + + # handle deletes as a special case + if new_or_edit == 'edit' and delete1 and delete2: + try: + self.remote.repo_remove(name,self.token) + except Exception, e: + return self.error_page("could not delete %s, %s" % (name,str(e))) + return self.repo_list() + + # more parameter checking if mirror is None: return self.error_page("mirror is required") @@ -517,7 +546,7 @@ class CobblerWeb(object): log_exc() return self.error_page("Error while saving repo: %s" % str(e)) - return self.repo_edit(name=name) + return self.repo_list() diff --git a/docs/WUI_TODO b/docs/WUI_TODO index 60b1bcd..ae6dfaf 100644 --- a/docs/WUI_TODO +++ b/docs/WUI_TODO @@ -2,10 +2,8 @@ Things to do on the Web User Interface - make fields wider that need to be wider (most can probably be ~128? Ksmeta/Kopts min 255) - modify form fields that should be radio boxes, etc (things like arch, breed) -- rename support for all distro, profile, system, repo objects +- rename (and/or copy?) support for all distro, profile, system, repo objects -- just detect when name changes, should not require a new form -- delete support for all distro, profile, system, repo objects - -- when both checkboxes are checked, process on same form - kickstart file editing and new kickstart file creation (if in /var/lib/cobbler/kickstarts) - sync button -- hook up to API. - ??? |