コード例 #1
0
ファイル: vmops.py プロジェクト: pombredanne/nova
 def ip6_dict(ip6):
     return {
         "ip": utils.to_global_ipv6(network['cidr_v6'],
                                    instance['mac_address']),
         "netmask": network['netmask_v6'],
         "gateway": network['gateway_v6'],
         "enabled": "1"}
コード例 #2
0
ファイル: vmops.py プロジェクト: septimius/nova
 def ip6_dict(ip6):
     return {
         "ip":
         utils.to_global_ipv6(network['cidr_v6'],
                              instance['mac_address']),
         "netmask":
         network['netmask_v6'],
         "gateway":
         network['gateway_v6'],
         "enabled":
         "1"
     }
コード例 #3
0
ファイル: base.py プロジェクト: septimius/nova
 def test_private_ipv6(self):
     """Make sure ipv6 is OK"""
     if FLAGS.use_ipv6:
         instance_ref = self._create_instance(0)
         address = self._create_address(0, instance_ref['id'])
         network_ref = db.project_get_network(context.get_admin_context(),
                                              self.context.project_id)
         address_v6 = db.instance_get_fixed_address_v6(
             context.get_admin_context(), instance_ref['id'])
         self.assertEqual(instance_ref['mac_address'],
                          utils.to_mac(address_v6))
         instance_ref2 = db.fixed_ip_get_instance_v6(
             context.get_admin_context(), address_v6)
         self.assertEqual(instance_ref['id'], instance_ref2['id'])
         self.assertEqual(
             address_v6,
             utils.to_global_ipv6(network_ref['cidr_v6'],
                                  instance_ref['mac_address']))
         self._deallocate_address(0, address)
         db.instance_destroy(context.get_admin_context(),
                             instance_ref['id'])
コード例 #4
0
ファイル: test_network.py プロジェクト: anotherjesse/nova
 def test_private_ipv6(self):
     """Make sure ipv6 is OK"""
     if FLAGS.use_ipv6:
         instance_ref = self._create_instance(0)
         address = self._create_address(0, instance_ref['id'])
         network_ref = db.project_get_network(
                                              context.get_admin_context(),
                                              self.context.project_id)
         address_v6 = db.instance_get_fixed_address_v6(
                                              context.get_admin_context(),
                                              instance_ref['id'])
         self.assertEqual(instance_ref['mac_address'],
                          utils.to_mac(address_v6))
         instance_ref2 = db.fixed_ip_get_instance_v6(
                                              context.get_admin_context(),
                                              address_v6)
         self.assertEqual(instance_ref['id'], instance_ref2['id'])
         self.assertEqual(address_v6,
                          utils.to_global_ipv6(
                                              network_ref['cidr_v6'],
                                              instance_ref['mac_address']))
コード例 #5
0
ファイル: cloud.py プロジェクト: yosh/nova
    def _format_instances(self, context, instance_id=None, **kwargs):
        # TODO(termie): this method is poorly named as its name does not imply
        #               that it will be making a variety of database calls
        #               rather than simply formatting a bunch of instances that
        #               were handed to it
        reservations = {}
        # NOTE(vish): instance_id is an optional list of ids to filter by
        if instance_id:
            instances = []
            for ec2_id in instance_id:
                internal_id = ec2_id_to_id(ec2_id)
                instance = self.compute_api.get(context,
                                                instance_id=internal_id)
                instances.append(instance)
        else:
            instances = self.compute_api.get_all(context, **kwargs)
        for instance in instances:
            if not context.is_admin:
                if instance['image_id'] == FLAGS.vpn_image_id:
                    continue
            i = {}
            instance_id = instance['id']
            ec2_id = id_to_ec2_id(instance_id)
            i['instanceId'] = ec2_id
            i['imageId'] = instance['image_id']
            i['instanceState'] = {
                'code': instance['state'],
                'name': instance['state_description']}
            fixed_addr = None
            floating_addr = None
            if instance['fixed_ip']:
                fixed_addr = instance['fixed_ip']['address']
                if instance['fixed_ip']['floating_ips']:
                    fixed = instance['fixed_ip']
                    floating_addr = fixed['floating_ips'][0]['address']
                if instance['fixed_ip']['network'] and 'use_v6' in kwargs:
                    i['dnsNameV6'] = utils.to_global_ipv6(
                        instance['fixed_ip']['network']['cidr_v6'],
                        instance['mac_address'])

            i['privateDnsName'] = fixed_addr
            i['publicDnsName'] = floating_addr
            i['dnsName'] = i['publicDnsName'] or i['privateDnsName']
            i['keyName'] = instance['key_name']

            if context.is_admin:
                i['keyName'] = '%s (%s, %s)' % (i['keyName'],
                    instance['project_id'],
                    instance['host'])
            i['productCodesSet'] = self._convert_to_set([], 'product_codes')
            i['instanceType'] = instance['instance_type']
            i['launchTime'] = instance['created_at']
            i['amiLaunchIndex'] = instance['launch_index']
            i['displayName'] = instance['display_name']
            i['displayDescription'] = instance['display_description']
            host = instance['host']
            zone = self._get_availability_zone_by_host(context, host)
            i['placement'] = {'availabilityZone': zone}
            if instance['reservation_id'] not in reservations:
                r = {}
                r['reservationId'] = instance['reservation_id']
                r['ownerId'] = instance['project_id']
                security_group_names = []
                if instance.get('security_groups'):
                    for security_group in instance['security_groups']:
                        security_group_names.append(security_group['name'])
                r['groupSet'] = self._convert_to_set(security_group_names,
                                                     'groupId')
                r['instancesSet'] = []
                reservations[instance['reservation_id']] = r
            reservations[instance['reservation_id']]['instancesSet'].append(i)

        return list(reservations.values())
