summaryrefslogtreecommitdiff
path: root/cinder/privsep
diff options
context:
space:
mode:
authorChuck Short <chucks@redhat.com>2018-07-04 15:35:37 -0400
committerChuck Short <chucks@redhat.com>2018-07-05 08:11:01 -0400
commit5c1b5cbad720b3d309152aaa0f54ad0bedb01aac (patch)
tree0ee2f2afea535db4485697ca2aaf9ba871321482 /cinder/privsep
parent52deeff8d2519c1700aa880d3fae0bb0e83ea86c (diff)
downloadcinder-5c1b5cbad720b3d309152aaa0f54ad0bedb01aac.tar.gz
Port nvmet driver to use privsep
Now that we have privsep support in cinder, we can start using privsep in various drivers so we can drop rootwrap support. Change-Id: I3cff61b4cde16e00ad23d534c5281a2f1afcd29f Signed-off-by: Chuck Short <chucks@redhat.com>
Diffstat (limited to 'cinder/privsep')
-rw-r--r--cinder/privsep/nvmcli.py41
-rw-r--r--cinder/privsep/utils.py39
2 files changed, 80 insertions, 0 deletions
diff --git a/cinder/privsep/nvmcli.py b/cinder/privsep/nvmcli.py
new file mode 100644
index 000000000..95f5b1c56
--- /dev/null
+++ b/cinder/privsep/nvmcli.py
@@ -0,0 +1,41 @@
+# Copyright 2018 Red Hat, Inc
+# Copyright 2017 Rackspace Australia
+# Copyright 2018 Michael Still and Aptira
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Helpers for nvmetcli related routines.
+"""
+
+from oslo_concurrency import processutils
+
+import cinder.privsep
+
+
+@cinder.privsep.sys_admin_pctxt.entrypoint
+def restore(path):
+ cmd = [
+ 'nvmetcli',
+ 'restore',
+ path]
+ return processutils.execute(*cmd)
+
+
+@cinder.privsep.sys_admin_pctxt.entrypoint
+def save(path):
+ cmd = [
+ 'nvmetcli',
+ 'save',
+ path]
+ return processutils.execute(*cmd)
diff --git a/cinder/privsep/utils.py b/cinder/privsep/utils.py
new file mode 100644
index 000000000..fc76c6e6c
--- /dev/null
+++ b/cinder/privsep/utils.py
@@ -0,0 +1,39 @@
+# Copyright 2018 Red Hat, Inc
+# Copyright 2017 Rackspace Australia
+# Copyright 2018 Michael Still and Aptira
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+Helpers for cgroup related routines.
+"""
+
+import os
+
+from cinder import exception
+import cinder.privsep
+
+
+@cinder.privsep.sys_admin_pctxt.entrypoint
+def readfile(path):
+ if not os.path.exists(path):
+ raise exception.FileNotFound(file_path=path)
+ with open(path, 'r') as f:
+ return f.read()
+
+
+@cinder.privsep.sys_admin_pctxt.entrypoint
+def removefile(path):
+ if not os.path.exists(path):
+ raise exception.FileNotFound(file_path=path)
+ os.unlink(path)