Ejemplo n.º 1
0
 def perform_tls_enablement_test(self, input_params):
     print ("Executing the test ", input_params.get('testcase_name'))
     file_info_dir = input_params['global_data']['file_info_dir']
     is_containerized = input_params['global_data']['is_containerized']
     perform_on = input_params['perform_on']
     if perform_on is None or not perform_on:
         print ("Perform on should be mentioned either at test level " +
                "or test case level")
         msg = {
             'message': 'Perform on should be mentioned either at test ' +
             'level or test case level'}
         return (404, json.dumps([msg]), [])
     os_hostobj_list = input_params['os_host_list']
     base_dir = os.path.dirname(cloudpulse.__file__)
     flist = [base_dir + "/scenario/plugins/security_pulse" +
              "/testcase/TLS_Enablement_Check.py"]
     ans_runner = ansible_runner(os_hostobj_list)
     container_name = None
     if is_containerized:
         container_name = input_params['input']['container_name']
     result = ans_runner.execute_cmd(
         "python " +
         TMP_LOCATION +
         "TLS_Enablement_Check.py ",
         file_list=flist, container_name=container_name)
     Result = ans_runner.get_parsed_ansible_output(result)
     os.system('rm -rf ' + file_info_dir + 'output')
     return Result
Ejemplo n.º 2
0
 def load(self):
     self.os_node_info_obj = openstack_node_info_reader(
         cfg.CONF.operator_test.operator_setup_file)
     openstack_node_list = self.os_node_info_obj.get_host_list()
     self.ans_runner = ansible_runner(openstack_node_list)
     inventory = self.ans_runner.init_ansible_inventory(openstack_node_list)
     self.ans_runner.set_ansible_inventory(inventory)
Ejemplo n.º 3
0
 def load(self):
     self.os_node_info_obj = openstack_node_info_reader(
         cfg.CONF.operator_test.operator_setup_file)
     openstack_node_list = self.os_node_info_obj.get_host_list()
     self.ans_runner = ansible_runner(openstack_node_list)
     inventory = self.ans_runner.init_ansible_inventory(openstack_node_list)
     self.ans_runner.set_ansible_inventory(inventory)
Ejemplo n.º 4
0
 def perform_mysql_tls_enablement_test(self, input_params):
     try:
         file_info_dir = input_params['global_data']['file_info_dir']
         is_containerized = input_params['global_data']['is_containerized']
         perform_on = input_params['perform_on']
         if perform_on is None or not perform_on:
             print ("Perform on should be mentioned either at test level \
                 or test case level")
             message = {
                 'message': 'Perform on should be mentioned either at \
                 test level or test case level'}
             return (404, json.dumps([message]), [])
         os_hostobj_list = input_params['os_host_list']
         base_dir = os.path.dirname(cloudpulse.__file__)
         flist = [base_dir + "/scenario/plugins/security_pulse" +
                  "/testcase/remote_mysql_tls_enablement_check.py"]
         ans_runner = ansible_runner(os_hostobj_list)
         container_name = None
         if is_containerized:
             container_name = input_params['input']['container_name']
         result = ans_runner.execute_cmd(
             "python " +
             TMP_LOCATION +
             "remote_mysql_tls_enablement_check.py ",
             file_list=flist, container_name=container_name)
         Result = ans_runner.get_parsed_ansible_output(result)
         os.system('rm -rf ' + file_info_dir + 'output')
         return Result
     except Exception as msg:
         print (
             "Exception while executing perform_mysql_tls_enablement_test")
         print (msg)
         message = {
             'message': 'Test case execution failed due to some exception'}
         return (404, json.dumps([message]), [])
