def load(file_name):
        with open(file_name) as input_file:
            content = input_file.read()

        json_data_representation = json.loads(
            content, object_pairs_hook=collections.OrderedDict)

        data = Data()

        for json_service_representation in json_data_representation:
            service = Service(
                ServiceDescription(
                    ServiceLocalization(json_service_representation['host'],
                                        json_service_representation['port']),
                    ServiceParameters(
                        json_service_representation['service_type'],
                        '/redfish/v1', None)))

            for json_resource_representation in json_service_representation[
                    'resources']:
                resource = Resource(
                    json_resource_representation['path'],
                    json_resource_representation['status_code'],
                    json_resource_representation['headers'],
                    json_resource_representation['body'])

                service.add_resource(resource)

            data.add_service(service)

        return data
Beispiel #2
0
 def _create_pod_manager_service_description():
     service_localization = ServiceLocalization(PodManagerDefaults.host,
                                                PodManagerDefaults.port)
     service_parameters = ServiceParameters(PodManagerDefaults.service_type,
                                            PodManagerDefaults.root_path,
                                            PodManagerDefaults.protocol)
     return ServiceDescription(service_localization, service_parameters)
Beispiel #3
0
    def retrieve_service_descriptions(cls):
        pod_manager_service_description = ServiceDescription(
            ServiceLocalization(ServiceRetriever._pod_manager_host,
                                ServiceRetriever._default_port),
            ServiceParameters(ServiceRetriever._pod_manager_service_type,
                              ServiceRetriever._pod_manager_root_path,
                              ServiceRetriever._default_protocol))

        descriptions = cls._additional_work()
        descriptions.insert(0, pod_manager_service_description)
        return descriptions
Beispiel #4
0
    def parse_line(line):
        match = PodManagerLogParser._service_detected_pattern.match(line)

        uri = match.group(1)
        service_type = match.group(2)
        parsed_uri = urllib.parse.urlsplit(uri)

        service_localization = ServiceLocalization(parsed_uri.hostname,
                                                   parsed_uri.port)
        service_parameters = ServiceParameters(service_type, parsed_uri.path,
                                               parsed_uri.scheme)

        return [ServiceDescription(service_localization, service_parameters)]
    def parse_line(line):
        line_split = line.split()
        uri = line_split[0]
        parsed_uri = urllib.parse.urlsplit(uri)
        root_path = parsed_uri.path
        protocol = Protocols.from_string(parsed_uri.scheme)
        service_type = line_split[1]

        service_localization = ServiceLocalization(parsed_uri.hostname,
                                                   parsed_uri.port)
        service_parameters = ServiceParameters(service_type, root_path,
                                               protocol)

        return [ServiceDescription(service_localization, service_parameters)]
Beispiel #6
0
    def parse_line(line):
        line_split = line.split()
        host = line_split[1]
        service_type = line_split[2]
        [ports, protocol
         ] = ServiceConnectionReader.read_connection_security_parameters(
             service_type)

        service_parameters = ServiceParameters(service_type,
                                               PodManagerDefaults.root_path,
                                               protocol)

        service_descriptions = []

        for port in ports:
            service_localization = ServiceLocalization(host, port)
            service_description = ServiceDescription(service_localization,
                                                     service_parameters)
            service_descriptions.append(service_description)

        return service_descriptions
    def _append_descriptions_from_log(descriptions, file):
        for line in file:
            match = PodManagerLogParser._service_detected_regular_expression.match(
                line)

            if match is not None:
                uri = match.group(1)
                service_type = match.group(2)

                parsed = urllib.parse.urlparse(uri)
                protocol = parsed.scheme
                host = parsed.hostname
                port = parsed.port
                root_path = parsed.path

                description = ServiceDescription(
                    ServiceLocalization(host, port),
                    ServiceParameters(service_type, root_path, protocol))

                if description in descriptions:
                    descriptions.remove(description)

                descriptions.append(description)
Beispiel #8
0
    def _additional_work():
        descriptions = []

        if os.path.isfile(LeasesParser._leases_file_location):
            with open(LeasesParser._leases_file_location) as leases_file:
                lines = leases_file.readlines()

                for line in lines:
                    line_split = line.split()

                    host = line_split[1]

                    service_type = line_split[2]

                    [port, protocol] = LeasesParser._read_connection_security_parameters(service_type)

                    description = ServiceDescription(
                        ServiceLocalization(host, port),
                        ServiceParameters(service_type, ServiceRetriever._pod_manager_root_path, protocol)
                    )

                    descriptions.append(description)

        return descriptions
Beispiel #9
0
 def crawl(arguments):
     service_description = ServiceDescription.from_uri(arguments.uri)
     data = ScriptController._crawl_services([service_description])
     print(DataToJsonConverter.dumps(data, False))