Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 23, 2021 09:34 am GMT

Configuration as a Service (occson) and Python

At the beginning of our occson adventure, let's first ask ourselves a basic question: What is configuration?

A configuration is a collection of information necessary for the operation of a program. It can be, for example, environment variables or structured data formats (json, yaml).

How we handle configurations is also important.
Probably each of us is familiar with problems related to uploading configuration file to server for application :|.
Just as problematic seems to be maintaining the configuration in the right version.
Is the FOO variable needed for the application to work? - How many times have you asked a similar question?

However, there is a solution for these problems - it is Configuration as a Service.
A service that provides configuration to an application :)
We call it occson.

Today I have prepared a ccs client especially for python developers. CCS? Configuration Control System :)

import requestsfrom AesEverywhere import aes256class Downloader:  def __init__(self, uri, access_token, passphrase):    self.uri = uri    self.access_token = access_token    self.passphrase = passphrase  def call(self):    response = requests.get(url = self.uri, headers = self.__headers())    return aes256.decrypt(response.json()['encrypted_content'], self.passphrase)  def __headers(self):    return {      'Content-Type': 'application/json',      'Authorization': 'Token token={0}'.format(self.access_token)    }class Uploader:  def __init__(self, uri, content, access_token, passphrase, force):    self.uri = uri    self.content = content    self.access_token = access_token    self.passphrase = passphrase    self.force = force  def call(self):    response = requests.post(url = self.uri, json = self.__data(), headers = self.__headers())    return response.status_code == 200 or response.status_code == 201  def __data(self):    return {      'encrypted_content': aes256.encrypt(self.content, self.passphrase),      'force': 'true' if self.force else 'false'    }  def __headers(self):    return {      'Content-Type': 'application/json',      'Authorization': 'Token token={0}'.format(self.access_token)    }class Document:  def __init__(self, uri, access_token, passphrase):    self.uri = self.__build_uri(uri)    self.access_token = access_token    self.passphrase = passphrase  def upload(self, content, force = False):    return Uploader(self.uri, content, self.access_token, self.passphrase, force).call()  def download(self):    return Downloader(self.uri, self.access_token, self.passphrase).call()  def __build_uri(self, uri):    return uri.replace('ccs://', 'https://api.occson.com/')

How to use the above client?

Install dependencies (requests, aes-everywhere) And use the ccs API.

import ccsdocument = ccs.Document("ccs://.env", "<ACCESS_TOKEN>", "test")print(document.download())print(document.upload("A=1
B=2", True))

How to use occson with ruby? Read about it on our blog


Original Link: https://dev.to/tkowalewski_9/configuration-as-a-service-occson-and-python-2b4

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To