def run(self, args, **kwargs): instance = KeyValuePair() instance.id = args.name # TODO: refactor and get rid of id instance.name = args.name instance.value = args.value instance.scope = args.scope instance.user = args.user if args.secret: instance.secret = args.secret if args.encrypted: instance.encrypted = args.encrypted if args.ttl: instance.ttl = args.ttl return self.manager.update(instance, **kwargs)
def run(self, args, **kwargs): # normalize the file path to allow for relative files to be specified file_path = os.path.normpath(pjoin(os.getcwd(), args.file)) # load the data (JSON/YAML) from the file kvps = resource.load_meta_file(file_path) instances = [] # bail out if file was empty if not kvps: return instances # if the data is not a list (ie. it's a single entry) # then make it a list so our process loop is generic if not isinstance(kvps, list): kvps = [kvps] for item in kvps: # parse required KeyValuePair properties name = item["name"] value = item["value"] # parse optional KeyValuePair properties scope = item.get("scope", DEFAULT_CUD_SCOPE) user = item.get("user", None) encrypted = item.get("encrypted", False) secret = item.get("secret", False) ttl = item.get("ttl", None) # if the value is not a string, convert it to JSON # all keys in the datastore must strings if not isinstance(value, six.string_types): if args.convert: value = json.dumps(value) else: raise ValueError( ( "Item '%s' has a value that is not a string." " Either pass in the -c/--convert option to convert" " non-string types to JSON strings automatically, or" " convert the data to a string in the file" ) % name ) # create the KeyValuePair instance instance = KeyValuePair() instance.id = name # TODO: refactor and get rid of id instance.name = name instance.value = value instance.scope = scope if user: instance.user = user if encrypted: instance.encrypted = encrypted if secret: instance.secret = secret if ttl: instance.ttl = ttl # encrypted=True and secret=True implies that the value is already encrypted and should # be used as such if encrypted and secret: instance.encrypted = True # call the API to create/update the KeyValuePair self.manager.update(instance, **kwargs) instances.append(instance) return instances
def run(self, args, **kwargs): # normalize the file path to allow for relative files to be specified file_path = os.path.normpath(pjoin(os.getcwd(), args.file)) # load the data (JSON/YAML) from the file kvps = resource.load_meta_file(file_path) instances = [] # bail out if file was empty if not kvps: return instances # if the data is not a list (ie. it's a single entry) # then make it a list so our process loop is generic if not isinstance(kvps, list): kvps = [kvps] for item in kvps: # parse required KeyValuePair properties name = item['name'] value = item['value'] # parse optional KeyValuePair properties scope = item.get('scope', DEFAULT_CUD_SCOPE) user = item.get('user', None) encrypted = item.get('encrypted', False) secret = item.get('secret', False) ttl = item.get('ttl', None) # if the value is not a string, convert it to JSON # all keys in the datastore must strings if not isinstance(value, six.string_types): if args.convert: value = json.dumps(value) else: raise ValueError(("Item '%s' has a value that is not a string." " Either pass in the -c/--convert option to convert" " non-string types to JSON strings automatically, or" " convert the data to a string in the file") % name) # create the KeyValuePair instance instance = KeyValuePair() instance.id = name # TODO: refactor and get rid of id instance.name = name instance.value = value instance.scope = scope if user: instance.user = user if encrypted: instance.encrypted = encrypted if secret: instance.secret = secret if ttl: instance.ttl = ttl # encrypted=True and secret=True implies that the value is already encrypted and should # be used as such if encrypted and secret: instance.encrypted = True # call the API to create/update the KeyValuePair self.manager.update(instance, **kwargs) instances.append(instance) return instances