~0x44/nova/bug838466

« back to all changes in this revision

Viewing changes to nova/virt/connection.py

  • Committer: Tarmac
  • Author(s): Ewan Mellor
  • Date: 2010-07-29 00:07:43 UTC
  • mfrom: (145.1.16 xenapi)
  • Revision ID: hudson@openstack.org-20100729000743-r1dtqr4nv9ndtjl3
Adds initial support for XenAPI (not yet finished)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vim: tabstop=4 shiftwidth=4 softtabstop=4
 
2
 
 
3
# Copyright 2010 United States Government as represented by the
 
4
# Administrator of the National Aeronautics and Space Administration.
 
5
# All Rights Reserved.
 
6
# Copyright (c) 2010 Citrix Systems, Inc.
 
7
#
 
8
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 
9
#    not use this file except in compliance with the License. You may obtain
 
10
#    a copy of the License at
 
11
#
 
12
#         http://www.apache.org/licenses/LICENSE-2.0
 
13
#
 
14
#    Unless required by applicable law or agreed to in writing, software
 
15
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 
16
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 
17
#    License for the specific language governing permissions and limitations
 
18
#    under the License.
 
19
 
 
20
from nova import flags
 
21
from nova.virt import fake
 
22
from nova.virt import libvirt_conn
 
23
from nova.virt import xenapi
 
24
 
 
25
 
 
26
FLAGS = flags.FLAGS
 
27
 
 
28
 
 
29
def get_connection(read_only=False):
 
30
    # TODO(termie): maybe lazy load after initial check for permissions
 
31
    # TODO(termie): check whether we can be disconnected
 
32
    t = FLAGS.connection_type
 
33
    if t == 'fake':
 
34
        conn = fake.get_connection(read_only)
 
35
    elif t == 'libvirt':
 
36
        conn = libvirt_conn.get_connection(read_only)
 
37
    elif t == 'xenapi':
 
38
        conn = xenapi.get_connection(read_only)
 
39
    else:
 
40
        raise Exception('Unknown connection type "%s"' % t)
 
41
 
 
42
    if conn is None:
 
43
        logging.error('Failed to open connection to the hypervisor')
 
44
        sys.exit(1)
 
45
    return conn