def _handle_warning(self, args): profile = "default" if "--profile" in args: location = args.index("--profile") + 1 if location < len(args): profile = args[location] conf_path = os.path.join(os.path.expanduser("~"), ".tccli") conf = {} if Utils.file_existed(conf_path, profile + ".configure")[0]: conf = Utils.load_json_msg( os.path.join(conf_path, profile + ".configure")) if "--warning" not in args and conf.get("warning", "") != "on": import warnings warnings.filterwarnings("ignore")
def _add_array_item(self, param_list, profile): is_conf_exist, conf_path = Utils.file_existed( os.path.join(os.path.expanduser("~"), ".tccli"), profile + ".configure") if is_conf_exist: array_count = Utils.load_json_msg(conf_path).get("arrayCount", 10) else: array_count = 10 all_param_list = param_list for para in param_list: for idx, item in enumerate(para): if item == '0': for i in range(1, int(array_count)): tmp = copy.deepcopy(para) tmp[idx] = str(i) all_param_list.append(tmp) return all_param_list
def parse_global_arg(parsed_globals): g_param = parsed_globals is_exist_profile = True if not parsed_globals["profile"]: is_exist_profile = False g_param["profile"] = "default" configure_path = os.path.join(os.path.expanduser("~"), ".tccli") is_conf_exist, conf_path = Utils.file_existed( configure_path, g_param["profile"] + ".configure") is_cred_exist, cred_path = Utils.file_existed( configure_path, g_param["profile"] + ".credential") conf = {} cred = {} if is_conf_exist: conf = Utils.load_json_msg(conf_path) if is_cred_exist: cred = Utils.load_json_msg(cred_path) if not (isinstance(conf, dict) and isinstance(cred, dict)): raise ConfigurationError("file: %s or %s is not json format" % (g_param["profile"] + ".configure", g_param["profile"] + ".credential")) if os.environ.get(OptionsDefine.ENV_SECRET_ID) and not is_exist_profile: cred[OptionsDefine.SecretId] = os.environ.get( OptionsDefine.ENV_SECRET_ID) if os.environ.get(OptionsDefine.ENV_SECRET_KEY) and not is_exist_profile: cred[OptionsDefine.SecretKey] = os.environ.get( OptionsDefine.ENV_SECRET_KEY) if os.environ.get(OptionsDefine.ENV_REGION) and not is_exist_profile: conf[OptionsDefine.Region] = os.environ.get(OptionsDefine.ENV_REGION) for param in g_param.keys(): if g_param[param] is None: if param in [OptionsDefine.SecretKey, OptionsDefine.SecretId]: if param in cred: g_param[param] = cred[param] else: raise ConfigurationError("%s is invalid" % param) elif param in [OptionsDefine.Region, OptionsDefine.Output]: if param in conf: g_param[param] = conf[param] else: raise ConfigurationError("%s is invalid" % param) try: if g_param[OptionsDefine.ServiceVersion]: g_param[OptionsDefine.Version] = "v" + g_param[ OptionsDefine.ServiceVersion].replace('-', '') else: version = conf["tdmq"][OptionsDefine.Version] g_param[OptionsDefine.Version] = "v" + version.replace('-', '') if g_param[OptionsDefine.Endpoint] is None: g_param[OptionsDefine.Endpoint] = conf["tdmq"][ OptionsDefine.Endpoint] except Exception as err: raise ConfigurationError("config file:%s error, %s" % (conf_path, str(err))) if g_param[OptionsDefine.Version] not in AVAILABLE_VERSION_LIST: raise Exception("available versions: %s" % " ".join(AVAILABLE_VERSION_LIST)) return g_param
def parse_global_arg(parsed_globals): g_param = parsed_globals is_exist_profile = True if not parsed_globals["profile"]: is_exist_profile = False g_param["profile"] = "default" configure_path = os.path.join(os.path.expanduser("~"), ".tccli") is_conf_exist, conf_path = Utils.file_existed( configure_path, g_param["profile"] + ".configure") is_cred_exist, cred_path = Utils.file_existed( configure_path, g_param["profile"] + ".credential") conf = {} cred = {} if is_conf_exist: conf = Utils.load_json_msg(conf_path) if is_cred_exist: cred = Utils.load_json_msg(cred_path) if not (isinstance(conf, dict) and isinstance(cred, dict)): raise ConfigurationError("file: %s or %s is not json format" % (g_param["profile"] + ".configure", g_param["profile"] + ".credential")) if OptionsDefine.Token not in cred: cred[OptionsDefine.Token] = None if not is_exist_profile: if os.environ.get(OptionsDefine.ENV_SECRET_ID) and os.environ.get( OptionsDefine.ENV_SECRET_KEY): cred[OptionsDefine.SecretId] = os.environ.get( OptionsDefine.ENV_SECRET_ID) cred[OptionsDefine.SecretKey] = os.environ.get( OptionsDefine.ENV_SECRET_KEY) cred[OptionsDefine.Token] = os.environ.get(OptionsDefine.ENV_TOKEN) if os.environ.get(OptionsDefine.ENV_REGION): conf[OptionsDefine.Region] = os.environ.get( OptionsDefine.ENV_REGION) if os.environ.get(OptionsDefine.ENV_ROLE_ARN) and os.environ.get( OptionsDefine.ENV_ROLE_SESSION_NAME): cred[OptionsDefine.RoleArn] = os.environ.get( OptionsDefine.ENV_ROLE_ARN) cred[OptionsDefine.RoleSessionName] = os.environ.get( OptionsDefine.ENV_ROLE_SESSION_NAME) for param in g_param.keys(): if g_param[param] is None: if param in [ OptionsDefine.SecretKey, OptionsDefine.SecretId, OptionsDefine.Token ]: if param in cred: g_param[param] = cred[param] elif not g_param[OptionsDefine.UseCVMRole.replace('-', '_')]: raise ConfigurationError("%s is invalid" % param) elif param in [OptionsDefine.Region, OptionsDefine.Output]: if param in conf: g_param[param] = conf[param] else: raise ConfigurationError("%s is invalid" % param) elif param.replace('_', '-') in [ OptionsDefine.RoleArn, OptionsDefine.RoleSessionName ]: if param.replace('_', '-') in cred: g_param[param] = cred[param.replace('_', '-')] try: if g_param[OptionsDefine.ServiceVersion]: g_param[OptionsDefine.Version] = "v" + g_param[ OptionsDefine.ServiceVersion].replace('-', '') else: version = conf["oceanus"][OptionsDefine.Version] g_param[OptionsDefine.Version] = "v" + version.replace('-', '') if g_param[OptionsDefine.Endpoint] is None: g_param[OptionsDefine.Endpoint] = conf["oceanus"][ OptionsDefine.Endpoint] except Exception as err: raise ConfigurationError("config file:%s error, %s" % (conf_path, str(err))) if g_param[OptionsDefine.Version] not in AVAILABLE_VERSION_LIST: raise Exception("available versions: %s" % " ".join(AVAILABLE_VERSION_LIST)) if g_param[OptionsDefine.Waiter]: param = eval(g_param[OptionsDefine.Waiter]) if 'expr' not in param: raise Exception('`expr` in `--waiter` must be defined') if 'to' not in param: raise Exception('`to` in `--waiter` must be defined') if 'timeout' not in param: if 'waiter' in conf and 'timeout' in conf['waiter']: param['timeout'] = conf['waiter']['timeout'] else: param['timeout'] = 180 if 'interval' not in param: if 'waiter' in conf and 'interval' in conf['waiter']: param['interval'] = conf['waiter']['interval'] else: param['timeout'] = 5 param['interval'] = min(param['interval'], param['timeout']) g_param['OptionsDefine.WaiterInfo'] = param # 如果在配置文件中读取字段的值,python2中的json.load函数会读取unicode类型的值,因此这里要转化类型 if six.PY2: for key, value in g_param.items(): if isinstance(value, six.text_type): g_param[key] = value.encode('utf-8') return g_param
def _profile_existed(self, profile_name): return Utils.file_existed(self.cli_path, profile_name)