"""Services. Configuration of the different services that grass is currently proxying. Each services provides 3 pieces of information: * Rule: The rule is what part of the url (on grass) will be responsible to proxy to a specific service. For instance: `/features` will proxy all requests that start with feature. No trailing `/`. * Service: A service object that describes the service (protocol of the service, root path and more. See: `grass.connector.service`) for more details. * Access: The access list. Example to register a service: register( rule='/features', service=ServiceElasticBeanstalk( domain='ows-features-dev.elasticbeanstalk.com', protocol=rest), access=[access.allow_client()]) """ from grass.api import access from grass.api import register from grass.connectors.service import ServiceElasticBeanstalk from grass.consts import resource from grass.consts.user import UserGroups from grass.protocols import rest from grass.utils import environment register( name='ows-features', rule='/features', metric='features', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-features.theorchard.io', prod='ows-features.theorchard.io', default='qa-ows-features.theorchard.io'), port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-analytics', rule='/analytics', metric='analytics', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-analytics-prod.elasticbeanstalk.com', default='ows-analytics-qa.elasticbeanstalk.com'), port=80, protocol=rest), access=[ access.allow_auth_token( groups=[UserGroups.ALW], resources=[resource.RESOURCE_STATS]), access.allow_session_access]) register( name='ows-artist', rule='/artist', metric='artist', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-artist.theorchard.io', default='qa-ows-artist.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-users', rule='/users/auth', metric='/users/auth', service=ServiceElasticBeanstalk( domain=environment.select( prod='prod-ows-users.theorchard.io', default='qa-ows-users.theorchard.io'), url_protocol='http', root='/auth/', port=80, protocol=rest), access=[access.allow_public_access]) register( name='ows-search', rule='/search', metric='search', service=ServiceElasticBeanstalk( domain=environment.select( prod='search.theorchard.io', default='qa-search.theorchard.io'), url_protocol='https', port=443, protocol=rest), access=[ access.allow_auth_token(groups=[UserGroups.ALW]), access.allow_session_access], allow_reserved_params=set(['token'])) register( name='ows-product-physical', rule='/product-physical', metric='product-physical', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-product-physical.theorchard.io', prod='ows-product-physical.theorchard.io', default='qa-ows-product-physical.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-project-manager', rule='/project-manager', metric='project-manager', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-project-manager.theorchard.io', default='qa-ows-project-manager.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-accounting', rule='/accounting', metric='accounting', service=ServiceElasticBeanstalk( domain=environment.select( prod='{{orchard.services.ows_accounting.domine}}:{{orchard.services.ows_accounting.port}}', default='{{orchard.services.ows_accounting.domine}}:{{orchard.services.ows_accounting.port}}'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-account', rule='/account', metric='account', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-account.theorchard.io', default='qa-ows-account.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-masters-registry', rule='/masters-registry', metric='masters-registry', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-masters-registry.theorchard.io', default='qa-ows-masters-registry.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-contracts', rule='/contracts', metric='contracts', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-contracts.theorchard.io', default='qa-ows-contracts.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_client()]) register( name='ows-images', rule='/images', metric='images', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-images.theorchard.io', default='qa-ows-images.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-film-transparency', rule='/film-transparency', metric='film-transparency', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-film-transparency-api.theorchard.io', default='qa-ows-film-transparency-api.theorchard.io'), url_protocol='https', port=443, protocol=rest), access=[access.allow_session_access]) register( name='ows-territories', rule='/territories', metric='territories', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-territories.theorchard.io', default='qa-ows-territories.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_public_access]) register( name='ows-carveouts', rule='/carveouts', metric='carveouts', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-carveouts.theorchard.io', default='qa-ows-carveouts.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-sony-metadata', rule='/sony/metadata', metric='sony.metadata', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-sony-metadata.theorchard.io', default='qa-ows-sony-metadata.theorchard.io'), url_protocol='https', port=443, protocol=rest), access=[access.allow_client()]) register( name='ows-marketing', rule='/marketing', metric='marketing', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-marketing.theorchard.io', default='qa-ows-marketing.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-product-digital', rule='/product-digital', metric='product-digital', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-product-digital.theorchard.io', prod='ows-product-digital.theorchard.io', default='qa-ows-product-digital.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-product-configuration', rule='/product-configuration', metric='product-configuration', service=ServiceElasticBeanstalk( domain=environment.select( prod='prod-ows-product-configuration.theorchard.io', qa='qa-ows-product-configuration.theorchard.io', default='qa-ows-product-configuration.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_session_access]) register( name='ows-product', rule='/product', metric='product', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-product.theorchard.io', prod='prod-ows-product.theorchard.io', default='qa-ows-product.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_client(), access.allow_session_access]) register( name='ows-track', rule='/track', metric='track', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-track.theorchard.io', prod='prod-ows-track.theorchard.io', default='qa-ows-track.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_session_access]) register( name='ows-salessheets', rule='/salessheets', metric='salessheets', service=ServiceElasticBeanstalk( domain=environment.select( prod='prod-ows-salessheets.theorchard.io', default='qa-ows-salessheets.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_session_access, access.allow_client()]) register( name='ows-assets', rule='/assets', metric='assets', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-assets.theorchard.io', default='qa-ows-assets.theorchard.io'), url_protocol='https', port=443, protocol=rest), access=[ access.allow_session_access, access.allow_client()]) register( name='ows-pricing-admin', rule='/pricing/admin', metric='pricing/admin', service=ServiceElasticBeanstalk( domain=environment.select( prod='prod-ows-pricing.theorchard.io', default='qa-ows-pricing.theorchard.io'), root='/admin/', url_protocol='http', port=80, protocol=rest), access=[ access.allow_session_access_by( [UserGroups.OA], [resource.RESOURCE_PRICING])]) register( name='ows-pricing', rule='/pricing', metric='pricing', service=ServiceElasticBeanstalk( domain=environment.select( prod='prod-ows-pricing.theorchard.io', default='qa-ows-pricing.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[ access.allow_session_access]) register( name='ows-delivery-history', rule='/delivery-history', metric='delivery-history', service=ServiceElasticBeanstalk( domain=environment.select( qa='qa-ows-delivery-history.theorchard.io', prod='prod-ows-delivery-history.theorchard.io', default='qa-ows-delivery-history.theorchard.io'), url_protocol='http', port=80, protocol=rest), access=[access.allow_client()]) register( name='ows-store-availability-admin', rule='/store-availability/admin', metric='store-availability/admin', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-store-availability.theorchard.io', default='qa-ows-store-availability.theorchard.io'), root='/admin/', port=80, protocol=rest), access=[]) register( name='ows-store-availability', rule='/store-availability', metric='store-availability', service=ServiceElasticBeanstalk( domain=environment.select( prod='ows-store-availability.theorchard.io', default='qa-ows-store-availability.theorchard.io'), port=80, protocol=rest), access=[access.allow_client()])