Ejemplo n.º 5
0
    def perform_tls_enablement_test(self, input_params):
        print("Executing the test ", input_params.get('testcase_name'))
        file_info_dir = input_params['global_data']['file_info_dir']
        perform_on = input_params['perform_on']
        if perform_on is None or not perform_on:
            print("Perform on should be mentioned either at test level " +
                  "or test case level")
            return
        os_hostobj_list = input_params['os_host_list']
        base_dir = os.path.dirname(cloudpulse.__file__)
        flist = [
            base_dir + "/scenario/plugins/security_pulse" +
            "/testcase/TLS_Enablement_Check.py"
        ]
        # print os_hostobj_list
        ans_runner = ansible_runner(os_hostobj_list)
        ans_runner.execute_cmd("python " + TMP_LOCATION +
                               "TLS_Enablement_Check.py " + TMP_LOCATION,
                               file_list=flist)
        result = ans_runner.get_results()
        if not result:
            return result

        os.system('rm -rf ' + file_info_dir + 'output')
        for key in result.keys():
            return result[key]
Ejemplo n.º 6
0
 def perform_ks_admin_token_check_test(self, input_params):
     print ("Executing the test ", input_params.get('testcase_name'))
     file_info_dir = input_params['global_data']['file_info_dir']
     perform_on = input_params['perform_on']
     if perform_on is None or not perform_on:
         print ("Perform on should be mentioned either at \
                 test level or test case level")
         return
     os_hostobj_list = input_params['os_host_list']
     base_dir = os.path.dirname(cloudpulse.__file__)
     flist = [base_dir +
              "/scenario/plugins/security_pulse/testcase/" +
              "keystone_admin_token_check.py"]
     ans_runner = ansible_runner(os_hostobj_list)
     ans_runner.execute_cmd("python " + TMP_LOCATION +
                            "keystone_admin_token_check.py " +
                            TMP_LOCATION, file_list=flist)
     result = ans_runner.get_results()
     if not result:
         return result
     result_row = []
     for key in result.keys():
         obj = eval(result[key])
         for r in obj:
             result = r.split(" - ")
             result_row.append([result[0], result[1], result[2]])
     os.system('rm -rf ' + file_info_dir + 'output')
     return result_row
Ejemplo n.º 7
0
 def perform_ks_admin_token_check_test(self, input_params):
     print("Executing the test ", input_params.get('testcase_name'))
     file_info_dir = input_params['global_data']['file_info_dir']
     perform_on = input_params['perform_on']
     if perform_on is None or not perform_on:
         print("Perform on should be mentioned either at \
                 test level or test case level")
         return
     os_hostobj_list = input_params['os_host_list']
     base_dir = os.path.dirname(cloudpulse.__file__)
     flist = [
         base_dir + "/scenario/plugins/security_pulse/testcase/" +
         "keystone_admin_token_check.py"
     ]
     ans_runner = ansible_runner(os_hostobj_list)
     ans_runner.execute_cmd("python " + TMP_LOCATION +
                            "keystone_admin_token_check.py " + TMP_LOCATION,
                            file_list=flist)
     result = ans_runner.get_results()
     if not result:
         return result
     result_row = []
     for key in result.keys():
         obj = eval(result[key])
         for r in obj:
             result = r.split(" - ")
             result_row.append([result[0], result[1], result[2]])
     os.system('rm -rf ' + file_info_dir + 'output')
     return result_row
 def perform_password_encryption_test(self, input_params):
     try:
         print ("Executing the test ", input_params.get('testcase_name'))
         file_info_dir = input_params['global_data']['file_info_dir']
         perform_on = input_params['perform_on']
         if perform_on is None or not perform_on:
             print ("Perform on should be mentioned either at test level \
                 or test case level")
             message = {
                 'Message': 'Perform on should be mentioned either at \
                 test level or test case level'}
             return (404, json.dumps([message]), [])
         os_hostobj_list = input_params['os_host_list']
         base_dir = os.path.dirname(cloudpulse.__file__)
         flist = [base_dir + "/scenario/plugins/security_pulse" +
                  "/testcase/remote_password_check.py"]
         ans_runner = ansible_runner(os_hostobj_list)
         result = ans_runner.execute_cmd(
             "python " +
             TMP_LOCATION +
             "remote_password_check.py ",
             file_list=flist)
         Result = ans_runner.get_parsed_ansible_output(result)
         os.system('rm -rf ' + file_info_dir + 'output')
         return Result
     except Exception as e:
         print (
             "Exception occured in executing" +
             " perform_password_encryption_test")
         print (Exception, e)
         message = {
             'Message': 'Test case execution failed due to some exception'}
         return (404, json.dumps([message]), [])
