karbor/karbor/services/protection/rpcapi.py

191 lines
6.1 KiB
Python

# Copyright 2012, Red Hat, Inc.
#
# 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.
"""
Client side of the protection manager RPC API.
"""
from oslo_config import cfg
import oslo_messaging as messaging
from karbor.objects import base as objects_base
from karbor import rpc
CONF = cfg.CONF
class ProtectionAPI(object):
"""Client side of the protection rpc API.
API version history:
1.0 - Initial version.
"""
RPC_API_VERSION = '1.0'
def __init__(self):
super(ProtectionAPI, self).__init__()
target = messaging.Target(topic=CONF.protection_topic,
version=self.RPC_API_VERSION)
serializer = objects_base.KarborObjectSerializer()
self.client = rpc.get_client(target, version_cap=None,
serializer=serializer)
def restore(self, ctxt, restore=None, restore_auth=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'restore',
restore=restore,
restore_auth=restore_auth)
def verification(self, ctxt, verification=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'verification',
verification=verification)
def protect(self, ctxt, plan=None, checkpoint_properties=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'protect',
plan=plan,
checkpoint_properties=checkpoint_properties)
def copy(self, ctxt, plan=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'copy',
plan=plan)
def delete(self, ctxt, provider_id, checkpoint_id):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'delete',
provider_id=provider_id,
checkpoint_id=checkpoint_id)
def reset_state(self, ctxt, provider_id, checkpoint_id, state):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'reset_state',
provider_id=provider_id,
checkpoint_id=checkpoint_id,
state=state)
def show_checkpoint(self, ctxt, provider_id, checkpoint_id):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'show_checkpoint',
provider_id=provider_id,
checkpoint_id=checkpoint_id)
def list_checkpoints(self, ctxt, provider_id, marker=None,
limit=None, sort_keys=None,
sort_dirs=None, filters=None, all_tenants=False):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'list_checkpoints',
provider_id=provider_id,
marker=marker,
limit=limit,
sort_keys=sort_keys,
sort_dirs=sort_dirs,
filters=filters,
all_tenants=all_tenants
)
def list_protectable_types(self, ctxt):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'list_protectable_types')
def show_protectable_type(self, ctxt, protectable_type=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'show_protectable_type',
protectable_type=protectable_type)
def list_protectable_instances(
self, ctxt, protectable_type=None,
marker=None, limit=None, sort_keys=None,
sort_dirs=None, filters=None, parameters=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'list_protectable_instances',
protectable_type=protectable_type,
marker=marker,
limit=limit,
sort_keys=sort_keys,
sort_dirs=sort_dirs,
filters=filters,
parameters=parameters)
def list_protectable_dependents(self,
ctxt, protectable_id=None,
protectable_type=None,
protectable_name=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'list_protectable_dependents',
protectable_id=protectable_id,
protectable_type=protectable_type,
protectable_name=protectable_name)
def show_protectable_instance(self,
ctxt, protectable_type=None,
protectable_id=None,
parameters=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'show_protectable_instance',
protectable_type=protectable_type,
protectable_id=protectable_id,
parameters=parameters)
def show_provider(self,
ctxt, provider_id=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'show_provider',
provider_id=provider_id)
def list_providers(self, ctxt, marker=None, limit=None,
sort_keys=None,
sort_dirs=None, filters=None):
cctxt = self.client.prepare(version='1.0')
return cctxt.call(
ctxt,
'list_providers',
marker=marker,
limit=limit,
sort_keys=sort_keys,
sort_dirs=sort_dirs,
filters=filters)