Browse Source

Initial commit

Matthias Vogelgesang 8 years ago
commit
e29c14f7b7
5 changed files with 84 additions and 0 deletions
  1. 4 0
      .gitignore
  2. 0 0
      concert_astor/__init__.py
  3. 21 0
      concert_astor/proposal.py
  4. 49 0
      concert_astor/workspace.py
  5. 10 0
      setup.py

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+build/
+dist/
+*.egg-info
+*.pyc

+ 0 - 0
concert_astor/__init__.py


+ 21 - 0
concert_astor/proposal.py

@@ -0,0 +1,21 @@
+import PyTango
+from concert.networking.base import get_tango_device
+
+
+class Emma(object):
+
+	def __init__(self, uri='anka/astor/emma'):
+		self.device = get_tango_device(uri)
+
+	@property
+	def running(self):
+		return self.device.State() == PyTango._PyTango.DevState.RUNNING
+
+	@property
+	def proposal_id(self):
+		return self.device.ProposalId
+
+	@property
+	def metadata(self):
+		return json.loads(self.device.ProposalMetadata)
+

+ 49 - 0
concert_astor/workspace.py

@@ -0,0 +1,49 @@
+import os
+from concert.networking.base import get_tango_device
+
+
+class Workspace(object):
+
+	# FIXME: we should actually get absolute paths
+	ROOT = os.path.expanduser('~')
+
+	def __init__(self, penny, name):
+		self.penny = penny
+		self.name = name
+
+	@property
+	def path(self):
+		return os.path.join(self.ROOT, self.penny.device.GetPath(self.name))
+
+	def close(self):
+		self.penny.close(self.name)
+
+	def free(self):
+		self.penny.free(self.name)
+
+	def delete(self):
+		self.penny.delete(self.name)
+
+
+class Penny(object):
+
+	def __init__(self, uri='anka/astor/penny'):
+		self.device = get_tango_device(uri)
+
+	@property
+	def workspaces(self):
+		return json.loads(self.device.WorkspaceList).keys()
+
+	def create(self, name):
+		self.device.Create(name)
+		return Workspace(self, name)
+
+	def close(self, name):
+		self.device.Close(name)
+
+	def free(self, name):
+		self.device.Free(name)
+
+	def delete(self, name):
+		self.device.Delete(name)
+

+ 10 - 0
setup.py

@@ -0,0 +1,10 @@
+from setuptools import setup, find_packages
+
+setup(
+	name='Concert-Astor',
+	description='ASTOR extension for Concert',
+	packages=find_packages(),
+	install_requires=[
+		'Concert>=0.10'
+	]
+)