コード例 #1
0
def get(group, version, kind, namespace, resource):
    db = get_db()
    table = db.table('resources')
    record =  table.get(gvk_query(group, version, kind, namespace, resource))
    if record:
        return record['definition']
    return None
コード例 #2
0
ファイル: apis.py プロジェクト: willthames/fakates
def get(group, version):
    db = get_db()
    table = db.table('apis')
    result = table.get(gv_query(group, version))
    if result:
        return result['definition']
    result = get_crd_api(group, version)
    return result
コード例 #3
0
def create(group, version, kind, namespace, resource, definition):
    definition['metadata']['resourceVersion'] = str(next_resource_version())
    definition['metadata']['creationTimestamp'] = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
    definition['metadata']['uid'] = str(uuid.uuid4())
    params = dict(group=group, version=version, kind=kind,
                  resource=resource, definition=definition)
    if namespace:
        params['namespace'] = namespace
    db = get_db()
    table = db.table('resources')
    table.insert(params)
    return definition
コード例 #4
0
ファイル: apis.py プロジェクト: willthames/fakates
def listapis():
    db = get_db()
    table = db.table('apis')
    query = Query()
    group_versions = table.search(query)
    result = dict()
    for item in group_versions:
        if item['group'] not in result:
            result[item['group']] = list()
        result[item['group']].append(item['version'])
    result.update(list_crd_apis())
    return result
コード例 #5
0
def replace(group, version, kind, namespace, resource, definition):
    before = get(group, version, kind, namespace, resource)
    before['metadata'].update(definition['metadata'])
    if before != definition:
        definition['metadata']['resourceVersion'] = str(next_resource_version())
    params = dict(group=group, version=version, kind=kind,
                  resource=resource, definition=definition)
    if namespace:
        params['namespace'] = namespace
    db = get_db()
    table = db.table('resources')
    table.update(params, gvk_query(group, version, kind, namespace, resource))
    return definition
コード例 #6
0
def delete(group, version, kind, namespace, resource):
    before = get(group, version, kind, namespace, resource)
    db = get_db()
    table = db.table('resources')
    table.remove(gvk_query(group, version, kind, namespace, resource))
    # before['status']['phase'] = 'Terminating'
    if kind == 'namespaces':
        query = Query()
        cascade = table.search(query.namespace == namespace)
        for item in cascade:
            # we could delete directly here but delete will later modify
            # the watch record
            delete(cascade['group'], cascade['version'], "%ss" % cascade['kind'].lower(), namespace, cascade['resource'])
    return before
コード例 #7
0
def list_crd_apis():
    db = get_db()
    query = Query()
    table = db.table('resources')
    crds = table.search((query.group == 'apiextensions.k8s.io')
                        & (query.kind == 'customresourcedefinitions'))
    result = dict()
    for crd in crds:
        spec = crd['definition']['spec']
        if spec['group'] not in result:
            result[spec['group']] = list()
        if spec['version'] not in result[spec['group']]:
            result[spec['group']].append(spec['version'])
    return result
コード例 #8
0
ファイル: list.py プロジェクト: willthames/fakates
def get(group, version, kind, namespace, link, label_selectors):
    db = get_db()
    table = db.table('resources')
    results = [
        item['definition'] for item in table.search(
            gvk_query(group, version, kind, namespace, label_selectors))
    ]
    return {
        "kind": "%sList" % kind.capitalize()[:-1],
        "apiVersion": "v1",
        "metadata": {
            "selfLink": link,
            "resourceVersion": str(next_resource_version())
        },
        "items": results
    }
コード例 #9
0
def get_crd_api(group, version):
    db = get_db()
    query = Query()
    table = db.table('resources')
    crds = table.search((query.group == 'apiextensions.k8s.io')
                        & (query.kind == 'customresourcedefinitions')
                        & (query.definition.spec.group == group)
                        & (query.definition.spec.version == version))
    if not crds:
        return None
    return {
        "kind": "APIResourceList",
        "apiVersion": "v1",
        "groupVersion": "%s/%s" % (group, version),
        "resources": [crd_to_resource(crd['definition']) for crd in crds]
    }
コード例 #10
0
ファイル: apis.py プロジェクト: willthames/fakates
def upsert(group, version, definition):
    db = get_db()
    table = db.table('apis')
    table.upsert(dict(group=group, version=version, definition=definition),
                 gv_query(group, version))
    return definition