def submit_service_for_approval(self, payload): service = ServiceFactory().create_service_entity_model( self.org_uuid, self.service_uuid, payload, ServiceStatus.APPROVAL_PENDING.value) service = ServiceRepository().save_service( self.username, service, ServiceStatus.APPROVAL_PENDING.value) return service.to_response()
def save_service(self, payload): service = ServiceFactory().create_service_entity_model( self.org_uuid, self.service_uuid, payload, ServiceStatus.DRAFT.value) service = ServiceRepository().save_service(self.username, service, ServiceStatus.DRAFT.value) return service.to_response()
def save_service(self, username, service, state): service_group_db_model = [ ServiceFactory().convert_service_group_entity_model_to_db_model( group) for group in service.groups ] try: self.session.query(ServiceGroup).filter( ServiceGroup.org_uuid == service.org_uuid).filter( ServiceGroup.service_uuid == service.uuid).delete( synchronize_session='fetch') self.session.commit() except Exception as e: self.session.rollback() raise e try: service_db = self.session.query(Service).filter( Service.org_uuid == service.org_uuid).filter( Service.uuid == service.uuid).first() service_db.display_name = service.display_name service_db.service_id = service.service_id service_db.metadata_uri = service.metadata_uri service_db.proto = service.proto service_db.short_description = service.short_description service_db.description = service.description service_db.project_url = service.project_url service_db.assets = service.assets service_db.rating = service.rating service_db.ranking = service.ranking service_db.contributors = service.contributors service_db.tags = service.tags service_db.mpe_address = service.mpe_address service_db.updated_on = dt.utcnow() service_db.groups = service_group_db_model service_db.service_state.state = state service_db.service_state.transaction_hash = service.service_state.transaction_hash service_db.service_state.updated_by = username service_db.service_state.updated_on = dt.utcnow() self.session.commit() except Exception as e: self.session.rollback() raise e if not service_db: return None service = ServiceFactory().convert_service_db_model_to_entity_model( service_db) return service
def get_service_for_given_service_uuid(self, org_uuid, service_uuid): try: service_db = self.session.query(Service).filter( Service.org_uuid == org_uuid).filter( Service.uuid == service_uuid).first() service = ServiceFactory( ).convert_service_db_model_to_entity_model(service_db) self.session.commit() except Exception as e: self.session.rollback() raise e return service
def save_transaction_hash_for_published_service(self, payload): service = ServiceRepository().get_service_for_given_service_uuid( self.org_uuid, self.service_uuid) if service.service_state.state == ServiceStatus.APPROVED.value: service.service_state = \ ServiceFactory().create_service_state_entity_model( self.org_uuid, self.service_uuid, ServiceStatus.PUBLISH_IN_PROGRESS.value, payload.get("transaction_hash", "")) ServiceRepository().save_service( self.username, service, ServiceStatus.PUBLISH_IN_PROGRESS.value) return StatusCode.OK
def get_list_of_service_pending_for_approval(self, limit): try: raw_services_data = self.session.query(Service) \ .join(ServiceState, Service.uuid == ServiceState.service_uuid).filter( ServiceState.state == ServiceStatus.APPROVAL_PENDING.value).limit(limit) services = [] for service in raw_services_data: services.append( ServiceFactory().convert_service_db_model_to_entity_model( service)) self.session.commit() except Exception as e: self.session.rollback() raise e return services
def get_last_service_comment(self, org_uuid, service_uuid, support_type, user_type): try: service_comment_db = self.session.query(ServiceComment) \ .filter(ServiceComment.org_uuid == org_uuid). \ filter(ServiceComment.service_uuid == service_uuid). \ filter(ServiceComment.support_type == support_type). \ filter(ServiceComment.user_type == user_type). \ order_by(ServiceComment.created_on.desc()).first() service_comment = ServiceFactory( ).convert_service_comment_db_model_to_entity_model( service_comment_db) self.session.commit() except Exception as e: self.session.rollback() raise e return service_comment
def get_services_for_organization(self, org_uuid, payload): try: services_db = self.session.query(Service). \ filter(getattr(Service, payload["search_attribute"]).like("%" + payload["search_string"] + "%")). \ filter(Service.org_uuid == org_uuid). \ order_by(getattr(getattr(Service, payload["sort_by"]), payload["order_by"])()). \ slice(payload["offset"], payload["limit"]).all() self.session.commit() except Exception as e: self.session.rollback() raise e services = [] for service in services_db: services.append( ServiceFactory().convert_service_db_model_to_entity_model( service)) return services
def get_offchain_service_config(self, org_uuid, service_uuid): try: sql_query = sqlalchemy.text( f"select * from offchain_service_config where service_uuid = '{service_uuid}' and org_uuid = '{org_uuid}'" ) result = self.session.execute(sql_query) result_as_list = result.fetchall() print(f"offchain configs :: {result_as_list}") except SQLAlchemyError as error: self.session.rollback() raise error offchain_service_config = ServiceFactory( ).convert_offchain_service_config_db_model_to_entity_model( org_uuid=org_uuid, service_uuid=service_uuid, offchain_service_configs_db=result_as_list) return offchain_service_config
def get_service_for_given_service_id_and_org_id(self, org_id, service_id): try: organization = self.session.query(Organization).filter( Organization.org_id == org_id).first() if not organization: raise Exception( f"No organization found for org_id:{org_id} service_id:{service_id}" ) org_uuid = organization.uuid service_db = self.session.query(Service).filter( Service.org_uuid == org_uuid).filter( Service.service_id == service_id).first() service = ServiceFactory( ).convert_service_db_model_to_entity_model(service_db) self.session.commit() except Exception as e: self.session.rollback() raise e return org_uuid, service
def save_service(self, payload): service = ServiceFactory().create_service_entity_model( self._org_uuid, self._service_uuid, payload, ServiceStatus.DRAFT.value) service = ServicePublisherRepository().save_service( self._username, service, ServiceStatus.DRAFT.value) comments = payload.get("comments", {}).get(UserType.SERVICE_PROVIDER.value, "") if bool(comments): service_provider_comment = service_factory. \ create_service_comment_entity_model(org_uuid=self._org_uuid, service_uuid=self._service_uuid, support_type="SERVICE_APPROVAL", user_type="SERVICE_PROVIDER", commented_by=self._username, comment=comments) ServicePublisherRepository().save_service_comments( service_provider_comment) service.comments = self.get_service_comments() return service.to_dict()
def get_service_for_given_service_id_and_org_id(self, org_id, service_id): try: service_db = self.session.query(Service). \ join(Organization, Service.org_uuid == Organization.uuid). \ filter(Organization.org_id == org_id). \ filter(Service.service_id == service_id). \ first() self.session.commit() except Exception as e: self.session.rollback() raise e if service_db: service = ServiceFactory( ).convert_service_db_model_to_entity_model(service_db) return service.org_uuid, service organization = org_repo.get_organization(org_id=org_id) if organization: return organization.uuid, None raise Exception( f"No organization found for org_id:{org_id} service_id:{service_id}" )
def add_service(self, service, username): service_db_model = ServiceFactory( ).convert_service_entity_model_to_db_model(username, service) self.add_item(service_db_model)
def create_service(self, payload): service_uuid = uuid4().hex service = ServiceFactory().create_service_entity_model( self._org_uuid, service_uuid, payload, ServiceStatus.DRAFT.value) ServicePublisherRepository().add_service(service, self._username) return {"org_uuid": self._org_uuid, "service_uuid": service_uuid}
from registry.infrastructure.repositories.organization_repository import OrganizationPublisherRepository from registry.infrastructure.repositories.service_publisher_repository import ServicePublisherRepository patch_all() ALLOWED_ATTRIBUTES_FOR_SERVICE_SEARCH = ["display_name"] DEFAULT_ATTRIBUTE_FOR_SERVICE_SEARCH = "display_name" ALLOWED_ATTRIBUTES_FOR_SERVICE_SORT_BY = ["ranking", "service_id"] DEFAULT_ATTRIBUTES_FOR_SERVICE_SORT_BY = "ranking" ALLOWED_ATTRIBUTES_FOR_SERVICE_ORDER_BY = ["asc", "desc"] DEFAULT_ATTRIBUTES_FOR_SERVICE_ORDER_BY = "desc" DEFAULT_OFFSET = 0 DEFAULT_LIMIT = 0 BUILD_FAILURE_CODE = 0 logger = get_logger(__name__) service_factory = ServiceFactory() boto_util = BotoUtils(region_name=REGION_NAME) class ServicePublisherService: def __init__(self, username, org_uuid, service_uuid): self._username = username self._org_uuid = org_uuid self._service_uuid = service_uuid self.obj_service_publisher_domain_service = ServicePublisherDomainService( username, org_uuid, service_uuid) def service_build_status_notifier(self, org_id, service_id, build_status): if build_status == BUILD_FAILURE_CODE: BUILD_FAIL_MESSAGE = "Build failed please check your components"