@@ -547,6 +547,66 @@ export const handlers = makeHandlers({
547547
548548 return json ( instance , { status : 202 } )
549549 } ,
550+ ipPoolList : ( { query } ) => paginated ( query , db . ipPools ) ,
551+ ipPoolView : ( { path } ) => lookup . ipPool ( path ) ,
552+ ipPoolSiloList ( { path /*query*/ } ) {
553+ // TODO: paginated wants an id field, but this is a join table, so it has a
554+ // composite pk
555+ // return paginated(query, db.ipPoolResources)
556+
557+ const pool = lookup . ipPool ( path )
558+ const assocs = db . ipPoolSilos . filter ( ( ipr ) => ipr . ip_pool_id === pool . id )
559+ return { items : assocs }
560+ } ,
561+ ipPoolSiloLink ( { path, body } ) {
562+ const pool = lookup . ipPool ( path )
563+ const silo_id = lookup . silo ( { silo : body . silo } ) . id
564+
565+ const assoc = {
566+ ip_pool_id : pool . id ,
567+ silo_id,
568+ is_default : body . is_default ,
569+ }
570+
571+ const alreadyThere = db . ipPoolSilos . find (
572+ ( ips ) => ips . ip_pool_id === pool . id && ips . silo_id === silo_id
573+ )
574+
575+ // TODO: this matches current API logic but makes no sense because is_default
576+ // could be different. Need to fix that. Should 400 or 409 on conflict.
577+ if ( ! alreadyThere ) db . ipPoolSilos . push ( assoc )
578+
579+ return assoc
580+ } ,
581+ ipPoolSiloUnlink ( { path } ) {
582+ const pool = lookup . ipPool ( path )
583+ const silo = lookup . silo ( path )
584+
585+ // ignore is_default when deleting, it's not part of the pk
586+ db . ipPoolSilos = db . ipPoolSilos . filter (
587+ ( ips ) => ! ( ips . ip_pool_id === pool . id && ips . silo_id === silo . id )
588+ )
589+
590+ return 204
591+ } ,
592+ ipPoolSiloUpdate : ( { path, body } ) => {
593+ const ipPoolSilo = lookup . ipPoolSilo ( path )
594+
595+ // if we're setting default, we need to set is_default false on the existing default
596+ if ( body . is_default ) {
597+ const silo = lookup . silo ( path )
598+ const existingDefault = db . ipPoolSilos . find (
599+ ( ips ) => ips . silo_id === silo . id && ips . is_default
600+ )
601+ if ( existingDefault ) {
602+ existingDefault . is_default = false
603+ }
604+ }
605+
606+ ipPoolSilo . is_default = body . is_default
607+
608+ return ipPoolSilo
609+ } ,
550610 projectPolicyView ( { path } ) {
551611 const project = lookup . project ( path )
552612
@@ -960,7 +1020,6 @@ export const handlers = makeHandlers({
9601020 siloMetric : handleMetrics ,
9611021
9621022 // Misc endpoints we're not using yet in the console
963- addSledToInitializedRack : NotImplemented ,
9641023 certificateCreate : NotImplemented ,
9651024 certificateDelete : NotImplemented ,
9661025 certificateList : NotImplemented ,
@@ -973,7 +1032,6 @@ export const handlers = makeHandlers({
9731032 instanceSerialConsoleStream : NotImplemented ,
9741033 ipPoolCreate : NotImplemented ,
9751034 ipPoolDelete : NotImplemented ,
976- ipPoolList : NotImplemented ,
9771035 ipPoolRangeAdd : NotImplemented ,
9781036 ipPoolRangeList : NotImplemented ,
9791037 ipPoolRangeRemove : NotImplemented ,
@@ -982,7 +1040,6 @@ export const handlers = makeHandlers({
9821040 ipPoolServiceRangeRemove : NotImplemented ,
9831041 ipPoolServiceView : NotImplemented ,
9841042 ipPoolUpdate : NotImplemented ,
985- ipPoolView : NotImplemented ,
9861043 localIdpUserCreate : NotImplemented ,
9871044 localIdpUserDelete : NotImplemented ,
9881045 localIdpUserSetPassword : NotImplemented ,
@@ -1021,12 +1078,13 @@ export const handlers = makeHandlers({
10211078 siloQuotasView : NotImplemented ,
10221079 siloUserList : NotImplemented ,
10231080 siloUserView : NotImplemented ,
1081+ sledAdd : NotImplemented ,
1082+ sledListUninitialized : NotImplemented ,
10241083 sledSetProvisionState : NotImplemented ,
10251084 switchList : NotImplemented ,
10261085 switchView : NotImplemented ,
10271086 systemPolicyUpdate : NotImplemented ,
10281087 systemQuotasList : NotImplemented ,
1029- uninitializedSledList : NotImplemented ,
10301088 userBuiltinList : NotImplemented ,
10311089 userBuiltinView : NotImplemented ,
10321090} )
0 commit comments