Ejemplo n.º 9
0
 def perform_log_file_mode_test(self, input_params):
     try:
         print ("Executing the test ", input_params.get('testcase_name'))
         final_result = []
         final_status = []
         final_msg = []
         file_info_dir = input_params['global_data']['file_info_dir']
         perform_on = input_params['perform_on']
         if perform_on is None or not perform_on:
             print ("Perform on should be mentioned either at test level \
                 or test case level")
             message = {
                 'Message': 'Perform on should be mentioned either at \
                 test level or test case level'}
             return (404, json.dumps([message]), [])
         os_hostobj_list = input_params['os_host_list']
         conf_dir = input_params['conf_file_dir']
         base_dir = os.path.dirname(cloudpulse.__file__)
         flist = [base_dir +
                  "/scenario/plugins/security_pulse/testcase/" +
                  "remote_logmode_check.py",
                  "/tmp/sec_hc/dir_list"]
         for p in perform_on:
             for obj in os_hostobj_list:
                 ans_runner = ansible_runner([obj])
                 if obj.getRole() == p:
                     self.createDirList(conf_dir, file_info_dir)
                     result = ans_runner.execute_cmd(
                         "python " +
                         TMP_LOCATION +
                         "remote_logmode_check.py ",
                         file_list=flist)
                     Result = ans_runner.get_parsed_ansible_output(result)
                     final_status.append(Result[0])
                     final_result.extend(eval(Result[1]))
                     final_msg.extend(Result[2])
         os.system(
             'rm ' +
             file_info_dir +
             'dir_list ')
         if 404 in final_status:
             return (404, final_result, final_msg)
         else:
             return (200, final_result, final_msg)
     except Exception:
         print (
             "Exception occured in executing" +
             " perform_log_file_mode_test")
         message = {
             'Message': 'Test case execution failed due to some exception'}
         return (404, json.dumps([message]), [])
Ejemplo n.º 10
0
    def perform_tls_enablement_test(self, input_params):
        print("Executing the test ", input_params.get("testcase_name"))
        file_info_dir = input_params["global_data"]["file_info_dir"]
        perform_on = input_params["perform_on"]
        if perform_on is None or not perform_on:
            print("Perform on should be mentioned either at test level " + "or test case level")
            return
        os_hostobj_list = input_params["os_host_list"]
        base_dir = os.path.dirname(cloudpulse.__file__)
        flist = [base_dir + "/scenario/plugins/security_pulse" + "/testcase/TLS_Enablement_Check.py"]
        # print os_hostobj_list
        ans_runner = ansible_runner(os_hostobj_list)
        ans_runner.execute_cmd("python " + TMP_LOCATION + "TLS_Enablement_Check.py " + TMP_LOCATION, file_list=flist)
        result = ans_runner.get_results()
        if not result:
            return result

        os.system("rm -rf " + file_info_dir + "output")
        for key in result.keys():
            return result[key]
Ejemplo n.º 11
0
    def base_line(self, os_baseline_cfg):
        try:
            oscfg_reader = os_cfg.os_cfg_reader(os_baseline_cfg)
            oscfg_reader.setOpenstackNodeIp()
            oscfg_reader.printHostList()
            openstack_host_list = oscfg_reader.get_host_list()
            baseline_data = {}
            for host in openstack_host_list:
                f = open('/tmp/sec_hc/dir_list', 'w+')
                for dir_name in host.getDirList():
                    f.write(dir_name + '\n')
                f.close()
                ans_runner = ansible_runner([host])
                # execute_cmd
                base_dir = os.path.dirname(cloudpulse.__file__)
                base_dir += '/scenario/plugins/security_pulse/testcase'
                flist = [base_dir + '/remote_baseline.py',
                         base_dir + '/remote_filecredentials.py',
                         '/tmp/sec_hc/dir_list'
                         ]
                results = ans_runner.execute_cmd(
                    "python " +
                    '/tmp/sec_hc/' +
                    "remote_baseline.py ",
                    file_list=flist)
                # for node in results['contacted'].keys():
                role = host.getRole()
                node = host.getIp()
                data = results['contacted'][node]['stdout']

                baseline_data.update({role: eval(data)})
                print (baseline_data)
            formated_data = json.dumps(baseline_data, indent=4)
            open('/tmp/sec_hc/os_allnode_baseline',
                 'w+').write(str(formated_data))
        except Exception as e:
            print (e)
