コード例 #1
0
def delete_image(client, image):
    try:
        server = client.servers.get(image.server_external_id)
    except novaclient.exceptions.NotFound:
        print '  Image server id %s not found' % image.server_external_id
        server = None

    if server:
        utils.delete_server(server)
        # Rackspace Nova sometimes lies about whether a server is deleted.
        # If we have deleted a server, don't believe it.  Instead, wait for
        # the next run of the script and only if the server doesn't exist,
        # delete it from Jenkins and the DB.
        return

    try:
        remote_image = client.images.get(image.external_id)
    except novaclient.exceptions.NotFound:
        print '  Image id %s not found' % image.external_id
        remote_image = None

    if remote_image:
        remote_image.delete()

    image.delete()
コード例 #2
0
def delete_machine(jenkins, client, machine):
    if machine.state != vmdatabase.DELETE:
        utils.log.debug("Set deleted ID: %s old state: %s" %
                        (machine.id, machine.state))
        machine.state = vmdatabase.DELETE

    try:
        server = client.servers.get(machine.external_id)
    except novaclient.exceptions.NotFound:
        print '  Machine id %s not found' % machine.external_id
        server = None

    if server:
        utils.delete_server(server)
        # Rackspace Nova sometimes lies about whether a server is deleted.
        # If we have deleted a server, don't believe it.  Instead, wait for
        # the next run of the script and only if the server doesn't exist,
        # delete it from Jenkins and the DB.
        utils.log.debug("Delete ID: %s" % machine.id)
        return

    if jenkins:
        if machine.jenkins_name:
            if jenkins.node_exists(machine.jenkins_name):
                jenkins.delete_node(machine.jenkins_name)
                utils.log.debug("Delete jenkins node ID: %s" % machine.id)

    machine.delete()
コード例 #3
0
def delete_machine(jenkins, client, machine):
    if machine.state != vmdatabase.DELETE:
        utils.log.debug("Set deleted ID: %s old state: %s" % (
                machine.id, machine.state))
        machine.state = vmdatabase.DELETE

    try:
        server = client.servers.get(machine.external_id)
    except novaclient.exceptions.NotFound:
        print '  Machine id %s not found' % machine.external_id
        server = None

    if server:
        utils.delete_server(server)
        # Rackspace Nova sometimes lies about whether a server is deleted.
        # If we have deleted a server, don't believe it.  Instead, wait for
        # the next run of the script and only if the server doesn't exist,
        # delete it from Jenkins and the DB.
        utils.log.debug("Delete ID: %s" % machine.id)
        return

    if jenkins:
        if machine.jenkins_name:
            if jenkins.node_exists(machine.jenkins_name):
                jenkins.delete_node(machine.jenkins_name)
                utils.log.debug("Delete jenkins node ID: %s" % machine.id)

    machine.delete()
コード例 #4
0
def delete_image(client, image):
    try:
        server = client.servers.get(image.server_external_id)
    except novaclient.exceptions.NotFound:
        print '  Image server id %s not found' % image.server_external_id
        server = None

    if server:
        utils.delete_server(server)
        # Rackspace Nova sometimes lies about whether a server is deleted.
        # If we have deleted a server, don't believe it.  Instead, wait for
        # the next run of the script and only if the server doesn't exist,
        # delete it from Jenkins and the DB.
        return

    try:
        remote_image = client.images.get(image.external_id)
    except novaclient.exceptions.NotFound:
        print '  Image id %s not found' % image.external_id
        remote_image = None

    if remote_image:
        remote_image.delete()

    image.delete()
コード例 #5
0
def build_server(
        client, name, image, flavor, cert, environment, puppetmaster, volume,
        keep, net_label, floating_ip_pool):
    key = None
    server = None

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    if net_label:
        nics = []
        for net in client.networks.list():
            if net.label == net_label:
                nics.append({'net-id': net.id})
        create_kwargs['nics'] = nics

    key_name = 'launch-%i' % (time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name
    try:
        server = client.servers.create(**create_kwargs)
    except Exception:
        try:
            kp.delete()
        except Exception:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        if volume:
            vobj = client.volumes.create_server_volume(
                server.id, volume, None)
            if not vobj:
                raise Exception("Couldn't attach volume")

        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         puppetmaster, volume, floating_ip_pool)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' % (server.id,
                                               server.accessIPv4,
                                               server.accessIPv6))
        if key:
            kp.delete()
    except Exception:
        try:
            if keep:
                print "Server failed to build, keeping as requested."
            else:
                utils.delete_server(server)
        except Exception:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #6
