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
|
||||
raise ValueError(f"Stack not found: {stack}")
|
||||
|
||||
def create_stack(self, endpoint, stack=None, mode="git", autostart=False, ep_mode='swarm', timeout=None):
|
||||
swarm_id = self.get_swarm_id(endpoint)
|
||||
def create_stack(self, endpoint, stack=None, mode="git", autostart=False, swarm=False, timeout=None):
|
||||
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)
|
||||
self.endpoint_id = self.get_endpoint_id(endpoint)
|
||||
if os.path.exists(self.repo_dir):
|
||||
@@ -361,8 +367,7 @@ class Portainer:
|
||||
Repo.clone_from(self.git_url, self.repo_dir)
|
||||
if mode == "git":
|
||||
print("Creating new stack from git repo...")
|
||||
enviro="swarm"
|
||||
path = f"/stacks/create/{enviro}/repository"
|
||||
path = f"/stacks/create/{p}/repository"
|
||||
|
||||
if self.endpoint_id is not None:
|
||||
path += f"?endpointId={self.endpoint_id}"
|
||||
@@ -388,10 +393,13 @@ class Portainer:
|
||||
print(f"Stack {stack} already exist")
|
||||
continue
|
||||
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()
|
||||
envs = []
|
||||
|
||||
for ev in env_vars:
|
||||
if ev.startswith("#") or ev.strip() == "":
|
||||
continue
|
||||
@@ -417,6 +425,9 @@ class Portainer:
|
||||
e['value'] = "journald"
|
||||
else:
|
||||
e['value'] = "syslog"
|
||||
|
||||
|
||||
|
||||
|
||||
uid = uuid.uuid4()
|
||||
#print(uid)
|
||||
@@ -449,9 +460,10 @@ class Portainer:
|
||||
"filesystemPath": "/share/docker_data/portainer/portainer-data/",
|
||||
"RegistryID": 4,
|
||||
"isDetachedFromGit": True,
|
||||
"method":"repository"
|
||||
"method":"repository",
|
||||
"swarmID": None
|
||||
}
|
||||
if ep_mode == "swarm":
|
||||
if swarm:
|
||||
req["type"] = "swarm"
|
||||
req["swarmID"] = swarm_id
|
||||
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 sys
|
||||
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("--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("--swarm","-w", action="store_true", help="Swarm mode")
|
||||
args = parser.parse_args()
|
||||
_LOG_LEVEL = "INFO"
|
||||
LOG_FILE = "/tmp/portainer.log"
|
||||
@@ -106,9 +108,9 @@ if __name__ == "__main__":
|
||||
if args.delete_stack:
|
||||
por.delete_stack(args.endpoint_id,args.stack,)
|
||||
sys.exit()
|
||||
|
||||
if args.create_stack:
|
||||
por.create_stack(args.endpoint_id,args.stack, args.deploy_mode, args.autostart)
|
||||
|
||||
if args.create_stack:
|
||||
por.create_stack(args.endpoint_id,args.stack, args.deploy_mode, args.autostart, args.swarm)
|
||||
sys.exit()
|
||||
|
||||
if args.stop_stack:
|
||||
|
||||
Reference in New Issue
Block a user