示例#1
0
def show_permissions(policies: Tuple[str], show_policy: bool):
    db = readonly_session()
    results = find_permissions(db, policies)
    for result in results:
        if show_policy:
            print(result['action'], ', '.join(result['policies']))
        else:
            print(result['action'])
示例#2
0
def cmd(provider_spec: Optional[str]):
    db = readonly_session()
    providers = _provider_for_spec(db, provider_spec)
    if len(providers) > 0:
        for provider in providers:
            scoped_db = scoped_readonly_session(provider.id)
            print_status(scoped_db, provider)
            scoped_db.close()
    elif provider_spec is None:
        print('No accounts are currently imported')
    else:
        print('No matching accounts are currently imported')
示例#3
0
def cmd(query_source: str):
    if os.path.isfile(query_source):
        with open(query_source, 'r') as f:
            queries = [f.read()]
    elif os.path.isdir(query_source):
        queries = _directory_queries(query_source)
    else:
        queries = [query_source]
    db = readonly_session()
    for query in queries:
        results = run_query(db, query)
        print(
            tabulate([row.values() for row in results.rows],
                     headers=results.columns))
示例#4
0
def map_resource(import_id: int):
    db = readonly_session()
    raw = db.query(RawImport).get(import_id)
    if raw is None:
        raise RuntimeError('Unknown RawImport')
    import_job = db.query(ImportJob).get(raw.import_job_id)
    if import_job is None:
        raise RuntimeError('Unknown import job')
    mapper = _get_mapper(import_job)
    print(raw.raw_resources())
    import_resource_name = raw.resource_name
    _, creds = account_paths_for_import(db, import_job)[0]
    uri_fn = get_arn_fn(creds.scope, partition='aws')
    results = list(
        mapper.map_resources(raw.raw_resources(), raw.context, raw.service,
                             import_resource_name, uri_fn))
    print(results)
示例#5
0
def show_status():
    db = readonly_session()
    result = db.execute('''
    SELECT
      PA.id AS id,
      PA.name AS account,
      PA.provider AS provider,
      MAX(IJ.id) AS recent_import_id
    FROM
      provider_account AS PA,
      import_job AS IJ
    WHERE
      IJ.provider_account_id = PA.id
    GROUP BY PA.id
  ''')
    headers = ['Id', 'Account', 'Provider', 'Recent Import Id']
    print(tabulate([row.values() for row in result], headers=headers))
示例#6
0
def list_accounts():
    db = readonly_session()
    accounts = ProviderAccount.all(db)
    print(
        tabulate([(account.provider, account.name) for account in accounts],
                 headers=['Type', 'Account']))