aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Jenkinsfile23
-rw-r--r--moon_manager/moon_manager/__init__.py2
-rw-r--r--moon_manager/moon_manager/api/slaves.py2
-rw-r--r--moon_orchestrator/moon_orchestrator/__init__.py2
-rw-r--r--python_moonclient/Changelog7
-rw-r--r--python_moonclient/python_moonclient/__init__.py2
-rw-r--r--python_moonclient/python_moonclient/scripts.py74
-rw-r--r--python_moonclient/python_moonclient/slaves.py61
-rw-r--r--python_moonclient/setup.py5
-rw-r--r--tools/moon_jenkins/Dockerfile1
-rw-r--r--tools/moon_jenkins/Jenkinsfile24
-rw-r--r--tools/moon_jenkins/docker-compose.yml6
-rw-r--r--tools/moon_jenkins/plugins.txt2
-rw-r--r--tools/moon_jenkins/setenv.groovy34
14 files changed, 175 insertions, 70 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 00000000..42756ece
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,23 @@
+properties([
+ pipelineTriggers([cron('H * * * *')])
+])
+node {
+ checkout scm
+ def packages = ["python_moonutilities","python_moondb","python_moonclient"]
+ def subtests = [:]
+ for (x in packages) {
+ def pkg = x
+ subtests[pkg] = {
+ withDockerContainer('wukongsun/moon_python_unit_test') {
+ stage("Install prerequisites for package ${pkg}") {
+ sh("pip install pytest requests_mock requests --upgrade")
+ sh("cd ${pkg} && pip install -r tests/unit_python/requirements.txt && pip install .")
+ }
+ stage("Unit test for package ${pkg}") {
+ sh "cd ${pkg}/tests/unit_python && pytest ."
+ }
+ }
+ }
+ }
+ parallel subtests
+} \ No newline at end of file
diff --git a/moon_manager/moon_manager/__init__.py b/moon_manager/moon_manager/__init__.py
index 6f964a63..85c245e0 100644
--- a/moon_manager/moon_manager/__init__.py
+++ b/moon_manager/moon_manager/__init__.py
@@ -3,4 +3,4 @@
# license which can be found in the file 'LICENSE' in this package distribution
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
-__version__ = "4.3.2"
+__version__ = "4.4.0"
diff --git a/moon_manager/moon_manager/api/slaves.py b/moon_manager/moon_manager/api/slaves.py
index d87b8aad..f5b3fa14 100644
--- a/moon_manager/moon_manager/api/slaves.py
+++ b/moon_manager/moon_manager/api/slaves.py
@@ -64,7 +64,7 @@ class Slaves(Resource):
req = requests.get("http://{}:{}/slaves".format(
self.orchestrator_hostname, self.orchestrator_port
))
- return {"slaves": req.json()}
+ return {"slaves": req.json().get("slaves", dict())}
@check_auth
def patch(self, uuid=None, user_id=None):
diff --git a/moon_orchestrator/moon_orchestrator/__init__.py b/moon_orchestrator/moon_orchestrator/__init__.py
index 3276f42d..85c245e0 100644
--- a/moon_orchestrator/moon_orchestrator/__init__.py
+++ b/moon_orchestrator/moon_orchestrator/__init__.py
@@ -3,4 +3,4 @@
# license which can be found in the file 'LICENSE' in this package distribution
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
-__version__ = "4.3.1"
+__version__ = "4.4.0"
diff --git a/python_moonclient/Changelog b/python_moonclient/Changelog
index f6f6c3a4..64ae76ba 100644
--- a/python_moonclient/Changelog
+++ b/python_moonclient/Changelog
@@ -30,3 +30,10 @@ CHANGES
- moon_create_pdp
- moon_send_authz_to_wrapper
- Fix a bug in pdp library
+
+1.2.0
+-----
+- Add some commands:
+ - moon_get_slaves
+ - moon_set_slave
+ - moon_delete_slave
diff --git a/python_moonclient/python_moonclient/__init__.py b/python_moonclient/python_moonclient/__init__.py
index 2302dea9..2c7f8f5c 100644
--- a/python_moonclient/python_moonclient/__init__.py
+++ b/python_moonclient/python_moonclient/__init__.py
@@ -3,4 +3,4 @@
# license which can be found in the file 'LICENSE' in this package distribution
# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
-__version__ = "1.1.0"
+__version__ = "1.2.0"
diff --git a/python_moonclient/python_moonclient/scripts.py b/python_moonclient/python_moonclient/scripts.py
index c880e497..74ed47fc 100644
--- a/python_moonclient/python_moonclient/scripts.py
+++ b/python_moonclient/python_moonclient/scripts.py
@@ -1,6 +1,6 @@
import logging
from importlib.machinery import SourceFileLoader
-from . import parse, models, policies, pdp, authz
+from . import parse, models, policies, pdp, authz, slaves
logger = logging.getLogger("moonclient.scripts")
@@ -161,3 +161,75 @@ def map_pdp_to_project():
logger.info("Mapping: {}=>{}".format(args.filename[0], args.filename[1]))
# TODO: check if pdp_id and keystone_project_id exist
pdp.map_to_keystone(pdp_id=args.filename[0], keystone_project_id=args.filename[1])
+
+
+def get_slaves():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = args.consul_port
+
+ models.init(consul_host, consul_port)
+ policies.init(consul_host, consul_port)
+ pdp.init(consul_host, consul_port)
+ slaves.init(consul_host, consul_port)
+
+ for value in slaves.get_slaves().get('slaves', dict()):
+ if value['configured']:
+ print(" {} (configured)".format(value['name']))
+ else:
+ print(" {} (not configured)".format(value['name']))
+
+
+def set_slave():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = args.consul_port
+
+ models.init(consul_host, consul_port)
+ policies.init(consul_host, consul_port)
+ pdp.init(consul_host, consul_port)
+ slaves.init(consul_host, consul_port)
+
+ slave_name = "kubernetes-admin@kubernetes"
+ if args.filename:
+ slave_name = args.filename
+ for value in slaves.set_slave(slave_name).get('slaves', dict()):
+ if value['configured']:
+ print(" {} (configured)".format(value['name']))
+ else:
+ print(" {} (not configured)".format(value['name']))
+
+
+def delete_slave():
+ requests_log = logging.getLogger("requests.packages.urllib3")
+ requests_log.setLevel(logging.WARNING)
+ requests_log.propagate = True
+
+ args = parse.parse()
+ consul_host = args.consul_host
+ consul_port = args.consul_port
+
+ models.init(consul_host, consul_port)
+ policies.init(consul_host, consul_port)
+ pdp.init(consul_host, consul_port)
+ slaves.init(consul_host, consul_port)
+
+ slave_name = "kubernetes-admin@kubernetes"
+ if args.filename:
+ slave_name = args.filename
+ for value in slaves.delete_slave(slave_name).get('slaves', dict()):
+ if value['configured']:
+ print(" {} (configured)".format(value['name']))
+ else:
+ print(" {} (not configured)".format(value['name']))
+
+
+
diff --git a/python_moonclient/python_moonclient/slaves.py b/python_moonclient/python_moonclient/slaves.py
new file mode 100644
index 00000000..3554341d
--- /dev/null
+++ b/python_moonclient/python_moonclient/slaves.py
@@ -0,0 +1,61 @@
+import logging
+import requests
+import copy
+from . import config
+
+logger = logging.getLogger("moonclient.slaves")
+
+
+URL = None
+HEADERS = None
+
+
+def init(consul_host, consul_port):
+ conf_data = config.get_config_data(consul_host, consul_port)
+ global URL, HEADERS
+ URL = "http://{}:{}".format(
+ conf_data['manager_host'],
+ conf_data['manager_port'])
+ URL = URL + "{}"
+ HEADERS = {"content-type": "application/json"}
+
+
+def get_slaves():
+ req = requests.get(URL.format("/slaves"))
+ assert req.status_code == 200
+ result = req.json()
+ assert type(result) is dict
+ assert "slaves" in result
+ return result
+
+
+def set_slave(name):
+ slaves = get_slaves().get("slaves", [])
+ names = map(lambda x: x['name'], slaves)
+ assert name in names
+ req = requests.patch(URL.format("/slaves/{}".format(name)),
+ headers=HEADERS,
+ json={
+ "op": "replace",
+ "variable": "configured",
+ "value": True
+ })
+ assert req.status_code == 200
+ result = req.json()
+ assert type(result) is dict
+ assert "slaves" in result
+ return get_slaves()
+
+
+def delete_slave(name):
+ slaves = get_slaves().get("slaves", [])
+ names = map(lambda x: x['name'], slaves)
+ assert name in names
+ req = requests.patch(URL.format("/slaves/{}".format(name)),
+ headers=HEADERS,
+ json={
+ "op": "replace",
+ "variable": "configured",
+ "value": False
+ })
+ return get_slaves()
diff --git a/python_moonclient/setup.py b/python_moonclient/setup.py
index 709e3ffa..dcb90365 100644
--- a/python_moonclient/setup.py
+++ b/python_moonclient/setup.py
@@ -48,7 +48,10 @@ setup(
'moon_delete_pdp = python_moonclient.scripts:delete_pdp',
'moon_delete_policy = python_moonclient.scripts:delete_policy',
'moon_map_pdp_to_project = python_moonclient.scripts:map_pdp_to_project',
- 'moon_send_authz_to_wrapper = python_moonclient.scripts:send_authz_to_wrapper'
+ 'moon_send_authz_to_wrapper = python_moonclient.scripts:send_authz_to_wrapper',
+ 'moon_get_slaves = python_moonclient.scripts:get_slaves',
+ 'moon_set_slave = python_moonclient.scripts:set_slave',
+ 'moon_delete_slave = python_moonclient.scripts:delete_slave'
],
}
diff --git a/tools/moon_jenkins/Dockerfile b/tools/moon_jenkins/Dockerfile
index 573d4ac8..058f388c 100644
--- a/tools/moon_jenkins/Dockerfile
+++ b/tools/moon_jenkins/Dockerfile
@@ -3,7 +3,6 @@ FROM jenkinsci/blueocean
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"
COPY security.groovy /usr/share/jenkins/ref/init.groovy.d/security.groovy
-COPY setenv.groovy /usr/share/jenkins/ref/init.groovy.d/setenv.groovy
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt \ No newline at end of file
diff --git a/tools/moon_jenkins/Jenkinsfile b/tools/moon_jenkins/Jenkinsfile
deleted file mode 100644
index 7e0e07c0..00000000
--- a/tools/moon_jenkins/Jenkinsfile
+++ /dev/null
@@ -1,24 +0,0 @@
-pipeline {
- agent {
- docker {
- image 'wukongsun/moon_python_unit_test'
- args '-e moon_home=${moon_home}'
- }
- }
- stages {
- stage('Python Unit Test') {
- steps {
- script {
- sh("cd ${moon_home}/tests/python_unit")
- sh("bash run_tests")
- }
- }
- }
- stage('Functional Test') {
- script {
- sh("cd ${moon_home}/tests/functional")
- sh("bash run_tests")
- }
- }
- }
-} \ No newline at end of file
diff --git a/tools/moon_jenkins/docker-compose.yml b/tools/moon_jenkins/docker-compose.yml
index 2329f7bd..eb9354ce 100644
--- a/tools/moon_jenkins/docker-compose.yml
+++ b/tools/moon_jenkins/docker-compose.yml
@@ -1,12 +1,10 @@
version: '3.1'
services:
-
jenkins:
build:
context: .
- args:
- image: blueocean:v0.3
+ image: blueocean:v0.4
ports:
- 8080:8080
- 50000:50000
@@ -19,4 +17,4 @@ services:
user: root
volumes:
- jenkins-data:
+ jenkins-data: \ No newline at end of file
diff --git a/tools/moon_jenkins/plugins.txt b/tools/moon_jenkins/plugins.txt
index 2463d029..65bae872 100644
--- a/tools/moon_jenkins/plugins.txt
+++ b/tools/moon_jenkins/plugins.txt
@@ -97,4 +97,4 @@ ssh-slaves
pam-auth
ldap
email-ext
-locale
+locale \ No newline at end of file
diff --git a/tools/moon_jenkins/setenv.groovy b/tools/moon_jenkins/setenv.groovy
deleted file mode 100644
index ab2dc137..00000000
--- a/tools/moon_jenkins/setenv.groovy
+++ /dev/null
@@ -1,34 +0,0 @@
-#!groovy
-
-import jenkins.*
-import jenkins.model.*
-import hudson.*
-import hudson.model.*
-
-instance = Jenkins.getInstance()
-globalNodeProperties = instance.getGlobalNodeProperties()
-
-envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
-
-newEnvVarsNodeProperty = null
-envVars = null
-
-if (envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0) {
- newEnvVarsNodeProperty = new hudson.slaves.EnvironmentVariablesNodeProperty();
- globalNodeProperties.add(newEnvVarsNodeProperty)
- envVars = newEnvVarsNodeProperty.getEnvVars()
-} else {
- envVars = envVarsNodePropertyList.get(0).getEnvVars()
-}
-
-http_proxy = System.getenv()['http_proxy']
-https_proxy = System.getenv()['https_proxy']
-
-if (http_proxy) {
- envVars.put("http_proxy", System.getenv()['http_proxy'])
-}
-if (https_proxy) {
- envVars.put("https_proxy", System.getenv()['https_proxy'])
-}
-
-instance.save()