Exemplo n.º 1
0
    def main(self):
        with self.get_system() as system:
            file_id = self.prepare_file_by_args(system)

            if file_id is None:
                raise ValueError("No file specification supplied")

            api = system.async_call.api_analysis(file_id.get_result())

            if self.store and self.project:
                if not self.proj_commit_date:
                    raise ValueError(
                        "Commit date required when storing API results of a project"
                    )
                system.call.api_store_project(self.project, self.proj_commit,
                                              self.proj_commit_date,
                                              api.result, api.meta)
            elif self.store and self.package_name:
                system.call.api_store_package(self.package_name,
                                              self.pkg_version,
                                              self.pkg_release,
                                              self.pkg_distro, api.result,
                                              api.meta)
            elif self.store:
                # when --package
                raise RuntimeError("Store API not supported")

            if self.meta:
                print dict2json(api.get_result_with_meta())
            else:
                print dict2json(api.result)

        return 0
Exemplo n.º 2
0
    def main(self):
        with self.get_system() as system:
            file_id = self.prepare_file_by_args(system)

            if not file_id:
                raise ValueError("No file specified")

            deps = system.async_call.deps_analysis(file_id.get_result())

            if self.store and self.project:
                if not self.proj_commit_date:
                    raise ValueError(
                        "Commit date required when storing dependency results of a project"
                    )
                system.call.deps_store_project(self.project, self.proj_commit,
                                               self.proj_commit_date,
                                               deps.result, deps.meta)
            elif self.store and self.package_name:
                system.call.deps_store_package(self.package_name,
                                               self.pkg_version,
                                               self.pkg_release,
                                               self.pkg_distro, deps.result,
                                               deps.meta)
            elif self.store:
                # TODO: when --package
                raise RuntimeError("Store Deps not supported")

            if self.meta:
                print dict2json(deps.get_result_with_meta())
            else:
                print dict2json(deps.result)

        return 0
Exemplo n.º 3
0
    def main(self):
        with self.get_system() as system:
            file_id = self.prepare_file_by_args(system)

            if file_id is None:
                raise ValueError("No file specification supplied")

            api = system.async_call.api_analysis(file_id.get_result())

            if self.store and self.project:
                if not self.proj_commit_date:
                    raise ValueError("Commit date required when storing API results of a project")
                system.call.api_store_project(self.project, self.proj_commit,
                                              self.proj_commit_date, api.result, api.meta)
            elif self.store and self.package_name:
                system.call.api_store_package(self.package_name, self.pkg_version, self.pkg_release,
                                              self.pkg_distro, api.result, api.meta)
            elif self.store:
                # when --package
                raise RuntimeError("Store API not supported")

            if self.meta:
                print dict2json(api.get_result_with_meta())
            else:
                print dict2json(api.result)

        return 0
Exemplo n.º 4
0
    def main(self):
        with self.get_system() as system:
            file_id = self.prepare_file_by_args(system)

            if not file_id:
                raise ValueError("No file specified")

            deps = system.async_call.deps_analysis(file_id.get_result())

            if self.store and self.project:
                if not self.proj_commit_date:
                    raise ValueError("Commit date required when storing dependency results of a project")
                system.call.deps_store_project(self.project, self.proj_commit,
                                               self.proj_commit_date, deps.result, deps.meta)
            elif self.store and self.package_name:
                system.call.deps_store_package(self.package_name, self.pkg_version, self.pkg_release,
                                               self.pkg_distro, deps.result, deps.meta)
            elif self.store:
                # TODO: when --package
                raise RuntimeError("Store Deps not supported")

            if self.meta:
                print dict2json(deps.get_result_with_meta())
            else:
                print dict2json(deps.result)

        return 0
Exemplo n.º 5
0
    def _generate_status(self):
        ret = {
            "author": get_user(),
            "generated": get_time_str(),
            "gofed_version": VERSION,
            "hostname": get_hostname(),
            "topology": []
        }
        system = System(self.get_config(), self.get_system_json_path())

        for service_name in system.get_services_list():
            try:
                registry_response = system.get_service_location(service_name)
            except Exception as e:
                log.warning("Encountered error while querying for service '%s', skipping this service ('%s')"
                            % (service_name, str(e)))
            for response in registry_response:
                ret['topology'].append({
                    'service': service_name,
                    'host': response[0],
                    'port': response[1],
                    'type': 'computational' if system.is_computational(service_name) else 'storage'
                })

        ret['topology'].append({
            'type': 'registry',
            'host': system.get_registry_host(),
            'port': system.get_registry_port()
        })

        print dict2json(ret)
