Exemplo n.º 1
0
Arquivo: api.py Projeto: tpot/dwarf
def _route_images_id(dummy_tenant_id, image_id):
    """
    Route:  /v1.1/<dummy_tenant_id>/images/<image_id>
    Method: GET
    """
    utils.show_request(bottle.request)

    # nova image-list
    if image_id == 'detail':
        return {'images': IMAGES.list()}

    # nova image-show <image_id>
    return {'image': IMAGES.show(image_id)}
Exemplo n.º 2
0
    def boot(self, server):
        """
        Boot a new server
        """
        LOG.info('boot(server=%s)', server)

        name = server['name']
        image_id = server['imageRef']
        flavor_id = server['flavorRef']
        key_name = server.get('key_name', None)

        # Sanity checks, will throw exceptions if they fail
        IMAGES.exists(image_id)
        FLAVORS.exists(flavor_id)
        if key_name is not None:
            KEYPAIRS.exists(key_name)

        # Create a new server in the database
        server = DB.servers.create(name=name, image_id=image_id,
                                   flavor_id=flavor_id, key_name=key_name,
                                   status='BUILDING')
        server_id = server['id']

        # Generate some more server properties and update the database
        mac_address = _generate_mac()
        server = DB.servers.update(id=server_id, mac_address=mac_address)

        # Extend the server details
        server = self._extend(server)

        # Create the server directory
        basepath = os.path.join(CONF.instances_dir, server_id)
        os.makedirs(basepath)

        # Create the server disk images
        _create_disks(server)

        # Finally boot the server
        VIRT.boot_server(server)

        # Update the status of the server
        server = DB.servers.update(id=server_id, status='NETWORKING')

        # Start a task to wait for the server to get its DHCP IP address
        task.start(server_id, 2, 60/2, [True], self._wait_for_ip, server)

        return utils.sanitize(server, SERVERS_DETAIL)
Exemplo n.º 3
0
Arquivo: api.py Projeto: tpot/dwarf
def _route_images(dummy_tenant_id):
    """
    Route:  /v1.1/<dummy_tenant_id>/images
    Method: GET
    """
    utils.show_request(bottle.request)

    return {'images': IMAGES.list(detail=False)}
Exemplo n.º 4
0
    def _extend(self, server):
        """
        Extend server details
        """
        if 'image_id' in server:
            server['image'] = IMAGES.show(server['image_id'])
            del server['image_id']

        if 'flavor_id' in server:
            server['flavor'] = FLAVORS.show(server['flavor_id'])
            del server['flavor_id']

        if 'ip' in server:
            server['addresses'] = {'private': [{'addr': server['ip'],
                                                'version': 4}]}
            del server['ip']

        return server