Skip to content

Commit

Permalink
Abdul/databag item actions (#6049)
Browse files Browse the repository at this point in the history
* databags and items

Signed-off-by: Abdul-Az <aazeez@progress.com>

* added data bag actions

Signed-off-by: Abdul-Az <aazeez@progress.com>

* added test cases

Signed-off-by: Abdul-Az <aazeez@progress.com>

* data bags item test cases added

Signed-off-by: Abdul-Az <aazeez@progress.com>
  • Loading branch information
iamazzeez committed Nov 23, 2021
1 parent 3633135 commit 4d8e04d
Show file tree
Hide file tree
Showing 7 changed files with 1,376 additions and 519 deletions.
961 changes: 484 additions & 477 deletions api/external/infra_proxy/infra_proxy.pb.go

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions api/external/infra_proxy/infra_proxy.pb.policy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 8 additions & 8 deletions api/external/infra_proxy/infra_proxy.proto
Original file line number Diff line number Diff line change
Expand Up @@ -188,45 +188,45 @@ service InfraProxy {
rpc GetDataBags (infra_proxy.request.DataBags) returns (infra_proxy.response.DataBags) {
option (google.api.http).get = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:get";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBags:get";
};
rpc GetDataBagItems (infra_proxy.request.DataBagItems) returns (infra_proxy.response.DataBagItems) {
option (google.api.http).get = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:get";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBagsItem:get";
};
rpc GetDataBagItem (infra_proxy.request.DataBagItem) returns (infra_proxy.response.DataBagItem) {
option (google.api.http).get = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item}";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:get";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBagsItem:get";
};
rpc CreateDataBag (infra_proxy.request.CreateDataBag) returns (infra_proxy.response.CreateDataBag) {
option (google.api.http).post = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags";
option (google.api.http).body = "*";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:update";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBags:create";
};
rpc CreateDataBagItem (infra_proxy.request.CreateDataBagItem) returns (infra_proxy.response.CreateDataBagItem) {
option (google.api.http).post = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}";
option (google.api.http).body = "*";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:update";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBagsItem:create";
};
rpc DeleteDataBag (infra_proxy.request.DataBag) returns (infra_proxy.response.DataBag) {
option (google.api.http).delete = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:update";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBags:delete";
};
rpc DeleteDataBagItem (infra_proxy.request.DataBagItem) returns (infra_proxy.response.DataBagItem) {
option (google.api.http).delete = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item}";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:update";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBagsItem:delete";
};
rpc UpdateDataBagItem (infra_proxy.request.UpdateDataBagItem) returns (infra_proxy.response.UpdateDataBagItem) {
option (google.api.http).put = "/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item_id}";
option (google.api.http).body = "*";
option (chef.automate.api.iam.policy).resource = "infra:infraServers:{server_id}:orgs:{org_id}:data_bags";
option (chef.automate.api.iam.policy).action = "infra:infraServers:update";
option (chef.automate.api.iam.policy).action = "infra:infraServersOrgsDataBagsItem:update";
};

rpc GetEnvironments (infra_proxy.request.Environments) returns (infra_proxy.response.Environments) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,9 @@
<div class="search-create-container">
<app-infra-search-bar (searchButtonClick)="searchDataBagItems($event)" placeHolder="data bag items by name...">
</app-infra-search-bar>
<app-paginator *ngIf="dataBagItems"
[length]= "total"
[pageSize]= "per_page"
[pageIndex]= "current_page"
(changePage)= "onUpdatePage($event)"
></app-paginator>
<chef-button primary (click)="openDatabagItemModal()">Create Item</chef-button>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}', 'post', [serverId, orgId, dataBagName]]">
<chef-button primary (click)="openDatabagItemModal()">Create Item</chef-button>
</app-authorized>
</div>
<div class="section-container" *ngIf="dataBagItems">
<chef-loading-spinner *ngIf="loading || deleting" size="50" fixed class="full-screen-spinner"></chef-loading-spinner>
Expand Down Expand Up @@ -84,18 +80,22 @@
<chef-icon>remove_circle</chef-icon>
<span>Collapse All</span>
</chef-button>
<chef-button tertiary class="action right-button-box" (click)="startDataBagItemDelete(item)">
<chef-icon class="material-icons">delete</chef-icon>
<span>Delete</span>
</chef-button>
<chef-button
tertiary
class="action right-button-box"
(click)="startUpdateDataBagItem(item, selectedItemDetails)"
[disabled]="editDisable">
<chef-icon class="material-icons">mode_edit</chef-icon>
<span>Edit</span>
</chef-button>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item}', 'delete', [serverId, orgId, dataBagName, item.name]]">
<chef-button tertiary class="action right-button-box" (click)="startDataBagItemDelete(item)">
<chef-icon class="material-icons">delete</chef-icon>
<span>Delete</span>
</chef-button>
</app-authorized>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item}', 'put', [serverId, orgId, dataBagName, item.name]]">
<chef-button
tertiary
class="action right-button-box"
(click)="startUpdateDataBagItem(item, selectedItemDetails)"
[disabled]="editDisable">
<chef-icon class="material-icons">mode_edit</chef-icon>
<span>Edit</span>
</chef-button>
</app-authorized>
</div>