Exemplo n.º 6
0
    def __init__(self, config, system_json_file, service=False):

        self._config = config
        self._connections = {}
        self._service = service
        with open(system_json_file, 'r') as f:
            self._system = json.load(f)

        log.debug("Config file:\n%s\n" % dict2json(config))
        log.debug("System:\n%s\n" % dict2json(self._system))
Exemplo n.º 7
0
    def main(self, project_file):
        with self.get_system() as system:

            with open(project_file, 'r') as f:
                file_id = system.async_call.upload(f.read())

            licenses = system.async_call.license_analysis(file_id.result)

            print dict2json(licenses.result)

        return 0
Exemplo n.º 8
0
    def main(self, projectfile):
        with self.get_system() as system:

            with open(projectfile, 'r') as f:
                file_id = system.async_call.upload(f.read())

            br = system.async_call.spec_buildrequires(file_id.get_result())

            print dict2json(br.result)

        return 0
Exemplo n.º 9
0
    def main(self, project_file):
        with self.get_system() as system:

            with open(project_file, 'r') as f:
                file_id = system.async_call.upload(f.read())

            licenses = system.async_call.license_analysis(file_id.result)

            print dict2json(licenses.result)

        return 0
Exemplo n.º 10
0
    def _fedora_pkgdb_packages_list(cls):
        packages = []
        page = 0

        while True:
            response = urllib2.urlopen(PKGDB_API_URL + '&page=%d' % (page + 1))

            if response.code != 200:
                raise RuntimeError("Failed to receive packages from Fedora package database (%s)"
                                   % str(response.code))

            response = json.loads(response.read())

            if response['output'] != 'ok':
                raise RuntimeError("Bad response from Fedora package database:\n%s"
                                   % dict2json(response))

            packages = packages + response['packages']

            if response['page'] == response['page_total']:
                break

            page = int(response['page'])

        return packages
Exemplo n.º 11
0
    def _fedora_pkgdb_packages_list(cls):
        packages = []
        page = 0

        while True:
            response = urllib2.urlopen(PKGDB_API_URL + '&page=%d' % (page + 1))

            if response.code != 200:
                raise RuntimeError(
                    "Failed to receive packages from Fedora package database (%s)"
                    % str(response.code))

            response = json.loads(response.read())

            if response['output'] != 'ok':
                raise RuntimeError(
                    "Bad response from Fedora package database:\n%s" %
                    dict2json(response))

            packages = packages + response['packages']

            if response['page'] == response['page_total']:
                break

            page = int(response['page'])

        return packages
Exemplo n.º 12
0
    def main(self, project_file1, project_file2):
        with self.get_system() as system:

            opts1 = self.construct_opts(first=True)
            opts2 = self.construct_opts(first=False)

            with open(project_file1, 'r') as f:
                file_id1 = system.async_call.upload(f.read())

            with open(project_file2, 'r') as f:
                file_id2 = system.async_call.upload(f.read())

            deps1 = system.async_call.deps_analysis(file_id1.result, opts1)
            deps2 = system.async_call.deps_analysis(file_id2.result, opts2)

            depsdiff = system.async_call.deps_diff(deps1.result, deps2.result)

            print dict2json(depsdiff.result)

        return 0
Exemplo n.º 13
0
    def main(self):
        with self.get_system() as system:
            file1_id, file2_id = self.prepare_files2_by_args(system)

            if not file1_id:
                raise ValueError("First file not specified")

            if not file2_id:
                raise ValueError("Second file not specified")

            api1 = system.async_call.api_analysis(file1_id.result)
            api2 = system.async_call.api_analysis(file2_id.result)

            apidiff = system.async_call.api_diff(api1.result, api2.result)

            if self.meta:
                print dict2json(apidiff.get_result_with_meta())
            else:
                print dict2json(apidiff.result)

        return 0
