Service request portal on top of Ansible Tower

Overview

Gitter Last pull request

Squest - A service request portal based on Ansible Tower

Squest is a Web portal that allow to expose Tower based automation as a service.

If you want an idea of what you can do with Squest, click on the image below DEMO

Links

Comments
  • Error while accepting request via API

    Error while accepting request via API

    Like discussed here https://gitter.im/HewlettPackard/squest?at=63038a0c9994996293ffe438 I am trying to implement a custom approval business logic in a python filter triggered by a global hook on request submission.

    After some debug on the python module itself, I tried to use the "accept/reject" api via CURL to reduce the debug complexity, but it still throws an error.

    That's the curl command :

    curl -vvv -X POST "https://[...]/api/service_catalog/request/233/accept/" -H "accept: application/json" -H "authorization: Bearer [...]"

    And the error is :

    {"required":"This field is required.","null":"This field may not be null.","invalid":"Invalid data. Expected a dictionary, but got {datatype}."}

    Please note that :

    • Request is in the "Submitted" state
    • Same error is thrown when calling the "reject" api (https://[...]/api/service_catalog/request/233/reject/)
    • The "cancel" api is working as expected

    Seems like I am missing some parameters, but looking at the swagger those apis don't need any payload, just request id in query string.

    opened by mr-falken 9
  • Can't request delete operation from API

    Can't request delete operation from API

    When I try to request the delete operation fon an instance I got a stack trace from django (I'm on version 1.7.6b).

    That's the curl I try to execute :

    curl -X POST "https://[...]/api/service_catalog/instance/[...]/operation/[...]/request/" -d '{ "fill_in_survey": { } }' -H 'Content-Type: application/json' -H "accept: application/json" -H "authorization: Bearer [...]"

    And that's the django stack trace :

    [...]
      File "/app/service_catalog/models/request.py", line 62, in full_survey
        return {k: v for k, v in {**self.fill_in_survey, **self.admin_fill_in_survey}.items() if v is not None}
    
    Exception Type: TypeError at /api/service_catalog/instance/[...]/operation/[...]/request/
    Exception Value: 'str' object is not a mapping
    Request information:
    USER: admin
    
    GET: No GET data
    POST: No POST data
    FILES: No FILES data
    COOKIES: No cookie data
    [...]
    

    Please note that deleting from UI works as expected.

    opened by mr-falken 7
  • mariadbd failed while attempting to check config

    mariadbd failed while attempting to check config

    Describe the bug mariadbd error for a docker deployment

    1- I did clone the Squest github branch v1.7.5 2 - i did execute the command line : docker-compose up -d 3 - for see if it works : docker ps

    [root@comp squest]# 
    CONTAINER ID   IMAGE                         COMMAND                  CREATED        STATUS        PORTS                                                                                                         NAMES
    14cdc66c3ba7   nginx:alpine                  "/docker-entrypoint.…"   23 hours ago   Up 23 hours   80/tcp, 0.0.0.0:8080->8080/tcp                                                                                squest_nginx_1
    ff61fdf676cf   rabbitmq:3-management         "docker-entrypoint.s…"   24 hours ago   Up 23 hours   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp   squest_rabbitmq_1
    9e252ca59667   redis:6-alpine                "docker-entrypoint.s…"   24 hours ago   Up 23 hours   0.0.0.0:6379->6379/tcp                                                                                        squest_redis-cache_1
    1aa13d258d4a   phpmyadmin/phpmyadmin:5.1.3   "/docker-entrypoint.…"   24 hours ago   Up 23 hours   0.0.0.0:8082->80/tcp                                                                                          squest_phpmyadmin_1
    57344043bfbd   nginx:alpine                  "/docker-entrypoint.…"   24 hours ago   Up 23 hours   80/tcp                                                                                                        squest_maintenance_1
    

    The database isn't started. I have an error for db service

    [root@comp squest]# docker-compose logs -f db
    Attaching to squest_db_1
    db_1             | 2022-09-29 13:32:29+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.3+maria~ubu2204 started.
    db_1             | 2022-09-29 13:32:29+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
    db_1             |      command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.1mcnSd4wDn
    db_1             |      Can't initialize timers
    db_1             | 2022-09-29 13:33:37+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.3+maria~ubu2204 started.
    db_1             | 2022-09-29 13:33:37+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
    db_1             |      command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.BgFSwpU3Bi
    db_1             |      Can't initialize timers
    db_1             | 2022-09-30 08:06:24+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.9.3+maria~ubu2204 started.
    db_1             | 2022-09-30 08:06:24+00:00 [ERROR] [Entrypoint]: mariadbd failed while attempting to check config
    db_1             |      command was: mariadbd --verbose --help --log-bin-index=/tmp/tmp.bkZFKjSNiw
    db_1             |      Can't initialize timers
    squest_db_1 exited with code 1
    
    **Expected behavior**
    db starting correctly and Squest is Up
    
    **Additional context**
    here the content of : ./docker/environnement_variables/db.env
    MYSQL_DATABASE=squest_db
    MYSQL_USER=squest_user
    MYSQL_PASSWORD=squest_password
    MYSQL_ROOT_PASSWORD=p@ssw0rd
    MYSQL_HOST=127.0.0.1
    MYSQL_PORT=3306
    
    is it a problem with the db config ?
    
    I try with MYSQL_HOST, MYSQL_PORT and without
    
    - Squest version 1.7.5: 
    - Ansible Tower/AWX version: NA
    opened by kogarastu 6
  • 'list' object has no attribute 'splitlines' when using multiple choice questions in survey

    'list' object has no attribute 'splitlines' when using multiple choice questions in survey

    Describe the bug Squest throw an exception when an AWX survey have either 'multiple select' or 'multiple select multiple' type of field.

    To Reproduce Steps to reproduce the behavior:

    1. Make a survey on AWX with either 'multiple select' or 'multiple select multiple' type of field
    2. Click on the button "Order" to get a ressource that have this survey
    3. Squest throw the exception 'list' object has no attribute 'splitlines'

    Expected behavior Survey can be displayed

    Errors

    Request Method: | GET
    -- | --
    http://squest.example.com/ui/service_catalog/service/6/operation/4/request/
    3.2.13
    AttributeError
    'list' object has no attribute 'splitlines'
    /app/service_catalog/forms/utils.py, line 25, in get_choices_from_string
    /usr/local/bin/python
    3.10.6
    ['/app',  '/app/squest',  '/usr/local/lib/python3.10/site-packages/git/ext/gitdb',  '/app',  '/usr/local/bin',  '/usr/local/lib/python310.zip',  '/usr/local/lib/python3.10',  '/usr/local/lib/python3.10/lib-dynload',  '/usr/local/lib/python3.10/site-packages',  '/usr/local/lib/python3.10/site-packages/gitdb/ext/smmap']
    Mon, 08 Aug 2022 15:17:00 +0200
    

    Traces

    Environment:
    
    
    Request Method: GET
    Request URL: http://squest.example.com/ui/service_catalog/service/6/operation/4/request/
    
    Django Version: 3.2.13
    Python Version: 3.10.6
    Installed Applications:
    ['django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'rest_framework',
     'django_celery_results',
     'django_celery_beat',
     'guardian',
     'tempus_dominus',
     'django_node_assets',
     'django_filters',
     'drf_yasg',
     'taggit',
     'martor',
     'django_tables2',
     'dbbackup',
     'service_catalog',
     'resource_tracker',
     'profiles',
     'monitoring',
     'cachalot',
     'django_cleanup.apps.CleanupConfig']
    Installed Middleware:
    ['django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'Squest.middleware.maintenance.MaintenanceMiddleware']
    
    
    
    Traceback (most recent call last):
      File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
        response = get_response(request)
      File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/usr/local/lib/python3.10/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
        return view_func(request, *args, **kwargs)
      File "/app/service_catalog/views/customer/catalog_views.py", line 30, in customer_service_request
        form = ServiceRequestForm(request.user, **parameters)
      File "/app/service_catalog/forms/service_request_forms.py", line 62, in __init__
        self.fields.update(get_fields_from_survey(purged_survey_with_validator))
      File "/app/service_catalog/forms/utils.py", line 80, in get_fields_from_survey
        choices=get_choices_from_string(survey_field["choices"]),
      File "/app/service_catalog/forms/utils.py", line 25, in get_choices_from_string
        split_lines = string_with_anti_slash_n.splitlines()
    
    Exception Type: AttributeError at /ui/service_catalog/service/6/operation/4/request/
    Exception Value: 'list' object has no attribute 'splitlines'
    

    Version

    • Squest version or GIT commit number: 1.7.2
    • Ansible Tower/AWX version: 21.3.0
    opened by wilf1rst 6
  • Feature: create instance from the API

    Feature: create instance from the API

    Description of the feature Our ansible playbook can install multiple servers in parallel. I would like to see that possibility to install multiple instances with the same configuration in one go.

    Multiple server installs are not possible today if I understand it correctly.

    feature 
    opened by magnusolsson80 6
  • 'NoneType' object has no attribute 'name'

    'NoneType' object has no attribute 'name'

    Describe the bug If I try to process a service from the catalog I receive the following error: Exception Value: 'NoneType' object has no attribute 'name' service_catalog/views/common.py, line 78, in create_pie_chart_instance_by_service_type

    I don't use any billing groups nor resources. Just use the default value for the service

    To Reproduce Steps to reproduce the behavior:

    1. Run through the workflow of "Order a Service from the Service Catalog"
    2. Accept and then Process
    3. After hitting the "Process request" button in the "Confirm process request" view I receive this error and can't do anything more in squest

    Expected behavior No error

    Screenshots

    Additional context

    • Squest version or GIT commit number: latest from master branch
    • Ansible Tower/AWX version: 17.0.1
    opened by eschek87 6
  • Bug when I process a request

    Bug when I process a request

    Bug appear after processing a request with the "Demo job template"

    Environment:
    
    
    Request Method: POST
    Request URL: http://127.0.0.1:8000/admin/request/10/process/
    
    Django Version: 3.1.7
    Python Version: 3.8.10
    Installed Applications:
    ['django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'rest_framework',
     'fontawesome-free',
     'django_celery_results',
     'django_celery_beat',
     'guardian',
     'django_node_assets',
     'django_filters',
     'drf_yasg',
     'service_catalog',
     'resource_tracker']
    Installed Middleware:
    ['django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware']
    
    
    
    Traceback (most recent call last):
      File "/home/anthony/.cache/pypoetry/virtualenvs/tower-service-catalog--Kn3-9f8-py3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
        response = get_response(request)
      File "/home/anthony/.cache/pypoetry/virtualenvs/tower-service-catalog--Kn3-9f8-py3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/home/anthony/.cache/pypoetry/virtualenvs/tower-service-catalog--Kn3-9f8-py3.8/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
        return view_func(request, *args, **kwargs)
      File "/home/anthony/HPE/squest/service_catalog/views/admin/request.py", line 162, in admin_request_process
        target_request.perform_processing()
      File "/home/anthony/.cache/pypoetry/virtualenvs/tower-service-catalog--Kn3-9f8-py3.8/lib/python3.8/site-packages/django_fsm/__init__.py", line 520, in _change_state
        return fsm_meta.field.change_state(instance, func, *args, **kwargs)
      File "/home/anthony/.cache/pypoetry/virtualenvs/tower-service-catalog--Kn3-9f8-py3.8/lib/python3.8/site-packages/django_fsm/__init__.py", line 326, in change_state
        result = method(instance, *args, **kwargs)
      File "/home/anthony/HPE/squest/service_catalog/models/request.py", line 105, in perform_processing
        tower_job_id = self.operation.job_template.execute(extra_vars=tower_extra_vars)
      File "/home/anthony/HPE/squest/service_catalog/models/job_templates.py", line 22, in execute
        return tower_job_run.id
    
    Exception Type: AttributeError at /admin/request/10/process/
    Exception Value: 'NoneType' object has no attribute 'id'
    
    bug 
    opened by a-belhadj 6
  • Several additional fields types are available in surveys.

    Several additional fields types are available in surveys.

    Multiselect, text area, password, integer and float fields have been added. The initial values and validators were mapped with values defined in survey spec.

    opened by EliasBoulharts 5
  • Feature: day 2 operations: survey pre filled from spec

    Feature: day 2 operations: survey pre filled from spec

    As an example, I order a new service "Virtal Machine". The AWX survey ask therefore options like name, CPU and memory. Later I'll update the existing instance using the update operation, the CPU and memory field are prefilled with the current value from specs.

    feature 
    opened by Sispheor 4
  • Getting details of user requesting the service in ansible vars

    Getting details of user requesting the service in ansible vars

    It'd be nice to have details (i.e. username, email, etc) of the user submitting the request filled into ansible vars.

    I'm using squest -> awx to provision vm in vcenter environment and I'd like to set vm attributes to specify contact person and other details: I can set those attributes via ansible, but in this case I'm missing user's value.

    In the squest part of the payload I can just see squest user id (squest.user field) while variables as "awx_user_name" or "awx_user_email" are filled with details of the awx user been impersonated by awx application.

    opened by mr-falken 4
  • Auto resource expiration

    Auto resource expiration

    From time to time we need to provide "time bounded" resources, like vm for students that we need to delete after a certain period of time.

    It'd be nice to have a mapping between groups/resource types where admin could specify whenever expiration date is mandatory during request.

    Deletion of resources would obviously happen as is done at the moment, invoking a specific playbook, but with a scheduled job server side without human intervention.

    opened by mr-falken 4
  • REfactoring of resource pool page

    REfactoring of resource pool page

    The page is useless in its curent state. We never use it.

    Todo:

    • Flat view like the resource page with all attributes (leave blank a cell not used by a pool)
    • Export CSV button
    • Filters
    enhancement 
    opened by Sispheor 0
  • Personal filters for list pages (Instances/Requests)

    Personal filters for list pages (Instances/Requests)

    As a end user I would like to:

    • Create a filter for a page (E.g: instances) where I set flags like my email as spoc
    • Save the filter
    • From the instance page on top right corner I have a dropdown with all filters I have created
    • I select a filter and click "apply"
    feature 
    opened by Sispheor 0
  • Feature: advanced billing feature

    Feature: advanced billing feature

    We need a value to calculate the cost of each service. For example vCPU of a VM converted as $ per day.

    Need to take into account a change of the value itself in time as well as the change of the spec of an instance (added vcpu on a vm)

    feature 
    opened by Sispheor 0
  • Migration guidelines

    Migration guidelines

    1. Service catalog
      1. Define service: Day 1 and day 2 (think about variables you need to perform all your operations)
      2. Code playbooks
        1. List inputs
        2. Magic
        3. Generates specs and create a resource
      3. Split survey fields
        1. User fields
        2. Admin fields
      4. Split instance specs
        1. User specs
        2. Admin specs
      5. Migration of your old datas
        1. Current Source of Truth to Squest via API:
          1. Define graphs with Resource Groups, Resource Pools and Resources (optional)
          2. Create Resource Pools (optional)
          3. Create Resource Groups (at least one used to place resoufc
          4. Create Instance
          5. Create Resources
    documentation 
    opened by EliasBoulharts 0
Releases(v1.9.0)
  • v1.9.0(Dec 14, 2022)

    Breaking changes ⚠

    • Global hook execution now send the same "squest" metadata to the job template as the one used in service operations

    Enhancement

    • Minor UI enhancements
    • Add a link to go back to a request details from request comment page

    Fix

    • Global hook now send squest metadata
    • Global hook use admin request serializer instead of read only serializer
    • Fix table sort in request and instance list page
    Source code(tar.gz)
    Source code(zip)
  • v1.8.2(Oct 31, 2022)

    Fix

    • In API, extra_vars JSON fields were displayed as str instead of dict.
    • Allow to delete UserRoleBinding linked to deleted object.
    • UserRoleBindings on Request object were not deleted when deleting Request (Fix and cleanup migration).

    Feature

    • Tags can be filtered with 'AND' or 'OR' method (only 'AND' before).
    Source code(tar.gz)
    Source code(zip)
  • v1.8.1(Oct 12, 2022)

  • v1.8.0(Oct 10, 2022)

    Breaking changes ⚠

    • Context usable with Jinja has changed. spec/user_spec --> instance. Impacted pages:
      • default values of an operation survey
      • 'when' of a profile notification filter

    Fix

    • URL for available instances was wrong
    • Fix JSON integer cast in survey
    • Remove exposed MySQL port from prod

    Feature

    • Add job template config on request process
    • Notification filters split: Support or request notification

    Enhancement

    • Add billing group field in UserSerializer
    • Filter instance by spec and user spec
    • Update filter sidebar size
    • Add accepted_by and approved_by field
    Source code(tar.gz)
    Source code(zip)
  • v1.7.5(Sep 16, 2022)

  • v1.7.4(Sep 15, 2022)

    Fix

    • Accept request from API without survey doesn't work
    • Auto-process only worked if auto-accept is enabled
    • The extra_vars field is not valid if it is in JSON from the API.
    • Update resource from API does not work for all fields

    Enhancement]

    • link docs to operations
    • add request messages to request detail
    Source code(tar.gz)
    Source code(zip)
  • v1.7.3(Aug 31, 2022)

    Enhancement

    • Create instance from API return full serializer
    • Instance filtered by multiple choice instead of text in UI
    • Link to access instances by service from home page in UI
    • Service catalog forms with data live search in UI
    • Filter for attribute definitions in API

    Fix

    • Request operation from API return the new request
    • Support choices as list in AWX survey
    Source code(tar.gz)
    Source code(zip)
  • v1.7.2(Aug 4, 2022)

    Feature

    • Custom links on instance detail page

    Enhancement

    • Custom threshold color on resource pool and quota
    • Add description documentation to services and portfolios

    Fix

    • Date submitted was updated on each save
    • Hide disabled services from homepage
    • Hide admin only create operations for end users
    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Jul 21, 2022)

    Enhancement

    • Date format can be set for all date from the settings
    • Merge operation name and operation color type

    Fix

    • Fix breadcrumbs links in notification page
    • Link to the doc now target the correct current version of the running squest instance
    • fill_in_survey flag was saved as a string when created from the API
    • Fix maintenance mode was not working when used from the API
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Jul 18, 2022)

    Internal

    • Bump python version to 3.10

    Fix

    • Global hook was not working
    • Fix ajax call when synchronizing job template. Number of template was not updated

    Feature

    • Notification filters
    • Extra vars on Tower server, service and operation
    • Add maintenance mode

    Enhancement

    • Operations can be limited to administrators only
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Jul 4, 2022)

  • v1.6.0(Jun 30, 2022)

    1.6.0 2022-06-30

    Breaking changes

    • API: Pagination added to all GET list of objects

    Fix

    • API: ID was not given when new request created
    • Format issue with fill in survey
    • instance_name variable can be used in the tower survey

    Enhancement

    • Swagger page support bearer auth
    • Send email when support is closed
    • show specs on accept/review page
    • Add pending request for each service in the admin dashboard
    • Save tags in session

    Feature

    • API: Add filters (filter by exact name in API vs contains in UI)
    • Default API admin token can be added to the settings
    • Python script based validator for form field
    • Approval workflow
    • Bulk delete for Instances
    • Allow several create operations
    • Portfolio
    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Apr 4, 2022)

    Fix

    • Remove hardcoded url in email template
    • Mails were not send to user after receiving a new message

    Enhancement

    • Instance serializer used User serializer instead of id
    • Supports list can be filtered by Service
    • Global hook can be linked to an operation
    • Instance can be deleted by an admin from API

    Feature

    • Message can be edited
    • Operations can be disabled
    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Mar 1, 2022)

    Fix

    • Calculate total resources of a resource group was not called when creating a resource from the API

    Enhancement

    • Added a button to re calculate total of a resource group
    Source code(tar.gz)
    Source code(zip)
  • v1.5(Feb 28, 2022)

    Breaking changes

    • API: Service and Operation creation split.

    Fix

    • Patch a resource without "text_attribute" field filled.
    • Fix Squest logo not shown in maintenance page for non-root URLs.
    • Resource group and Resource pool with the same name was not displayed in the graph.
    • Add missing swagger doc for operation survey.

    Enhancement

    • Performance: cache + calculation + asynchronous call.
    • API : Create a Service return full Service Serializer.
    • Catch all Tower exceptions when processing a request.
    • Remove role binding from team details.
    • Global hook can be linked to a service.
    • Admin can set to blank a non required field with default value in Tower survey.
    • Split Service and Operation form.
    • API: Split Service and Operation serializer.

    Feature

    • Jinja template on survey default field value.
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Feb 2, 2022)

    Breaking changes

    • API: Split between admin survey and user survey

    Fix

    • Fix Celery wait timeout when starting Docker compose

    Enhancement

    • Admin accept request form can now update billing group and instance name
    • Add date available on successfully processed instance
    • Custom 404 page
    • Bulk delete on request page as admin
    • Added delete button on resource details page
    • Hide admin filled fields from the end user survey

    Feature

    • API: request state machine management
    • Added "user spec" field to instance. Spec are now only visible by admin.
    Source code(tar.gz)
    Source code(zip)
  • v1.4(Jan 20, 2022)

    Breaking changes

    • API: Move job template URL behind Tower URLs

    Fix

    • Fix collect static in Docker image
    • Service image upload on edit service
    • Fix global hooks execution
    • Instance details page was not displayed when the SPOC was not defined
    • Several fix in UI
    • Fix email notifications
    • Fix team deletion. Old role bindings are deleted

    Enhancement

    • Auto deletion of resource from resource group when instance from service catalog is deleted
    • Celery containers wait for Squest app to be ready before starting
    • Admin can manually edit requests
    • End user can access request details page
    • Comment field for each request
    • Instance list: add some filter
    • Request details page for end users

    Feature

    • Resource quota per billing group
    • Prometheus metrics
    • Support list for end users
    • API: Job Template sync
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Dec 20, 2021)

    Fix

    • Collect static are not executed during the docker image build anymore to prevent caching
    • Email sent when request execution fail
    • Migration of old permission after creating Teams
    • Fix job template sync when multiple tower/awx instance are declared
    • Fix swagger generated page on POST /service//request. Fileds w

    Enhancement

    • Remove metrics and graph from the main dashboard to speed up the loading
    • Add squest host to metadata sent to Tower
    • UI: refactoring of the resource group list page
    • Add billing group to instance list filter

    Feature

    • Bulk delete on resources
    Source code(tar.gz)
    Source code(zip)
  • v1.3(Dec 15, 2021)

    Fix

    • Support and instance in sidebar are no more highlighted together
    • Total resource was empty in resource group list
    • Email notification for comment on request and support message

    Enhancement

    • Filter hidden by default in graph

    Feature

    • Team management to share instances
    • API - get resource/resource group/resource pool by name
    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Nov 19, 2021)

    Fix

    • Resource pool consumption is now updated after resource deletion
    • Fix resource group save form
    • Fix resource pool calculation executed when adding/deleting resources

    Enhancement

    • load git module only once in settings
    • remove useless calculation call
    • enhance test execution speed
    • add scroll bar in resource list table
    • filters moved into a sidebar
    Source code(tar.gz)
    Source code(zip)
  • v1.2(Nov 15, 2021)

    v1.2 2021-11-15

    Fix

    • Update permissions when SPOC is changed from instance
    • Fix display error in resource pool list
    • Fix default value when integer is used in Tower survey

    Enhancement

    • Re-process failed requests
    • Add a filter in resource tracker resource list
    • Graph perf enhancement

    Feature

    • User and billing group API
    • User can disable email notification
    Source code(tar.gz)
    Source code(zip)
  • v1.1(Oct 22, 2021)

    Breaking changes

    • Replace API token key work "Token" by "Bearer"

    Fix

    • Fix empty job template survey
    • Fix attribute text display in some form
    • Fix link to doc in instance pages

    Enhancement

    • Add a button to collapse filters in the graph view

    Feature

    • Add functional testing playbooks
    • API: CRUD on resource group
    • API: CRUD on resource pool
    • add static HTML maintenance page
    • API: CRUD on Request
    • API: CRUD on Service
    • API: CRUD on Operation
    • Show GIT sha in the footer
    Source code(tar.gz)
    Source code(zip)
  • v1.0(Oct 1, 2021)

    • Fix: Fix LDAP TLS support with self-signed certificates
    • Fix: Fix email host url from settings
    • Enhancement: API authentication via token
    • Enhancement: Text attribute on resource group
    • Enhancement: Add instance and request details page
    • Enhancement: Add job template details page
    • Enhancement: Admin can delete instance
    • Enhancement: Admin can archive and/or delete requests
    • Enhancement: Add titles to identify squest fields and survey fields
    • Enhancement: Multi stage Docker build
    • Enhancement: Add button to list resources from resource group edit page
    • Enhancement: Add filter on all page that list resources
    • Feature: add documentation linkable to services
    • Feature: automatic cleanup of ghost images from documentation
    • Feature: add overcommitment ratio on resource group attributes
    • Feature: add announcements
    • Feature: Token management
    • Feature: Job template compliancy checking
    • Feature: add integrated backup support
    • Feature: add official Docker image
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Aug 11, 2021)

    Bug fixes

    • All fields from AWX/Tower are available when admin accept a request - #76
    • Error in pie chart if Instance doesn't have a Service - #114
    Source code(tar.gz)
    Source code(zip)
  • v0.1(Aug 4, 2021)