<app-json-tree-table class="json-tree-container" #tree [json]="selectedItemDetails"></app-json-tree-table>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
<div class="search-create-container">
<app-infra-search-bar (searchButtonClick)="searchDataBags($event)" placeHolder="data bags by name...">
</app-infra-search-bar>
<chef-button data-cy="create-databag-button" primary (click)="openCreateModal()">Create Data Bag</chef-button>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags', 'post', [serverId, orgId]]">
<chef-button data-cy="create-databag-button" primary (click)="openCreateModal()">Create Data Bag</chef-button>
</app-authorized>
</div>
<chef-loading-spinner class="full-screen-spinner" *ngIf="searching || deleting" size="50" fixed></chef-loading-spinner>
<chef-table *ngIf="dataBags.length" id="databags-table-container" data-cy="databags-table-container">
Expand All @@ -33,19 +35,23 @@
<chef-tr *ngFor="let dataBag of dataBags">
<chef-td><a [routerLink]="['/infrastructure','chef-servers', serverId, 'organizations', orgId, 'data-bags', dataBag.name]">{{ dataBag.name }}</a></chef-td>
<chef-td class="three-dot-column">
<mat-select panelClass="chef-control-menu">
<mat-option data-cy="delete" (onSelectionChange)="startDataBagDelete(dataBag)">Delete</mat-option>
</mat-select>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}', 'delete', [serverId, orgId, dataBag.name]]">
<mat-select panelClass="chef-control-menu">
<mat-option data-cy="delete" (onSelectionChange)="startDataBagDelete(dataBag)">Delete</mat-option>
</mat-select>
</app-authorized>
</chef-td>
</chef-tr>
</chef-tbody>
<chef-tbody *ngIf="searchFlag">
<chef-tr *ngFor="let dataBag of serachArr">
<chef-td><a [routerLink]="['/infrastructure','chef-servers', serverId, 'organizations', orgId, 'data-bags', dataBag.name]">{{ dataBag.name }}</a></chef-td>
<chef-td class="three-dot-column">
<mat-select panelClass="chef-control-menu">
<mat-option data-cy="delete" (onSelectionChange)="startDataBagDelete(dataBag)">Delete</mat-option>
</mat-select>
<app-authorized [allOf]="['/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}', 'delete', [serverId, orgId, dataBag.name]]">
<mat-select panelClass="chef-control-menu">
<mat-option data-cy="delete" (onSelectionChange)="startDataBagDelete(dataBag)">Delete</mat-option>
</mat-select>
</app-authorized>
</chef-td>
</chef-tr>
</chef-tbody>
Expand Down
8 changes: 8 additions & 0 deletions dev-docs/infra-server-iam.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,11 @@ example_fqdn "automate" >}}/api/v0/infra/servers/{id} |
| Create Environments | POST | infra:infraServersOrgsEnvironments:create | /api/v0/infra/servers/{id}/orgs/{org_id}/environments | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/environments |
| Update Environments | PUT | infra:infraServersOrgsEnvironments:update | /api/v0/infra/servers/{id}/orgs/{org_id}/environments/{name} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/environments/{name} |
| Delete Environments | DELETE | infra:infraServersOrgsEnvironments:delete | /api/v0/infra/servers/{id}/orgs/{org_id}/environments/{name} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/environments/{name} |
| Get DataBags | GET | infra:infraServersOrgsDataBags:get | /api/v0/infra/servers/{id}/orgs/{org_id}/data_bags | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/data_bags |
| Create DataBags | POST | infra:infraServersOrgsDataBags:create | /api/v0/infra/servers/{id}/orgs/{org_id}/data_bags | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/data_bags |
| Delete DataBags | DELETE | infra:infraServersOrgsDataBags:delete | /api/v0/infra/servers/{id}/orgs/{org_id}/data_bags/{name} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{id}/orgs/{org_id}/data_bags/{name} |
| Get DataBagItem | GET | infra:infraServersOrgsDataBagsItem:get | /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} |
| Create DataBagItem | POST | infra:infraServersOrgsDataBagsItem:create | /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} |
| Update DataBagItem | PUT | infra:infraServersOrgsDataBagsItem:update | /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item_id} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item_id} |
| Delete DataBagsItem | DELETE | infra:infraServersOrgsDataBagsItem:delete | /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name}/{item} |
| Delete DataBags | DELETE | infra:infraServersOrgsDataBags:delete | /api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} | https://{{< example_fqdn "automate" >}}/api/v0/infra/servers/{server_id}/orgs/{org_id}/data_bags/{name} |
Loading

0 comments on commit 4d8e04d

Please sign in to comment.