Exemplo n.º 14
0
    def main(self):
        with self.get_system() as system:
            file1_id, file2_id = self.prepare_files2_by_args(system)

            if not file1_id:
                raise ValueError("First file not specified")

            if not file2_id:
                raise ValueError("Second file not specified")

            api1 = system.async_call.api_analysis(file1_id.result)
            api2 = system.async_call.api_analysis(file2_id.result)

            apidiff = system.async_call.api_diff(api1.result, api2.result)

            if self.meta:
                print dict2json(apidiff.get_result_with_meta())
            else:
                print dict2json(apidiff.result)

        return 0
Exemplo n.º 15
0
    def _generate_status(self):
        ret = {
            "author": get_user(),
            "generated": get_time_str(),
            "gofed_version": VERSION,
            "hostname": get_hostname(),
            "topology": []
        }
        system = System(self.get_config(), self.get_system_json_path())

        for service_name in system.get_services_list():
            try:
                registry_response = system.get_service_location(service_name)
            except Exception as e:
                log.warning(
                    "Encountered error while querying for service '%s', skipping this service ('%s')"
                    % (service_name, str(e)))
            for response in registry_response:
                ret['topology'].append({
                    'service':
                    service_name,
                    'host':
                    response[0],
                    'port':
                    response[1],
                    'type':
                    'computational'
                    if system.is_computational(service_name) else 'storage'
                })

        ret['topology'].append({
            'type': 'registry',
            'host': system.get_registry_host(),
            'port': system.get_registry_port()
        })

        print dict2json(ret)
Exemplo n.º 16
0
    def main(self):
        service_classes = []

        if self.service_port:
            print(self._get_service_port(self.service_port))
            return 0

        log.info("Performing analyses for services in '%s'" % self.service_dir)
        for service in os.listdir(self.service_dir):

            path = os.path.join(self.service_dir, service)

            if not os.path.isdir(path):
                continue
            service_classes.append(self._analyse_service(path))

        self._sanity_check(service_classes)

        services = self._aggregate_services(service_classes)

        if not self.no_configs and not self.check_only:
            self._render_services_conf(services)
            self._render_gofed_conf(services)

        if not self.check_only:
            self._make_symlinks(services)

            ret = self._make_header(services)

            if not self.ugly_output:
                ret = dict2json(ret)
            else:
                ret = json.dumps(ret)
            if self.output_file == '-':
                print ret
            else:
                with open(self.output_file, "w") as f:
                    f.write(ret)
                self._copy_system_json(self.output_file, services)

            self._generate_scenarios()

        return 0
Exemplo n.º 17
0
    def main(self):
        service_classes = []

        if self.service_port:
            print(self._get_service_port(self.service_port))
            return 0

        log.info("Performing analyses for services in '%s'" % self.service_dir)
        for service in os.listdir(self.service_dir):

            path = os.path.join(self.service_dir, service)

            if not os.path.isdir(path):
                continue
            service_classes.append(self._analyse_service(path))

        self._sanity_check(service_classes)

        services = self._aggregate_services(service_classes)

        if not self.no_configs and not self.check_only:
            self._render_services_conf(services)
            self._render_gofed_conf(services)

        if not self.check_only:
            self._make_symlinks(services)

            ret = self._make_header(services)

            if not self.ugly_output:
                ret = dict2json(ret)
            else:
                ret = json.dumps(ret)
            if self.output_file == '-':
                print ret
            else:
                with open(self.output_file, "w") as f:
                    f.write(ret)
                self._copy_system_json(self.output_file, services)

            self._generate_scenarios()

        return 0
Exemplo n.º 18
0
    def main(self):
        with self.get_system() as system:
            packages = system.async_call.goland_package_listing()

            if self.format:
                for package in packages.result:
                    fmt = {
                        '\%a': package["acls"],
                        '\%c': package["creation_date"],
                        '\%d': package["description"],
                        '\%k': package["koschei_monitor"],
                        '\%m': package["monitor"],
                        '\%n': package["name"],
                        '\%r': package["review_url"],
                        '\%S': package["status"],
                        '\%s': package["summary"],
                        '\%u': package["upstream_url"]
                    }

                    print(format_str(self.format, fmt))
            else:
                print(dict2json(packages.result))

        return 0
Exemplo n.º 19
0
 def signal_startup(cls, config):
     log.info("got startup signal")
     log.info("config sections: " + dict2json(config))
Exemplo n.º 20
0
 def signal_startup(cls, config):
     log.info("got startup signal")
     log.info("config sections: " + dict2json(config))