Owner
Hewlett Packard Enterprise
Hewlett Packard Enterprise on github; please contact [email protected] for access
Hewlett Packard Enterprise
Inject an ID into every log message from a Django request. ASGI compatible, integrates with Sentry, and works with Celery

Django GUID Now with ASGI support! Django GUID attaches a unique correlation ID/request ID to all your log outputs for every request. In other words,

snok 300 Dec 29, 2022
Create a netflix-like service using Django, React.js, & More.

Create a netflix-like service using Django. Learn advanced Django techniques to achieve amazing results like never before.

Coding For Entrepreneurs 67 Dec 8, 2022
Stream Framework is a Python library, which allows you to build news feed, activity streams and notification systems using Cassandra and/or Redis. The authors of Stream-Framework also provide a cloud service for feed technology:

Stream Framework Activity Streams & Newsfeeds Stream Framework is a Python library which allows you to build activity streams & newsfeeds using Cassan

Thierry Schellenbach 4.7k Jan 2, 2023
Adding Firebase Cloud Messaging Service into a Django Project

Adding Firebase Cloud Messaging Service into a Django Project The aim of this repository is to provide a step-by-step guide and a basic project sample

Seyyed Ali Ayati 11 Jan 3, 2023
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.

starlette context Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automat

Tomasz Wójcik 300 Dec 26, 2022
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.

