def is_valid(self): is_valid = super().is_valid() try: _render_configuration(self.cleaned_data.get('configuration', ''), MagicMock(), disable_reverse=True) except TemplateSyntaxError as error: self.add_error('configuration', error) is_valid = False return is_valid
def config(request, deployment_id, config_type): """View returns rendered config configuration. Args: deployment_id (string): deployment's UUID config_type (choices): kickstart|preseed|script - type of config Returns: HttpResponse: rendered config Raises: Http404: if deployment with specified UUID doesn't exist """ preboot = _get_preboot(deployment_id) configuration = preboot.get_configuration(config_type) if configuration is None: logger.warning('{} for deployment {} doesn\'t exist'.format( config_type, deployment_id)) raise Http404 deployment = get_object_or_404_with_message( model=Deployment, msg=DEPLOYMENT_404_MSG.format(deployment_id), id=deployment_id) configuration = _render_configuration(configuration, deployment) return HttpResponse(configuration.replace('\r\n', '\n').replace('\r', '\n'), content_type='text/plain')
def ipxe(request, deployment_id=None): """View returns boot's config for iPXE depends on client IP. Args: request (object): standard Django's object for request. Returns: HttpResponse: contains config for iPXE Raises: Http404: if deployment with specified UUID doesn't exist """ ip = get_client_ip(request) try: if deployment_id: deployment = Deployment.objects.get(id=deployment_id) else: deployment = Deployment.get_deployment_for_ip(ip) except Ethernet.DoesNotExist: logger.warning('Deployment does not exists for ip: {}'.format(ip)) raise Http404 except Deployment.DoesNotExist: logger.warning(DEPLOYMENT_404_MSG.format(deployment_id)) raise Http404 configuration = _render_configuration( deployment.preboot.get_configuration('ipxe'), deployment) return HttpResponse(configuration, content_type='text/plain')
def test_single_slash_when_ralph_instance_has_no_slash( self, template_content, ok_url, ): deploy = _get_deployment() result = _render_configuration(template_content, deploy) self.assertEqual(result, ok_url.format(deploy.id))
def test_configuration_class_is_rendered(self): deploy = _get_deployment() result = _render_configuration( '{{configuration_class_name}}', deploy ) self.assertEqual( result, deploy.obj.configuration_path.class_name )
def is_valid(self): is_valid = super().is_valid() try: configuration = _render_configuration(self.cleaned_data.get( 'configuration', ''), MagicMock(), disable_reverse=True) except TemplateSyntaxError as error: self.add_error('configuration', error) return False configuration_type = self.cleaned_data.get('type') if configuration_type in (PrebootItemType.meta_data, PrebootItemType.user_data): try: yaml.load(configuration, Loader=yaml.FullLoader) except yaml.YAMLError as error: self.add_error('configuration', error) return False return is_valid
def test_none_service_uid_renders_as_None(self): deploy = _get_deployment() deploy.obj.service_env = None result = _render_configuration('{{service_uid}}', deploy) self.assertEqual(result, 'None')
def test_service_uid_is_rendered(self): deploy = _get_deployment() result = _render_configuration('{{service_uid}}', deploy) self.assertEqual(result, deploy.obj.service_env.service.uid)
def test_configuration_path_is_rendered(self): deploy = _get_deployment() result = _render_configuration('{{configuration_path}}', deploy) self.assertEqual(result, str(deploy.obj.configuration_path))
def test_data_center_is_rendered(self): deploy = _get_deployment() result = _render_configuration('{{dc}}', deploy) self.assertEqual(result, deploy.obj.rack.server_room.data_center.name)
def test_hostname_is_rendered(self): deploy = _get_deployment() result = _render_configuration('{{hostname}}', deploy) self.assertEqual(result, deploy.obj.hostname)