def prepare_nfs_share_parameters(**kwargs): default_access = kwargs.get('default_access') min_security = kwargs.get('min_security') NFSShareDefaultAccessEnum.verify(default_access) NFSShareSecurityEnum.verify(min_security) nfs_share_param = UnityClient.make_body( allow_empty=True, defaultAccess=default_access, minSecurity=min_security, noAccessHosts=kwargs.get('no_access_hosts'), readOnlyHosts=kwargs.get('read_only_hosts'), readWriteHosts=kwargs.get('read_write_hosts'), rootAccessHosts=kwargs.get('root_access_hosts'), readOnlyRootAccessHosts=kwargs.get('read_only_root_access_hosts'), noAccessHostsString=kwargs.get('no_access_hosts_string'), readOnlyHostsString=kwargs.get('read_only_hosts_string'), readWriteHostsString=kwargs.get('read_write_hosts_string'), readOnlyRootHostsString=kwargs.get('read_only_root_hosts_string'), readWriteRootHostsString=kwargs.get('root_access_hosts_string'), anonymousUID=kwargs.get('anonymous_uid'), anonymousGID=kwargs.get('anonymous_gid'), exportOption=kwargs.get('export_option'), description=kwargs.get('description')) return nfs_share_param
def modify(self, default_access=None, min_security=None, no_access_hosts=None, read_only_hosts=None, read_write_hosts=None, root_access_hosts=None, read_only_root_access_hosts=None, no_access_hosts_string=None, read_only_hosts_string=None, read_write_hosts_string=None, read_only_root_hosts_string=None, root_access_hosts_string=None, anonymous_uid=None, anonymous_gid=None, export_option=None, host_config=None, description=None): if host_config is not None: no_access_hosts = host_config.no_access root_access_hosts = host_config.root read_only_root_access_hosts = host_config.root_ro read_only_hosts = host_config.ro read_write_hosts = host_config.rw NFSShareDefaultAccessEnum.verify(default_access) NFSShareSecurityEnum.verify(min_security) clz = storops.unity.resource.host.UnityHostList no_access_hosts = clz.get_list(self._cli, no_access_hosts) read_only_hosts = clz.get_list(self._cli, read_only_hosts) read_write_hosts = clz.get_list(self._cli, read_write_hosts) root_access_hosts = clz.get_list(self._cli, root_access_hosts) read_only_root_access_hosts = clz.get_list( self._cli, read_only_root_access_hosts) nfs_share_param = self.prepare_nfs_share_parameters( default_access=default_access, min_security=min_security, no_access_hosts=no_access_hosts, read_only_hosts=read_only_hosts, read_write_hosts=read_write_hosts, root_access_hosts=root_access_hosts, read_only_root_access_hosts=read_only_root_access_hosts, no_access_hosts_string=no_access_hosts_string, read_only_hosts_string=read_only_hosts_string, read_write_hosts_string=read_write_hosts_string, read_only_root_hosts_string=read_only_root_hosts_string, root_access_hosts_string=root_access_hosts_string, anonymous_uid=anonymous_uid, anonymous_gid=anonymous_gid, export_option=export_option, description=description) if nfs_share_param: # different api for different type of share if self.type == NFSTypeEnum.NFS_SHARE: resp = self._modify_fs_share(nfs_share_param) elif self.type == NFSTypeEnum.NFS_SNAPSHOT: resp = self._modify_snap_share(nfs_share_param) else: raise UnityShareTypeNotSupportAccessControlError() else: resp = RestResponse('', self._cli) resp.raise_if_err() return resp
def create_from_snap(cls, cli, snap, name, path=None, is_read_only=None, default_access=None, min_security=None, no_access_hosts=None, read_only_hosts=None, read_write_hosts=None, root_access_hosts=None, read_only_root_access_hosts=None, no_access_hosts_string=None, read_only_hosts_string=None, read_write_hosts_string=None, read_only_root_hosts_string=None, root_access_hosts_string=None, anonymous_uid=None, anonymous_gid=None, export_option=None, description=None): snap_clz = storops.unity.resource.snap.UnitySnap snap = snap_clz.get(cli, snap) NFSShareDefaultAccessEnum.verify(default_access) NFSShareSecurityEnum.verify(min_security) if path is None: path = '/' clz = storops.unity.resource.host.UnityHostList no_access_hosts = clz.get_list(cli, no_access_hosts) read_only_hosts = clz.get_list(cli, read_only_hosts) read_write_hosts = clz.get_list(cli, read_write_hosts) root_access_hosts = clz.get_list(cli, root_access_hosts) read_only_root_access_hosts = clz.get_list( cli, read_only_root_access_hosts) share_param = cls.prepare_nfs_share_parameters( default_access=default_access, min_security=min_security, no_access_hosts=no_access_hosts, read_only_hosts=read_only_hosts, read_write_hosts=read_write_hosts, root_access_hosts=root_access_hosts, read_only_root_access_hosts=read_only_root_access_hosts, no_access_hosts_string=no_access_hosts_string, read_only_hosts_string=read_only_hosts_string, read_write_hosts_string=read_write_hosts_string, read_only_root_hosts_string=read_only_root_hosts_string, root_access_hosts_string=root_access_hosts_string, anonymous_uid=anonymous_uid, anonymous_gid=anonymous_gid, export_option=export_option, description=description) resp = cli.post( cls().resource_class, snap=snap, path=path, name=name, isReadOnly=is_read_only, **share_param) resp.raise_if_err() return cls(_id=resp.resource_id, cli=cli)
def create(cls, cli, name, fs, path=None, share_access=None): fs_clz = storops.unity.resource.filesystem.UnityFileSystem fs = fs_clz.get(cli, fs).verify() NFSShareDefaultAccessEnum.verify(share_access) sr = fs.storage_resource if path is None: path = '/' share_param = cli.make_body(defaultAccess=share_access) param = cli.make_body(name=name, path=path, nfsShareParameters=share_param) resp = sr.modify_fs(nfsShareCreate=[param]) resp.raise_if_err() return UnityNfsShareList(cli=cli, name=name).first_item
def create_from_snap(cls, cli, snap, name, path=None, is_read_only=None, default_access=None): snap_clz = storops.unity.resource.snap.UnitySnap snap = snap_clz.get(cli, snap) NFSShareDefaultAccessEnum.verify(default_access) if path is None: path = '/' resp = cli.post(cls().resource_class, snap=snap, path=path, name=name, isReadOnly=is_read_only, defaultAccess=default_access) resp.raise_if_err() return cls(_id=resp.resource_id, cli=cli)
def modify(self, default_access=None, min_security=None, no_access_hosts=None, read_only_hosts=None, read_write_hosts=None, root_access_hosts=None, host_config=None): if host_config is not None: no_access_hosts = host_config.no_access root_access_hosts = host_config.root read_only_hosts = host_config.ro read_write_hosts = host_config.rw NFSShareDefaultAccessEnum.verify(default_access) NFSShareSecurityEnum.verify(min_security) clz = storops.unity.resource.host.UnityHostList no_access_hosts = clz.get_list(self._cli, no_access_hosts) read_only_hosts = clz.get_list(self._cli, read_only_hosts) read_write_hosts = clz.get_list(self._cli, read_write_hosts) root_access_hosts = clz.get_list(self._cli, root_access_hosts) nfs_share_param = self._cli.make_body( allow_empty=True, defaultAccess=default_access, minSecurity=min_security, noAccessHosts=no_access_hosts, readOnlyHosts=read_only_hosts, readWriteHosts=read_write_hosts, rootAccessHosts=root_access_hosts) if nfs_share_param: # different api for different type of share if self.type == NFSTypeEnum.NFS_SHARE: resp = self._modify_fs_share(nfs_share_param) elif self.type == NFSTypeEnum.NFS_SNAPSHOT: resp = self._modify_snap_share(default_access, min_security, nfs_share_param) else: raise UnityShareTypeNotSupportAccessControlError() else: resp = RestResponse('', self._cli) resp.raise_if_err() return resp