Skip to content

Commit

Permalink
Updates for new Package API
Browse files Browse the repository at this point in the history
  • Loading branch information
pfnsec committed Sep 8, 2020
1 parent 192ed19 commit f739ca5
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 36 deletions.
3 changes: 2 additions & 1 deletion batik/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
__version__ = '0.0.2'

from .env import env
from .env import env
from .layer import Layer
2 changes: 1 addition & 1 deletion batik/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
batik undeploy <deployId>
batik login [create]
batik hub [add]
batik hub [list]
batik hub [list <query> [-p <page>]]
batik hub [mkimg]
batik hub [resolve]
batik hub [publish]
Expand Down
30 changes: 15 additions & 15 deletions batik/commands/hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import batik.remote.package as package
import batik.remote.user as user
import batik.local.image as image
import batik.local.batik_env as batik_env

import os
import re
Expand Down Expand Up @@ -35,17 +36,15 @@ def run(self):


elif self.options["list"]:
res = package.get_packages()
page = self.options.get("<page>") or 1
query = self.options.get("<query>") or ""
res = package.get_packages(self.options["<query>"], page)

print(res)


elif self.options["publish"]:
#print("puublish")
me = user.me()

#print(me)
username = me['res']['username']
username = batik_env.get('username')

mfst = image.load_manifest('./batik.yaml')
alias = mfst['alias']
Expand All @@ -55,22 +54,22 @@ def run(self):
pkg_info = package.get_package_by_name(username, alias)
print(pkg_info)

if pkg_info['data'] == None:
res = package.create_package(alias)
if pkg_info == None:
res = package.create_package(username, alias)
print(res)

pkg_info = package.get_package_by_name(username, alias)
print(pkg_info)

package_id = pkg_info['data']['id']

print(f"Publishing to @{username}/{alias}...")
print(f"Package ID: {package_id}")
print(f"Package ID: {pkg_info}")

image_name = f"{alias}.tar.xz"
image_name = os.path.join('./.batik.build', image_name)

with open(image_name, 'rb') as f:
package.upload_package_image(package_id, f)
package.upload_package_image(username, alias, f)


elif self.options["search"]:
Expand All @@ -89,11 +88,11 @@ def run(self):

res = package.get_package_by_name(username, alias)

package_id = res['data']['id']
package_id = res['id']

path = os.path.join(username, f"{alias}.tar.xz")

res = package.download_package_image(package_id, username)
res = package.download_package_image(username, alias)



Expand Down Expand Up @@ -138,12 +137,13 @@ def run(self):


res = package.get_package_by_name(username, alias)
print(res)

package_id = res['data']['id']
package_id = res['id']

path = os.path.join(username, f"{alias}.tar.xz")

res = package.download_package_image(package_id, username, alias)
res = package.download_package_image(username, alias)

print(res)

Expand Down
6 changes: 6 additions & 0 deletions batik/layer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from prefect.core.task import Task


class Layer(Task):
def __init__(self, client=None, **kwargs):
super().__init__(**kwargs)
4 changes: 3 additions & 1 deletion batik/remote/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@

#URL = os.environ.get('BATIK_BASE_URL') or "https://localhost:4210"

URL = batik_env.get('cluster_url') or "http://localhost:4210"
URL = batik_env.get('cluster_url') or "https://cluster.batik.sh"
HUB_URL = batik_env.get('hub_url') or "https://hub.batik.sh"

def get_auth_token():

if not batik_env.get("token"):
print("No token!")
return
print(f"Logging into {HUB_URL}")
email = batik.env("email") or input("Email: ")
password = batik.env("password") or input("Password: ")
Expand Down
50 changes: 32 additions & 18 deletions batik/remote/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,29 @@
import json


def get_packages():
def get_packages(query, page):
params = {

'query': query,
'page': page,
}

r = requests.get(f"{base.HUB_URL}/package/", params)
r = requests.get(f"{base.HUB_URL}/cmd/package", params)

return r.json()


def get_package(user, alias):
def get_package(username, alias):
params = {
"user": user,
"username": username,
"alias": alias,
}

r = requests.get(f"{base.HUB_URL}/package/name/{user}/{alias}")
r = requests.get(f"{base.HUB_URL}/cmd/package/{username}/{alias}")

return r.json()


# Marked for delete...
def search_packages(query):
params = {
"query": query
Expand All @@ -40,7 +43,7 @@ def search_packages(query):


# TODO: do package images need tags? I mean, of course they do. Add tags.
def upload_package_image(id, file):
def upload_package_image(username, alias, file):

params = {
# "tag": tag,
Expand All @@ -57,7 +60,7 @@ def upload_package_image(id, file):
}

r = requests.post (
f"{base.HUB_URL}/package/id/{id}/upload",
f"{base.HUB_URL}/cmd/package/{username}/{alias}/upload",

files = {
"file": file
Expand All @@ -72,9 +75,9 @@ def upload_package_image(id, file):
return r.json()


def download_package_image(id, subdir, alias):
def download_package_image(username, alias):

subdir = os.path.join('batik_layers', subdir)
subdir = os.path.join('batik_layers', username)

layer_path = os.path.join(subdir, alias)

Expand All @@ -99,7 +102,7 @@ def download_package_image(id, subdir, alias):
# "hash": hash
}

r = requests.get(f"{base.HUB_URL}/package/id/{id}/latest", params)
r = requests.get(f"{base.HUB_URL}/cmd/package/{username}/{alias}/latest", params)
r.raise_for_status()

cd = r.headers['content-disposition']
Expand Down Expand Up @@ -144,28 +147,39 @@ def get_package_by_name(user, alias):

}

r = requests.get(f"{base.HUB_URL}/package/name/{user}/{alias}", params)
r = requests.get(f"{base.HUB_URL}/cmd/package/{user}/{alias}", params)
if not r.ok:
return None

return r.json()


def create_package(alias):
params = {
def create_package(username, alias):
data = {
"username": username,
"alias": alias
}

headers = {"Authorization": base.get_auth_token()}

r = requests.get(f"{base.HUB_URL}/package/create", params, headers=headers)
r = requests.post (
f"{base.HUB_URL}/cmd/package",


json = data,

headers = headers

)

return r.content


def delete_package(packageId):
def delete_package(username, alias):
params = {
"packageId": packageId
#"packageId": packageId
}

r = requests.get(f"{base.HUB_URL}/package/delete", params)
r = requests.delete(f"{base.HUB_URL}/cmd/package/{username}/{alias}", params)

return r.content

0 comments on commit f739ca5

Please sign in to comment.