aboutsummaryrefslogtreecommitdiffstats
path: root/tools/python/xen/xend/XendVnet.py
blob: 213408e11105a25a2cd2270a48e9e1a3124b2346 (plain)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Copyright (C) 2004 Mike Wray <mike.wray@hp.com>

"""Handler for vnet operations.
"""

import sxp
import XendDB

class XendVnet:
    """Index of all vnets. Singleton.
    """

    dbpath = "vnet"

    def __init__(self):
        # Table of vnet info indexed by vnet id.
        self.vnet = {}
        self.db = XendDB.XendDB(self.dbpath)
        self.vnet = self.db.fetchall("")

    def vnet_ls(self):
        """List all vnets.
        """
        return self.vnet.keys()

    def vnets(self):
        return self.vnet.values()

    def vnet_get(self, id):
        """Get a vnet.

        id	vnet id
        """
        return self.vnet.get(id)

    def vnet_create(self, info):
        """Create a vnet.

        info	config
        """
        self.vnet_configure(info)

    def vnet_configure(self, info):
        """Configure a vnet.
        id	vnet id
        info	config
        """
        # Need to configure for real.
        # Only sync if succeeded - otherwise need to back out.
        self.vnet[info.id] = info
        self.db.save(info.id, info)

    def vnet_delete(self, id):
        """Delete a vnet.

        id	vnet id
        """
        # Need to delete for real. What if fails?
        if id in self.vnet:
            del self.vnet[id]
            self.db.delete(id)

def instance():
    global inst
    try:
        inst
    except:
        inst = XendVnet()
    return inst