0
def build_server(
        client, name, image, flavor, cert, environment, puppetmaster, volume,
        keep, net_label, floating_ip_pool):
    key = None
    server = None

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    if net_label:
        nics = []
        for net in client.networks.list():
            if net.label == net_label:
                nics.append({'net-id': net.id})
        create_kwargs['nics'] = nics

    key_name = 'launch-%i' % (time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name
    try:
        server = client.servers.create(**create_kwargs)
    except Exception:
        try:
            kp.delete()
        except Exception:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        if volume:
            vobj = client.volumes.create_server_volume(
                server.id, volume, None)
            if not vobj:
                raise Exception("Couldn't attach volume")

        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         puppetmaster, volume, floating_ip_pool)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' % (server.id,
                                               server.accessIPv4,
                                               server.accessIPv6))
        if key:
            kp.delete()
    except Exception:
        try:
            if keep:
                print "Server failed to build, keeping as requested."
            else:
                utils.delete_server(server)
        except Exception:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #7
0
ファイル: launch-node.py プロジェクト: Tesora/tesora-config
def build_server(
        client, name, image, flavor, cert, environment, puppetmaster, volume,
        keep):
    key = None
    server = None

    # BH: HARDCODE
    nics = [{'net-id': u'b25625cc-2f6b-48c2-b740-08e2b0503a19'}]
    create_kwargs = dict(image=image, flavor=flavor, name=name, nics=nics)

    key_name = 'launch-%i' % (time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name
    try:
        server = client.servers.create(**create_kwargs)
    except Exception:
        try:
            kp.delete()
        except Exception:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        if volume:
            vobj = client.volumes.create_server_volume(
                server.id, volume, None)
            if not vobj:
                raise Exception("Couldn't attach volume")

        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         puppetmaster, volume)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' % (server.id,
                                               server.accessIPv4,
                                               server.accessIPv6))
        if key:
            kp.delete()
    except Exception:
        try:
            if keep:
                print "Server failed to build, keeping as requested."
            else:
                utils.delete_server(server)
        except Exception:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #8
