def test_resolve_bundle_version_success_offline(self): custom_settings = Mock() first_resolver_mock = Mock() first_resolver_mock.resolve_bundle_version = MagicMock( return_value=None) second_resolver_mock = Mock() resolved_version = {'test': 'only'} second_resolver_mock.resolve_bundle_version = MagicMock( return_value=resolved_version) resolver_chain_mock = MagicMock( return_value=[first_resolver_mock, second_resolver_mock]) with patch('conductr_cli.resolver.resolver_chain', resolver_chain_mock): result = resolver.resolve_bundle_version(custom_settings, 'bundle', offline_mode=True) self.assertEqual(resolved_version, result) resolver_chain_mock.assert_called_with(custom_settings, True) first_resolver_mock.resolve_bundle_version.assert_called_with('bundle') second_resolver_mock.resolve_bundle_version.assert_called_with( 'bundle')
def test_resolve_bundle_version_success(self): custom_settings = Mock() first_resolver_mock = Mock() first_resolver_mock.resolve_bundle_version = MagicMock(return_value=None) second_resolver_mock = Mock() resolved_version = {'test': 'only'} second_resolver_mock.resolve_bundle_version = MagicMock(return_value=resolved_version) resolver_chain_mock = MagicMock(return_value=[first_resolver_mock, second_resolver_mock]) with patch('conductr_cli.resolver.resolver_chain', resolver_chain_mock): result = resolver.resolve_bundle_version(custom_settings, 'bundle') self.assertEqual(resolved_version, result) resolver_chain_mock.assert_called_with(custom_settings) first_resolver_mock.resolve_bundle_version.assert_called_with('bundle') second_resolver_mock.resolve_bundle_version.assert_called_with('bundle')
def deploy(args): """`conduct deploy` command""" log = logging.getLogger(__name__) bintray_webhook_secret = custom_settings.load_bintray_webhook_secret(args) if not bintray_webhook_secret: log.error( 'The deploy command requires bintray webhook secret to be configured' ) log.error('Add the following configuration to the ' 'custom settings file {}'.format( vars(args).get('custom_settings_file'))) log.error( ' conductr.continuous-delivery.bintray-webhook-secret = "configured-continuous-delivery-secret"' ) return resolved_version = resolver.resolve_bundle_version(args.custom_settings, args.bundle) if not resolved_version: log.error('Unable to resolve bundle {}'.format(args.bundle)) return # Build Continuous Delivery URL using our resolver mechanism deploy_uri = resolver.continuous_delivery_uri(args.custom_settings, resolved_version) if not deploy_uri: log.error('Unable to form Continuous Delivery uri for {}'.format( args.bundle)) return # Confirm with the user unless auto deploy is enabled accepted = True if args.auto_deploy else request_deploy_confirmation( resolved_version, args) if not accepted: log.info('Abort') return url = conduct_url.url(deploy_uri, args) # JSON Payload for deployment request payload = { 'package': resolved_version['package_name'], 'version': '{}-{}'.format(resolved_version['compatibility_version'], resolved_version['digest']) } # HTTP headers required for deployment request hmac_digest = bundle_deploy.generate_hmac_signature( bintray_webhook_secret, resolved_version['package_name']) headers = {'X-Bintray-WebHook-Hmac': hmac_digest} response = conduct_request.post(args.dcos_mode, conductr_host(args), url, json=payload, headers=headers, auth=args.conductr_auth, verify=args.server_verification_file) validation.raise_for_status_inc_3xx(response) deployment_id = response.text log.info('Deployment request sent.') log.info('Deployment id {}'.format(deployment_id)) if not args.no_wait: bundle_deploy.wait_for_deployment_complete(deployment_id, resolved_version, args) return True
def deploy(args): """`conduct deploy` command""" log = logging.getLogger(__name__) bintray_webhook_secret = custom_settings.load_bintray_webhook_secret(args) if not bintray_webhook_secret: log.error('The deploy command requires bintray webhook secret to be configured') log.error('Add the following configuration to the ' 'custom settings file {}'.format(vars(args).get('custom_settings_file'))) log.error(' conductr.continuous-delivery.bintray-webhook-secret = "configured-continuous-delivery-secret"') return resolved_version = resolver.resolve_bundle_version(args.custom_settings, args.bundle) if not resolved_version: log.error('Unable to resolve bundle {}'.format(args.bundle)) return # Build Continuous Delivery URL using our resolver mechanism deploy_uri = resolver.continuous_delivery_uri(args.custom_settings, resolved_version) if not deploy_uri: log.error('Unable to form Continuous Delivery uri for {}'.format(args.bundle)) return # Confirm with the user unless auto deploy is enabled accepted = True if args.auto_deploy else request_deploy_confirmation(resolved_version, args) if not accepted: log.info('Abort') return url = conduct_url.url(deploy_uri, args) # JSON Payload for deployment request payload = { 'package': resolved_version['package_name'], 'version': '{}-{}'.format(resolved_version['compatibility_version'], resolved_version['digest']) } # HTTP headers required for deployment request hmac_digest = bundle_deploy.generate_hmac_signature(bintray_webhook_secret, resolved_version['package_name']) headers = { 'X-Bintray-WebHook-Hmac': hmac_digest } response = conduct_request.post(args.dcos_mode, conductr_host(args), url, json=payload, headers=headers, auth=args.conductr_auth, verify=args.server_verification_file) validation.raise_for_status_inc_3xx(response) deployment_id = response.text log.info('Deployment request sent.') log.info('Deployment id {}'.format(deployment_id)) if not args.no_wait: bundle_deploy.wait_for_deployment_complete(deployment_id, resolved_version, args) return True