in marketplace/deployer_util/provision.py [0:0]
def process(schema, values, deployer_image, deployer_entrypoint, version_repo,
image_pull_secret, deployer_service_account_name,
storage_class_provisioner):
props = {}
manifests = []
app_name = get_name(schema, values)
namespace = get_namespace(schema, values)
# Inject DEPLOYER_IMAGE property values if not already present.
values = inject_deployer_image_properties(values, schema, deployer_image)
# Handle provisioning of reporting secrets from storage if a URI
# is provided.
for key, value in values.items():
if key not in schema.properties:
continue
if not schema.properties[key].reporting_secret:
continue
if '://' in value:
value, storage_manifests = provision_from_storage(
key, value, app_name=app_name, namespace=namespace)
values[key] = value
manifests += storage_manifests
for prop in schema.properties.values():
if prop.name in values:
# The value has been explicitly specified. Skip.
continue
if prop.service_account:
value, sa_manifests = provision_service_account(
schema,
prop,
app_name=app_name,
namespace=namespace,
image_pull_secret=image_pull_secret)
props[prop.name] = value
manifests += sa_manifests
elif prop.storage_class:
value, sc_manifests = provision_storage_class(
schema,
prop,
app_name=app_name,
namespace=namespace,
provisioner=storage_class_provisioner)
props[prop.name] = value
manifests += sc_manifests
elif prop.xtype == config_helper.XTYPE_ISTIO_ENABLED:
# TODO: Really populate this value.
props[prop.name] = False
elif prop.xtype == config_helper.XTYPE_INGRESS_AVAILABLE:
# TODO(#360): Really populate this value.
props[prop.name] = True
elif prop.password:
props[prop.name] = property_generator.generate_password(prop.password)
elif prop.tls_certificate:
props[prop.name] = property_generator.generate_tls_certificate()
# Merge input and provisioned properties.
app_params = dict(list(values.items()) + list(props.items()))
use_kalm = False
if (schema.is_v2() and
schema.x_google_marketplace.managed_updates.kalm_supported):
if version_repo:
use_kalm = True
log.info('Using KALM for deployment')
else:
log.warn('The deployer supports KALM but no --version-repo specified. '
'Falling back to provisioning the deployer job only.')
if use_kalm:
manifests += provision_kalm(
schema,
version_repo=version_repo,
app_name=app_name,
namespace=namespace,
deployer_image=deployer_image,
image_pull_secret=image_pull_secret,
app_params=app_params,
deployer_service_account_name=deployer_service_account_name)
else:
manifests += provision_deployer(
schema,
app_name=app_name,
namespace=namespace,
deployer_image=deployer_image,
deployer_entrypoint=deployer_entrypoint,
image_pull_secret=image_pull_secret,
app_params=app_params,
deployer_service_account_name=deployer_service_account_name)
return manifests