本文整理汇总了Python中eru.models.App.get_or_create方法的典型用法代码示例。如果您正苦于以下问题:Python App.get_or_create方法的具体用法?Python App.get_or_create怎么用?Python App.get_or_create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eru.models.App
的用法示例。
在下文中一共展示了App.get_or_create方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: register_app_version
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def register_app_version():
data = request.get_json()
version = data['version']
appyaml = data['appyaml']
try:
verify_appconfig(appyaml)
except (ValueError, KeyError) as e:
raise EruAbortException(consts.HTTP_BAD_REQUEST, e.message)
name = appyaml['appname']
app = App.get_or_create(name, data['git'], data['token'])
if not app:
current_app.logger.error('App create failed. (name=%s, version=%s)', name, version[:7])
raise EruAbortException(consts.HTTP_BAD_REQUEST,
'App %s create failed, maybe token duplicated' % name)
v = app.add_version(version)
if not v:
current_app.logger.error('Version create failed. (name=%s, version=%s)', name, version[:7])
raise EruAbortException(consts.HTTP_BAD_REQUEST, 'Version %s create failed' % version[:7])
appconfig = v.appconfig
appconfig.update(**appyaml)
appconfig.save()
current_app.logger.info('App-Version created. (name=%s, version=%s)', name, version[:7])
return {'r': 0, 'msg': 'ok'}
示例2: register_app_version
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def register_app_version():
data = request.get_json()
version = data['version']
appyaml = data['appyaml']
if isinstance(appyaml, basestring):
try:
appyaml = yaml.load(appyaml)
except yaml.error.YAMLError:
abort(400, 'Error in app.yaml')
try:
verify_appconfig(appyaml)
except (ValueError, KeyError) as e:
abort(400, e.message)
name = appyaml['appname']
app = App.get_or_create(name, data['git'])
v = app.add_version(version)
if not v:
_log.error('Version create failed. (name=%s, version=%s)', name, version[:7])
abort(400, 'Version %s create failed' % version[:7])
appconfig = v.appconfig
appconfig.update(**appyaml)
appconfig.save()
_log.info('App-Version created. (name=%s, version=%s)', name, version[:7])
return 201, DEFAULT_RETURN_VALUE
示例3: create_local_test_data
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def create_local_test_data(private=False):
appyaml = {
'appname': 'blueberry',
'entrypoints': {
'web': {
'cmd': 'python app.py',
'ports': ['5000/tcp'],
},
'daemon': {
'cmd': 'python daemon.py',
},
'service': {
'cmd': 'python service.py'
},
},
'build': 'pip install -r ./requirements.txt',
}
app = App.get_or_create('blueberry', 'http://git.hunantv.com/tonic/blueberry.git', 'token')
version = app.add_version('abe23812aeb50a17a2509c02a28423462161d306')
appconfig = version.appconfig
appconfig.update(**appyaml)
appconfig.save()
group = Group.create('group', 'group')
pod = Pod.create('pod', 'pod')
pod.assigned_to_group(group)
c = docker.Client(**kwargs_from_env(assert_hostname=False))
r = c.info()
host = Host.create(pod, '192.168.59.103:2376', r['Name'], r['ID'], r['NCPU'], r['MemTotal'])
if private:
host.assigned_to_group(group)
return app, version, group, pod, host
示例4: test_container_release_cores
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def test_container_release_cores(test_db):
a = App.get_or_create('app', 'http://git.hunantv.com/group/app.git')
v = a.add_version(random_sha1())
p = Pod.create('pod', 'pod', 10, -1)
host = Host.create(p, random_ipv4(), random_string(), random_uuid(), 200, 0)
for core in host.cores:
assert core.host_id == host.id
assert core.remain == 10
containers = []
cores = sorted(host.cores, key=operator.attrgetter('label'))
for fcores, pcores in zip(chunked(cores[:100], 10), chunked(cores[100:], 10)):
used_cores = {'full': fcores, 'part': pcores}
host.occupy_cores(used_cores, 5)
c = Container.create(random_sha1(), host, v, random_string(), 'entrypoint', used_cores, 'env', nshare=5)
containers.append(c)
cores = sorted(host.cores, key=operator.attrgetter('label'))
for fcores, pcores in zip(chunked(cores[:100], 10), chunked(cores[100:], 10)):
for core in fcores:
assert core.remain == 0
for core in pcores:
assert core.remain == 5
for c in containers:
c.delete()
cores = sorted(host.cores, key=operator.attrgetter('label'))
for fcores, pcores in zip(chunked(cores[:100], 10), chunked(cores[100:], 10)):
for core in fcores:
assert core.remain == 10
for core in pcores:
assert core.remain == 10
示例5: test_container_transform
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def test_container_transform(test_db):
a = App.get_or_create('app', 'http://git.hunantv.com/group/app.git', '')
assert a is not None
v = a.add_version(random_sha1())
v2 = a.add_version(random_sha1())
assert v is not None
assert v.app.id == a.id
assert v.name == a.name
assert len(v.containers.all()) == 0
assert len(v.tasks.all()) == 0
g = Group.create('group', 'group')
p = Pod.create('pod', 'pod')
assert p.assigned_to_group(g)
hosts = [Host.create(p, random_ipv4(), random_string(prefix='host'),
random_uuid(), 4, 4096) for i in range(6)]
for host in hosts[:3]:
host.assigned_to_group(g)
assert g.get_max_containers(p, 3, 0) == 3
host_cores = g.get_free_cores(p, 3, 3, 0)
assert len(host_cores) == 3
containers = []
for (host, count), cores in host_cores.iteritems():
cores_per_container = len(cores) / count
for i in range(count):
cid = random_sha1()
used_cores = {'full': cores['full'][i*cores_per_container:(i+1)*cores_per_container]}
c = Container.create(cid, host, v, random_string(), 'entrypoint', used_cores, 'env')
assert c is not None
containers.append(c)
host.occupy_cores(cores, 0)
for host in g.private_hosts.all():
assert len(host.get_free_cores()[0]) == 1
assert len(host.containers.all()) == 1
assert host.count == 1
assert len(containers) == 3
assert len(v.containers.all()) == 3
cids = [c.container_id for c in containers]
for c in containers:
host = c.host
cid = c.container_id
c.transform(v2, random_sha1(), random_string())
assert c.container_id != cid
new_cids = [c.container_id for c in containers]
assert new_cids != cids
示例6: create_test_suite
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def create_test_suite():
appyaml = {
'appname': 'app',
'entrypoints': {
'web': {
'cmd': 'python app.py',
'ports': ['5000/tcp'],
},
'daemon': {
'cmd': 'python daemon.py',
},
'service': {
'cmd': 'python service.py'
},
},
'build': 'pip install -r ./requirements.txt',
}
app = App.get_or_create('app', 'http://git.hunantv.com/group/app.git', 'token')
version = app.add_version(random_sha1())
appconfig = version.appconfig
appconfig.update(**appyaml)
appconfig.save()
group = Group.create('group', 'group')
pod = Pod.create('pod', 'pod')
pod.assigned_to_group(group)
hosts = [Host.create(pod, random_ipv4(), random_string(prefix='host'),
random_uuid(), 4, 4096) for i in range(4)]
for host in hosts:
host.assigned_to_group(group)
containers = []
for (host, count), cores in group.get_free_cores(pod, 4, 4, 0).iteritems():
cores_per_container = len(cores) / count
for i in range(count):
cid = random_sha1()
used_cores = cores['full'][i*cores_per_container:(i+1)*cores_per_container]
c = Container.create(cid, host, version, random_string(), 'entrypoint', used_cores, 'env')
containers.append(c)
host.occupy_cores(cores, 0)
return app, version, group, pod, hosts, containers
示例7: register_app_version
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def register_app_version():
data = request.get_json()
name = data['name']
version = data['version']
app = App.get_or_create(name, data['git'], data['token'])
if not app:
logger.error('app create failed')
raise EruAbortException(code.HTTP_BAD_REQUEST, 'App %s create failed' % name)
v = app.add_version(version)
if not v:
logger.error('version create failed')
raise EruAbortException(code.HTTP_BAD_REQUEST, 'Version %s create failed' % version[:7])
appconfig = v.appconfig
appconfig.update(**data['appyaml'])
appconfig.save()
logger.info('app version successfully created')
return {'r': 0, 'msg': 'ok'}
示例8: fillup_data
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def fillup_data():
app, _ = create_app_with_celery()
with app.app_context():
db.drop_all()
db.create_all()
group = Group.create('test-group', 'test-group')
pod = Pod.create('test-pod', 'test-pod')
pod.assigned_to_group(group)
r = requests.get('http://192.168.59.103:2375/info').json()
host = Host.create(pod, '192.168.59.103:2375', r['Name'], r['ID'], r['NCPU'], r['MemTotal'])
host.assigned_to_group(group)
app = App.get_or_create('nbetest', 'http://git.hunantv.com/platform/nbetest.git', 'token')
app.add_version('96cbf8c68ed214f105d9f79fa4f22f0e80e75cf3')
app.assigned_to_group(group)
version = app.get_version('96cbf8')
host_cores = group.get_free_cores(pod, 2, 2)
cores = []
for (host, cn), coress in host_cores.iteritems():
print host, cn, coress
cores = coress
print cores
ports = host.get_free_ports(2)
print ports
props = {
'entrypoint': 'web',
'ncontainer': 2,
'env': 'PROD',
'cores': [c.id for c in cores],
'ports': [p.id for p in ports],
}
task = Task.create(1, version, host, props)
print task.props
host.occupy_cores(cores)
host.occupy_ports(ports)
print group.get_free_cores(pod, 1, 1)
示例9: register_app_version
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def register_app_version():
data = request.get_json()
name = data['name']
if data.get('raw', ''):
version = code.RAW_VERSION_PLACEHOLDER
else:
version = data['version']
app = App.get_or_create(name, data['git'], data['token'])
if not app:
current_app.logger.error('App create failed. (name=%s, version=%s)', name, version[:7])
raise EruAbortException(code.HTTP_BAD_REQUEST, 'App %s create failed' % name)
v = app.add_version(version)
if not v:
current_app.logger.error('Version create failed. (name=%s, version=%s)', name, version[:7])
raise EruAbortException(code.HTTP_BAD_REQUEST, 'Version %s create failed' % version[:7])
appconfig = v.appconfig
appconfig.update(**data['appyaml'])
appconfig.save()
current_app.logger.info('App-Version created. (name=%s, version=%s)', name, version[:7])
return {'r': 0, 'msg': 'ok'}
示例10: register_app_version
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def register_app_version():
data = request.get_json()
name = data["name"]
if data.get("raw", "") and "version" not in data["appyaml"]:
version = consts.RAW_VERSION_PLACEHOLDER
else:
version = data["version"]
app = App.get_or_create(name, data["git"], data["token"])
if not app:
current_app.logger.error("App create failed. (name=%s, version=%s)", name, version[:7])
raise EruAbortException(consts.HTTP_BAD_REQUEST, "App %s create failed" % name)
v = app.add_version(version)
if not v:
current_app.logger.error("Version create failed. (name=%s, version=%s)", name, version[:7])
raise EruAbortException(consts.HTTP_BAD_REQUEST, "Version %s create failed" % version[:7])
appconfig = v.appconfig
appconfig.update(**data["appyaml"])
appconfig.save()
current_app.logger.info("App-Version created. (name=%s, version=%s)", name, version[:7])
return {"r": 0, "msg": "ok"}
示例11: test_container
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def test_container(test_db):
a = App.get_or_create('app', 'http://git.hunantv.com/group/app.git', '')
assert a is not None
assert a.id == a.user_id
v = a.add_version(random_sha1())
assert v is not None
assert v.app.id == a.id
assert v.name == a.name
assert len(v.containers.all()) == 0
assert len(v.tasks.all()) == 0
g = Group.create('group', 'group')
p = Pod.create('pod', 'pod', 10, -1)
assert p.assigned_to_group(g)
hosts = [Host.create(p, random_ipv4(), random_string(prefix='host'),
random_uuid(), 4, 4096) for i in range(6)]
for host in hosts[:3]:
host.assigned_to_group(g)
host_ids1 = {h.id for h in hosts[:3]}
host_ids2 = {h.id for h in hosts[3:]}
host_cores = g.get_free_cores(p, 3, 3, 0)
#测试没有碎片核的情况
#获取核
containers = []
for (host, count), cores in host_cores.iteritems():
cores_per_container = len(cores['full']) / count
for i in range(count):
cid = random_sha1()
used_cores = {'full': cores['full'][i*cores_per_container:(i+1)*cores_per_container]}
# not using a port
c = Container.create(cid, host, v, random_string(), 'entrypoint', used_cores, 'env')
assert c is not None
containers.append(c)
host.occupy_cores(cores, 0)
for host in g.private_hosts.all():
full_cores, part_cores = host.get_free_cores()
assert len(full_cores) == 1
assert len(part_cores) == 0
assert len(host.containers.all()) == 1
assert host.count == 1
assert len(containers) == 3
assert len(v.containers.all()) == 3
for c in containers:
assert c.host_id in host_ids1
assert c.host_id not in host_ids2
assert c.app.id == a.id
assert c.version.id == v.id
assert c.is_alive
assert len(c.full_cores.all()) == 3
assert len(c.part_cores.all()) == 0
all_core_labels = sorted(['0', '1', '2', '3', ])
used_full_core_labels = [core.label for core in c.full_cores.all()]
used_part_core_labels = [core.label for core in c.part_cores.all()]
free_core_labels = [core.label for core in c.host.get_free_cores()[0]]
assert all_core_labels == sorted(used_full_core_labels + used_part_core_labels + free_core_labels)
#释放核
for c in containers:
c.delete()
assert len(v.containers.all()) == 0
assert g.get_max_containers(p, 3, 0) == 3
host_cores = g.get_free_cores(p, 3, 3, 0)
assert len(host_cores) == 3
for host in g.private_hosts.all():
full_cores, part_cores = host.get_free_cores()
assert len(full_cores) == 4
assert len(part_cores) == 0
assert len(host.containers.all()) == 0
assert host.count == 0
#测试有碎片的情况
#获取核
host_cores = g.get_free_cores(p, 3, 3, 4)
containers = []
for (host, count), cores in host_cores.iteritems():
cores_per_container = len(cores['full']) / count
for i in range(count):
cid = random_sha1()
used_cores = {'full': cores['full'][i*cores_per_container:(i+1)*cores_per_container],
'part': cores['part']}
# not using a port
c = Container.create(cid, host, v, random_string(), 'entrypoint', used_cores, 'env')
assert c is not None
containers.append(c)
host.occupy_cores(cores, 4)
for host in g.private_hosts.all():
full_cores, part_cores = host.get_free_cores()
assert len(full_cores) == 0
assert len(part_cores) == 1
assert part_cores[0].used == 4
#.........这里部分代码省略.........
示例12: int
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
#!/usr/bin/env python
# encoding: utf-8
from eru.app import create_app_with_celery
from eru.models import db, Group, Pod, Host, App
from tests.utils import random_ipv4, random_string, random_uuid, random_sha1
host_number = int(raw_input("how many hosts: "))
app, _ = create_app_with_celery
app.config['TESTING'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:@localhost:3306/erutest'
with app.app_context():
db.create_all()
a = App.get_or_create('app', 'http://git.hunantv.com/group/app.git', '')
v = a.add_version(random_sha1())
g = Group.create('group', 'group')
p = Pod.create('pod', 'pod', 10, -1)
p.assigned_to_group(g)
hosts = [Host.create(p, random_ipv4(), random_string(), random_uuid(), 24, 4096) for i in range(host_number)]
for host in hosts:
host.assigned_to_group(g)
示例13: test_container
# 需要导入模块: from eru.models import App [as 别名]
# 或者: from eru.models.App import get_or_create [as 别名]
def test_container(test_db):
a = App.get_or_create('app', 'http://git.hunantv.com/group/app.git', '')
assert a is not None
v = a.add_version(random_sha1())
assert v is not None
assert v.app.id == a.id
assert v.name == a.name
assert len(v.containers.all()) == 0
assert len(v.tasks.all()) == 0
g = Group.create('group', 'group')
p = Pod.create('pod', 'pod')
assert p.assigned_to_group(g)
hosts = [Host.create(p, random_ipv4(), random_string(prefix='host'),
random_uuid(), 4, 4096) for i in range(6)]
for host in hosts[:3]:
host.assigned_to_group(g)
host_ids1 = {h.id for h in hosts[:3]}
host_ids2 = {h.id for h in hosts[3:]}
assert g.get_max_containers(p, 3) == 3
host_cores = g.get_free_cores(p, 3, 3)
assert len(host_cores) == 3
containers = []
for (host, count), cores in host_cores.iteritems():
cores_per_container = len(cores) / count
for i in range(count):
cid = random_sha1()
used_cores = cores[i*cores_per_container:(i+1)*cores_per_container]
# not using a port
c = Container.create(cid, host, v, random_string(), 'entrypoint', used_cores, 'env')
assert c is not None
containers.append(c)
host.occupy_cores(cores)
for host in g.private_hosts.all():
assert len(host.get_free_cores()) == 1
assert len(host.containers.all()) == 1
assert host.count == 1
assert len(containers) == 3
assert len(v.containers.all()) == 3
for c in containers:
assert c.host_id in host_ids1
assert c.host_id not in host_ids2
assert c.app.id == a.id
assert c.version.id == v.id
assert c.is_alive
assert len(c.cores.all()) == 3
all_core_labels = sorted(['0', '1', '2', '3', ])
used_core_labels = [core.label for core in c.cores.all()]
free_core_labels = [core.label for core in c.host.get_free_cores()]
assert all_core_labels == sorted(used_core_labels + free_core_labels)
for c in containers:
c.delete()
assert len(v.containers.all()) == 0
assert g.get_max_containers(p, 3) == 3
host_cores = g.get_free_cores(p, 3, 3)
assert len(host_cores) == 3
for host in g.private_hosts.all():
assert len(host.get_free_cores()) == 4
assert len(host.containers.all()) == 0
assert host.count == 0