Skip to content

Commit

Permalink
Merge pull request #15 from cloudblue/LITE-23583-migrate-spec-v2
Browse files Browse the repository at this point in the history
LITE-23583 move to decorators, remove listing requests handlers
  • Loading branch information
Francesco Faraone authored May 9, 2022
2 parents 067a53b + 54b1620 commit 003e78e
Show file tree
Hide file tree
Showing 6 changed files with 300 additions and 239 deletions.
15 changes: 0 additions & 15 deletions Dockerfile

This file was deleted.

30 changes: 0 additions & 30 deletions connectext/extension.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,6 @@
"version": "1.0.0",
"readme_url": "https://github.com/cloudblue/eaas-e2e-mock/blob/master/README.md",
"changelog_url": "https://github.com/cloudblue/eaas-e2e-mock/blob/master/CHANGELOG.md",
"capabilities": {
"asset_purchase_request_processing": ["pending", "approved", "failed", "inquiring", "scheduled", "revoking", "revoked"],
"asset_change_request_processing": ["pending", "approved", "failed", "inquiring", "scheduled", "revoking", "revoked"],
"asset_suspend_request_processing": ["pending", "approved", "failed", "scheduled", "revoking", "revoked"],
"asset_resume_request_processing": ["pending", "approved", "failed", "scheduled", "revoking", "revoked"],
"asset_cancel_request_processing": ["pending", "approved", "failed", "scheduled", "revoking", "revoked"],
"asset_adjustment_request_processing": ["pending", "approved", "failed", "inquiring", "scheduled", "revoking", "revoked"],

"asset_purchase_request_validation": ["draft"],
"asset_change_request_validation": ["draft"],
"product_action_execution": [],
"product_custom_event_processing": [],
"tier_config_setup_request_processing": ["pending", "failed", "approved", "inquiring"],
"tier_config_change_request_processing": ["pending", "failed", "approved", "inquiring"],
"tier_config_adjustment_request_processing": ["pending", "failed", "approved", "inquiring"],
"tier_config_setup_request_validation": ["draft"],
"tier_config_change_request_validation": ["draft"],
"listing_new_request_processing": ["draft", "reviewing", "deploying", "canceled", "completed"],
"listing_remove_request_processing": ["draft", "reviewing", "deploying", "canceled", "completed"],
"tier_account_update_request_processing": ["pending", "accepted", "ignored"],
"usage_file_request_processing": ["draft", "uploading", "uploaded", "invalid", "processing", "processed", "ready", "rejected", "pending", "accepted", "closed"],
"part_usage_file_request_processing":["draft", "ready", "closed", "failed"]
},
"schedulables": [
{
"name": "Schedulable method mock",
"description": "It can be used to test DevOps scheduler.",
"method": "execute_scheduled_processing"
}
],
"variables": [
{
"name": "ASSET_REQUEST_APPROVE_TEMPLATE_ID",
Expand Down
115 changes: 99 additions & 16 deletions connectext/extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
# Copyright (c) 2021, CloudBlue
# All rights reserved.
#
from connect.eaas.extension import (
Extension,
from connect.eaas.core.decorators import event, schedulable, variables
from connect.eaas.core.extension import Extension
from connect.eaas.core.responses import (
ProcessingResponse,
ValidationResponse,
ProductActionResponse,
Expand All @@ -16,6 +17,22 @@
import string


@variables(
[
{
'name': 'ASSET_REQUEST_APPROVE_TEMPLATE_ID',
'initial_value': '<change_with_purchase_request_approve_template_id>'
},
{
'name': 'ASSET_REQUEST_CHANGE_TEMPLATE_ID',
'initial_value': '<change_with_change_request_approve_template_id>'
},
{
'name': 'TIER_REQUEST_APPROVE_TEMPLATE_ID',
'initial_value': '<change_with_tier_request_approve_template_id>'
},
],
)
class E2EExtension(Extension):

def approve_asset_request(self, request, template_id):
Expand All @@ -38,6 +55,13 @@ def approve_tier_request(self, request, template_id):
)
self.logger.info(f"Approved request {request['id']}")

@event(
'asset_purchase_request_processing',
statuses=[
'pending', 'approved', 'failed', 'inquiring',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_purchase_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']} in status {request['status']}"
Expand Down Expand Up @@ -69,6 +93,13 @@ def process_asset_purchase_request(self, request):

return ProcessingResponse.done()

@event(
'asset_change_request_processing',
statuses=[
'pending', 'approved', 'failed', 'inquiring',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_change_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']}, type {request['type']} "
Expand All @@ -80,6 +111,13 @@ def process_asset_change_request(self, request):
self.approve_asset_request(request, template_id)
return ProcessingResponse.done()

@event(
'asset_suspend_request_processing',
statuses=[
'pending', 'approved', 'failed',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_suspend_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']}, type {request['type']} "
Expand All @@ -90,6 +128,13 @@ def process_asset_suspend_request(self, request):
self.approve_asset_request(request, template_id)
return ProcessingResponse.done()

@event(
'asset_resume_request_processing',
statuses=[
'pending', 'approved', 'failed',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_resume_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']}, type {request['type']} "
Expand All @@ -100,6 +145,13 @@ def process_asset_resume_request(self, request):
self.approve_asset_request(request, template_id)
return ProcessingResponse.done()

@event(
'asset_resume_cancel_processing',
statuses=[
'pending', 'approved', 'failed',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_cancel_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']}, type {request['type']} "
Expand All @@ -110,6 +162,13 @@ def process_asset_cancel_request(self, request):
self.approve_asset_request(request, template_id)
return ProcessingResponse.done()

@event(
'asset_adjustment_request_processing',
statuses=[
'pending', 'approved', 'failed', 'inquiring',
'scheduled', 'revoking', 'revoked',
],
)
def process_asset_adjustment_request(self, request):
self.logger.info(
f"Received event for subscription request {request['id']}, type {request['type']} "
Expand All @@ -120,36 +179,46 @@ def process_asset_adjustment_request(self, request):
self.approve_asset_request(request, template_id)
return ProcessingResponse.done()

@event('tier_config_setup_request_validation', statuses=['draft'])
def validate_tier_config_setup_request(self, request):
self.logger.info(f"TCR Validation with id {request['id']}")
return ValidationResponse.done(request)

@event('tier_config_change_request_validation', statuses=['draft'])
def validate_tier_config_change_request(self, request):
self.logger.info(f"TCR Validation with id {request['id']}")
return ValidationResponse.done(request)

@event('asset_purchase_request_validation', statuses=['draft'])
def validate_asset_purchase_request(self, request):
self.logger.info(f"Asset Validation with id {request['id']}")
return ValidationResponse.done(request)

@event('asset_change_request_validation', statuses=['draft'])
def validate_asset_change_request(self, request):
self.logger.info(f"asset Validation with id {request['id']}")
return ValidationResponse.done(request)

@event('product_action_execution')
def execute_product_action(self, request):
self.logger.info(f'Product action: {request}')
return ProductActionResponse.done(
http_status=302,
headers={'Location': 'https://google.com'},
)

@event('product_custom_event_processing')
def process_product_custom_event(self, request):
self.logger.info(f'Custom event: {request}')
sample_return_body = {
"response": "OK"
}
return CustomEventResponse.done(body=sample_return_body)

@event(
'tier_config_setup_request_processing',
statuses=['pending', 'approved', 'failed', 'inquiring'],
)
def process_tier_config_setup_request(self, request):
self.logger.info(
f"Received event for TCR request {request['id']}, type {request['type']} "
Expand All @@ -172,6 +241,10 @@ def process_tier_config_setup_request(self, request):

return ProcessingResponse.done()

@event(
'tier_config_change_request_processing',
statuses=['pending', 'approved', 'failed', 'inquiring'],
)
def process_tier_config_change_request(self, request):
self.logger.info(
f"Received event for TCR request {request['id']}, type {request['type']} "
Expand All @@ -182,6 +255,10 @@ def process_tier_config_change_request(self, request):
self.approve_tier_request(request, template_id)
return ProcessingResponse.done()

@event(
'tier_config_adjustment_request_processing',
statuses=['pending', 'approved', 'failed', 'inquiring'],
)
def process_tier_config_adjustment_request(self, request):
self.logger.info(
f"Received event for TCR request {request['id']}, type {request['type']} "
Expand All @@ -192,40 +269,46 @@ def process_tier_config_adjustment_request(self, request):
self.approve_tier_request(request, template_id)
return ProcessingResponse.done()

@schedulable(
'Schedulable method mock',
'It can be used to test DevOps scheduler.',
)
def execute_scheduled_processing(self, schedule):
self.logger.info(
f"Scheduled execution started: {schedule}",
)
return ScheduledExecutionResponse.done()

def process_new_listing_request(self, request): # pragma: no cover
self.logger.info(
f"Received event for listing request {request['id']}, type {request['type']} "
f"in status {request['state']}",
)
return ProcessingResponse.done()

def process_remove_listing_request(self, request): # pragma: no cover
self.logger.info(
f"Received event for listing request {request['id']}, type {request['type']} "
f"in status {request['state']}",
)
return ProcessingResponse.done()

@event(
'tier_account_update_request_processing',
statuses=['pending', 'accepted', 'ignored'],
)
def process_tier_account_update_request(self, request): # pragma: no cover
self.logger.info(
f"Received event for tier account request {request['id']}, type {request['type']} "
f"in status {request['status']}",
)
return ProcessingResponse.done()

@event(
'usage_file_request_processing',
statuses=[
'draft', 'uploading', 'uploaded', 'invalid',
'processing', 'processed', 'ready', 'rejected',
'pending', 'accepted', 'closed',
],
)
def process_usage_file(self, request): # pragma: no cover
self.logger.info(
f"Received event for usage file {request['id']} "
f"in status {request['status']}",
)
return ProcessingResponse.done()

@event(
'part_usage_file_request_processing',
statuses=['draft', 'ready', 'closed', 'failed'],
)
def process_usage_chunk_file(self, request): # pragma: no cover
self.logger.info(
f"Received event for usage chunks file {request['id']} "
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: '3'
services:
smash_dev:
container_name: smash_dev
image: cloudblueconnect/connect-extension-runner:latest
image: cloudblueconnect/connect-extension-runner:26
command: cextrun -d
volumes:
- .:/extension
Expand Down
Loading

0 comments on commit 003e78e

Please sign in to comment.