Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

# vim: tabstop=4 shiftwidth=4 softtabstop=4 

 

# Copyright 2012 OpenStack LLC 

# 

# 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. 

 

from keystone import exception 

 

 

class DictKvs(dict): 

    def get(self, key, default=None): 

        try: 

            if isinstance(self[key], dict): 

                return self[key].copy() 

            else: 

                return self[key][:] 

        except KeyError: 

            if default is not None: 

                return default 

            raise exception.NotFound(target=key) 

 

    def set(self, key, value): 

        if isinstance(value, dict): 

            self[key] = value.copy() 

        else: 

            self[key] = value[:] 

 

    def delete(self, key): 

        """Deletes an item, returning True on success, False otherwise.""" 

        try: 

            del self[key] 

        except KeyError: 

            raise exception.NotFound(target=key) 

 

 

INMEMDB = DictKvs() 

 

 

class Base(object): 

    def __init__(self, db=None): 

        if db is None: 

            db = INMEMDB 

55        elif isinstance(db, dict): 

            db = DictKvs(db) 

        self.db = db