def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), POST, scan.SCAN_URI, [codes.created]) self.parser.add_argument('--sources', dest='sources', nargs='+', metavar='SOURCES', default=[], help=_(messages.SOURCES_NAME_HELP), required=True) self.parser.add_argument('--max-concurrency', dest='max_concurrency', metavar='MAX_CONCURRENCY', type=int, default=50, help=_(messages.SCAN_MAX_CONCURRENCY_HELP)) self.parser.add_argument('--disable-optional-products', dest='disable_optional_products', nargs='+', choices=scan.OPTIONAL_PRODUCTS, metavar='DISABLE_OPTIONAL_PRODUCTS', help=_(messages.DISABLE_OPT_PRODUCTS_HELP), required=False) self.source_ids = []
def _validate_args(self): print(_(messages.INSIGHTS_REQUIRE_SUDO)) CliCommand._validate_args(self) # Validate target report output location try: validate_write_file(self.tmp_tar_name, 'tmp_tar_name') except ValueError: print(_(messages.INSIGHTS_TMP_ERROR % self.tmp_tar_name)) sys.exit(1) # Validate Insights client if self.args.no_gpg: self.insights_command = InsightsCommands(no_gpg=True) else: self.insights_command = InsightsCommands() self._check_insights_install() self._check_insights_version() print(_(messages.INSIGHTS_IS_VERIFIED)) # obtaining the report as tar.gz if self.args.json_file: self._obtain_insights_report_from_local_file() else: self._obtain_insights_report_from_qpc_server()
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PATCH, source.SOURCE_URI, [codes.ok]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.SOURCE_NAME_HELP), required=True) self.parser.add_argument('--hosts', dest='hosts', nargs='+', metavar='HOSTS', default=[], help=_(messages.SOURCE_HOSTS_HELP), required=False) self.parser.add_argument('--cred', dest='cred', metavar='CRED', nargs='+', default=[], help=_(messages.SOURCE_CREDS_HELP), required=False) self.parser.add_argument('--port', dest='port', metavar='PORT', type=validate_port, help=_(messages.SOURCE_PORT_HELP))
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, scan.SCAN_URI, [codes.ok]) self.parser.add_argument( '--type', dest='type', choices=[scan.SCAN_TYPE_CONNECT, scan.SCAN_TYPE_INSPECT], metavar='TYPE', help=_(messages.SCAN_TYPE_FILTER_HELP), required=False) self.parser.add_argument( '--status', dest='status', choices=[ scan.SCAN_STATUS_CREATED, scan.SCAN_STATUS_PENDING, scan.SCAN_STATUS_RUNNING, scan.SCAN_STATUS_PAUSED, scan.SCAN_STATUS_CANCELED, scan.SCAN_STATUS_COMPLETED, scan.SCAN_STATUS_FAILED ], metavar='STATUS', help=_(messages.SCAN_STATUS_FILTER_HELP), required=False)
def _validate_args(self): CliCommand._validate_args(self) if self.args.output_json: self.req_headers = {'Accept': 'application/json'} if self.args.output_csv: self.req_headers = {'Accept': 'text/csv'} try: validate_write_file(self.args.path, 'output-file') except ValueError as error: print(error) sys.exit(1) # Lookup scan job id response = request(parser=self.parser, method=GET, path='%s%s' % (scan.SCAN_URI, self.args.scan_id), payload=None) if response.status_code == codes.ok: # pylint: disable=no-member json_data = response.json() self.fact_collection_id = json_data.get('fact_collection_id') if self.fact_collection_id: self.req_path = '%s%s' % ( self.req_path, self.fact_collection_id) else: print(_(messages.REPORT_NO_REPORT_FOR_SJ % self.args.scan_id)) sys.exit(1) else: print(_(messages.REPORT_SJ_DOES_NOT_EXIST % self.args.scan_id)) sys.exit(1)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PUT, report.ASYNC_MERGE_URI, [codes.created]) group = self.parser.add_mutually_exclusive_group(required=True) group.add_argument('--job-ids', dest='scan_job_ids', nargs='+', metavar='SCAN_JOB_IDS', default=[], help=_(messages.REPORT_SCAN_JOB_IDS_HELP)) group.add_argument('--report-ids', dest='report_ids', nargs='+', metavar='REPORT_IDS', default=[], help=_(messages.REPORT_REPORT_IDS_HELP)) group.add_argument('--json-files', dest='json_files', nargs='+', metavar='JSON_FILES', default=[], help=_(messages.REPORT_JSON_FILE_HELP)) group.add_argument('--json-directory', dest='json_dir', nargs='+', help=_(messages.REPORT_JSON_DIR_HELP)) self.json = None self.report_ids = None
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, report.REPORT_URI, [codes.ok]) id_group = self.parser.add_mutually_exclusive_group(required=True) id_group.add_argument('--scan-job', dest='scan_job_id', metavar='SCAN_JOB_ID', help=_(messages.REPORT_SCAN_JOB_ID_HELP)) id_group.add_argument('--report', dest='report_id', metavar='REPORT_ID', help=_(messages.REPORT_REPORT_ID_HELP)) self.parser.add_argument('--output-file', dest='path', metavar='PATH', help=_(messages.DOWNLOAD_PATH_HELP), required=True) self.parser.add_argument('--mask', dest='mask', action='store_true', help=_(messages.REPORT_MASK_HELP), required=False) self.min_server_version = '0.9.2' self.report_id = None
def _validate_args(self): CliCommand._validate_args(self) if 'filename' in self.args and self.args.filename: # check for file existence on system self.args.filename = validate_sshkeyfile(self.args.filename, self.parser)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, scan.SCAN_URI, [codes.ok]) group = self.parser.add_mutually_exclusive_group(required=True) group.add_argument('--name', dest='name', metavar='NAME', help=_(messages.SCAN_NAME_HELP)) group.add_argument('--id', dest='id', metavar='ID', help=_(messages.SCAN_JOB_ID_HELP)) self.parser.add_argument( '--status', dest='status', choices=[ scan.SCAN_STATUS_CREATED, scan.SCAN_STATUS_PENDING, scan.SCAN_STATUS_RUNNING, scan.SCAN_STATUS_PAUSED, scan.SCAN_STATUS_CANCELED, scan.SCAN_STATUS_COMPLETED, scan.SCAN_STATUS_FAILED ], metavar='STATUS', help=_(messages.SCAN_STATUS_FILTER_HELP), required=False)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, report.REPORT_URI, [codes.ok]) id_group = self.parser.add_mutually_exclusive_group(required=True) id_group.add_argument('--scan-job', dest='scan_job_id', metavar='SCAN_JOB_ID', help=_(messages.REPORT_SCAN_JOB_ID_HELP)) id_group.add_argument('--report', dest='report_id', metavar='REPORT_ID', help=_(messages.REPORT_REPORT_ID_HELP)) group = self.parser.add_mutually_exclusive_group(required=True) group.add_argument('--json', dest='output_json', action='store_true', help=_(messages.REPORT_OUTPUT_JSON_HELP)) group.add_argument('--csv', dest='output_csv', action='store_true', help=_(messages.REPORT_OUTPUT_CSV_HELP)) self.parser.add_argument('--output-file', dest='path', metavar='PATH', help=_(messages.REPORT_PATH_HELP), required=True) self.report_id = None
def _validate_args(self): CliCommand._validate_args(self) if not (self.args.username or self.args.password or self.args.filename or self.args.ssh_passphrase or self.args.become_method or self.args.become_user or self.args.become_password): print(_(messages.CRED_EDIT_NO_ARGS % (self.args.name))) self.parser.print_help() sys.exit(1) # check for existence of credential response = request(parser=self.parser, method=GET, path=credential.CREDENTIAL_URI, params={'name': self.args.name}, payload=None) if response.status_code == codes.ok: # pylint: disable=no-member json_data = response.json() count = json_data.get('count', 0) if count == 1: cred_entry = json_data.get('results')[0] self.cred_type = cred_entry['cred_type'] self.req_path = self.req_path + str(cred_entry['id']) + '/' else: print(_(messages.CRED_DOES_NOT_EXIST % self.args.name)) sys.exit(1) else: print(_(messages.CRED_DOES_NOT_EXIST % self.args.name)) sys.exit(1)
def _validate_args(self): CliCommand._validate_args(self) if not (self.args.username or self.args.password or self.args.sudo_password or self.args.filename or self.args.ssh_passphrase): print(_(messages.CRED_EDIT_NO_ARGS % (self.args.name))) self.parser.print_help() sys.exit(1) if 'filename' in self.args and self.args.filename: # check for file existence on system self.args.filename = validate_sshkeyfile(self.args.filename, self.parser) # check for existence of credential response = request(parser=self.parser, method=GET, path=credential.CREDENTIAL_URI, params={'name': self.args.name}, payload=None) if response.status_code == codes.ok: # pylint: disable=no-member json_data = response.json() if len(json_data) == 1: cred_entry = json_data[0] self.cred_type = cred_entry['cred_type'] self.req_path = self.req_path + str(cred_entry['id']) + '/' else: print(_(messages.CRED_DOES_NOT_EXIST % self.args.name)) sys.exit(1) else: print(_(messages.CRED_DOES_NOT_EXIST % self.args.name)) sys.exit(1)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PATCH, credential.CREDENTIAL_URI, [codes.ok]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.CRED_NAME_HELP), required=True) self.parser.add_argument('--username', dest='username', metavar='USERNAME', help=_(messages.CRED_USER_HELP), required=False) group = self.parser.add_mutually_exclusive_group(required=False) group.add_argument('--password', dest='password', action='store_true', help=_(messages.CRED_PWD_HELP)) group.add_argument('--sshkeyfile', dest='filename', metavar='FILENAME', help=_(messages.CRED_SSH_HELP)) self.parser.add_argument('--sshpassphrase', dest='ssh_passphrase', action='store_true', help=_(messages.CRED_SSH_PSPH_HELP)) self.parser.add_argument('--sudo-password', dest='sudo_password', action='store_true', help=_(messages.CRED_SUDO_HELP)) self.cred_type = None
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), None, None, []) self.parser.add_argument('--host', dest='host', metavar='HOST', help=_(messages.SERVER_CONFIG_HOST_HELP), required=True) self.parser.add_argument('--port', dest='port', metavar='PORT', type=validate_port, default=9443, help=_(messages.SERVER_CONFIG_PORT_HELP), required=False) self.parser.add_argument('--ssl-verify', dest='ssl_verify', metavar='CERT_PATH', help=_(messages.SERVER_CONFIG_SSL_CERT_HELP), required=False) self.parser.add_argument('--use-http', dest='use_http', action='store_true', help=SUPPRESS, required=False) self.parser.add_argument('--disable-auth', dest='require_token', action='store_false', help=SUPPRESS, required=False)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, insights.REPORT_URI, [codes.ok]) input_group = self.parser.add_mutually_exclusive_group(required=True) input_group.add_argument('--report', dest='report_id', metavar='REPORT_ID', help=_(messages.INSIGHTS_REPORT_ID_HELP)) input_group.add_argument('--scan-job', dest='scan_job_id', metavar='SCAN_JOB_ID', help=_(messages.INSIGHTS_SCAN_JOB_ID_HELP)) input_group.add_argument('--input-file', dest='input_file', metavar='INPUT_FILE', help=_(messages.INSIGHTS_INPUT_GZIP_HELP)) self.parser.add_argument('--no-gpg', dest='no_gpg', action='store_true', help=_(messages.INSIGHTS_NO_GPG_HELP)) self.tmp_tar_name = '/tmp/insights_tmp_%s.tar.gz' % ( time.strftime('%Y%m%d_%H%M%S')) # Don't change this when you upgrade versions self.min_server_version = '0.9.0' self.insights_command = None self.report_id = None
def _validate_args(self): CliCommand._validate_args(self) if self.args.path: try: validate_write_file(self.args.path, 'output-file') except ValueError as error: print(error) sys.exit(1)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PATCH, source.SOURCE_URI, [codes.ok]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.SOURCE_NAME_HELP), required=True) self.parser.add_argument('--hosts', dest='hosts', nargs='+', metavar='HOSTS', default=[], help=_(messages.SOURCE_HOSTS_HELP % PKG_NAME), required=False) self.parser.add_argument('--exclude-hosts', dest='exclude_hosts', nargs='+', metavar='EXCLUDE_HOSTS', help=_(messages.SOURCE_EXCLUDE_HOSTS_HELP % PKG_NAME), required=False) self.parser.add_argument('--cred', dest='cred', metavar='CRED', nargs='+', default=[], help=_(messages.SOURCE_CREDS_HELP), required=False) self.parser.add_argument('--port', dest='port', metavar='PORT', type=validate_port, help=_(messages.SOURCE_PORT_HELP)) self.parser.add_argument('--ssl-cert-verify', dest='ssl_cert_verify', choices=source.BOOLEAN_CHOICES, help=_(messages.SOURCE_SSL_CERT_HELP), required=False) self.parser.add_argument('--ssl-protocol', dest='ssl_protocol', choices=source.VALID_SSL_PROTOCOLS, help=_(messages.SOURCE_SSL_PROTOCOL_HELP), required=False) self.parser.add_argument('--disable-ssl', dest='disable_ssl', choices=source.BOOLEAN_CHOICES, help=_(messages.SOURCE_SSL_DISABLE_HELP), required=False) self.parser.add_argument('--use-paramiko', dest='use_paramiko', choices=source.BOOLEAN_CHOICES, help=_(messages.SOURCE_PARAMIKO_HELP), required=False)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PUT, scan.SCAN_JOB_URI, [codes.ok]) self.parser.add_argument('--id', dest='id', metavar='ID', help=_(messages.SCAN_JOB_ID_HELP), required=True)
def _validate_args(self): CliCommand._validate_args(self) source_ids = [] if self.args.sources: # check for existence of sources not_found, source_ids = self._get_source_ids(self.args.sources) if not_found is True: sys.exit(1) self.source_ids = source_ids
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), POST, scan.SCAN_URI, [codes.created]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.SCAN_NAME_HELP), required=True)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, server.STATUS_URI, [codes.ok]) self.parser.add_argument('--output-file', dest='path', metavar='PATH', help=_(messages.STATUS_PATH_HELP), required=False)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), POST, source.SOURCE_URI, [codes.created]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.SOURCE_NAME_HELP), required=True) self.parser.add_argument('--type', dest='type', choices=[ source.NETWORK_SOURCE_TYPE, source.VCENTER_SOURCE_TYPE, source.SATELLITE_SOURCE_TYPE ], metavar='TYPE', help=_(messages.SOURCE_TYPE_HELP), required=True) self.parser.add_argument('--hosts', dest='hosts', nargs='+', metavar='HOSTS', default=[], help=_(messages.SOURCE_HOSTS_HELP), required=True) self.parser.add_argument('--cred', dest='cred', metavar='CRED', nargs='+', default=[], help=_(messages.SOURCE_CREDS_HELP), required=True) self.parser.add_argument('--port', dest='port', metavar='PORT', type=validate_port, help=_(messages.SOURCE_PORT_HELP), required=False) self.parser.add_argument('--ssl-cert-verify', dest='ssl_cert_verify', choices=source.BOOLEAN_CHOICES, help=_(messages.SOURCE_SSL_CERT_HELP), required=False) self.parser.add_argument('--ssl-protocol', dest='ssl_protocol', choices=source.VALID_SSL_PROTOCOLS, help=_(messages.SOURCE_SSL_PROTOCOL_HELP), required=False) self.parser.add_argument('--disable-ssl', dest='disable_ssl', choices=source.BOOLEAN_CHOICES, help=_(messages.SOURCE_SSL_DISABLE_HELP), required=False)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), PUT, report.MERGE_URI, [codes.created]) self.parser.add_argument('--ids', dest='scan_job_ids', nargs='+', metavar='SCAN_JOB_IDS', default=[], help=_(messages.REPORT_SCAN_JOB_IDS_HELP), required=True)
def _validate_args(self): CliCommand._validate_args(self) if self.args.name: # check for existence of scan object found, scan_object_id = get_scan_object_id(self.parser, self.args.name) if found is False: sys.exit(1) else: self.req_path = scan.SCAN_URI + scan_object_id + 'jobs/'
def _validate_args(self): """Validate the scan job arguments.""" CliCommand._validate_args(self) if self.args.id and self.args.name: self.parser.print_usage() sys.exit(1) if self.args.id and self.args.status: print(_(messages.SCAN_JOB_ID_STATUS)) self.parser.print_usage() sys.exit(1)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), POST, report.ASYNC_MERGE_URI, [codes.created]) self.parser.add_argument('--json-file', dest='json_file', metavar='JSON_FILE', help=_(messages.REPORT_UPLOAD_JSON_FILE_HELP), required=True) self.json = None
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, report.ASYNC_MERGE_URI, [codes.ok]) self.parser.add_argument('--job', dest='job_id', metavar='JOB_ID', help=_(messages.REPORT_JOB_ID_HELP), required=True)
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, credential.CREDENTIAL_URI, [codes.ok]) self.parser.add_argument('--name', dest='name', metavar='NAME', help=_(messages.CRED_NAME_HELP), required=True)
def _validate_args(self): CliCommand._validate_args(self) delete_client_token() if 'username' in self.args and self.args.username: # check for file existence on system self.username = self.args.username else: self.username = input(_(messages.LOGIN_USERNAME_PROMPT)) self.password = getpass()
def __init__(self, subparsers): """Create command.""" # pylint: disable=no-member CliCommand.__init__(self, self.SUBCOMMAND, self.ACTION, subparsers.add_parser(self.ACTION), GET, credential.CREDENTIAL_URI, [codes.ok]) group = self.parser.add_mutually_exclusive_group(required=True) group.add_argument('--name', dest='name', metavar='NAME', help=_(messages.CRED_NAME_HELP)) group.add_argument('--all', dest='all', action='store_true', help=_(messages.CRED_CLEAR_ALL_HELP))