def test_parser_playbook(self):
        localdir = os.path.dirname(os.path.realpath(__file__))
        testfile = os.path.join(localdir, ".output/testplaybook.yml")
        folder_testfile = os.path.join(localdir, ".output")
        with codecs.open(testfile, "w", encoding="utf-8") as f:
            f.write("---\n")
            f.write(u"# Author: Me شيشه ب\n")
            f.write(u"# description: this is a test شيشه ب\n")
            f.write(u"- hosts: testhoشيشهsts\n")
            f.write("  tasks:\n")
            f.write(u"     - name: 'Install Apache شيشه ب'\n")
            f.write(u"       yum: name=httpd state=inشtalled\n")
            f.write(u"       tags:\n")
            f.write(u"           - apache\n")

        playbook = PlaybookParser([testfile], is_role=False)

        playbook.parse_playbooks()

        # One Element in Array
        assert (len(playbook.parserdata) == 1)
        assert ("author" in playbook.parserdata[folder_testfile][0])

        assert ("description" in playbook.parserdata[folder_testfile][0])

        assert ("task_info" in playbook.parserdata[folder_testfile][0])

        assert ("task_name"
                in playbook.parserdata[folder_testfile][0]['task_info'][0])

        assert ("task_tags"
                in playbook.parserdata[folder_testfile][0]['task_info'][0])

        assert (playbook.parserdata[folder_testfile][0]["is_role"] is False)
Exemple #2
0
    def parse_main_tasks(self):
        """ Parse All Tasks Found In a Role """
        # Need to determine the rolename per task somehow
        self.playbookparser = PlaybookParser(self.main_tasks, is_role=True)

        # Parse all main tasks
        self.playbookparser.parse_playbooks()
        self.parserdata = self.playbookparser.parserdata
Exemple #3
0
    def __init__(self, project):
        """ Setup Parser Modules
            @project is a relative or absolute path to an Ansible Project
        """
        self.ansiblecfg = AnsibleCfg(project)
        self.roleparser = RoleParser(self.ansiblecfg.get_role_paths())
        self.playbookparser = PlaybookParser(
            self.ansiblecfg.get_playbook_paths())

        # Parse all playbooks
        self.playbookparser.parse_playbooks()
Exemple #4
0
    def __init__(self, project):
        """ Setup Parser Modules
            @param project: is a relative or absolute path to an Ansible Project
        """
        self.ansiblecfg = AnsibleCfg(project)
        print("Parsing roles")
        self.roleparser = RoleParser(self.ansiblecfg.get_role_paths())
        print("Parsing playbooks")
        self.playbookparser = PlaybookParser(
            self.ansiblecfg.get_playbook_paths())
        print("Parsing hosts")
        self.hostVarsParser = HostVarsParser(self.ansiblecfg.get_hosts_paths())

        # Parse all playbooks
        self.hostVarsParser.parse_hosts_vars()
        self.playbookparser.parse_playbooks()
    def test_parser_role_playbook(self):
        # Find Directory Of This Test
        localdir = os.path.dirname(os.path.realpath(__file__))
        # Create Tasks Directory
        if not os.path.exists(os.path.join(localdir, ".output/tasks/")):
            os.makedirs(os.path.join(localdir, ".output/tasks/"))
        # Set Output File
        testfile = os.path.join(localdir, ".output/tasks/main.yml")
        folder_testfile = localdir
        with open(testfile, "w") as f:
            f.write("---\n")
            f.write("# Author: Me\n")
            f.write("# description: this is a test\n")
            f.write("- name: 'Install Apache'\n")
            f.write("  yum: name=httpd state=installed\n")
            f.write("  tags:\n")
            f.write("    - apache\n")

        playbook = PlaybookParser([testfile], is_role=True)
        playbook.parse_playbooks()

        # One Element in Array
        assert (len(playbook.parserdata) == 1)

        assert ("author" in playbook.parserdata[folder_testfile][0])

        assert ("description" in playbook.parserdata[folder_testfile][0])

        assert ("task_info" in playbook.parserdata[folder_testfile][0])

        assert ("task_name"
                in playbook.parserdata[folder_testfile][0]['task_info'][0])

        assert ("task_tags"
                in playbook.parserdata[folder_testfile][0]['task_info'][0])

        assert (playbook.parserdata[folder_testfile][0]["name"] == ".output")
Exemple #6
0
    def test_parser_playbook(self):
        localdir = os.path.dirname(os.path.realpath(__file__))
        testfile = os.path.join(localdir, ".output/testplaybook.yml")
        with open(testfile, "w") as f:
            f.write("---\n")
            f.write("# Author: Me\n")
            f.write("# description: this is a test\n")
            f.write("- name: 'Install Apache'\n")
            f.write("  yum: name=httpd state=installed\n")

        playbook = PlaybookParser([testfile], is_role=True)

        playbook.parse_playbooks()

        # One Element in Array
        assert (len(playbook.parserdata) == 1)

        assert ("author" in playbook.parserdata[0])

        assert ("description" in playbook.parserdata[0])

        assert ("task_names" in playbook.parserdata[0])

        assert (playbook.parserdata[0]["rolename"] is None)