0
def build_image(provider, client, base_image, image, flavor, name, branches,
                timestamp):
    print "Building image %s" % name

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    key = None
    key_name = '%sdevstack-%i' % (DEVSTACK_GATE_PREFIX, time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name

    server = client.servers.create(**create_kwargs)
    snap_image = base_image.newSnapshotImage(name=name,
                                             version=timestamp,
                                             external_id=None,
                                             server_external_id=server.id)
    admin_pass = server.adminPass
    try:
        print "Waiting for server ID %s" % server.id
        server = utils.wait_for_resource(server)
        bootstrap_server(provider, server, admin_pass, key)
        configure_server(server, branches)
        remote_snap_image = snapshot_server(client, server, name)
        snap_image.external_id = remote_snap_image.id
        snap_image.state = vmdatabase.READY
        # We made the snapshot, try deleting the server, but it's okay
        # if we fail.  The reap script will find it and try again.
        try:
            utils.delete_server(server)
        except:
            print "Exception encountered deleting server:"
            traceback.print_exc()
    except Exception:
        # Something went wrong, try our best to mark the server in error
        # then delete the server, then delete the db record for it.
        # If any of this fails, the reap script should catch it.  But
        # having correct info in the DB will help it do its job faster.
        try:
            snap_image.state = vmdatabase.ERROR
            try:
                utils.delete_server(server)
                snap_image.delete()
            except Exception:
                print "Exception encountered deleting server:"
                traceback.print_exc()
        except Exception:
            print "Exception encountered marking server in error:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #9
0
def build_image(provider, client, base_image, image,
                flavor, name, branches, timestamp):
    print "Building image %s" % name

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    key = None
    key_name = '%sdevstack-%i' % (DEVSTACK_GATE_PREFIX, time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name

    server = client.servers.create(**create_kwargs)
    snap_image = base_image.newSnapshotImage(name=name,
                                             version=timestamp,
                                             external_id=None,
                                             server_external_id=server.id)
    admin_pass = server.adminPass
    try:
        print "Waiting for server ID %s" % server.id
        server = utils.wait_for_resource(server)
        bootstrap_server(provider, server, admin_pass, key)
        configure_server(server, branches)
        remote_snap_image = snapshot_server(client, server, name)
        snap_image.external_id = remote_snap_image.id
        snap_image.state = vmdatabase.READY
        # We made the snapshot, try deleting the server, but it's okay
        # if we fail.  The reap script will find it and try again.
        try:
            pass  # XXX
            # utils.delete_server(server)
        except:
            print "Exception encountered deleting server:"
            traceback.print_exc()
    except Exception, real_error:
        # Something went wrong, try our best to mark the server in error
        # then delete the server, then delete the db record for it.
        # If any of this fails, the reap script should catch it.  But
        # having correct info in the DB will help it do its job faster.
        try:
            snap_image.state = vmdatabase.ERROR
            try:
                utils.delete_server(server)
                snap_image.delete()
            except Exception, delete_error:
                print "Exception encountered deleting server:"
                traceback.print_exc()
        except Execption, database_error:
            print "Exception encountered marking server in error:"
            traceback.print_exc()
コード例 #10
0
def delete_machine(jenkins, client, machine):
    try:
        server = client.servers.get(machine.external_id)
    except novaclient.exceptions.NotFound:
        print '  Machine id %s not found' % machine.external_id
        server = None

    if server:
        utils.delete_server(server)

    if jenkins:
        if machine.jenkins_name:
            if jenkins.node_exists(machine.jenkins_name):
                jenkins.delete_node(machine.jenkins_name)

    machine.delete()
コード例 #11
0
def delete_machine(jenkins, client, machine):
    try:
        server = client.servers.get(machine.external_id)
    except novaclient.exceptions.NotFound:
        print '  Machine id %s not found' % machine.external_id
        server = None

    if server:
        utils.delete_server(server)

    if jenkins:
        if machine.jenkins_name:
            if jenkins.node_exists(machine.jenkins_name):
                jenkins.delete_node(machine.jenkins_name)

    machine.delete()
コード例 #12
0
ファイル: launch-node.py プロジェクト: rombie/config
def build_server(
        client, name, image, flavor, cert, environment, salt, puppetmaster):
    key = None
    server = None

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    key_name = 'launch-%i' % (time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name
    try:
        server = client.servers.create(**create_kwargs)
    except Exception:
        try:
            kp.delete()
        except Exception:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    salt_priv, salt_pub = (None, None)
    if salt:
        salt_priv, salt_pub = utils.add_salt_keypair(
            SALT_MASTER_PKI, name, 2048)
    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         salt_priv, salt_pub, puppetmaster)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' % (server.id,
                                               server.accessIPv4,
                                               server.accessIPv6))
        if key:
            kp.delete()
    except Exception:
        try:
            utils.delete_server(server)
        except Exception:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #13
0
def build_server(client, name, image, flavor, cert, environment, salt,
                 puppetmaster):
    key = None
    server = None

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    key_name = 'launch-%i' % (time.time())
    if 'os-keypairs' in utils.get_extensions(client):
        print "Adding keypair"
        key, kp = utils.add_keypair(client, key_name)
        create_kwargs['key_name'] = key_name
    try:
        server = client.servers.create(**create_kwargs)
    except Exception:
        try:
            kp.delete()
        except Exception:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    salt_priv, salt_pub = (None, None)
    if salt:
        salt_priv, salt_pub = utils.add_salt_keypair(SALT_MASTER_PKI, name,
                                                     2048)
    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         salt_priv, salt_pub, puppetmaster)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' %
              (server.id, server.accessIPv4, server.accessIPv6))
        if key:
            kp.delete()
    except Exception:
        try:
            utils.delete_server(server)
        except Exception:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise
