1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +1,4 @@ | |||||||
| __pycache__ | __pycache__ | ||||||
| build | build | ||||||
| pages | pages | ||||||
|  | inventory/* | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ options: | |||||||
|     token: |     token: | ||||||
|         required: false |         required: false | ||||||
|         description: |         description: | ||||||
|             - NetBox API token to be able to read against NetBox. |             - Centurion API token to be able to read against Centurion. | ||||||
|         env: |         env: | ||||||
|             - name: CENTURION_TOKEN |             - name: CENTURION_TOKEN | ||||||
|     validate_certs: |     validate_certs: | ||||||
| @ -33,25 +33,56 @@ options: | |||||||
|             - Allows skipping of validation of SSL certificates. Set to C(false) to disable certificate validation. |             - Allows skipping of validation of SSL certificates. Set to C(false) to disable certificate validation. | ||||||
|         default: true |         default: true | ||||||
|         type: boolean |         type: boolean | ||||||
|  |         env: | ||||||
|  |             - name: VALIDATE_CENTURION_CERTS | ||||||
| author: | author: | ||||||
|     - jon @jon_nfc |     - jon @jon_nfc | ||||||
| ''' | ''' | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | EXAMPLES = """ | ||||||
|  | # inventory.yml file in YAML format | ||||||
|  |  | ||||||
|  | plugin: nofusscomputing.centurion.centurion | ||||||
|  |  | ||||||
|  | api_endpoint: http://localhost:8000 | ||||||
|  | token: <token value here> | ||||||
|  | validate_certs: false | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # Example Ansible Tower credential Input Configuration: | ||||||
|  |  | ||||||
|  | fields: | ||||||
|  |   - id: CENTURION_API | ||||||
|  |     type: string | ||||||
|  |     label: Centurion Host URL | ||||||
|  |   - id: CENTURION_TOKEN | ||||||
|  |     type: string | ||||||
|  |     label: Centurion API Token | ||||||
|  |     secret: true | ||||||
|  |   - id: VALIDATE_CENTURION_CERTS | ||||||
|  |     type: boolean | ||||||
|  | required: | ||||||
|  |   - CENTURION_API | ||||||
|  |   - CENTURION_TOKEN | ||||||
|  |  | ||||||
|  | # Example Ansible Tower credential Injector Configuration: | ||||||
|  |  | ||||||
|  | env: | ||||||
|  |   CENTURION_API: '{{ CENTURION_API }}' | ||||||
|  |   CENTURION_TOKEN: '{{ CENTURION_TOKEN }}' | ||||||
|  |   VALIDATE_CENTURION_CERTS: '{{ VALIDATE_CENTURION_CERTS | default(true) }}' | ||||||
|  |  | ||||||
|  | """ | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class InventoryModule(BaseInventoryPlugin): | class InventoryModule(BaseInventoryPlugin): | ||||||
|  |  | ||||||
|     NAME = 'nofusscomputing.centurion.centurion' |     NAME = 'nofusscomputing.centurion.centurion' | ||||||
|  |  | ||||||
|  |  | ||||||
|     def __init__(self): |  | ||||||
|         super().__init__() |  | ||||||
|  |  | ||||||
|         self.headers = { |  | ||||||
|             'Authorization': 'Token 7d501c956363e60df0cfd770db36f54226f079d707346f776ab31d5f40d16542' |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     def verify_file(self, path): |     def verify_file(self, path): | ||||||
|  |  | ||||||
|         return True |         return True | ||||||
| @ -62,9 +93,9 @@ class InventoryModule(BaseInventoryPlugin): | |||||||
|         self.display.v("Fetching Devices ") |         self.display.v("Fetching Devices ") | ||||||
|  |  | ||||||
|         response = open_url( |         response = open_url( | ||||||
|             url = 'https://test.nofusscomputing.com/api/device/', |             url = f'{self.api_endpoint}/api/device/', | ||||||
|             headers = self.headers, |             headers = self.headers, | ||||||
|             validate_certs=False, |             validate_certs = self.validate_certs, | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         devices = json.loads(to_text(response.read()))['results'] |         devices = json.loads(to_text(response.read()))['results'] | ||||||
| @ -81,7 +112,7 @@ class InventoryModule(BaseInventoryPlugin): | |||||||
|         response = open_url( |         response = open_url( | ||||||
|             url = url, |             url = url, | ||||||
|             headers = self.headers, |             headers = self.headers, | ||||||
|             validate_certs=False, |             validate_certs = self.validate_certs, | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|         config = json.loads(to_text(response.read())) |         config = json.loads(to_text(response.read())) | ||||||
| @ -92,6 +123,17 @@ class InventoryModule(BaseInventoryPlugin): | |||||||
|     def parse(self, inventory, loader, path, cache=True): |     def parse(self, inventory, loader, path, cache=True): | ||||||
|         super().parse(inventory, loader, path) |         super().parse(inventory, loader, path) | ||||||
|  |  | ||||||
|  |         self._read_config_data(path=path) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         self.api_endpoint = self.get_option("api_endpoint").strip("/") | ||||||
|  |         self.token = self.get_option("token") | ||||||
|  |         self.validate_certs = self.get_option("validate_certs") | ||||||
|  |  | ||||||
|  |         self.headers = { | ||||||
|  |             'Authorization': f'Token {self.token}' | ||||||
|  |         } | ||||||
|  |  | ||||||
|         devices = self.fetch_devices() |         devices = self.fetch_devices() | ||||||
|  |  | ||||||
|         self.display.v(f"Parsing returned devices") |         self.display.v(f"Parsing returned devices") | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user