starlette context Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automat

Tomasz Wójcik 300 Dec 26, 2022
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.

starlette context Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automat

Tomasz Wójcik 110 Feb 16, 2021
Ansible Collection: A collection of Ansible Modules and Lookup Plugins (MLP) from Linuxfabrik.

ansible_mlp An Ansible collection of Ansible Modules and Lookup Plugins (MLP) from Linuxfabrik. Ansible Bitwarden Item Lookup Plugin Returns a passwor

Linuxfabrik 2 Feb 7, 2022
Django GUID attaches a unique correlation ID/request ID to all your log outputs for every request.

Django GUID Now with ASGI support! Django GUID attaches a unique correlation ID/request ID to all your log outputs for every request. In other words,

snok 300 Dec 29, 2022
Automated AWS account hardening with AWS Control Tower and AWS Step Functions

Automate activities in Control Tower provisioned AWS accounts Table of contents Introduction Architecture Prerequisites Tools and services Usage Clean

AWS Samples 20 Dec 7, 2022
Security offerings for AWS Control Tower

Caylent Security Catalyst Reference Architecture Examples This repository contains solutions for Caylent's Security Catalyst. The Security Catalyst is

Steven Connolly 1 Oct 22, 2021
Implementation of the famous puzle Tower of Hanoi

Tower_of_Hanoi Implementation of the famous puzle "Tower of Hanoi". The setup consists of three pegs (sticks) and a certain amount of discs (in this i

Raffaele Fiorillo 3 Mar 8, 2022
Auto grind btdb2 exp for tower

Bloons TD Battles 2 EXP Grinder Auto grind btdb2 exp for towers Setup I suggest checking out every screenshot to see what they are supposed to be, so

Vincent 6 Jul 29, 2022
MonsterManualPlus - An advanced monster manual for Tower of the Sorcerer.

Monster Manual + This is an advanced monster manual for Tower of the Sorcerer mods. Users can get a plenty of extra imformation for decision making wh

Yifan Zhou 1 Jan 1, 2022
Tackling Obstacle Tower Challenge using PPO & A2C combined with ICM.

Obstacle Tower Challenge using Deep Reinforcement Learning Unity Obstacle Tower is a challenging realistic 3D, third person perspective and procedural

Zhuoyu Feng 5 Feb 10, 2022
ReplitTD - Replit Tower Defense Game

IMPORTANT: I mean no offense at all in this game, this is only based off of cycl

kokomi simp :3 3 Jun 25, 2022
Scrap-mtg-top-8 - A top 8 mtg scraper using python

Scrap-mtg-top-8 - A top 8 mtg scraper using python

null 1 Jan 24, 2022
Spotify Top Lists - get the current top lists of a user from the Spotify API and display them in a Flask app

Spotify Top Lists This is a simple script that will get the current top lists of a user from the Spotify API and display them in a Flask app. Requirem

Yasin 0 Oct 16, 2022