コード例 #14
0
def delete_image(client, image):
    try:
        server = client.servers.get(image.server_external_id)
    except novaclient.exceptions.NotFound:
        print '  Image server id %s not found' % image.server_external_id
        server = None

    if server:
        utils.delete_server(server)

    try:
        remote_image = client.images.get(image.external_id)
    except novaclient.exceptions.NotFound:
        print '  Image id %s not found' % image.external_id
        remote_image = None

    if remote_image:
        remote_image.delete()

    image.delete()
コード例 #15
0
def delete_image(client, image):
    try:
        server = client.servers.get(image.server_external_id)
    except novaclient.exceptions.NotFound:
        print '  Image server id %s not found' % image.server_external_id
        server = None

    if server:
        utils.delete_server(server)

    try:
        remote_image = client.images.get(image.external_id)
    except novaclient.exceptions.NotFound:
        print '  Image id %s not found' % image.external_id
        remote_image = None

    if remote_image:
        remote_image.delete()

    image.delete()
コード例 #16
0
ファイル: launch-node.py プロジェクト: emonty/config
def build_server(client, name, image, flavor, environment):
    key = None
    server = None

    create_kwargs = dict(image=image, flavor=flavor, name=name)

    if 'os-keypairs' in utils.get_extensions(client):
        create_kwargs['key_name'] = 'mordred'
    server = client.servers.create(**create_kwargs)

    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        bootstrap_server(name, server, admin_pass, key, environment)
    except Exception, real_error:
        try:
            utils.delete_server(server)
	    pass
        except Exception, delete_error:
            print "Exception encountered deleting server:"
            traceback.print_exc()
コード例 #17
0
def delete_machine(jenkins, client, machine):
    try:
        server = client.servers.get(machine.external_id)
    except novaclient.exceptions.NotFound:
        print '  Machine id %s not found' % machine.external_id
        server = None

    if server:
        utils.delete_server(server)
        # Rackspace Nova sometimes lies about whether a server is deleted.
        # If we have deleted a server, don't believe it.  Instead, wait for
        # the next run of the script and only if the server doesn't exist,
        # delete it from Jenkins and the DB.
        return

    if jenkins:
        if machine.jenkins_name:
            if jenkins.node_exists(machine.jenkins_name):
                jenkins.delete_node(machine.jenkins_name)

    machine.delete()
コード例 #18
0
ファイル: launch-node.py プロジェクト: ody/config
            traceback.print_exc()
        raise

    salt_priv, salt_pub = utils.add_salt_keypair(SALT_MASTER_PKI, name, 2048)
    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        bootstrap_server(server, admin_pass, key, cert, environment, name,
                         salt_priv, salt_pub)
        print('UUID=%s\nIPV4=%s\nIPV6=%s\n' %
              (server.id, server.accessIPv4, server.accessIPv6))
        if key:
            kp.delete()
    except Exception, real_error:
        try:
            utils.delete_server(server)
        except Exception, delete_error:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("name", help="server name")
    parser.add_argument("--ram",
                        dest="ram",
                        default=1024,
                        type=int,
                        help="minimum amount of ram")
コード例 #19
0
ファイル: launch-node.py プロジェクト: kiall/config
        try:
            kp.delete()
        except Exception, delete_error:
            print "Exception encountered deleting keypair:"
            traceback.print_exc()
        raise

    try:
        admin_pass = server.adminPass
        server = utils.wait_for_resource(server)
        bootstrap_server(server, admin_pass, key, cert, environment)
        if key:
            kp.delete()
    except Exception, real_error:
        try:
            utils.delete_server(server)
        except Exception, delete_error:
            print "Exception encountered deleting server:"
            traceback.print_exc()
        # Raise the important exception that started this
        raise


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("name", help="server name")
    parser.add_argument("--ram", dest="ram", default=1024, type=int,
                        help="minimum amount of ram")
    parser.add_argument("--image", dest="image",
                        default="Ubuntu 12.04 LTS (Precise Pangolin)",
                        help="image name")