fix access_key
[sfa.git] / sfa / openstack / euca_shell.py
1 try:
2     import boto
3     from boto.ec2.regioninfo import RegionInfo
4     from boto.exception import EC2ResponseError
5     has_boto=True
6 except:
7     has_boto=False    
8
9 from sfa.util.sfalogging import logger
10 from sfa.openstack.nova_shell import NovaShell
11 from sfa.util.config import Config
12
13 class EucaShell:
14     """
15     A xmlrpc connection to the euca api. 
16     """    
17
18     def __init__(self, config):
19         self.config = config
20
21     def get_euca_connection(self):
22         if not has_boto:
23             logger.info('Unable to access EC2 API - boto library not found.')
24             return None
25         nova = NovaShell(self.config)
26         admin_user = nova.auth_manager.get_user(self.config.SFA_NOVA_USER)
27         #access_key = admin_user.access
28         access_key = '%s' % admin_user.name
29         secret_key = admin_user.secret
30         url = self.config.SFA_NOVA_API_URL
31         host = None
32         port = None    
33         path = "/"
34         use_ssl = False
35         # Split the url into parts 
36         if url.find('https://') >= 0:
37             use_ssl  = True
38             url = url.replace('https://', '')
39         elif url.find('http://') >= 0:
40             use_ssl  = False
41             url = url.replace('http://', '')
42         parts = url.split(':')
43         host = parts[0]
44         if len(parts) > 1:
45             parts = parts[1].split('/')
46             port = int(parts[0])
47             parts = parts[1:]
48             path = '/'+'/'.join(parts)
49         return boto.connect_ec2(aws_access_key_id=access_key,
50                                 aws_secret_access_key=secret_key,
51                                 is_secure=use_ssl,
52                                 region=RegionInfo(None, 'eucalyptus', host),
53                                 host=host,
54                                 port=port,
55                                 path=path) 
56
57     def __getattr__(self, name):
58         def func(*args, **kwds):
59             conn = self.get_euca_connection()
60