示例#1
0
def create(ctx, **kwargs):
    """ Create security group with rules.
    """

    cloud_driver = get_cloud_driver(ctx)

    security_group = {
        'description': None,
        'name': ctx.node_id,
    }

    ctx.logger.debug('reading security-group configuration.')
    rules_to_apply = ctx.properties['rules']
    security_group.update(ctx.properties['security_group'])

    security_group_name = security_group['name']
    if not _sg_exists(cloud_driver, security_group_name):
        ctx.logger.info('creating security group: {0}'
            .format(security_group_name))
        cloud_driver.ex_create_security_group(security_group_name, description=security_group['description'])

        for rule in rules_to_apply:
            cidr = rule.get('cidr', None)
            protocol = rule.get('protocol', 'TCP')
            start_port = rule.get('start_port', None)
            if start_port is None:
                raise RuntimeError('You must specify start_port for a security group rule')
            end_port = rule.get('end_port', None)
            _add_ingress_rule(ctx, cloud_driver, security_group_name=security_group_name,
                      start_port=start_port,
                      end_port=end_port,
                      cidr_list=cidr,
                      protocol=protocol)
    else:
        ctx.logger.info('using existing management security group {0}'.format(security_group_name))
示例#2
0
def delete(ctx, **kwargs):
    try:
        cloud_driver = get_cloud_driver(ctx)
        cloud_driver.ex_delete_security_group(
            ctx.instance.runtime_properties['external_id'])
    except:
        ctx.logger.warn('security-group {0} may not have been deleted'.format(
            ctx.instance.runtime_properties['external_id']))
def delete(ctx, **kwargs):
    try:
        cloud_driver = get_cloud_driver(ctx)
        cloud_driver.ex_delete_security_group(ctx.runtime_properties['external_id'])
    except:
        ctx.logger.warn(
            'security-group {0} may not have been deleted'
                .format(ctx.runtime_properties['external_id']))
        pass
def get_state(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    instance_id = ctx.instance.runtime_properties['instance_id']

    ctx.logger.info('getting node with ID {0}'.format(instance_id))
    node = _get_node_by_id(cloud_driver, instance_id)
    if node is None:
        return False

    ctx['ip'] = node.public_ips[0]
    ctx.logger.info('instance started successfully with IP {0}'.format(
        ctx['ip']))
    return True
示例#5
0
def delete(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    node_id = ctx['node_id']
    if node_id is None:
        raise NameError(
            'could not find node ID in runtime context: {0}'.format(node_id))
    ctx.logger.info('getting node with ID: {0}'.format(node_id))
    node = _get_node_by_id(cloud_driver, node_id)
    if node is None:
        raise NameError('could not find node with ID: {0}'.format(node_id))

    ctx.logger.info('destroying vm with details: {0}'.format(node))
    cloud_driver.destroy_node(node)
def delete(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    node_id = ctx['node_id']
    if node_id is None:
        raise NameError('could not find node ID in runtime context: ' + node_id)

    ctx.logger.info('getting node with ID: ' + node_id)
    node = _get_node_by_id(cloud_driver, node_id)
    if node is None:
        raise NameError('could not find node with ID: ' + node_id)

    ctx.logger.info('destroying vm with details: {0}'.format(node))
    cloud_driver.destroy_node(node)
def get_state(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    instance_id = ctx.runtime_properties['instance_id']

    ctx.logger.info('getting node with ID {0}'.format(instance_id))
    node = _get_node_by_id(cloud_driver, instance_id)
    if node is None:
        return False

    ctx['ip'] = node.public_ips[0]
    ctx.logger.info(
        'instance started successfully with IP {0}'.format(ctx['ip']))
    return True
def stop(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    node_id = ctx.instance.runtime_properties['node_id']
    if node_id is None:
        raise RuntimeError('could not find node ID in runtime context: ' +
                           node_id)

    ctx.logger.info('getting node with ID: ' + node_id)
    node = _get_node_by_id(cloud_driver, node_id)
    if node is None:
        raise RuntimeError('could not find node with ID {0}'.format(node_id))

    ctx.logger.info('stopping node with details {0}'.format(node))
    cloud_driver.ex_stop(node)
def stop(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    node_id = ctx.runtime_properties['node_id']
    if node_id is None:
        raise RuntimeError(
            'could not find node ID in runtime context: ' + node_id)

    ctx.logger.info('getting node with ID: ' + node_id)
    node = _get_node_by_id(cloud_driver, node_id)
    if node is None:
        raise RuntimeError('could not find node with ID {0}'.format(node_id))

    ctx.logger.info('stopping node with details {0}'.format(node))
    cloud_driver.ex_stop(node)
def start(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    ctx.logger.info(
        'reading server config from context')  #Change to debug level
    server_config = _get_server_from_context(ctx)

    name = server_config['name']
    image_id = server_config['image_id']
    size_name = server_config['size']
    keypair_name = server_config['keypair_name']
    security_groups = server_config['security_groups']

    ctx.logger.info('getting required size {0}'.format(size_name))
    sizes = [
        size for size in cloud_driver.list_sizes() if size.name == size_name
    ]
    if sizes is None:
        raise RuntimeError(
            'Could not find size with name {0}'.format(size_name))
    size = sizes[0]

    ctx.logger.info('getting required image with ID {0}'.format(image_id))
    images = [
        image for image in cloud_driver.list_images() if image_id == image.id
    ]
    if images is None:
        raise RuntimeError('Could not find image with ID {0}'.format(image_id))
    image = images[0]

    ctx.logger.info(
        "creating server vm with the following details: {0}".format(
            server_config))
    node = cloud_driver.create_node(name=name,
                                    image=image,
                                    size=size,
                                    ex_keyname=keypair_name,
                                    ex_security_groups=security_groups)
    ctx.logger.info('vm {0} was started successfully {1}'.format(
        node.name, server_config))

    ctx['instance_id'] = node.id
def start(ctx, **kwargs):

    ctx.logger.info("initializing {0} cloud driver".format(Provider.EXOSCALE))
    cloud_driver = get_cloud_driver(ctx)

    ctx.logger.info('reading server config from context') #Change to debug level
    server_config = _get_server_from_context(ctx)

    name = server_config['name']
    image_id = server_config['image_id']
    size_name = server_config['size']
    keypair_name = server_config['keypair_name']
    security_groups = server_config['security_groups']

    ctx.logger.info('getting required size {0}'.format(size_name))
    sizes = [size for size in cloud_driver.list_sizes() if size.name
                                                          == size_name]
    if sizes is None:
        raise RuntimeError(
            'Could not find size with name {0}'.format(size_name))
    size = sizes[0]

    ctx.logger.info('getting required image with ID {0}'.format(image_id))
    images = [image for image in cloud_driver.list_images() if image_id
                                                              == image.id]
    if images is None:
        raise RuntimeError('Could not find image with ID {0}'.format(image_id))
    image = images[0]

    ctx.logger.info(
        "creating server vm with the following details: {0}".format(
            server_config))
    node = cloud_driver.create_node(name=name,
                                    image=image,
                                    size=size,
                                    ex_keyname=keypair_name,
                                    ex_security_groups=security_groups)
    ctx.logger.info(
        'vm {0} was started successfully {1}'.format(
            node.name, server_config))

    ctx['instance_id'] = node.id