def _render_and_write_kubernetes_config( self, kubernetes_config_path: str, application_name: str, secrets: List[Secret], custom_values: Dict[str, str], ) -> str: """ Render the jinja-templated kubernetes configuration adn write it out to a temporary file. Args: kubernetes_config_path: The raw, jinja-templated kubernetes configuration path. application_name: Current application name Returns: The path to the temporary file where the rendered kubernetes configuration is stored. """ vault_values = {_.jinja_safe_key: ensure_base64(_.val) for _ in secrets} context_values = { **{ _.jinja_safe_key: ensure_base64(_.val) for _ in Context().get_or_else(ContextKey.EVENTHUB_PRODUCER_POLICY_SECRETS, {}) }, **{ _.jinja_safe_key: ensure_base64(_.val) for _ in Context().get_or_else(ContextKey.EVENTHUB_CONSUMER_GROUP_SECRETS, {}) }, } kubernetes_config = self._render_kubernetes_config( kubernetes_config_path, application_name, {**vault_values, **context_values}, custom_values ) return self._write_kubernetes_config(kubernetes_config)
def test_create_eventhub_producer_policies_secrets(self, victim): policies = [EventHubProducerPolicy('entity1', False), EventHubProducerPolicy('entity2', False)] victim.create_eventhub_producer_policies(policies) assert Context().get(ContextKey.EVENTHUB_PRODUCER_POLICY_SECRETS) == [Secret('entity1-connection-string', 'potato-connection'), Secret('entity2-connection-string', 'potato-connection')]
def create_eventhub_consumer_groups( self, consumer_groups: List[EventHubConsumerGroup]): """Creates a new EventHub consumer group if one does not exist. Args: consumer_groups: A list of EventHubConsumerGroup containing the name of the consumer group to create. """ secrets = [ self._create_consumer_group(group=group) for group in consumer_groups ] Context().create_or_update(ContextKey.EVENTHUB_CONSUMER_GROUP_SECRETS, secrets)
def test_create_docker_registry_secret(self, _, victim): Context().clear() with mock.patch("takeoff.azure.deploy_to_kubernetes.DeployToKubernetes._write_kubernetes_config") as m_write: victim._create_image_pull_secret("myapp") expected_result = """kind: Namespace apiVersion: v1 metadata: name: default --- kind: Secret apiVersion: v1 type: kubernetes.io/dockerconfigjson data: .dockerconfigjson: bm9uYmFzZTY0ZW5jb2RlZHN0cmluZw== metadata: name: registry-auth namespace: default""" m_write.assert_called_once_with(expected_result)
def create_eventhub_producer_policies( self, producer_policies: List[EventHubProducerPolicy]): """Constructs producer policies for all EventHub entities requested. Args: producer_policies: List of producer policies to create """ eventhub_namespace = get_eventhub_name(self.config, self.env) resource_group = get_resource_group_name(self.config, self.env) logger.info(f"Using Azure resource group: {resource_group}") logger.info(f"Using Azure EventHub namespace: {eventhub_namespace}") secrets = [ self._create_producer_policy(policy, resource_group, eventhub_namespace, self.application_name) for policy in producer_policies ] Context().create_or_update(ContextKey.EVENTHUB_PRODUCER_POLICY_SECRETS, secrets)