-from module import *
+from module import * # NOQA
"""
-High level status display for CephFS
+High level status display commands
"""
-from collections import defaultdict
-import logging
-import logging.config
-import json
+from collections import defaultdict
from prettytable import PrettyTable
import prettytable
osdmap = self.get("osd_map")
# Build dict of OSD ID to stats
- #return 0, "", json.dumps(self.get("osd_stats"))
osd_stats = dict([(o['osd'], o) for o in self.get("osd_stats")['osd_stats']])
for osd in osdmap['osds']:
-from module import *
+from module import * # NOQA
sys.modules["ceph_state"] = ceph_state
# Needed to avoid weird import loops
-from rest.module import global_instance
+from rest.module import global_instance # NOQA
from rest.app.serializers.v2 import ValidatingSerializer
import rest.app.serializers.fields as fields
from rest.app.types import CRUSH_RULE_TYPE_REPLICATED, \
CRUSH_RULE_TYPE_ERASURE, USER_REQUEST_COMPLETE, \
- USER_REQUEST_SUBMITTED, OSD_FLAGS, severity_str, SEVERITIES
+ USER_REQUEST_SUBMITTED, OSD_FLAGS
class ValidatingSerializer(serializers.Serializer):
+++ /dev/null
-
-"""
-Convenience classes for raising HTTP status codes as exceptions,
-in addition to rest_framework's builtin exception classes
-"""
-
-from rest_framework import status
-from rest_framework.exceptions import APIException
-
-
-class ServiceUnavailable(APIException):
- status_code = status.HTTP_503_SERVICE_UNAVAILABLE
- default_detail = "Service unavailable"
"""
Helpers for writing django views and rest_framework ViewSets that get
-their data from cthulhu with zeroRPC
+their data from calls into the C++ side of ceph-mgr
"""
-from rest.app.manager.osd_request_factory import OsdRequestFactory
-from rest.app.manager.pool_request_factory import PoolRequestFactory
-
from rest_framework import viewsets, status
from rest_framework.views import APIView
from rest_framework.response import Response
-from rest.app.types import OsdMap, SYNC_OBJECT_STR_TYPE, OSD, OSD_MAP, POOL, CLUSTER, CRUSH_RULE, ServiceId,\
- NotFound, SERVER
-
+from rest.app.manager.osd_request_factory import OsdRequestFactory
+from rest.app.manager.pool_request_factory import PoolRequestFactory
+from rest.app.types import OsdMap, OSD, OSD_MAP, POOL, CRUSH_RULE, NotFound
from rest.module import global_instance as rest_plugin
from rest.logger import logger
Create and submit UserRequest for an apply, create, update or delete.
"""
- # nosleep during preparation phase (may touch ClusterMonitor/ServerMonitor state)
request_factory = self.get_request_factory(obj_type)
request = getattr(request_factory, method)(*args, **kwargs)
return True
# TODO: reinstate read vs. read/write limitations on API keys
- has_permission = False
+ # has_permission = False
# if request.user.groups.filter(name='readonly').exists():
# has_permission = request.method in SAFE_METHODS
# view.headers['Allow'] = ', '.join(SAFE_METHODS)
#
# return has_permission
+
class RPCView(APIView):
serializer_class = None
log = log
from collections import defaultdict
-import json
-import logging
-import shlex
from distutils.version import StrictVersion
from django.http import Http404
import rest_framework
-from rest_framework.exceptions import ParseError, APIException, PermissionDenied
+from rest_framework.exceptions import ParseError
from rest_framework.response import Response
-from rest_framework.decorators import api_view
-from rest_framework import status
-from django.contrib.auth.decorators import login_required
+from rest_framework import status
from rest.app.serializers.v2 import PoolSerializer, CrushRuleSetSerializer, \
CrushRuleSerializer, ServerSerializer, RequestSerializer, OsdSerializer, \
ConfigSettingSerializer, MonSerializer, OsdConfigSerializer
-from rest.app.views.exceptions import ServiceUnavailable
from rest.app.views.rpc_view import RPCViewSet, DataObject
from rest.app.types import CRUSH_RULE, POOL, OSD, USER_REQUEST_COMPLETE, \
- USER_REQUEST_SUBMITTED, OSD_IMPLEMENTED_COMMANDS, MON, OSD_MAP, \
- SYNC_OBJECT_TYPES, ServiceId, severity_from_str, SEVERITIES, \
- OsdMap, Config, MonMap, MonStatus, SYNC_OBJECT_STR_TYPE
+ USER_REQUEST_SUBMITTED, OSD_IMPLEMENTED_COMMANDS, OSD_MAP, \
+ SYNC_OBJECT_TYPES, OsdMap, Config, MonMap, MonStatus, SYNC_OBJECT_STR_TYPE
from rest.logger import logger
log = logger()
-#class RequestViewSet(RPCViewSet, PaginatedMixin):
class RequestViewSet(RPCViewSet):
"""
Calamari server requests, tracking long-running operations on the Calamari server. Some
osd_metadata = self.client.get_sync_object(OsdMap, ['osd_metadata'])
osd_id_to_hostname = dict(
- [(int(osd_id), osd_meta["hostname"]) for osd_id, osd_meta in
+ [(int(oid), osd_meta["hostname"]) for oid, osd_meta in
osd_metadata.items()])
-
osd['server'] = osd_id_to_hostname.get(osd['osd'], None)
pools = self.client.get_sync_object(OsdMap, ['osd_pools', int(osd_id)])
obj = obj[part]
else:
obj = getattr(obj, part)
- except (AttributeError, KeyError) as e:
+ except (AttributeError, KeyError):
raise NotFound(object_type, path)
return obj