Add functionaly for configuring and deploying nginx proxy
Change-Id: I107e33c8fa5f4d51abb28931db1cf927cb8fe4da
diff --git a/src/com/mirantis/mcp/CCP.groovy b/src/com/mirantis/mcp/CCP.groovy
new file mode 100644
index 0000000..4f59edc
--- /dev/null
+++ b/src/com/mirantis/mcp/CCP.groovy
@@ -0,0 +1,71 @@
+package com.mirantis.mcp
+
+def checkPortIsFree(String localPort) {
+ withEnv(["port=${localPort}"]) {
+ sh '''
+ if netstat -pnat | grep -qw "${port}"; then
+ echo "Port ${port} is already opened."
+ exit 1
+ fi
+ '''
+ }
+}
+
+def deployProxy(String confDir, String proxyPassURL, String localPort) {
+ withEnv(["localPort=${localPort}",
+ "proxyPassURL=${proxyPassURL}",
+ "confDir=${confDir}"]) {
+ sh '''\
+ cat <<EOF > "${confDir}/nginx-${localPort}"
+ worker_processes auto;
+ user jenkins;
+ pid ${confDir}/nginx-${localPort}.pid;
+ error_log /dev/null;
+ #
+ events {
+ worker_connections 768;
+ }
+ #
+ http {
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ #
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+ #
+ access_log off;
+ #
+ server {
+ listen ${localPort} default_server;
+ #
+ server_name _;
+ client_max_body_size 0;
+ # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
+ chunked_transfer_encoding on;
+ #
+ location / {
+ proxy_set_header Host \\$http_host; # required for docker client's sake
+ proxy_set_header X-Real-IP \\$remote_addr; # pass on real client's IP
+ proxy_set_header X-Forwarded-For \\$proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto \\$scheme;
+ proxy_read_timeout 900;
+ proxy_pass ${proxyPassURL} ;
+ }
+ }
+ }'''.stripIndent()
+ }
+ sh "nginx -t -c ${confDir}/nginx-${localPort}"
+ sh "nginx -c ${confDir}/nginx-${localPort}"
+ return "127.0.0.1:${localPort}"
+}
+
+def destroyProxy(String confDir, String localPort) {
+ def proxyPid = sh(script: "cat ${confDir}/nginx-${localPort}.pid",
+ returnStdout: true).trim()
+ if ( proxyPid ) {
+ sh "kill ${proxyPid}"
+ }
+}