def patch(self, request): """ Creates the agent """ if Agent.objects.filter(agent_id=request.data["agent_id"]).exists(): return notify_error( "Agent already exists. Remove old agent first if trying to re-install" ) client = get_object_or_404(Client, pk=int(request.data["client"])) site = get_object_or_404(Site, pk=int(request.data["site"])) agent = Agent( agent_id=request.data["agent_id"], hostname=request.data["hostname"], client=client.client, site=site.site, monitoring_type=request.data["monitoring_type"], description=request.data["description"], mesh_node_id=request.data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() return Response({"pk": agent.pk, "saltid": f"{agent.hostname}-{agent.pk}"})
def add(request): data = request.data client = get_object_or_404(Client, pk=int(data["client"])) site = get_object_or_404(Site, pk=int(data["site"])) if not Agent.objects.filter(agent_id=data["agent_id"]).exists(): agent = Agent( agent_id=data["agent_id"], hostname=data["hostname"], client=client.client, site=site.site, monitoring_type=data["monitoring_type"], description=data["description"], mesh_node_id=data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() return Response({"pk": agent.pk}) else: return Response("err", status=status.HTTP_400_BAD_REQUEST)
def get_all_agents_url(): existing = [agent.url for agent in Agent.objects.all()] agents = [] for c in string.ascii_uppercase: num = get_num_page(c) if num: page_num = (num - 1) / 50 + 1 for page in range(1, page_num + 1): url = AGENTS_FIRSTNAME_URL + "/%c/%d" % (c, page) + "?items_per_page=50" agent_url_list = get_agent_url_list_from_url(url) for agent_url in agent_url_list: if not (agent_url in existing): agent = Agent(url=agent_url) agent.save() # agent = get_agent_by_url(HOST + agent_url) # if agent is None: # some error happens, try to process again # time.sleep(1) # agent = get_agent_by_url(HOST + agent_url) # else: # agent.save() agents.append(agent) time.sleep(1) logger.info("Get all agents with first_letter = %c done!" % c) logger.info("Get agents: %d" % (len(agents))) return agents
def add(request): data = request.data agent_id = data["agentid"] hostname = data["hostname"] client = data["client"] site = data["site"] monitoring_type = data["monitoring_type"] description = data["description"] mesh_node_id = data["mesh_node_id"] if not Agent.objects.filter(agent_id=agent_id).exists(): Agent( agent_id=agent_id, hostname=hostname, client=client, site=site, monitoring_type=monitoring_type, description=description, mesh_node_id=mesh_node_id, ).save() agent = get_object_or_404(Agent, agent_id=agent_id) MemoryHistory(agent=agent).save() CpuHistory(agent=agent).save() if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() return Response({"pk": agent.pk}) else: return Response("err", status=status.HTTP_400_BAD_REQUEST)
def save_model(self, request, obj, form, change): if not change: # Django's PasswordResetForm won't let us reset an unusable # password. We set it above super() so we don't have to save twice. obj.set_password(get_random_string()) reset_password = True import pdb pdb.set_trace() else: reset_password = False user = super(UserAdmin, self).save_model(request, obj, form, change) import pdb pdb.set_trace() # Create the Agent now facility = form.cleaned_data.get("facility") user = User.objects.get(email=form.cleaned_data.get("email")) Agent(user=user, facility=facility).save() import pdb pdb.set_trace() if reset_password: import pdb pdb.set_trace() reset_form = PasswordResetForm({'email': obj.email}) assert reset_form.is_valid() if reset_password: reset_form = PasswordResetForm({'email': obj.email}) assert reset_form.is_valid() reset_form.save( request=request, use_https=request.is_secure(), subject_template_name='account_creation_subject.txt', email_template_name='account_creation_email.html', )
def post(self, request): from logs.models import AuditLog """ Creates the agent """ if Agent.objects.filter(agent_id=request.data["agent_id"]).exists(): return notify_error( "Agent already exists. Remove old agent first if trying to re-install" ) agent = Agent( agent_id=request.data["agent_id"], hostname=request.data["hostname"], site_id=int(request.data["site"]), monitoring_type=request.data["monitoring_type"], description=request.data["description"], mesh_node_id=request.data["mesh_node_id"], last_seen=djangotime.now(), ) agent.save() agent.salt_id = f"{agent.hostname}-{agent.pk}" agent.save(update_fields=["salt_id"]) user = User.objects.create_user( username=request.data["agent_id"], agent=agent, password=User.objects.make_random_password(60), ) token = Token.objects.create(user=user) if agent.monitoring_type == "workstation": WinUpdatePolicy(agent=agent, run_time_days=[5, 6]).save() else: WinUpdatePolicy(agent=agent).save() reload_nats() # Generate policies for new agent agent.generate_checks_from_policies() agent.generate_tasks_from_policies() # create agent install audit record AuditLog.objects.create( username=request.user, agent=agent.hostname, object_type="agent", action="agent_install", message=f"{request.user} installed new agent {agent.hostname}", after_value=Agent.serialize(agent), ) return Response( { "pk": agent.pk, "saltid": f"{agent.hostname}-{agent.pk}", "token": token.key, } )
def get_agents_by_html(source_code): # care only about 1st page of results tree = html.fromstring(source_code) rows = tree.xpath('//tbody/tr') agents = [] for row in rows: agents.append( Agent(reg_number=row.xpath('td/a/text()'), name=row.xpath('td/span/text()'))) logger.info("get %d agents." % len(agents)) if len(agents) > 0: logger.info(agents[0]) return agents
def read_agent_list(input_path='agents/SalesPersons.xlsx'): book = xlrd.open_workbook(input_path) sheet = book.sheet_by_index(0) for row in range(2, sheet.nrows): reg_number = sheet.cell(row, 0).value name = sheet.cell(row, 1).value estate_name = sheet.cell(row, 2).value lic_number = sheet.cell(row, 3).value agent = Agent(reg_number=reg_number, name=name, estate_name=estate_name, lic_number=lic_number) agent.save() print "done %d" % row print "done"
def get_agent_by_url(url): logger.info("get agent by url, url = %s" % url) try: source_code = get_page(url) tree = html.fromstring(source_code.text) # Get detail information about the agent summary1 = tostring(tree.cssselect('div.summary1')[0]) summary2 = tostring(tree.cssselect('div.summary2')[0]) name = html.fromstring(summary1).cssselect('h1.summarytitle a')[0].text.encode('ascii', 'ignore').decode('ascii').strip() try: estate_name = html.fromstring(summary1).cssselect('div.summary1 span.greytext')[0].text.strip() except IndexError: estate_name = None phone_number = html.fromstring(summary2).cssselect('span.orangebold')[0].text.strip() cea = html.fromstring(summary2).cssselect('div.top15 a') try: lic_number = cea[0].text.strip() except IndexError: lic_number = None try: reg_number = cea[1].text.strip() except IndexError: reg_number = None agent = Agent(name=name, estate_name=estate_name, phone_number=phone_number, lic_number=lic_number, reg_number=reg_number) logger.info(agent) return agent except requests.exceptions.HTTPError as e: logger.error("HTTPError: " + str(e)) return None except requests.exceptions.ConnectionError as e: logger.error(str(e)) return None except IndexError as e: logger.error(str(e)) with open("error_page.html", "w") as f: f.write(source_code.text.encode('utf-8')) return None except AttributeError as e: logger.error(str(e)) return None
def signup_agent(request): if not request.user.is_authenticated(): if request.method == 'POST': form = SignUpAgentForm(request.POST) if form.is_valid(): user = form.save() user.save() password = form.cleaned_data.get('password1') user = authenticate(username=user.username, password=password) agent = Agent() agent.agent_id = user agent.total_transaction = 0 agent.save() auth_login(request, user) return HttpResponseRedirect(reverse('catalog:index')) else: return render(request, 'del3/signupagent.html', {'form': form}) else: form = SignUpAgentForm() return render(request, 'del3/signupagent.html', {'form': form}) else: return HttpResponseRedirect(reverse('index'))
'name': 'CMIS Rest API', 'is_active': True, 'script': 'agents.lib.cmis_rest_agent.CmisRestAgent', 'description': ( 'Tests availability and performance of Alfresco ' 'CMIS Rest API endpoints.' ), }, { 'name': 'JMXDump', 'is_active': True, 'script': 'agents.lib.jmxdump_agent.JmxDumpAgent', 'description': ( 'Stores all settings of a running Alfresco system ' 'for archival purposes.' ), }, ] if __name__ == '__main__': for agent in agent_list: a = Agent() for k, v in agent.items(): setattr(a, k, v) try: a.save() except IntegrityError: print('Agent already exists.')