* vwa(front): Fix tests symLinks to Kubeflow common code
Add field preserveSymLinks in angular.json in order to link to
Kubeflow common library during tests.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Fix unit tests failing
Fix unit tests failing for the following components: app, index,
index-default, index-rok, form-default, form-rok
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Add delete button to Volume details page
In this commit:
- Add button for Delete action.
- Create Actions Service to handle delete action and implement it in
all components that use it.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(back): Get a PVC's events
Add logic in the backend to fetch the events of a PVC.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Add EVENTS tab to Volume details page
Add Events tab to show the available events of the pvc in the form
of a table, in order to help a user with debugging the pvc.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): fix linting errors
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(front): Rename form-default component
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Create missing module files
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Remove form-rok and form components
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Update JWA's @angular/common package
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Modify rok-url component
Signed-off-by: Elena Zioga <elena@arrikto.com>
* web-apps(front): Add Rok URL message
Signed-off-by: Elena Zioga <elena@arrikto.com>
* vwa(front): Update VWA's @angular/common package
Signed-off-by: Elena Zioga <elena@arrikto.com>
* vwa(front): Remove the headers request
Remove the headers request since the common code implements it.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Fix JWA's unit tests
Fix JWA's unit tests.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* gh-actions: Add GH action to run JWA unit tests
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(build): Update Dockerfile
Update Dockerfile to not build Rok.
Signed-off-by: Elena Zioga <elena@arrikto.com>
Signed-off-by: Elena Zioga <elena@arrikto.com>
* vwa(back): Get a single PVC and the pods using it
Add logic in the backend to fetch a single PVC and the pods using
it.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Create Volume details page with OVERVIEW tab
Create OVERVIEW tab to show key information about the PVC.
* vwa(front): Format files
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(back): Get a notebook's events
- Add logic in the backend to fetch the events of a notebook.
- Fix the authorization parameters in the get_notebook_events
function.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(front): Add EVENTS tab to Notebook details page
Add Events tab to show the available events of the notebook in the
form of a table, in order to help a user with debugging the
notebook.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(back): Get a notebook's logs
Add logic in the backend to fetch the logs of a notebook's
underlying pod.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(front): Add LOGS tab to Notebook details page
- Create Logs tab to show the logs of the notebook's underlying
pod.
- Create Logs Viewer component in Kubeflow common library exactly
like the one we have in MWA.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Support all-namespaces
The VWA will now be able to work with the "All namespaces" option of
the CentralDashboard.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* twa(front): Support all-namespaces
The TWA will now be able to work with the "All namespaces" option of
the CentralDashboard.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Add cypress attributes
Add more attributes for elements to be selectable when running e2e
tests.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(e2e): Add e2e tests for all-namespaces
Add a new e2e test that checks if the Namespaces column is shown
when selecting all-namespaces.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* dashboard: Allow all-namespaces for vwa/twa
The dashboard will be allowing the VWA and TWA to work with
all-namespaces, now that we added this functionality.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(back): Get a single notebook and its pod
In this commit:
- Add logic in the backend to fetch a single notebook and its
underlying pod.
- Make list_pods function in Kubeflow common code to accept a
label_selector parameter and use it to filter out results when
available.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(front): Create Notebook details page with OVERVIEW tab
In this commit:
- Create OVERVIEW tab to show key information about the notebook
and its underlying pod.
- Create Content List Item component in Kubeflow commonn library to
be able to encapsulate any content/component in the form of a
list item.
- Create Variables Group component in Kubeflow common library to
show groups of variables in the form of chips.
- Small UI tweak in Details list Item component from Kubeflow
common library in order to stop chips from overlapping with each
other.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* Fix linting errors
* Include Kubeflow common library's new package-lock.json
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* jwa(front): Replace pod conditions with notebook status conditions
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* web-apps(back): Backend fetch pods fix
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* web-apps(front): Import @types/lodash package
Import @types/lodash package to support type definitions.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* web-apps(front): Changes needed for trials table
In this commit:
- Adjust filtering tooltip to expose info only for the existing
columns.
- Extend table component to be able to highlight a row.
- Fix autocomplete dropdown bug.
Signed-off-by: Elena Zioga <elena@arrikto.com>
Signed-off-by: Elena Zioga <elena@arrikto.com>
* web-apps(front): Add filtering functionality in WAs (kubeflow/kubeflow#6462)
* Add filtering functionality in the common table component.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Differentiate type property (kubeflow/kubeflow#6462)
* Differentiate type property from other ComponentValue properties.
Signed-off-by: Elena Zioga <elena@arrikto.com>
Signed-off-by: Elena Zioga <elena@arrikto.com>
* vwa(front): Enable sorting in VWA (kubeflow/kubeflow#6460)
* Enable sorting functionality in VWA.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* twa(front): Enable sorting in TWA (kubeflow/kubeflow#6460)
* Enable sorting functionality in TWA.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* web-apps(front): Fix unit tests
* Fix unit tests.
Signed-off-by: Elena Zioga <elena@arrikto.com>
Signed-off-by: Elena Zioga <elena@arrikto.com>
* web-apps(front): Add sorting in common code (kubeflow/kubeflow#6460)
* Add sorting functionality in the common code.
Signed-off-by: Elena Zioga <elena@arrikto.com>
* jwa(front): Enable sorting in JWA (kubeflow/kubeflow#6460)
* Enable sorting functionality in JWA.
Signed-off-by: Elena Zioga <elena@arrikto.com>
Signed-off-by: Elena Zioga <elena@arrikto.com>
* wa(front): Use es2019 to have .flat()
Add es2019 to the tsconfig.compilerOptions.lib array in order for the
tslint linter to not complain about the use of flat().
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): all-namespaces requests helper
Add a helper function in the backend.service that can take care of
creating the observable that will make requests for all namespaces.
Refs arrikto/dev#1529
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Disable toolbar + button on all-namespaces
Add helper methods to toolbar buttons to disable/enable them and add a
tooltip if the user selected all-namespaces.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Common logic for dynamic ns column
We want to show a `namespace` column when the user selects
all-namespaces, to make it easier to identify the different objects.
To not replicate the logic of adding and removing a column if all
namespaces was selected we moved this logic in the common table
component.
We also add an option to the component's config to disable/enable this
behavior.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(front): Utilize common code for all-namespaces
Update the JWA's code to work with the common code introduced to
supporting all-namespaces. This includes changes for:
* The Namespace column in the main table
* Helpers for performing requests in all namespaces
* Dynamically enabling/disabling the `+ new` button
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* frontend: Update the linting GH Action
Ensure we run `ng lint` to check if the code is properly linted.
Previously we just did `ng lint --fix` which would try to fix the code,
and not complain about it. But this means that we don't actually check
if the code is linted.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Fix linting issues in common code
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* gh-actions: Lint apps in parallel
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* web-apps(front): Introduce new Editor component
Create new Editor component as part of the Kubeflow Common Library, that
wraps and integrates Monaco Editor as an AMD module.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* web-apps(front): Add unit tests for Editor component
Add unit tests for the Editor component's loadability and
functionality
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* Fix Editor-related linting errors
- Add const prvEditor in tests
- Ignore monaco.ts interface file in ESLint
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Create Logs Viewer component in Kubeflow common library similar to the
one we use in MWA.
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
Signed-off-by: Orfeas Kourkakis <orfeas@arrikto.com>
* vwa(front): Use ng serve for local dev
Add proxy rules to connect the webpack dev server with the backend
* twa(front): Use ng serve for local dev
Refs arrikto/dev#1597
* vwa(back): Fix the install-deps make rule
Use the new common code path when installing the common packages.
* wa(front): Disable Angular analytics
Edit the angular.json file of all our frontend components to not send
Angular analytics. This way we won't be seeing a y/N input each time we
try to build the frontend, which could also block a CI/CD system.
* wa(front): Add exponential-backoff service
Create an Angular Service that handles the polling. Specifically the
polling function has as input an observable responsible for fetching the
data. It will return a final observable, which will be using the
fetch-observable, that will only be emitting the final data.
This service will take care of:
1. Checking if the new data is new and reset the polling
2. Cancelling in-flight requests, if someone terminates the subscription
* vwa(front): Use the new Polling Service
The frontend code of VWA will now be using the new Poller Service which
has a pure RxJS implementation underneath. This will make it simpler to
cancel in-flight requests and also moves the reset logic into the common
code.
* jwa(front): Use the new Polling Service
The frontend code of JWA will now be using the new Poller Service which
has a pure RxJS implementation underneath. This will make it simpler to
cancel in-flight requests and also moves the reset logic into the common
code.
* twa(front): Use the new Polling Service
The frontend code of TWA will now be using the new Poller Service which
has a pure RxJS implementation underneath. This will make it simpler to
cancel in-flight requests and also moves the reset logic into the common
code.
* jwa(back): Use gevent for gunicorn's workers
Since the backend only serves simple HTTP requests that need some K8s
data, instead of only have working processes we will also use greenlets.
This way we can have multiple user-space threads that will handle the
http requests.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(front): Use cli to continuously build the UI
We extend the current package.json file to allow us to build and serve
the UI via Angular's dev server.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Handle all-namespaces
The common library will add an event handler to dashboard's lib when it
is emitting all the namespaces. By extension, the common namespace
service will be exposing a new observable that will be emitting the list
of all the namespaces, when the user selects this from the dashboard.
This way current apps won't break, since they will simply not handle
this new observable.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Handle dynamic table colums
The UIs will be showing a new column for the namespace only when the
user selects all-namespaces from the dashboard. The common code should
expose handlers for modifying the tables' config columns accordingly.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(front): Make requests for all-namespaces
As a first iteration in order for the JWA to support showing Notebooks
from all namespaces it will be polling with batch requests. After all
the requests, for all the namespaces, succeed then the JWA will sort
them based on their name and show them in the table.
While this approach will be generating a significantly bigger amount of
requests, we chose this approach because:
1. It was simple to implement, since we only need to modify the frontend
2. We don't add any extra abstractions on the backend and keep the 1-1
relationship with the k8s api endpoints
3. To further optimize we now only look on K8s concepts and won't have
to adjust them to a custom backend implementation [2]
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(back): Add helper for deserializing JSON obj
In some cases we might need to construct Python k8s lib objects from the
JSONs that are provided by clients. I.e. the UI will be sending a PVC
object in json format, so the backend will need to create the
corresponding client.V1PersistentVolumeClaim object and submit it.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* wa(back): Serialization helper
Add helper function for converting a k8s-client object into a dict that
can be sent as an HTTP response.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* wa(back): Add dry run to Notebooks and PVCs
The backend will need to be able to create objects with dry-run, in
order to ensure they are valid. The backend will need to check that both
the Notebook and the PVCs can be created beforehand.
This way we avoid the scenario where we create PVCs but the Notebook
fails to be created, and the PVCs are never garbage collected.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* wa(back): Update kubernetes to 0.17
In order to support dry-run we must use the 0.17 version of the Python
k8s client.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* wa(back): Extend api module to patch pvcs
The backend will need to be able to PATCH PVCs in order to set the
ownerReference to the Notebook that mounts the PVCs.
Ref: arrikto/dev/issues/386#issuecomment-856700392
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* jwa(back): Work with new Volumes API
The backend API should not add any more layers of abstractions on top of
the K8s API. The backend should expect the client/UI to be sending the
entire PVC spec of a new PVC.
Refs: arrikto/dev/issues/386
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* jwa(back): Add unittests for new volumes API
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* jwa(back): Extend the PVC info returned
We want to show both the access mode and size of the existing PVCs, when
a user clicks on the dropdown to select which PVC to mount.
The backend will need to provide this information to the frontend. We
don't want to send the K8s list of PVCs since this will result in a lot
of unnecessary data to be sent.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Ilias Katsakioris <elikatsis@arrikto.com>
* jwa(front): Add proxy config for Rok
When developing the Rok flavor locally we will need to be able to open
the Rok chooser. This can be done by using Angular/webpack proxy to
bring the exposed rok service and the app under the same domain.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Remove card from form
The form of the app should not be a big card, but a normal form.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Install AceModule for yaml editing
Install AceModule to allow users to edit yamls of objects.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* wa(front): Change the styling of form sections
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Create common volume components
Component for:
* New PVC and configuring its spec
* Attaching an existing PVC in a Notebook
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Update Rok form for new Volume API
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Mark inputs as dirty when restoring Lab
When the UI autofills the form with values from a JupyterLab snapshot
then it should mark the touched fields as dirty. This way if a field has
errors the UI will make that input red.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa: Update ConfigMap in manifests
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(front): Fix format errors
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* jwa(front): Make ng lint work by ignoring e2e/tsconfig.json
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* web-apps(front): Make the table responsive
We introduced all of our changes in the underlying TableComponent. This
component can then be either used independently or inside a material
card.
The changes we did in that component are:
1. Create Output() emitters, since this component can be used directly
2. The config object for a Table row now supports a `style` prop for
defining the list of CSS styles to be applied
2. Remove the truncate classes (small, medium, large) and only have
a boolean value. The user can define the width directly now via the
`style` property in the row's config
3. Modify the classes for aligning contents right and left
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* web-apps(front): Add table paginator
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* web-apps(front): Add padding to titlebar text
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* web-apps(front): Use bigger font for toolbar title
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* jwa(front): Use responsive table and toolbar
We refactor both the index and form pages of the app to:
1. Add a top row toolbar with the title of the app and the button to
create a new Notebook
2. Replace the card with a responsive table that shows the items. The
component also has a paginator
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* vwa(front): Use responsive table and toolbar
This commit:
1. Adds a toolbar at the top of the index page with the title of the app
and the button to create a new volume
2. Replaces the card with a responsive table
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* twa(front): Use responsive table and toolbar
This commit:
1. Adds a toolbar at the top of the index page with the title of the app
and a button to create a new TensorBoard instance
2. Replaces the card with a resopnsive table
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
Reviewed-by: Tasos Alexiou <tasos@arrikto.com>
* fix the format
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* wa(front): Add npm script for running unit tests in docker
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* fix unit tests failing
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* cwa(front): Ignore font files in assets
* feat(jupyter): add fonts as assets to service
* CRUD: fonts in common
* CWA: Remove link to css file
* jwa(front): Remove font assets from jupyter
Co-authored-by: Wendy Gaultier <wvgaultier@gmail.com>
* web-apps(back): Introduce APP_SECURE_COOKIES var
Expose a new APP_SECURE_COOKIES env variable that will configure whether
the web apps should set Secure cookies or not.
This will allow the admins to configure the web apps to work when
Kubeflow is exposed over localhost/http.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* web-apps(back): Switch CSRF checks order
The order the backend makes the CSRF checks should be the following:
1. check if the CSRF cookie is present
2. check if the CSRF header is present
3. check if the CSRF cookie and header have the same value
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* web-apps: Set APP_SECURE_COOKIES to false in dev
When running the web apps via the makefiles in dev mode we will need to
explicitly set the APP_SECURE_COOKIES env var to False, since the app
will be served over http.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* web-apps(back): Introduce an APP_NO_AUTHNZ env var
The admin can use the APP_NO_AUTHNZ={True,False} to configure if the
application should perform authnz checks or not.
In case of False, then the app will not be expecting a logged in user, in the
`kubeflow-userid` header, and will not perform authorization checks using
SubjectAccessReviews.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* web-apps(front): Expose if Dashboard is connected
The NamespaceService will also provide an observable that informs
different parts of the app if the CentralDashboard is present.
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* review: Use enumeration for Dashboard state
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>
* review: Move common vars to a settings module
Signed-off-by: Kimonas Sotirchos <kimwnasptd@arrikto.com>