mirror of
https://gitlab.sectorq.eu/jaydee/portainer.git
synced 2025-12-14 10:44:52 +01:00
build
This commit is contained in:
30
port.py
30
port.py
@@ -349,8 +349,14 @@ class Portainer:
|
|||||||
return s
|
return s
|
||||||
raise ValueError(f"Stack not found: {stack}")
|
raise ValueError(f"Stack not found: {stack}")
|
||||||
|
|
||||||
def create_stack(self, endpoint, stack=None, mode="git", autostart=False, ep_mode='swarm', timeout=None):
|
def create_stack(self, endpoint, stack=None, mode="git", autostart=False, swarm=False, timeout=None):
|
||||||
swarm_id = self.get_swarm_id(endpoint)
|
if swarm:
|
||||||
|
swarm_id = self.get_swarm_id(endpoint)
|
||||||
|
p = "swarm"
|
||||||
|
env_path = f"{self.repo_dir}/__swarm/{stack}/.env"
|
||||||
|
else:
|
||||||
|
p = "standalone"
|
||||||
|
env_path = f"{self.repo_dir}/{stack}/.env"
|
||||||
#input(swarm_id)
|
#input(swarm_id)
|
||||||
self.endpoint_id = self.get_endpoint_id(endpoint)
|
self.endpoint_id = self.get_endpoint_id(endpoint)
|
||||||
if os.path.exists(self.repo_dir):
|
if os.path.exists(self.repo_dir):
|
||||||
@@ -361,8 +367,7 @@ class Portainer:
|
|||||||
Repo.clone_from(self.git_url, self.repo_dir)
|
Repo.clone_from(self.git_url, self.repo_dir)
|
||||||
if mode == "git":
|
if mode == "git":
|
||||||
print("Creating new stack from git repo...")
|
print("Creating new stack from git repo...")
|
||||||
enviro="swarm"
|
path = f"/stacks/create/{p}/repository"
|
||||||
path = f"/stacks/create/{enviro}/repository"
|
|
||||||
|
|
||||||
if self.endpoint_id is not None:
|
if self.endpoint_id is not None:
|
||||||
path += f"?endpointId={self.endpoint_id}"
|
path += f"?endpointId={self.endpoint_id}"
|
||||||
@@ -388,10 +393,13 @@ class Portainer:
|
|||||||
print(f"Stack {stack} already exist")
|
print(f"Stack {stack} already exist")
|
||||||
continue
|
continue
|
||||||
print(f"Working on {stack}")
|
print(f"Working on {stack}")
|
||||||
if os.path.exists(f"{self.repo_dir}/__swarm/{stack}/.env"):
|
|
||||||
f = open(f"{self.repo_dir}/__swarm/{stack}/.env","r")
|
|
||||||
|
envs = []
|
||||||
|
if os.path.exists(f"{env_path}"):
|
||||||
|
f = open(f"{env_path}","r")
|
||||||
env_vars = f.read().splitlines()
|
env_vars = f.read().splitlines()
|
||||||
envs = []
|
|
||||||
for ev in env_vars:
|
for ev in env_vars:
|
||||||
if ev.startswith("#") or ev.strip() == "":
|
if ev.startswith("#") or ev.strip() == "":
|
||||||
continue
|
continue
|
||||||
@@ -417,6 +425,9 @@ class Portainer:
|
|||||||
e['value'] = "journald"
|
e['value'] = "journald"
|
||||||
else:
|
else:
|
||||||
e['value'] = "syslog"
|
e['value'] = "syslog"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uid = uuid.uuid4()
|
uid = uuid.uuid4()
|
||||||
#print(uid)
|
#print(uid)
|
||||||
@@ -449,9 +460,10 @@ class Portainer:
|
|||||||
"filesystemPath": "/share/docker_data/portainer/portainer-data/",
|
"filesystemPath": "/share/docker_data/portainer/portainer-data/",
|
||||||
"RegistryID": 4,
|
"RegistryID": 4,
|
||||||
"isDetachedFromGit": True,
|
"isDetachedFromGit": True,
|
||||||
"method":"repository"
|
"method":"repository",
|
||||||
|
"swarmID": None
|
||||||
}
|
}
|
||||||
if ep_mode == "swarm":
|
if swarm:
|
||||||
req["type"] = "swarm"
|
req["type"] = "swarm"
|
||||||
req["swarmID"] = swarm_id
|
req["swarmID"] = swarm_id
|
||||||
req["composeFile"] = f"__swarm/{stack}/{stack}-swarm.yml"
|
req["composeFile"] = f"__swarm/{stack}/{stack}-swarm.yml"
|
||||||
|
|||||||
8
portainer.py
Normal file → Executable file
8
portainer.py
Normal file → Executable file
@@ -1,3 +1,4 @@
|
|||||||
|
#!/home/jd/projects/venvs/portainer/bin/python3
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import requests
|
import requests
|
||||||
@@ -39,6 +40,7 @@ parser.add_argument("--stack", "-s", type=str, help="Stack ID for operations")
|
|||||||
parser.add_argument("--token-only", action="store_true", help="Print auth token and exit")
|
parser.add_argument("--token-only", action="store_true", help="Print auth token and exit")
|
||||||
parser.add_argument("--timeout", type=int, default=10, help="Request timeout seconds")
|
parser.add_argument("--timeout", type=int, default=10, help="Request timeout seconds")
|
||||||
parser.add_argument("--deploy-mode","-m", type=str, default="git", help="Deploy mode")
|
parser.add_argument("--deploy-mode","-m", type=str, default="git", help="Deploy mode")
|
||||||
|
parser.add_argument("--swarm","-w", action="store_true", help="Swarm mode")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
_LOG_LEVEL = "INFO"
|
_LOG_LEVEL = "INFO"
|
||||||
LOG_FILE = "/tmp/portainer.log"
|
LOG_FILE = "/tmp/portainer.log"
|
||||||
@@ -106,9 +108,9 @@ if __name__ == "__main__":
|
|||||||
if args.delete_stack:
|
if args.delete_stack:
|
||||||
por.delete_stack(args.endpoint_id,args.stack,)
|
por.delete_stack(args.endpoint_id,args.stack,)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if args.create_stack:
|
if args.create_stack:
|
||||||
por.create_stack(args.endpoint_id,args.stack, args.deploy_mode, args.autostart)
|
por.create_stack(args.endpoint_id,args.stack, args.deploy_mode, args.autostart, args.swarm)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
if args.stop_stack:
|
if args.stop_stack:
|
||||||
|
|||||||
Reference in New Issue
Block a user