132 lines
3.3 KiB
Python
132 lines
3.3 KiB
Python
# Copyright (c) 2018 Red Hat, Inc.
|
|
#
|
|
# This file is part of ARA Records Ansible.
|
|
#
|
|
# ARA is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# ARA is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with ARA. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import factory
|
|
|
|
from ara.api import models
|
|
from ara.api.tests import utils
|
|
|
|
|
|
# constants for things like compressed byte strings or objects
|
|
FILE_CONTENTS = '---\n# Example file'
|
|
HOST_FACTS = {
|
|
'ansible_fqdn': 'hostname',
|
|
'ansible_distribution': 'CentOS'
|
|
}
|
|
PLAYBOOK_PARAMETERS = {
|
|
'ansible_version': '2.5.5',
|
|
'inventory': '/etc/ansible/hosts'
|
|
}
|
|
RESULT_CONTENTS = {
|
|
'results': [{
|
|
'msg': 'something happened'
|
|
}]
|
|
}
|
|
LABEL_DESCRIPTION = 'label description'
|
|
TASK_TAGS = ['always', 'never']
|
|
|
|
|
|
class FileContentFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.FileContent
|
|
django_get_or_create = ('sha1',)
|
|
|
|
sha1 = utils.sha1(FILE_CONTENTS)
|
|
contents = utils.compressed_str(FILE_CONTENTS)
|
|
|
|
|
|
class FileFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.File
|
|
|
|
path = '/path/playbook.yml'
|
|
content = factory.SubFactory(FileContentFactory)
|
|
|
|
|
|
class LabelFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Label
|
|
|
|
name = 'test label'
|
|
description = utils.compressed_str(LABEL_DESCRIPTION)
|
|
|
|
|
|
class PlaybookFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Playbook
|
|
|
|
ansible_version = '2.4.0'
|
|
completed = True
|
|
parameters = utils.compressed_obj(PLAYBOOK_PARAMETERS)
|
|
file = factory.SubFactory(FileFactory)
|
|
|
|
|
|
class PlayFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Play
|
|
|
|
name = 'test play'
|
|
completed = True
|
|
playbook = factory.SubFactory(PlaybookFactory)
|
|
|
|
|
|
class TaskFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Task
|
|
|
|
name = 'test task'
|
|
completed = True
|
|
action = 'setup'
|
|
lineno = 2
|
|
handler = False
|
|
tags = utils.compressed_obj(TASK_TAGS)
|
|
play = factory.SubFactory(PlayFactory)
|
|
file = factory.SubFactory(FileFactory)
|
|
|
|
|
|
class HostFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Host
|
|
|
|
facts = utils.compressed_obj(HOST_FACTS)
|
|
name = 'hostname'
|
|
alias = "9f5d3ba7-e43d-4f3b-ab17-f90c39e43d07"
|
|
playbook = factory.SubFactory(PlaybookFactory)
|
|
|
|
|
|
class ResultFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Result
|
|
|
|
content = utils.compressed_obj(RESULT_CONTENTS)
|
|
status = 'ok'
|
|
host = factory.SubFactory(HostFactory)
|
|
task = factory.SubFactory(TaskFactory)
|
|
|
|
|
|
class StatsFactory(factory.DjangoModelFactory):
|
|
class Meta:
|
|
model = models.Stats
|
|
|
|
changed = 1
|
|
failed = 0
|
|
ok = 2
|
|
skipped = 1
|
|
unreachable = 0
|
|
playbook = factory.SubFactory(PlaybookFactory)
|
|
host = factory.SubFactory(HostFactory)
|