softwarecontainer  0.18.0-739e8d7 2017-05-04
envgateway.cpp
1 /*
2  * Copyright (C) 2016-2017 Pelagicore AB
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
9  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
10  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
11  * BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
12  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
13  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
14  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
15  * SOFTWARE.
16  *
17  * For further information see LICENSE
18  */
19 
20 #include <string>
21 #include <unistd.h>
22 
23 #include "envgateway.h"
24 #include "envgatewayparser.h"
25 
26 namespace softwarecontainer {
27 
28 EnvironmentGateway::EnvironmentGateway(std::shared_ptr<ContainerAbstractInterface> container) :
29  Gateway(ID, container)
30 {
31 }
32 
33 EnvironmentGateway::~EnvironmentGateway()
34 {
35 }
36 
37 bool EnvironmentGateway::readConfigElement(const json_t *element)
38 {
40  EnvironmentGatewayParser::EnvironmentVariable variable;
41 
42  if (!parser.parseEnvironmentGatewayConfigElement(element, variable, m_variables)) {
43  log_error() << "Could not parse environment gateway element";
44  return false;
45  }
46 
47  m_variables[variable.first] = variable.second;
48  return true;
49 }
50 
51 bool EnvironmentGateway::activateGateway()
52 {
53  if (m_variables.empty()) {
54  log_error() << "No environment variables set in gateway";
55  return false;
56  }
57 
58  for (auto &variable : m_variables) {
59  std::shared_ptr<ContainerAbstractInterface> container = getContainer();
60  if (!container->setEnvironmentVariable(variable.first, variable.second)) {
61  log_error() << "Could not set environment variable " << variable.first
62  << " for the container";
63  return false;
64  }
65  }
66 
67  return true;
68 }
69 
70 bool EnvironmentGateway::teardownGateway()
71 {
72  return true;
73 }
74 
75 } // namespace softwarecontainer
bool readConfigElement(const json_t *element)
Gateway specific parsing of config elements.
Definition: envgateway.cpp:37
Developers guide to adding a config item: