Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into dependabot/npm_and_ya…
Browse files Browse the repository at this point in the history
…rn/anms-ui/public/ws-6.2.3
  • Loading branch information
BrianSipos committed Aug 22, 2024
2 parents a9ec121 + c478425 commit 5bd6c5e
Show file tree
Hide file tree
Showing 8 changed files with 128 additions and 106 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/build-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ jobs:
runs-on: ubuntu-latest
env:
DOCKER_BUILDKIT: "1"
DOCKER_IMAGE_TAG: ${{ github.head_ref || github.ref_name }}
AUTHNZ_EMU: "1"
ANMS_COMPOSE_OPTS: "-f docker-compose.yml -p anms"
AGENT_COMPOSE_OPTS: "-f agent-compose.yml -p agents"
Expand All @@ -26,6 +25,10 @@ jobs:
uses: actions/checkout@v3
with:
submodules: recursive
- name: Tag name env
run: |
DOCKER_IMAGE_TAG=$(echo ${{ github.head_ref || github.ref_name }} | sed 's/[^a-zA-Z0-9\-\._]/-/g')
echo "DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG}" >> $GITHUB_ENV
- name: Build
run: |
./build.sh buildonly
Expand Down
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ variables:
# for Ruby/bolt
SSL_CERT_FILE: /etc/pki/tls/certs/ca-bundle.crt
# Project-specific environment
DOCKER_IMAGE_TAG: $CI_COMMIT_REF_NAME
DOCKER_IMAGE_TAG: $CI_COMMIT_REF_SLUG
DOCKER_IMAGE_PREFIX: $DOCKER_REGISTRY/$DOCKER_GROUP/
AUTHNZ_EMU: 1
ANMS_COMPOSE_OPTS: -f docker-compose.yml -p anms
Expand Down
87 changes: 49 additions & 38 deletions anms-core/anms/routes/ARIs/reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
from sqlalchemy.engine import Result
import re
from datetime import datetime
import multiprocessing as mp
import asyncio

from anms.components.schemas import ARIs
from anms.models.relational import get_async_session, get_session
Expand Down Expand Up @@ -102,6 +104,37 @@ async def find_var_type(obj_metadata):

return data_type_id

async def _process_report_entries(x):
entry, ac_types_and_id = x
# for entry in entries:
curr_values = []
time = datetime.fromtimestamp(int(entry.time)).strftime('%Y-%m-%d %H:%M:%S')

string_values = list(filter(None, re.split(r",|'(.*?)'", entry.string_values))) if entry.string_values else []
uint_values = entry.uint_values.split(',') if entry.uint_values else []
int_values = entry.int_values.split(',') if entry.int_values else []
real32_values = entry.real32_values.split(',') if entry.real32_values else []
real64_values = entry.real64_values.split(',') if entry.real64_values else []
uvast_values = entry.uvast_values.split(',') if entry.uvast_values else []
vast_values = entry.vast_values.split(',') if entry.vast_values else []
value_matchup = {18: string_values, 19: int_values, 20: uint_values, 21: vast_values, 22: uvast_values,
23: real32_values, 24: real64_values}
curr_values.append(time)
for type_id, obj_id in ac_types_and_id:
# find the type of ari
curr_type = type_id
if value_matchup[curr_type]:
curr_values.append(value_matchup[curr_type].pop(0))
if not ac_types_and_id:
if string_values: curr_values.append(','.join(string_values))
if uint_values: curr_values.append(','.join(uint_values))
if int_values: curr_values.append(','.join(int_values))
if real32_values: curr_values.append(','.join(real32_values))
if real64_values: curr_values.append(','.join(real64_values))
if uvast_values: curr_values.append(','.join(uvast_values))
if vast_values: curr_values.append(','.join(vast_values))
return curr_values


