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))
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
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