Ejemplo n.º 12
0
    def perform_file_permission_check(self, input_params):
        try:
            print ("Executing the test ", input_params.get('testcase_name'))
            final_result = []
            final_status = []
            final_msg = []
            file_info_dir = input_params['global_data']['file_info_dir']
            is_containerized = input_params['global_data']['is_containerized']
            perform_on = input_params['perform_on']
            if perform_on is None or not perform_on:
                print ("Perform on should be mentioned either at test level" +
                       " or test case level")
                msg = {'message': 'Perform on should be mentioned either at' +
                       ' test level or test case level'}
                return (404, json.dumps([msg]), [])
            os_hostobj_list = input_params['os_host_list']
            base_dir = os.path.dirname(cloudpulse.__file__)
            baseline_file = input_params['baseline_file']
            flist = [base_dir +
                     "/scenario/plugins/security_pulse/testcase/" +
                     "remote_file_check.py",
                     base_dir + "/scenario/plugins/security_pulse/testcase/" +
                     "remote_filecredentials.py",
                     "/tmp/sec_hc/dir_list",
                     "/tmp/sec_hc/os_baseline"]

            def ConsolidateResults(flist, container_name=None):
                result = ans_runner.execute_cmd(
                    "python " +
                    TMP_LOCATION +
                    "remote_file_check.py ",
                    file_list=flist, container_name=container_name)
                Result = ans_runner.get_parsed_ansible_output(result)
                final_status.append(Result[0])
                final_result.extend(eval(Result[1]))
                final_msg.extend(Result[2])

            for p in perform_on:
                for obj in os_hostobj_list:
                    ans_runner = ansible_runner([obj])
                    if obj.getRole() == p:
                        os_dir = input_params[p + '_dir']
                        all_baseline = eval(open(baseline_file).read())
                        baseline = all_baseline[p]
                        open(
                            file_info_dir +
                            'os_baseline',
                            'w').write(
                            str(baseline))

                        # if container, make dir list and copy to container
                        if is_containerized:
                            for container, os_dir in os_dir.items():
                                self.createDirList(
                                    os_dir,
                                    file_info_dir)
                                ConsolidateResults(
                                    flist,
                                    container_name=container)
                                os.system('rm ' + file_info_dir + 'dir_list ')

                        else:
                            os_dir_list = []
                            [os_dir_list.extend(d) for d in os_dir.values()]
                            # os_dir = os_dir.values()
                            self.createDirList(os_dir_list, file_info_dir)
                            # flist.append("/tmp/sec_hc/dir_list")
                            ConsolidateResults(flist)
            os.system(
                'rm -rf ' +
                file_info_dir +
                'os_baseline ' +
                file_info_dir +
                'output')
            os.system(
                'rm ' +
                file_info_dir +
                'dir_list ')
            if 404 in final_status:
                return (404, final_result, final_msg)
            else:
                return (200, final_result, final_msg)
        except Exception as e:
            print ("exception in perform_file_permission_check is--", e)
            os.system(
                'rm -rf ' +
                file_info_dir +
                'os_baseline ' +
                file_info_dir +
                'output')
            os.system(
                'rm ' +
                file_info_dir +
                'dir_list ')
            print (
                "Exception occured in executing" +
                " perform_file_permission_check")
            message = {
                'message': 'Test case execution failed due to some exception'}
            return (404, json.dumps([message]), [])