<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic FMC Bulk Add Hosts via REST API - Issues, Need Help! in Network Security</title>
    <link>https://community.cisco.com/t5/network-security/fmc-bulk-add-hosts-via-rest-api-issues-need-help/m-p/4192939#M1076397</link>
    <description>&lt;P&gt;Following the directions here:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.cisco.com/c/en/us/support/docs/security/firepower-management-center/215972-push-objects-in-bulk-to-fmc-using-rest-a.html" target="_blank" rel="noopener"&gt;https://www.cisco.com/c/en/us/support/docs/security/firepower-management-center/215972-push-objects-in-bulk-to-fmc-using-rest-a.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm attempting to build a Python script that will allow me to bulk add hosts via the REST API.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's my script as it sits today:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;import requests
import csv
import json
from requests.auth import HTTPBasicAuth
from getpass import getpass

address = input("FMC-IP-ADDRESS")
username = input ("USERNAME")
password = getpass("PASSWORD")

api_uri = "/api/fmc_platform/v1/auth/generatetoken"
url = "https://" + address + api_uri

response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))


accesstoken = response.headers["X-auth-access-token"]
refreshtoken = response.headers["X-auth-refresh-token"]
DOMAIN_UUID = response.headers["DOMAIN_UUID"]

csvFilePath = input("C:\vips.csv")


host = []

with open(csvFilePath, encoding='utf-8-sig') as csvf:
	csvReader = csv.DictReader(csvf)

for rows in csvReader:
	if rows['type'] == "Host":
		host.append(rows)

host_payload = json.dumps(host)

host_api_uri = "/api/fmc_config/v1/domain/" + DOMAIN_UUID + "/object/hosts?bulk =true"
host_url = "https://" + address + host_api_uri
headers = { 'Content-Type': 'application/json', 'x-auth-access-token': accesstoken }

if host != []:
	response = requests.request("POST", host_url, headers=headers, data = host_payload, verify = False)
else :
    print("Please Validate that the CSV file provided is correct or at correct location")
	
if response.status_code == 201 or response.status_code == 202:
	print("Host Objects successfully pushed")
else:
	print("Host Object creation failed")
	
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close&lt;/PRE&gt;&lt;P&gt;So, when I run the script, it brings up the IP, I hit enter, then it brings up the username, enter, password, enter.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then it generates the following errors:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;Traceback (most recent call last):
  File "C:\bulk-add.py", line 14, in &amp;lt;module&amp;gt;
    response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))
  File "C:\Program Files\Python37\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line
498, in request
    prep = self.prepare_request(req)
  File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line
441, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Program Files\Python37\lib\site-packages\requests\models.py", line 30
9, in prepare    self.prepare_url(url, params)
  File "C:\Program Files\Python37\lib\site-packages\requests\models.py", line 38
6, in prepare_url
    raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'https:///api/fmc_platform/v1/auth/generatetoken': No host supplied&lt;/PRE&gt;&lt;P&gt;Is anyone that understands Python and the REST API able to assist?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!!&lt;/P&gt;</description>
    <pubDate>Thu, 03 Dec 2020 18:30:17 GMT</pubDate>
    <dc:creator>brian.emil.harris</dc:creator>
    <dc:date>2020-12-03T18:30:17Z</dc:date>
    <item>
      <title>FMC Bulk Add Hosts via REST API - Issues, Need Help!</title>
      <link>https://community.cisco.com/t5/network-security/fmc-bulk-add-hosts-via-rest-api-issues-need-help/m-p/4192939#M1076397</link>
      <description>&lt;P&gt;Following the directions here:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.cisco.com/c/en/us/support/docs/security/firepower-management-center/215972-push-objects-in-bulk-to-fmc-using-rest-a.html" target="_blank" rel="noopener"&gt;https://www.cisco.com/c/en/us/support/docs/security/firepower-management-center/215972-push-objects-in-bulk-to-fmc-using-rest-a.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm attempting to build a Python script that will allow me to bulk add hosts via the REST API.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's my script as it sits today:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;import requests
import csv
import json
from requests.auth import HTTPBasicAuth
from getpass import getpass

address = input("FMC-IP-ADDRESS")
username = input ("USERNAME")
password = getpass("PASSWORD")

api_uri = "/api/fmc_platform/v1/auth/generatetoken"
url = "https://" + address + api_uri

response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))


accesstoken = response.headers["X-auth-access-token"]
refreshtoken = response.headers["X-auth-refresh-token"]
DOMAIN_UUID = response.headers["DOMAIN_UUID"]

csvFilePath = input("C:\vips.csv")


host = []

with open(csvFilePath, encoding='utf-8-sig') as csvf:
	csvReader = csv.DictReader(csvf)

for rows in csvReader:
	if rows['type'] == "Host":
		host.append(rows)

host_payload = json.dumps(host)

host_api_uri = "/api/fmc_config/v1/domain/" + DOMAIN_UUID + "/object/hosts?bulk =true"
host_url = "https://" + address + host_api_uri
headers = { 'Content-Type': 'application/json', 'x-auth-access-token': accesstoken }

if host != []:
	response = requests.request("POST", host_url, headers=headers, data = host_payload, verify = False)
else :
    print("Please Validate that the CSV file provided is correct or at correct location")
	
if response.status_code == 201 or response.status_code == 202:
	print("Host Objects successfully pushed")
else:
	print("Host Object creation failed")
	
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close&lt;/PRE&gt;&lt;P&gt;So, when I run the script, it brings up the IP, I hit enter, then it brings up the username, enter, password, enter.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then it generates the following errors:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;Traceback (most recent call last):
  File "C:\bulk-add.py", line 14, in &amp;lt;module&amp;gt;
    response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))
  File "C:\Program Files\Python37\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line
498, in request
    prep = self.prepare_request(req)
  File "C:\Program Files\Python37\lib\site-packages\requests\sessions.py", line
441, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Program Files\Python37\lib\site-packages\requests\models.py", line 30
9, in prepare    self.prepare_url(url, params)
  File "C:\Program Files\Python37\lib\site-packages\requests\models.py", line 38
6, in prepare_url
    raise InvalidURL("Invalid URL %r: No host supplied" % url)
requests.exceptions.InvalidURL: Invalid URL 'https:///api/fmc_platform/v1/auth/generatetoken': No host supplied&lt;/PRE&gt;&lt;P&gt;Is anyone that understands Python and the REST API able to assist?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!!&lt;/P&gt;</description>
      <pubDate>Thu, 03 Dec 2020 18:30:17 GMT</pubDate>
      <guid>https://community.cisco.com/t5/network-security/fmc-bulk-add-hosts-via-rest-api-issues-need-help/m-p/4192939#M1076397</guid>
      <dc:creator>brian.emil.harris</dc:creator>
      <dc:date>2020-12-03T18:30:17Z</dc:date>
    </item>
  </channel>
</rss>