コード例 #6
0
ファイル: cloud.py プロジェクト: termie/nova-migration-demo
    def _format_instances(self, context, instance_id=None, **kwargs):
        # TODO(termie): this method is poorly named as its name does not imply
        #               that it will be making a variety of database calls
        #               rather than simply formatting a bunch of instances that
        #               were handed to it
        reservations = {}
        # NOTE(vish): instance_id is an optional list of ids to filter by
        if instance_id:
            instances = []
            for ec2_id in instance_id:
                internal_id = ec2utils.ec2_id_to_id(ec2_id)
                instance = self.compute_api.get(context,
                                                instance_id=internal_id)
                instances.append(instance)
        else:
            instances = self.compute_api.get_all(context, **kwargs)
        for instance in instances:
            if not context.is_admin:
                if instance['image_id'] == str(FLAGS.vpn_image_id):
                    continue
            i = {}
            instance_id = instance['id']
            ec2_id = ec2utils.id_to_ec2_id(instance_id)
            i['instanceId'] = ec2_id
            i['imageId'] = self.image_ec2_id(instance['image_id'])
            i['instanceState'] = {
                'code': instance['state'],
                'name': instance['state_description']
            }
            fixed_addr = None
            floating_addr = None
            if instance['fixed_ip']:
                fixed_addr = instance['fixed_ip']['address']
                if instance['fixed_ip']['floating_ips']:
                    fixed = instance['fixed_ip']
                    floating_addr = fixed['floating_ips'][0]['address']
                if instance['fixed_ip']['network'] and 'use_v6' in kwargs:
                    i['dnsNameV6'] = utils.to_global_ipv6(
                        instance['fixed_ip']['network']['cidr_v6'],
                        instance['mac_address'])

            i['privateDnsName'] = fixed_addr
            i['privateIpAddress'] = fixed_addr
            i['publicDnsName'] = floating_addr
            i['ipAddress'] = floating_addr or fixed_addr
            i['dnsName'] = i['publicDnsName'] or i['privateDnsName']
            i['keyName'] = instance['key_name']

            if context.is_admin:
                i['keyName'] = '%s (%s, %s)' % (
                    i['keyName'], instance['project_id'], instance['host'])
            i['productCodesSet'] = self._convert_to_set([], 'product_codes')
            if instance['instance_type']:
                i['instanceType'] = instance['instance_type'].get('name')
            else:
                i['instanceType'] = None
            i['launchTime'] = instance['created_at']
            i['amiLaunchIndex'] = instance['launch_index']
            i['displayName'] = instance['display_name']
            i['displayDescription'] = instance['display_description']
            host = instance['host']
            zone = self._get_availability_zone_by_host(context, host)
            i['placement'] = {'availabilityZone': zone}
            if instance['reservation_id'] not in reservations:
                r = {}
                r['reservationId'] = instance['reservation_id']
                r['ownerId'] = instance['project_id']
                security_group_names = []
                if instance.get('security_groups'):
                    for security_group in instance['security_groups']:
                        security_group_names.append(security_group['name'])
                r['groupSet'] = self._convert_to_set(security_group_names,
                                                     'groupId')
                r['instancesSet'] = []
                reservations[instance['reservation_id']] = r
            reservations[instance['reservation_id']]['instancesSet'].append(i)

        return list(reservations.values())