コード例 #1
0
 def get_crypt(self, *args, **kwargs) -> CryptAbstract:
     if self.config.method == "fernet":
         crypt_object = import_from("pyms.crypt.fernet",
                                    CRYPT_RESOURCES_CLASS)
     elif self.config.method == "aws_kms":
         crypt_object = import_from("pyms.cloud.aws.kms",
                                    CRYPT_RESOURCES_CLASS)
     else:
         crypt_object = CryptNone
     logger.debug("Init crypt {}".format(crypt_object))
     return crypt_object(config=self.config, *args, **kwargs)
コード例 #2
0
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input('Type a password to generate the key file: ')
         generate_file = self.get_input('Do you want to generate a file in {}? [Y/n]'.format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter('gh:python-microservices/cookiecutter-pyms', checkout=self.branch)
         self.print_ok("Created project OK")
     if self.merge_swagger:
         try:
             merge_swagger_file(main_file=self.file)
             self.print_ok("Swagger file generated [swagger-complete.yaml]")
         except FileNotFoundError as ex:
             self.print_error(ex.__str__())
             return False
     return True
コード例 #3
0
 def init_jaeger_tracer(self):
     """This scaffold is configured whith `Jeager <https://github.com/jaegertracing/jaeger>`_ but you can use
     one of the `opentracing tracers <http://opentracing.io/documentation/pages/supported-tracers.html>`_
     :param service_name: the name of your application to register in the tracer
     :return: opentracing.Tracer
     """
     check_package_exists("jaeger_client")
     Config = import_from("jaeger_client", "Config")
     host = {}
     if self.host:
         host = {'local_agent': {'reporting_host': self.host}}
     metrics_config = get_conf(service=get_service_name(service="metrics"),
                               empty_init=True)
     metrics = ""
     if metrics_config:
         service_name = self.component_name.lower().replace("-",
                                                            "_").replace(
                                                                " ", "_")
         metrics = PrometheusMetricsFactory(service_name_label=service_name)
     config = Config(config={
         **{
             'sampler': {
                 'type': 'const',
                 'param': 1,
             },
             'propagation': 'b3',
             'logging': True
         },
         **host
     },
                     service_name=self.component_name,
                     metrics_factory=metrics,
                     validate=True)
     return config.initialize_tracer()
コード例 #4
0
 def init_tracer(self) -> None:
     """Set attribute in flask `tracer`. See in `pyms.flask.services.tracer` how it works
     :return: None
     """
     if self.tracer:
         FlaskTracing = import_from("flask_opentracing", "FlaskTracing")
         client = self.tracer.get_client()
         self.application.tracer = FlaskTracing(client, True, self.application)
コード例 #5
0
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input("Type a password to generate the key file: ")
         # Should use yes_no_input insted of get input below
         # the result should be validated for Yes (Y|y) rather allowing anything other than 'n'
         generate_file = self.get_input(
             "Do you want to generate a file in {}? [Y/n]".format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         # Spoted Unhandle exceptions - The encrypt function throws FileDoesNotExistException, ValueError
         # which are not currently handled
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter("gh:python-microservices/cookiecutter-pyms",
                      checkout=self.branch)
         self.print_ok("Created project OK")
     if self.merge_swagger:
         try:
             merge_swagger_file(main_file=self.file)
             self.print_ok("Swagger file generated [swagger-complete.yaml]")
         except FileNotFoundError as ex:
             self.print_error(ex.__str__())
             return False
     if self.create_config:
         use_requests = self.yes_no_input("Do you want to use request")
         use_swagger = self.yes_no_input("Do you want to use swagger")
         try:
             conf_file_path = create_conf_file(use_requests, use_swagger)
             self.print_ok(f'Config file "{conf_file_path}" created')
             return True
         except Exception as ex:
             self.print_error(ex.__str__())
             return False
     return True
コード例 #6
0
ファイル: main.py プロジェクト: f-arruza/pyms
 def run(self):
     crypt = Crypt()
     if self.create_key:
         path = crypt._loader.get_path_from_env()  # pylint: disable=protected-access
         pwd = self.get_input('Type a password to generate the key file: ')
         generate_file = self.get_input('Do you want to generate a file in {}? [Y/n]'.format(path))
         generate_file = generate_file.lower() != "n"
         key = crypt.generate_key(pwd, generate_file)
         if generate_file:
             self.print_ok("File {} generated OK".format(path))
         else:
             self.print_ok("Key generated: {}".format(key))
     if self.encrypt:
         encrypted = crypt.encrypt(self.encrypt)
         self.print_ok("Encrypted OK: {}".format(encrypted))
     if self.startproject:
         check_package_exists("cookiecutter")
         cookiecutter = import_from("cookiecutter.main", "cookiecutter")
         cookiecutter('gh:python-microservices/cookiecutter-pyms', checkout=self.branch)
         self.print_ok("Created project OK")
     return True
コード例 #7
0
ファイル: driver.py プロジェクト: oadiazm/pyms
 def get_service(service: Text, *args, **kwargs) -> DriverService:
     service_object = import_from("pyms.flask.services.{}".format(service), "Service")
     logger.debug("Init service {}".format(service))
     return service_object(*args, **kwargs)
コード例 #8
0
 def get_service(self, service, *args, **kwargs):
     service_object = import_from("pyms.flask.services.{}".format(service),
                                  "Service")
     logger.debug("Init service {}".format(service))
     return service_object(service=self.service, *args, **kwargs)
コード例 #9
0
 def init_action(self, microservice_instance):
     FlaskTracing = import_from("flask_opentracing", "FlaskTracing")
     client = self.get_client()
     microservice_instance.application.tracer = FlaskTracing(
         client, True, microservice_instance.application)