# entries tabulated returns header and values in correct order
@router.get("/entries/table/{agent_id}/{adm}/{report_name}", status_code=status.HTTP_200_OK,
Expand Down Expand Up @@ -147,52 +180,30 @@ async def report_ac(agent_id: str, adm: str, report_name: str):
curr_name = result.one_or_none()

ac_names.append(curr_name)
ac_types_and_id.append((entry.data_type_id, entry.obj_metadata_id))
# unknown template
if ac_names == []:
ac_names = ["time","string_values", "uint_values", "int_values", "real32_values", "real64_values", "uvast_values","vast_values"]

curr_type = entry.data_type_id
if curr_type == 2:
curr_type = await find_edd_type(entry.obj_metadata_id)
elif curr_type == 12:
curr_type = await find_var_type(entry.obj_metadata_id)
ac_types_and_id.append((curr_type, entry.obj_metadata_id))

stmt = select(Report).where(Report.agent_id == agent_id , Report.ADM == adm_name
, Report.report_name == report_name)
# find the type of ari
type_matchup = {2: find_edd_type, 12: find_var_type, }
# if a none formal report
if ac_id == None:
ac_names.append(report_name)

final_values = []
final_values.append(ac_names)
async with get_async_session() as session:
result: Result = await session.scalars(stmt)
entries = result.all()

args_to_use = []
for entry in entries:
curr_values = []
time = datetime.fromtimestamp(int(entry.time)).strftime('%Y-%m-%d %H:%M:%S')

string_values = list(filter(None, re.split(r",|'(.*?)'", entry.string_values))) if entry.string_values else []
uint_values = entry.uint_values.split(',') if entry.uint_values else []
int_values = entry.int_values.split(',') if entry.int_values else []
real32_values = entry.real32_values.split(',') if entry.real32_values else []
real64_values = entry.real64_values.split(',') if entry.real64_values else []
uvast_values = entry.uvast_values.split(',') if entry.uvast_values else []
vast_values = entry.vast_values.split(',') if entry.vast_values else []
value_matchup = {18: string_values, 19: int_values, 20: uint_values, 21: vast_values, 22: uvast_values,
23: real32_values, 24: real64_values}
curr_values.append(time)
for type_id, obj_id in ac_types_and_id:
if type_id in type_matchup:
curr_type = await type_matchup[type_id](obj_id)
else:
curr_type = type_id
if value_matchup[curr_type]:
curr_values.append(value_matchup[curr_type].pop(0))
if ac_types_and_id is []:
curr_values.append(','.join(string_values))
curr_values.append(','.join(uint_values))
curr_values.append(','.join(int_values))
curr_values.append(','.join(real32_values))
curr_values.append(','.join(real64_values))
curr_values.append(','.join(uvast_values))
curr_values.append(','.join(vast_values))

final_values.append(curr_values)
args_to_use.append(_process_report_entries([entry, ac_types_and_id]))
result = await asyncio.gather(*args_to_use)
for res in result:
final_values.append(res)

return final_values

73 changes: 41 additions & 32 deletions anms-ui/public/app/components/management/agents/Agents.vue
Original file line number Diff line number Diff line change
Expand Up @@ -48,45 +48,53 @@
</div>
</template>
</b-table>
<div class="d-flex float-right">
<div class="my-2 mx-3">
Items per Page:
<select v-model="pageSize"
@change="handlePageSizeChange($event)">
<option v-for="size in pageSizes"
:key="size"
:value="size">
{{ size }}
</option>
</select>
</div>
<b-pagination v-model="page"
class="m-0"
:total-rows="count"
:per-page="pageSize"
aria-controls="agents-table"
@change="handlePageChange">
</b-pagination>
</div>
<b-row>
<b-col>
<b-input-group prepend="Agent Address">
<b-form-input v-model="node"></b-form-input>
<b-input-group-append>
<b-button variant="outline-success"
@click="onClick(node.trim())">Add</b-button>
</b-input-group-append>
</b-input-group>
</b-col>
<b-col>
<div class="d-flex float-right">
<div class="my-2 mx-3">
Items per Page:
<select v-model="pageSize"
@change="handlePageSizeChange($event)">
<option v-for="size in pageSizes"
:key="size"
:value="size">
{{ size }}
</option>
</select>
</div>
<b-pagination v-model="page"
class="m-0"
:total-rows="count"
:per-page="pageSize"
aria-controls="agents-table"
@change="handlePageChange">
</b-pagination>
</div>
</b-col>
</b-row>
</b-col>
</b-row>
<label for="node">Address of Agent to add:</label>
<input name="node"
v-model="node"
placeholder="ipn:2.2" />
<p>Agent address is: {{ node }}</p>
<button @click="onClick(node.trim())">Add Node</button>

<agent-modal @close="showAgentModal = false"
:showModal="showAgentModal"
:agentInfo="agentInfo"></agent-modal>

<agents-manage-modal @close="showManageModal = false"
:showModal="showManageModal"
:agents="selectedAgents" :cbor="cbor"></agents-manage-modal>
:agents="selectedAgents"
:cbor="cbor"></agents-manage-modal>

<footer class="footer">
<p>Amp Version: {{ info }}</p>
<p><a :href="info.split(' - ')[1]" target="_blank">Amp Version: {{ info.split(" - ")[0] }}</a></p>
</footer>
</div>
</template>
Expand Down Expand Up @@ -135,10 +143,10 @@ export default {
selectAll: false,
};
},
props:{
props: {
cbor: {
type:String,
default:undefined
type: String,
default: undefined
}
},
mounted() {
Expand Down Expand Up @@ -231,8 +239,9 @@ export default {
.table-hover tbody tr:hover {
cursor: pointer;
}
.footer {
position: absolute;
position: fixed;
bottom: 0;
}
</style>
61 changes: 30 additions & 31 deletions anms-ui/public/app/components/management/agents/reports.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@
:key="index"
:value="index">{{ rpt.adm }}.{{ rpt.name }}</b-form-select-option>
</b-form-select>
<b-table v-if="!loading && selected != -1"
<b-table sticky-header
hover
bordered
responsive
v-if="!loading && selected != -1"
id="report-table"
:fields="tableHeaders"
:items="tableItems"
class="spacing-table"
hover
bordered
responsive>
>
</b-table>
</div>
</template>
Expand All @@ -52,33 +53,32 @@ export default {
this.loading = true;
this.tableHeaders = [];
this.tableItems = [];
if (this.reports[this.selected] == undefined) {
this.loading = true;
let rpt_name = this.rptts[this.selected].name;
let rpt_adm = this.rptts[this.selected].adm;
await api.methods.apiEntriesForReport(this.agentName, rpt_adm, rpt_name)
.then(res => {
this.processReport(res.data);
this.reports[this.selected] = this.tableItems;
this.reportsHeader[this.selected] = this.tableHeaders;
}).catch(error => {
// handle error
console.error("reports error", error);
console.info("error obj:", error);
});
} else{
this.tableHeaders = this.reportsHeader[this.selected];
this.tableItems = this.reports[this.selected];
}
this.loading = true;
let rpt_name = this.rptts[this.selected].name;
let rpt_adm = this.rptts[this.selected].adm;
await api.methods.apiEntriesForReport(this.agentName, rpt_adm, rpt_name)
.then(res => {
this.processReport(res.data);
this.reports[this.selected] = this.tableItems;
this.reportsHeader[this.selected] = this.tableHeaders;
}).catch(error => {
// handle error
console.error("reports error", error);
console.info("error obj:", error);
});
this.loading = false;
},
processReport(report) {
this.tableHeaders = report.shift();
let holdHeader = report.shift();
this.tableHeaders = [];
for (let i = 0; i < holdHeader.length; i++) {
this.tableHeaders.push({"key":holdHeader[i]});
}
for (let item of report) {
let row = {};
for (let i = 0; i < this.tableHeaders.length; i++) {
row[this.tableHeaders[i]] = item[i];
for (let i = 0; i < holdHeader.length; i++) {
row[holdHeader[i]] = item[i];
}
this.tableItems.push(row);
}
Expand All @@ -88,14 +88,10 @@ export default {
},
mounted() {
this.loading = true;
// this.title = this.adm + "." + this.reportName
this.rptts.forEach((rpt, index) => {
api.methods.apiEntriesForReport(this.agentName, rpt.adm, rpt.name)
.then(res => {
this.reports[index] = res.data
// this.headers = this.reports.shift()
}).catch(error => {
// handle error
console.error("reports error", error);
Expand All @@ -117,4 +113,7 @@ export default {
.select-max-width {
max-width: 600px;
}
.b-table-sticky-header > .table.b-table > thead > tr > th {
position: sticky !important;
}
</style>
2 changes: 1 addition & 1 deletion ion/src
Submodule src updated from 21f145 to 040584

0 comments on commit 5bd6c5e

Please sign in to comment.