Пример #1
0
 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
Пример #2
0
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')
Пример #3
0
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')
Пример #4
0
 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))
Пример #5
0
 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
     )
Пример #6
0
 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
Пример #7
0
 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')
Пример #8
0
 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)
Пример #9
0
 def test_configuration_path_is_rendered(self):
     deploy = _get_deployment()
     result = _render_configuration('{{configuration_path}}', deploy)
     self.assertEqual(result, str(deploy.obj.configuration_path))
Пример #10
0
 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)
Пример #11
0
 def test_hostname_is_rendered(self):
     deploy = _get_deployment()
     result = _render_configuration('{{hostname}}', deploy)
     self.assertEqual(result, deploy.obj.hostname)