summaryrefslogtreecommitdiffstats
path: root/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py
diff options
context:
space:
mode:
authorbobzhou <zhoubo8@lenovo.com>2018-12-17 17:41:39 +0800
committerbobzhou <zhoubo8@lenovo.com>2018-12-17 17:41:39 +0800
commit31560e9a26e6a7e2e65d18924c938ee7a7683fb3 (patch)
tree26ec12331a2ec612a0f51c7866fbe41262ca0fe1 /cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py
parentfc1b7908a77b5cce763f92b3d314057345f3ab7a (diff)
upload cyborg base mitaka version
Change-Id: Iff52024026c9eff899246be70cc89fe6e65befff Signed-off-by: bobzhou <zhoubo8@lenovo.com>
Diffstat (limited to 'cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py')
-rw-r--r--cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py134
1 files changed, 134 insertions, 0 deletions
diff --git a/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py b/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py
new file mode 100644
index 0000000..3b08955
--- /dev/null
+++ b/cyborg_enhancement/mitaka_version/cyborg/cyborg/db/api.py
@@ -0,0 +1,134 @@
+# Copyright 2017 Huawei Technologies Co.,LTD.
+# All Rights Reserved.
+#
+# 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.
+
+"""Base classes for storage engines."""
+
+import abc
+
+from oslo_config import cfg
+from oslo_db import api as db_api
+import six
+
+
+_BACKEND_MAPPING = {'sqlalchemy': 'cyborg.db.sqlalchemy.api'}
+IMPL = db_api.DBAPI.from_config(cfg.CONF,
+ backend_mapping=_BACKEND_MAPPING,
+ lazy=True)
+
+
+def get_instance():
+ """Return a DB API instance."""
+ return IMPL
+
+
+@six.add_metaclass(abc.ABCMeta)
+class Connection(object):
+ """Base class for storage system connections."""
+
+ @abc.abstractmethod
+ def __init__(self):
+ """Constructor."""
+
+ # accelerator
+ @abc.abstractmethod
+ def accelerator_create(self, context, values):
+ """Create a new accelerator."""
+
+ @abc.abstractmethod
+ def accelerator_get(self, context, uuid):
+ """Get requested accelerator."""
+
+ @abc.abstractmethod
+ def accelerator_list(self, context, limit, marker, sort_key, sort_dir, project_only):
+ """Get requested list accelerators."""
+
+ @abc.abstractmethod
+ def accelerator_update(self, context, uuid, values):
+ """Update an accelerator."""
+
+ @abc.abstractmethod
+ def accelerator_destory(self, context, uuid):
+ """Delete an accelerator."""
+
+ #ports
+ @abc.abstractmethod
+ def port_create(self, context, values):
+ """Create a new port."""
+
+ @abc.abstractmethod
+ def port_get(self, context, uuid):
+ """Get requested port."""
+
+ @abc.abstractmethod
+ def port_list(self, context, limit, marker, sort_key, sort_dir):
+ """Get requested list ports."""
+
+ @abc.abstractmethod
+ def port_update(self, context, uuid, values):
+ """Update a port."""
+
+ @abc.abstractmethod
+ def port_destory(self, context, uuid):
+ """Delete a port."""
+
+ #deployable
+ @abc.abstractmethod
+ def deployable_create(self, context, values):
+ """Create a new deployable."""
+
+ @abc.abstractmethod
+ def deployable_get(self, context, uuid):
+ """Get requested deployable."""
+
+ @abc.abstractmethod
+ def deployable_get_by_host(self, context, host):
+ """Get requested deployable by host."""
+
+ @abc.abstractmethod
+ def deployable_list(self, context):
+ """Get requested list of deployables."""
+
+ @abc.abstractmethod
+ def deployable_update(self, context, uuid, values):
+ """Update a deployable."""
+
+ @abc.abstractmethod
+ def deployable_delete(self, context, uuid):
+ """Delete a deployable."""
+
+ @abc.abstractmethod
+ def deployable_get_by_filters(self, context,
+ filters, sort_key='created_at',
+ sort_dir='desc', limit=None,
+ marker=None, columns_to_join=None):
+ """Get requested deployable by filter."""
+
+ #attribute table
+ @abc.abstractmethod
+ def attribute_create(self, context, key, value):
+ """Create a new attribute."""
+
+ @abc.abstractmethod
+ def attribute_get(self, context, uuid):
+ """Get requested attribute."""
+
+ @abc.abstractmethod
+ def attribute_update(self, context, uuid, key, value):
+ """Update an attribute's key value pair."""
+
+ @abc.abstractmethod
+ def attribute_delete(self, context, uuid):
+ """Delete an attribute."""
+