diff options
author | John Eckersberg <jeckersb@redhat.com> | 2008-02-04 16:10:58 -0500 |
---|---|---|
committer | John Eckersberg <jeckersb@redhat.com> | 2008-02-04 16:10:58 -0500 |
commit | 323f05de0a3ace6fd39bb75e97ce2ac52db2fa63 (patch) | |
tree | 7e481562a324a034bb808c6f9243f1b3478f75cf | |
parent | d4a45d1e6fffd04fef17621d996abfac7183306f (diff) | |
download | third_party-func-323f05de0a3ace6fd39bb75e97ce2ac52db2fa63.tar.gz third_party-func-323f05de0a3ace6fd39bb75e97ce2ac52db2fa63.tar.xz third_party-func-323f05de0a3ace6fd39bb75e97ce2ac52db2fa63.zip |
Add overlord netapp module so we can create filer objects. Hot.
-rw-r--r-- | func.spec | 1 | ||||
-rw-r--r-- | func/overlord/modules/netapp.py | 82 | ||||
-rw-r--r-- | setup.py | 1 |
3 files changed, 84 insertions, 0 deletions
@@ -71,6 +71,7 @@ rm -fr $RPM_BUILD_ROOT %{python_sitelib}/func/minion/*.py* %{python_sitelib}/func/overlord/*.py* %{python_sitelib}/func/overlord/cmd_modules/*.py* +%{python_sitelib}/func/overlord/modules/*.py* %{python_sitelib}/func/*.py* %dir %{python_sitelib}/func/minion/modules %{python_sitelib}/func/minion/modules/*.py* diff --git a/func/overlord/modules/netapp.py b/func/overlord/modules/netapp.py new file mode 100644 index 0000000..987901e --- /dev/null +++ b/func/overlord/modules/netapp.py @@ -0,0 +1,82 @@ +## +## Overlord library to interface with minion-side netapp operations +## +## Most of this is just wrappers to create some cleaner, earier to use +## interfaces. Also allows users to get function signatures and use +## nice things like kwargs client side, for those of us who can't live +## without ipython introspection. +## +## Copyright 2008, Red Hat, Inc +## John Eckersberg <jeckersb@redhat.com> +## +## This software may be freely redistributed under the terms of the GNU +## general public license. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## + +from func.overlord.client import Client + +class RemoteError(Exception): pass + +def _(res): + if type(res) == type([]) and res[0] == 'REMOTE_ERROR': + raise RemoteError, res[2] + else: + return res + +class Filer(Client): + def __init__(self, filer, admin_host): + Client.__init__(self, admin_host) + self.filer = filer + self.admin_host = admin_host + + def create_volume(self, vol, aggr, size): + return _(self.netapp.vol.create(self.filer, vol, aggr, size)[self.admin_host]) + + def destroy_volume(self, vol): + # offline it first + try: + self.netapp.vol.offline(self.filer, vol) + except: + pass + return _(self.netapp.vol.destroy(self.filer, vol)[self.admin_host]) + + def offline_volume(self, vol): + return _(self.netapp.vol.offline(self.filer, vol)[self.admin_host]) + + def online_volume(self, vol): + return _(self.netapp.vol.online(self.filer, vol)[self.admin_host]) + + def get_volume_size(self, vol): + return _(self.netapp.vol.size(self.filer, vol)[self.admin_host]) + + def resize_volume(self, vol, delta): + return _(self.netapp.vol.size(self.filer, vol, delta)[self.admin_host]) + + def create_snapshot(self, vol, snap): + return _(self.netapp.snap.create(self.filer, vol, snap)[self.admin_host]) + + def delete_snapshot(self, vol, snap): + return _(self.netapp.snap.delete(self.filer, vol, snap)[self.admin_host]) + + def create_clone_volume(self, vol, parent, snap): + return _(self.netapp.vol.clone.create(self.filer, vol, parent, snap)[self.admin_host]) + + def split_clone_volume(self, vol): + return _(self.netapp.vol.clone.split(self.filer, vol)[self.admin_host]) + + def list_volumes(self): + vols = _(self.netapp.vol.status(self.filer)) + return_list = [] + for vol in vols: + return_list.append(vol['name']) + return return_list + + def volume_details(self, vol=None): + if vol: + return _(self.netapp.vol.status(self.filer, vol)[self.admin_host]) + else: + return _(self.netapp.vol.status(self.filer)[self.admin_host]) @@ -42,6 +42,7 @@ if __name__ == "__main__": "%s/minion" % NAME, "%s/overlord" % NAME, "%s/overlord/cmd_modules" % NAME, + "%s/overlord/modules" % NAME, "%s/minion/modules" % NAME, # FIXME if there's a clean/easy way to recursively # find modules then by all means do it, for now |