def put(self, cmd, args, options):

			pop = options['pop']
			exoconfig = options['config']
			ExoException = options['exception']
			ProvisionException = options['provision-exception']
			key = exoconfig.config['vendortoken']

			# if not exist, create.
			try:
				mlist = pop.content_info(key, args['<model>'], args['<id>'])
			except ProvisionException as pe:
				if pe.response.status() == 404:
					meta = args['--meta']
					if meta is None:
						meta = ''
					mlist = pop.content_create(
						key,
						args['<model>'],
						args['<id>'],
						meta,
						protected=args['--protected']=='true')
				else:
					raise

			# whats the max size? Are we going to be ok with the pull it
			# all into RAM method? Short term, yes. Long term, No.
			data=''
			try:
				if args['<file>'] == '-':
					data = sys.stdin.read()
				else:
					with open(args['<file>']) as f:
						data = f.read()
			except IOError as ex:
				raise ExoException("Could not read {0}".format(args['<file>']))

			if args['--mime'] is None:
				url = pathname2url(args['<file>'])
				mime, encoding = mimetypes.guess_type(url)
			else:
				mime = args['--mime']

			mlist = pop.content_upload(key, args['<model>'], args['<id>'], data, mime)
			if len(mlist.body.strip()) > 0:
				print(mlist.body)


	########################
Returns the index for the given `step` name. If no step is given,
dataset/ETHPy150Open exosite/exoline/exoline/plugins/provision.py/Plugin.content.put--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/lib/django-1.5/django/contrib/formtools/wizard/views.py/WizardView.get_step_index