Есть ли способ получить информацию о созданной среде отдельным действием в моем манифесте jelasti c? - PullRequest
0 голосов
/ 28 апреля 2020

Предположим, у меня есть следующие действия в моем манифесте jps:

actions:
  installDatabase:
    install:
      jps: ${baseUrl}/jelastic/postgres/manifest.jps
      envName: ${settings.pgEnvName}
      displayName: Database cluster
  myOtherAction:
  - cmd [cp]:
    - doSomethingWithTheDatabaseHostname

В первом действии я устанавливаю свою базу данных. Это создает отдельную среду Jelasti c. Затем, во втором действии, действующем в текущей среде (не в базе данных), я хотел бы получить имя хоста базы данных из первого действия. Более того, я хотел бы иметь главный узел базы данных. Как я могу это сделать? Я ничего не нашел в обычной Jelasti c или документации по облачным вычислениям на topi c.

EDIT

В действии myOtherAction я хочу установить другой jps, которому нужно имя хоста базы данных, установленной действием installDatabase. Может случиться так, что другие jps должны подключиться к этой базе данных. Я не хочу устанавливать несколько манифестов JPS вручную. Я хочу установить все необходимые манифесты автоматически. В описанном здесь случае первый манифест устанавливает среду базы данных. Мне нужно получить идентификатор узла главного узла этой базы данных и передать его в следующий манифест. Это возможно?

1 Ответ

2 голосов
/ 29 апреля 2020

Существует несколько вариантов работы с несколькими средами из одной JPS, например, вы можете установить другую JPS:

actions:
  installDatabase:
    - install:
        jps: ${baseUrl}/jelastic/postgres/manifest.jps
        envName: ${settings.pgEnvName}
        displayName: Database cluster
    - install:
        envName: ${settings.pgEnvName}
        jps:
          type: upddate
          name: Configure Database
          onInstall:            
            - cmd [${nodes.sqldb.master.id}]: 
                - echo ${nodes.sqldb.master.address}
                - doSomethingWithTheDatabaseHostname

или выполнять запросы в другой среде с помощью API:

actions:
  installDatabase:
    - install:
        jps: ${baseUrl}/jelastic/postgres/manifest.jps
        envName: ${settings.pgEnvName}
        displayName: Database cluster]     

    - script: |
        var resp = api.env.control.GetEnvInfo('${settings.pgEnvName}', session);
        if (resp.result != 0) return resp;

        for (var i = 0, node; node = resp.nodes[i]; i++ ) {
          if (node.nodeGroup == "sqldb" && node.ismaster) {
            return { result: 0, node: node };
          }
        }

        return { result : "error", message: "node not found" };

    - env.control.ExecCmdById:
       envName: ${settings.pgEnvName}
       nodeId: ${response.node.id}
       commandList:
         # doSomethingWithTheDatabaseHostname:
         - command: hostname
...