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
Ejemplo n.º 4
0
 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
Ejemplo n.º 6
0
 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 10
0
 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}"
     )
Ejemplo n.º 13
0
 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)
Ejemplo n.º 14
0
 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}
Ejemplo n.º 15
0
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"