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)
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
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()
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)
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
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
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)
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)
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)