Quais são todos os passos para configurar o relacionamento de charme juju

3

Suponha que eu esteja criando um charme que está tendo uma classe java nele, diga Helloworld.java. Agora eu quero compilar e rodar esta classe usando o jdk6 de um charme diferente.

Alguém pode me explicar quais são as mudanças que preciso fazer? Basicamente eu estou lutando na criação de relacionamento, portanto, quero deixar claro.

Na minha implementação original, eu tenho um pacote deb no meu charme, este pacote deb precisa do jdk6 e do hadoop pré-instalados (o script de instalação verifica a disponibilidade verificando JAVA_HOME e HADOOP_HOME no PATH).

Estou totalmente empenhado em adicionar o relacionamento (em metadata.yaml e -relation - ). Eu não estou claro em tudo isso como posso usar java e hadoop de diferentes encantos.

    
por ASR 13.02.2017 / 13:26

1 resposta

3

Se você quiser usar o jdk instalado através de outro charme, você precisará criar um feitiço subordinado ( link ). Um encanto subordinado opera na mesma instância (recipiente) do encanto pelo qual ele está subordinado.

O metadata.yaml ficaria assim:

name: 
summary: 
maintainer: 
description: 
tags: [misc]
subordinate: true
requires:
  interface-name:
    interface: interface-name
series: ['trusty']

As interfaces a seguir podem ser usadas para o Java JDK e o Hadoop:

Exemplo pequeno: Supondo que você queira o jdk de outro charme, usarei o charme kafka como exemplo e usarei o jdk que ele instala.

metadata.yaml

name: layer-jdk-example
summary: <Fill in summary here>
maintainer: maintainer
description: |
  <Multi-line description here>
tags:
  - misc
subordinate: true
requires:
  kafka:
    interface: kafka
    scope: container
series: ['trusty']

layer.yaml

includes: ['layer:basic', 'interface:kafka']

reactivo / layer-jdk-example.py

import os
from charms.reactive import when, when_not, set_state


@when_not('layer-jdk-example.installed')
def install_layer_jdk_example():    
    os.getenv("JAVA_HOME")
    # locate / download java file and compile
    # do stuff ... 
    set_state('layer-jdk-example.installed')

Construa, implemente e adicione uma relação ao kafka. Espero que isso ajude.

    
por user3499430 13.02.2017 / 15:29

Tags